4. 测试策略:
使用SQL*PLUS登录HR用户,可以查看所有数据。
使用SCOTT用户登录,查看到的是这个样子:
如果我们把策略生效的条件改为“会话用户为HR”,那么即使HR是这个表的OWNER,也只能看到改写后的数据:
其他类型的策略表达式现实环境中,许多应用都是使用一个数据库用户登录的,所以数据改写的生效条件也可以是根据Client端信息或应用程序信息进行判断。当然,在应用程序中,必须要设置相关的CONTEXT。注意,如果应用的用户拥有DBA权限,数据改写就无效了。
我们使用SQL*PLUS模拟应用使用同一个数据库用户,利用CONTEXT实现数据改写。(实际上是不同应用用户,使用不同的CONTEXT。)
我们使用HR登录,将MODULE手工设置成“HRMS”。
当我们MODULE设置为其他值时(模拟切换不同类型的应用用户),则数据改写策略不生效。
APEX环境下的例子在安装了APEX环境的数据库中,配合APEX使用数据改写也非常简单,利用APEX的PL/SQL表达式写法,引用应用用户名,以下是例子:
其他用户登录应用效果:
Test_user1登录应用的效果: