将user1的表权限赋予user2(使用dba权限用户操作)
一、创建用户(使用dba权限用户操作)
CREATE USER username IDENTIFIED BY passwd;
将username改为创建的用户名,passwd是密码。
二、赋予用户权限(使用dba权限用户操作)
赋予用户连接数据库权限;
GRANT CREATE SESSION TO username;
三、赋予用户查询表权限(使用dba权限用户操作)
1.查询所有表的权限
GRANT SELECT ANY TABLE TO username;
2.赋予用户查询user1用户的所有表的权限
select 'Grant all on '||table_name||' to username ;' from all_tables where owner = upper(user1);
需将username改为自己的用户;
3.赋予用户查询特定表的权限
GRANT SELECT ON user1.table_name TO username;
这里的table_name需改为表名称;
四、查询表(使用username用户操作)
现在已经可以在username用户下查询表了,使用方法为user1.table_name
select * from user1.table_name;
如果想直接通过表名称查询表,需要给用户赋予同义词权限;
添加同义词权限(使用dba权限用户操作)
赋予username用户同义词权限
grant create synonym to username;
五、创建同义词(使用username用户操作)
1.为指定表创建同义词
create or replace synonym table_name_A for user1.table_name_A;
2.添加所有表的同义词(使用dba权限用户操作)
批量生成创建user1用户下表的同义词,执行语句:
select 'create or replace synonym user1.'||object_name||' for '||owner||'.'||object_name||';' from dba_objects where owner in ('user1') and object_type='TABLE';