需求明细:现有账号test_super具有ABC表空间完整权限,增删改查。需要创建一个数据库账号:test_read,对test_super账号下所有的表具有只读权限。
建议在sys或者system账号下执行1,2,3,5步骤。
第一步:创建只读账号
create user test_read identified by test_read default tablespace ABC;
第二步:赋予账号连接数据库等基本权限
grant connect to test_read;
grant create view to test_read;
grant create session to test_read;
grant create synonym to test_read;
第三步:获取原账号test_super的查询权限
-- 获取原账号TEST_SUPER用户的所有查询表权限
select 'grant select on '||owner||'.'||object_name||' to test_read;'
from dba_objects
where owner in ('TEST_SUPER')
and object_type='TABLE';
查询结果是为新账号的授权赋值语句
第四步:将原账号权限赋值为新账号
在原账号test_super下执行第三步得到的结果,将原账号的查询权限 赋值给新账号
grant select on owner.table1 to test_read;
grant select on owner.table2 to test_read;
grant select on owner.table3 to test_read;
grant select on owner.table4 to test_read;
grant select on owner.table5 to test_read;
第五步:获取创建同义词的语句
在原账号下获取创建同义词的语句
select 'create or replace SYNONYM '||object_name||' for ' ||owner|| '.'||object_name||';'
from dba_objects
where owner in ('TEST_SUPER')
and object_type='TABLE'
第六步:创建同义词显示各个表信息
在新账号test_read下执行第三步得到的结果 ,在SYSNONYM目录下,tables目录下无显示
create or replace synonym 表名 for 老用户.表名字;
Create or replace SYNONYM TABLE1 for TEST_SUPER.TABLE1;
create or replace SYNONYM TABLE2 for TEST_SUPER.TABLE2;
create or replace SYNONYM TABLE3 for TEST_SUPER.TABLE3;
create or replace SYNONYM table4 for TEST_SUPER.TABLE4;
create or replace SYNONYM TABLE5 for TEST_SUPER.TABLE5;
第七步:执行完成之后 登录新账号,查看结果
新账号可以查询原账号的所有表结构,但是无法执行 增删改相关操作
select * from table1;
|