来源:Oracle认证 发布时间:2012-11-12 Oracle认证视频 评论
1 2 3 4 下一页
VPD,Oracle Virtual Private Database,即【Oracle虚拟专用数据库】,通过应用一些策略,使得用户只能访问被允许访问的那部分数据。其原理相对简单,Oracle根据策略自动为相应用户提交的语句添加Where句,从而控制用户可以访问和操作的数据。
首先我们准备演示用的几张表,并插入少量的测试数据:
CREATE TABLE vpdsample_clothing( clothing_id NUMBER, type VARCHAR2(30), brand VARCHAR2(30), descripton VARCHAR2(100) ); -- INSERT INTO vpdsample_clothing VALUES(10002,'jacket','ABC','autumn style'); INSERT INTO vpdsample_clothing VALUES(10003,'t-shirt','XYZ','summer style'); commit; CREATE TABLE vpdsample_books( book_id NUMBER, name VARCHAR2(30), author VARCHAR2(20) ); -- INSERT INTO vpdsample_books VALUES(10005,'Country Driving','Peter Hessler'); INSERT INTO vpdsample_books VALUES(10006,'Life without limits','Nick Vujicic'); commit;
(以上两个表模拟一个简单的库存情况,库中有两类物品,服装、图书。这里我们需要满足两个表中的ID的唯一性(可以通过sequence来实现)。)
CREATE TABLE vpdsample_users( user_name VARCHAR2(20), user_privilege NUMBER ); -- INSERT INTO vpdsample_users VALUES('Jack',1); INSERT INTO vpdsample_users VALUES('Rose',2); COMMIT;
(这个表存储用户的权限信息,其中的权限即后表vpdsample_privileges中的权限ID字段。)
CREATE TABLE vpdsample_privileges( privilege_id NUMBER, object_id NUMBER ); -- INSERT INTO vpdsample_privileges VALUES(1,10002); INSERT INTO vpdsample_privileges VALUES(1,10005); INSERT INTO vpdsample_privileges VALUES(2,10003); INSERT INTO vpdsample_privileges VALUES(2,10006); COMMIT;
(这个表存储每个权限ID对应的权限信息,即对哪些对象(服装或图书)有权限。)
第二步,我们要创建一个context(实际上是【context名称空间】)。可以简单地把context理解为一个定义在内存中的容器,在此容器中我们可以定义若干个键值对,这些键值对可以在一定的范围内被共享(比如同一个session中,或者同一个Oracle实例中)
首先,使用system用户登录,赋予创建者相应的权限:
grant create any context to user1;
然后通过:
上一篇: Oracle 11g系列—7—SQL 基础学习
下一篇: Oracle 11g系列—8—SQL语句编写规范
1 2 3 4 下一页
① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;
② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。