8。测试: ^H6 U84
%c=<}t41U
SQL> CONN test/test Qm]yF%o3:
H9Yqn~&
{|T\ei%
已连接。 8z"-xPfxQ
3 ];pq@q
SQL> INSERT INTO TS.document VALUES L~'?#7OJ
2 (1, 'SHARE_WARE',CHAR_TO_LABEL j.h]NCw@z
3 ('DOC_POLICY','PUBLIC')); |3A'zaSu
9bm ?),
_G/r7CD
已创建 1 行。 Vs ,!se Q
yU uqRdV3
SQL> INSERT INTO TS.document VALUES ;v#BF'7
2 (2, 'WEST_PAYROLL', 20200); <g3d|x<n
* YmZ.p)}n
])rM3
已创建 1 行。 w!""dr{
e]w.`ims
SQL> INSERT INTO TS.document VALUES ,adCsv
2 (3, 'EAST_SALES', 20400); G$W%$n=fq
Ip!d?@K!
pSrRt&
已创建 1 行。 W5\cYqJO
@?9r?W
SQL> INSERT INTO TS.document VALUES D[v2!mS,'
2 (4, 'COMP_PAYROLL', 30900); YUUc#z_,E
!470^/ q
(H)pgO7
已创建 1 行。 ! ]AIXxOL
C@t:u YT
SQL> [<[Iej-7
SQL> commit; RWJz-3,(
jxp yf{^}
5E"a@VgK7
提交完成。 A &]+ `w
( 4qOf
SQL> SELECT docname, doc_label +ChaC{:#
2 FROM ts.document; UL Gt?l>
DOCNAME DOC_LABEL [OK3
SHARE_WARE 10000 A&+"QlsT
WEST_PAYROLL 20200 "!<D=gL?75
EAST_SALES 20400 5cT}fg E
COMP_PAYROLL 30900 XI}EN(m"6
SQL> desc ts.document $BN3K7l
%StmOSm
#>uGQxD
名称 是否为空? 类型 3@DG<cc
[ )\
DOCID NUMBER bz#u28L
DOCNAME VARCHAR2(60) BEE;d"r
DOC_LABEL NUMBER(10) <1&z>K
SQL> conn hr/hr ]YVU"z]j
J3+f6Y 2v6
0R,^F0/ %
已连接。 Fzw>JT3R
vrDQ'9#
SQL> SELECT docname, doc_label ^TaZdXa
2 FROM ts.document; AXD>smET
DOCNAME DOC_LABEL I{Ye#Y+`
SHARE_WARE 10000 lGD3P
WEST_PAYROLL 20200 eb4C=]KT
SQL> conn hr/hr .'SKOw9],
9eTAnXF
c=%QPqtF
已连接。 4:CcCOlj*
j N\(U{i
SQL> 2 b1R
SQL> INSERT INTO TS.document VALUES !>!I<$J@]
2 (1, 'SHARE_WARE',CHAR_TO_LABEL _HO-> H!
3 ('DOC_POLICY','PUBLIC')); g6VVbN0WR
=<$S|hm
3a.A&x`
已创建 1 行。 cU-*kmS
+rz;s#g$i
SQL> INSERT INTO TS.document VALUES jk d}<C^M
2 (2, 'WEST_PAYROLL', 20200); ]EbZ08z
acP%hzXg;
aEu Z.0O
已创建 1 行。 w*\oVmkV
>cp~>F[[]
SQL> INSERT INTO TS.document VALUES }{x@gH
2 (3, 'EAST_SALES', 20400); `gO\Xxh"
INSERT INTO TS.document VALUES sD,X (v-c
* |7YSf='4i[
=_@ c_#p
Gt7Zd|?0;/
第 1 行出现错误: ni^ c<]yI
$0Arlqs4R}
ORA-12406: 未经策略 DOC_POLICY 授权的 SQL 语句 ,)KiN * W
ORA-06512: 在 "LBACSYS.LBAC_STANDARD", line 20 ) tw37Xr
ORA-06512: 在 "LBACSYS.LBAC$AI0_45004", line 1 N Mgzu3.
ORA-04088: 触发器 'LBACSYS.LBAC$AI0_45004' 执行过程中出错 <)X+m" _
SQL> INSERT INTO TS.document VALUES f6OWh
2 (4, 'COMP_PAYROLL', 30900); x\7;uIH
INSERT INTO TS.document VALUES 5])OzFT]1}
* rY+""v g!
r-!d0W/a
JiSMmF|B
第 1 行出现错误: x_$nv!QF2X
s0t}k=o
ORA-12406: 未经策略 DOC_POLICY 授权的 SQL 语句 (1<GRF8
ORA-06512: 在 "LBACSYS.LBAC_STANDARD", line 20 In+ l u,
ORA-06512: 在 "LBACSYS.LBAC$AI0_45004", line 1 Z5\"X
ORA-04088: 触发器 'LBACSYS.LBAC$AI0_45004' 执行过程中出错 qSt{ obG
SQL> conn scott/tiger pyM{\p6
ctUr; V}
70']HA
已连接。 # )r-z
:$%k #L^
SQL> INSERT INTO TS.document VALUES =HU0Tm1h
2 (1, 'SHARE_WARE',CHAR_TO_LABEL [x(Hv`Y
3 ('DOC_POLICY','PUBLIC')); d"T7C`|
o)H9/Dq
nDUeF_AcL
已创建 1 行。 laaKd>
0+H;{#
SQL> INSERT INTO TS.document VALUES C'T<DC]-
2 (2, 'WEST_PAYROLL', 20200); Bj:V]:\L
INSERT INTO TS.document VALUES hFpj2,}
* /6BM5lr
v#d}=*'
Adb7$eB|
第 1 行出现错误: E1.IBI4
[ H-bOTN
ORA-12406: 未经策略 DOC_POLICY 授权的 SQL 语句 9aQ!Rs<s~*
ORA-06512: 在 "LBACSYS.LBAC_STANDARD", line 20 QG:UbMBVg
ORA-06512: 在 "LBACSYS.LBAC$AI0_45004", line 1 vW&'bxP3
ORA-04088: 触发器 'LBACSYS.LBAC$AI0_45004' 执行过程中出错 ,o1 u19IwG
SQL> INSERT INTO TS.document VALUES 01v{5jz_
2 (3, 'EAST_SALES', 20400); y`M'$-jQ
INSERT INTO TS.document VALUES T$!U"T$tU
* Z](s#AvF
nV'G`y0
r'JMBW$-
第 1 行出现错误: M/]o6
)g8/c-)]|
ORA-12406: 未经策略 DOC_POLICY 授权的 SQL 语句 sP8>eO
ORA-06512: 在 "LBACSYS.LBAC_STANDARD", line 20 D6 yU
ORA-06512: 在 "LBACSYS.LBAC$AI0_45004", line 1 2JQY9EwiL
ORA-04088: 触发器 'LBACSYS.LBAC$AI0_45004' 执行过程中出错 \wJNS:1
SQL> INSERT INTO TS.document VALUES 5~s(cB.
2 (4, 'COMP_PAYROLL', 30900); Q]xPtP<
INSERT INTO TS.document VALUES }oj<0UW
* Q?5ap<q{D^
f/-D? '|`
`po>rQI8B
第 1 行出现错误: `C%? lpm
5[(G|O(
ORA-12406: 未经策略 DOC_POLICY 授权的 SQL 语句 Lsd-v).7
ORA-06512: 在 "LBACSYS.LBAC_STANDARD", line 20 )57dF\ZFu
ORA-06512: 在 "LBACSYS.LBAC$AI0_45004", line 1 _&PvqY4^+
ORA-04088: 触发器 'LBACSYS.LBAC$AI0_45004' 执行过程中出错 FO.qxi2[P
SQL> !za3z cN}
F I.]d"}
=`8Gg uE
对于DML(insert,update,delete)操作呢?其实,Oracle是自动在表上添加了触发器,这一点我们可以在设置完label以后,通过dba_triggers视图验证,添加的是INSERT AFTER EACH ROW,UPDATE AFTER EACH ROW和DELETE BEFORE EACH ROW三个trigger jc 9U$
vwgk~jF
触发器 'LBACSYS.LBAC$AI0_45004'代码: 8yK*vw
C|52]<w
DECLARE v_allowed NUMBER; %P0;ZQfOm
new_label LBAC_LABEL; ,RfKR&DD,
BEGIN k!81
IF lbac_session.policy_disabled('DOC_POLICY') OR (lbac_standard.secure_context('LBAC$0_LAB', 'LBAC$BYPASS') = 2) QaTjNDh
THEN RETURN; l#Xr#F'Z
END IF; ID`IxjVI#4
IF :new.DOC_LABEL IS NULL OR (NOT lbac_utl.data_label(:new.DOC_LABEL)) nBYtn^
THEN c,!?2q!
lbac_standard.raise_facility_error('TRUSTED', 'LBAC', 12406, 'DOC_POLICY'); M- Qw<f
END IF; G 6lLN-6
IF bitand(nvl(lbac_standard.secure_context('LBAC$LABELS', :new.DOC_LABEL),0),3)=0 3_){:P#3
THEN X*vv8(Ru'
lbac_standard.raise_facility_error('TRUSTED', 'LBAC', 12406, 'DOC_POLICY'); 2@*w6dWy
END IF; HDgoYbz$
IF bitand(nvl(lbac_standard.secure_context('LBAC$LABELS',:new.DOC_LABEL),0),2)=2 C/32
THEN Dr "LI3`
lbac_services.audit_privilege('DOC_POLICY',2,0,TRUE,'insert privilege used'); azUGI! Xb
END IF; <|/6NL&kI
END;