创建自己的用户名,在自己的用户名下建表,写存储过程,为了方便管理,不与其他用户公用表空间所引起一些不必要的麻烦。
一. 环境说明: 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即可。