1 / 6
文档名称:

Oracle数据库教程 ——oracle通过sys_context实现各用户只能访问属于自己的数据.pdf

格式:pdf   页数:6
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Oracle数据库教程 ——oracle通过sys_context实现各用户只能访问属于自己的数据.pdf

上传人:yunde113 2014/11/12 文件大小:0 KB

下载得到文件列表

Oracle数据库教程 ——oracle通过sys_context实现各用户只能访问属于自己的数据.pdf

文档介绍

文档介绍:广州远佳信息科技有限公司
Oracle 数据库教程
——oracle 通过 sys_context 实现各用户只能访问属于自己
的数据

客户说,现在数据安全比较重要,要实现不同用户登录后,只能访问属于自己的数据。听到客户这个要求
后,我首先想到的是用 sys_context('USERENV','SESSION_USER')这个方式实现,但在实际实施的过程中,
也遇到了一些麻烦,下面就把实施过程与大家分享一下。

1、简单说明下

在数据库中有 user001,user002,user003,user004。在做业务的时候,我们在这个表上有一个对应关系,就这
个表的 userid:24401,24402,24403,24404 分别与用户对应。

表的情况如下(mydata 下面存在一个这样的表:):

SQL> select * from ;

GOODSID
GOODSNAME GOODSTYPE GOODSUNIT USERID
----------- ---------------------------------------- ---------------------------------------- ---------- ----------
34 生命一号(礼盒装) 10ml*60 支+240s*1*5 提提 24401
276 国公酒(简装) 328ml*24 瓶瓶 24403
277 国公酒(精装) 328ml*24 瓶瓶 24401
438 盐酸氨溴索口服溶液(沐舒坦) 100ml:*36 瓶瓶 24402
480 古汉养生精口服液 10ml*12 支*40 盒盒 24401
504 乌鸡白凤丸(北京白凤丸)(礼盒装) 6g*6 丸*40 盒盒 24402
550 生命一号 10ml*10 支+40 粒*1*40 盒 24404
576 京都念慈菴蜜炼川贝枇杷膏*(新批文) 300ml*48 瓶瓶 24404
672 回音必孕康口服液 10ml*10 支*50 盒盒 24401
674 抗病毒口服液 10ml*12 支*50 盒盒 24403
729 福寿仙多糖王口服液 10ml*10 支*40 盒盒 24403
769 转移因子口服溶液 10mg:10ml*6 支*60 盒盒 24401

也就是说,用 user001 登录时只查 userid=24401,以此类推。对于这种情况,很快可以想到用 sys_context
的方式来实现,在实现过程中,我们很我们遇到了 ora-01031 的错误。

2、开始进行测试,理论没什么问题,但要实践一下

建立相应的用户并授权:
广州远佳信息科技有限公司
SQL> create user user001 identified by 123456;

User created.

SQL> create user user002 identified by 123456;

User created.

SQL> crea