创建自己的用户名,在自己的用户名下建表,写存储过程,为了方便管理,不与其他用户公用表空间所引起一些不必要的麻烦。
一. 环境说明:
1. 本机安装10.2
2. 本地建了一个数据库实例叫ywl
3. 在这个数据库实例下面有一个用户叫user1,它下面有很多表。
二. 问题描述:
1. 现在我要在ywl下面新加一个用户叫user2,然后我会在这个用户下,建自己的一些表,写一些自己的存储过程,存储过程中需要访问user1里面一些表的数据。
2. 我的做法如下:
a) 创建一个新的表空间 newTableSpace,创建表空间的时候为表空间设定大小,其他默认。
b) 创建一个新用户 user2,创建的时候通过Enterprise Manage Concole来创建,直接在Security->users下创建一个用户,
在创建窗口的General tab页下面的tablespace中default中选择新建的表空间newTableSpace,temporary默认。在role的tab页中为用户选择DBA role。
最后完成创建新用户,user2.
c) 用user1连接LYPRD,连接成功后执行
select 'grant select on '||table_name||' to user2;' from user_tables;
grant select on XJ_VDSP_core.service to XJ_VDSP_up
grant select on XJ_VDSP_core.sp to XJ_VDSP_up
执行结果为一组sql语句,将user1下的所有表的select权限都授权给了user2.
将执行结果中的需要授权的表的grant语句拷贝出来,然后在user1下将这些grant语句全部执行,即完成了将user1的特定表的查询权限授予给了user2.
用user2连接ywl,在user2下写存储过程,里面用到user1中表的时候,
直接用user1.tablename即可。
转载于:https://www.cnblogs.com/superMarioli/archive/2011/05/05/3683708.html