1、切换oracle用户
su - oracle
2、SQLplus工具连接数据库
sqlplus /nolog
3、用DBA身份登录
conn sys/sys as sysdba;
4、创建新用户 query,密码 psquery
create user query identified by psquery;
5、为query用户赋权限
/** 连接权限*/
grant connect to query;
/** 创建同义词权限*/
grant create synonym toquery;
/** 给用户赋予只读权限*/
grant select_catalog_role,create session to query;
6、赋予表查询权限
6.1 单表权限赋予
/** 将base用户下的user表查询权限赋予给query用户*/
grant select on base.user to query;
6.2 复制fssc用户所有表的查询权限
执行下列sql语句,生成赋权语句,将生成的语句全部执行完后,既赋权完毕
/** 生成赋权脚本(将base用户下的所有表查询权限赋予给query用户)*/
select 'grant select on base.' || table_name || ' to test_cx;' from user_tables;
7、为query用户创建同义词
若不创建同义词,那么query用户查询表时,必须使用base.user这类的写法。 由于前面已经为query用户赋予创建同义词权限,因此可以登录query用户直接创建。
7.1 为指定表"user"创建同义词
create or replace synonym query.user for base.user;
7.2 为所有表创建同义词
下面的sql语句是用来批量生成创建同义词执行语句的,生成的语句全部执行后,即可完成对所有表创建同义词。需要管理员权限。
select 'create or replace synonym '||object_name||' for '||owner||'.'||object_name||';' from dba_objects where owner in ('base') and object_type='TABLE';