- 4
- 0
- 约5.27千字
- 约 4页
- 2017-08-22 发布于江苏
- 举报
Oraclehandbook系列之虚拟专用数据库VPD的使用详解
VPD, HYPERLINK Oracle Virtual Private Database,即Oracle虚拟专用数据库,是指通过应用一些策略,使得用户只能访问被允许访问的那部分数据。其原理相对简单,Oracle根据策略自动为相应用户提交的语句添加Where句,从而控制用户可以访问和操作的数据。
首先我们准备演示用的几张表,并插入少量的测试数据:
CREATETABLEvpdsample_clothing( ?
clothing_idNUMBER, ?
typeVARCHAR2(30), ?
brandVARCHAR2(30), ?
descriptonVARCHAR2(100) ?
); ?
-- ?
INSERTINTOvpdsample_clothingVALUES(10002,jacket,ABC,autumnstyle); ?
INSERTINTOvpdsample_clothingVALUES(10003,t-shirt,XYZ,summerstyle); ?
commit; ?
CREATETABLEvpdsample_books( ?
book_idNUMBER, ?
nameVARCHAR2(30), ?
authorVARCHAR2(20) ?
); ?
-- ?
INSERTINTOvpdsample_booksVALUES(10005,CountryDriving,PeterHessler); ?
INSERTINTOvpdsample_booksVALUES(10006,Lifewithoutlimits,NickVujicic); ?
commit;?
(以上两个表模拟一个简单的库存情况,库中有两类物品,服装、图书。这里我们需要满足两个表中的ID的唯一性(可以通过sequence来实现)。)
CREATETABLEvpdsample_users( ?
user_nameVARCHAR2(20), ?
user_privilegeNUMBER ?
); ?
-- ?
INSERTINTOvpdsample_usersVALUES(Jack,1); ?
INSERTINTOvpdsample_usersVALUES(Rose,2); ?
COMMIT;?
(这个表存储用户的权限信息,其中的权限即后表vpdsample_privileges中的权限ID字段。)
(这个表存储每个权限ID对应的权限信息,即对哪些对象(服装或图书)有权限。)
第二步,我们要创建一个context(实际上是【context名称空间】)。可以简单地把context理解为一个定义在内存中的容器,在此容器中我们可以定义若干个键值对,这些键值对可以在一定的范围内被共享(比如同一个session中,或者同一个Oracle实例中)
首先,使用system用户登录,赋予创建者相应的权限:grant create any context to user1;然后通过:CREATE OR REPLACE CONTEXT VPD USING pkg_vpdsample ACCESSED GLOBALLY;这里我们创建了一个叫’vpd’的context,’using’后面的是一个PLSQL package的名字,出于安全性考虑,Oracle需要你在创建context时指定一个包名,表示后续对些context的修改只能通过此包中的存储过程???行修改,不能通过dbms_session.set_context()直接进行修改。创建context时,package不存在并不会导致编译错误。
最后’accessed globally’是一个可选项,如果未添加此项,表示此context使用范围是某一session;如果指定了此项,则表示该context可以在整个数据库实例范围内共享。
欲删除context同样需要赋予相应的权限:
grant?drop?any?context?to?user1; ?
drop?context?VPD;?
第三步,建立一个package(即上面的pkg_vpdsample),包中的各个函数及存储过程的作用会随后逐一给出:
CREATEORREPLACEPACKAGEpkg_vpdsample ?
IS ?
PROCEDUREenable_vpd; ?
PROCEDUREdisable_vpd; ?
PROCEDUREset_context(p_user_nameINVARCHAR2); ?
FUNCTIONgen_vpd_predicate(p_column_nameINVARCHAR2)RETURNVARCHAR2; ?
FUNCTIONapply_vpd_clothing(p1invarchar2,p2invarcha
您可能关注的文档
- LeadershipandmanagementWeek.doc
- LEADCompetencyModel.doc
- LeadResourceController.doc
- leadsoft成套电器报价系统Winner.doc
- lectpptConvertor.doc
- LearningAttribute-to-FeatureMappingsforCold-StartRecommendations.doc
- lecture-stillmadeinjapan.doc
- Lecture++是非曲直关系,英语专考试词汇复习.doc
- LectureAttributiveClause定语从句详解.doc
- LectureLecture:FOREIGNEXCHANGEMARKET(国际金融-南开,胡春田).doc
- 2026安徽皖信人力资源管理有限公司招聘桐城某电力临时综合柜员岗位1人备考题库及1套完整答案详解.docx
- 2026安徽皖信人力资源管理有限公司招聘桐城某电力临时综合柜员岗位1人备考题库及一套参考答案详解.docx
- 2026年水土保持技术员年度工作计划.docx
- 2026年高考化学复习重点知识题型汇编:氧化还原反应.pdf
- 2026安徽皖信人力资源管理有限公司招聘桐城某电力临时综合柜员岗位1人备考题库及1套参考答案详解.docx
- 2026安徽皖信人力资源管理有限公司宣州分公司招聘3人备考题库(一)含答案详解.docx
- 2026安徽皖信人力资源管理有限公司宣州分公司招聘3人备考题库(一)及答案详解1套.docx
- 2026安徽皖信人力资源管理有限公司宣州分公司招聘3人备考题库(一)及答案详解参考.docx
- 2026年水文监测站工作计划.docx
- 2026对外经济贸易大学事业编专职辅导员、其他专技人员招聘备考题库完整答案详解.docx
最近下载
- 【基恩士】LR-W500(C) 使用说明书 (简体中文).pdf VIP
- 2026年抖音达人内衣泳衣类目准入考试题库及答案.docx
- 2025年度民主生活会“五个带头”对照检查材料.docx VIP
- 人教版高中数学必修第二册第八章微专题3二面角的常见求法学案.docx VIP
- 2026年福建长泰国有投资集团有限公司及权属子公司招聘5人考试备考题库附答案解析.docx VIP
- 2026年福建长泰国有投资集团有限公司及权属子公司招聘5人备考考试题库及答案解析.docx VIP
- 2026年福建长泰国有投资集团有限公司及权属子公司招聘5人考试参考题库附答案解析.docx VIP
- 2026福建长泰国有投资集团有限公司及权属子公司正式员工招聘5人备考考试试题及答案解析.docx VIP
- 复合铜箔生产基地、薄膜金属化研发试验中心项目报告表.pdf VIP
- 小嘀人脸识别智能锁R5-产品说明书.pdf
原创力文档

文档评论(0)