ORACLE HANDBOOK系列之六:VPD

来源:Oracle认证    发布时间:2012-11-12    Oracle认证视频    评论

1 2 3 4 下一页

VPDOracle 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 下一页

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答