Oracle创建查询账户

142 阅读1分钟

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';