VPD
来源:互联网 发布:mac迅雷下载界面没了 编辑:程序博客网 时间:2024/05/16 15:41
--1、在APPS中创建表,赋权给PO, ONT用户
createtable hand_vpd_test_tb1
(column1 varchar2(30),
db_user varchar2(30)
)
grantselect ,insert, update on hand_vpd_test_tb1 to po,ont;
--2、创建策略函数package
--使用hand_vpd_tst_security.pck 创建策略函数包
--赋权
grant execute on apps.hand_vpd_tst_securityto public;
CREATEPUBLIC SYNONYM hand_vpd_tst_security FOR apps.hand_vpd_tst_security;
--3、添加VPD策略
begin
DBMS_Rls.Add_Policy('APPS','HAND_VPD_TEST_TB1', 'INSERT_POLICY','APPS','HAND_VPD_TST_SECURITY.INSERT_SECURITY','INSERT', TRUE);
DBMS_Rls.Add_Policy('APPS','HAND_VPD_TEST_TB1', 'SELECT_POLICY','APPS','HAND_VPD_TST_SECURITY.SELECT_SECURITY','SELECT');
end;
select *from DBA_POLICIES a where a.object_name = 'HAND_VPD_TEST_TB1';
--删除VPD策略(备用)
begin
dbms_rls.drop_policy('APPS','HAND_VPD_TEST_TB1','USER_DATA_INSERT_POLICY');
dbms_rls.drop_policy('APPS','HAND_VPD_TEST_TB1','USER_DATA_SELECT_POLICY');
end;
--4、Select, Insert 测试
begin
insert into hand_vpd_test_tb1 values('test1-po','PO');
insert into hand_vpd_test_tb1 values('test1-ont','ONT');
end;
--5、切换到 PO用户登录
select *from apps.hand_vpd_test_tb1
--结果:
--策略函数执行出错:
--trace发现是ora-06550错误,
selectvalue from v$parameter where name = 'user_dump_dest';
altersession set tracefile_identifier = 'Hand_vpd_test2';
altersession set sql_trace=true;
select *from apps.hand_vpd_test_tb1
altersession set sql_trace=false;
--表面是SELECT_SECURITY未声明,实际是XX用户执行策略函数时需要访问被施加策略的对象:hand_vpd_test_tb1,因为对该对象无权限,而导致报此错误;
--解决方案
grantselect ,insert, update on hand_vpd_test_tb1 to public;
--6 再次测试:
-- 切换到 PO用户登录
select *from apps.hand_vpd_test_tb1
--结果只出现 DB_USER=PO的记录;
--7 做insert测试
insert into apps.hand_vpd_test_tb1values ('test1-po','PO');
--结果:顺利插入
insert into apps.hand_vpd_test_tb1values ('test1-ont','ONT');
--结果:报 ORA-28115: policy with check option violation错误
- VPD
- Oracle VPD
- Oracle-VPD
- Oracle VPD
- oracle VPD
- oracle VPD
- Virtual Private Databases (VPD)
- Oracle-VPD简析
- Oracle的VPD介绍
- 利用DBMS_RLS实现VPD 实例
- oracle vpd 虚拟专用数据库
- EBS技术开发之VPD策略
- vcs dump vpd的方法
- ORACLE VPD ROW-LEVEL MARKING..
- Virtual Private Database (VPD) with Oracle
- Oracle中的虚拟私有数据库(VPD)
- ORA-28113 VPD策略问题的解决
- Oracle Virtual Private Database(VPD)初体验
- Oracle ora-01536:超出表空间“users"的空间限额
- 在多硬盘情况下的Hadoop配置注意项
- 终于搞定微信验证拉!微信的验证sha1是php算出来的,要转成net算的
- C++实现离散数学求主合取范式和主析取范式
- 低功耗无线通信模块
- VPD
- JS querySelector
- 多行注释技巧
- iOS开发者申请发布证书-图文详解
- 词典
- 一个例子帮你搞懂C#语言高级特性系列(02) --- 委托、事件和Lambda表达式
- thrift使用过程中的问题
- 数组的排列选择法
- Tomcat:IOException while loading persisted sessions: java.io.EOFException解决手记