oracle create a read-only account

Oracle 创建只读账号

  • ${ADMIN}: 对库有读写权限的原管理账号
  • ${ACCOUNT}: 新创建的只读账号
  • ${TABLENAME}: 表名
  • ${PASSWORD}: 密码

创建账号

1
2
3
4
5
6
CREATE USER ${ACCOUNT} identified by ${PASSWORD};

grant connect to ${ACCOUNT};
grant create view to ${ACCOUNT};
grant create session to ${ACCOUNT};
grant create synonym to ${ACCOUNT};

生成授权语句

假设管理账号为${ADMIN}

1
2
3
4
select 'grant select on '||owner||'.'||object_name||' to ${ACCOUNT};'
from dba_objects
where owner in ('${ADMIN}')
and object_type='TABLE';

该语句结果拿出来执行

类似这样的语句, 在管理账号下执行即可

1
grant select on ${ADMIN}.${TABLENAME} to ${ACCOUNT}

PS: 这里生成的语句是区分大小写的,如果数据库里有一些不是大写的表名,需要加双引号

登录新账号确认

确认新账号可以看到 ${ADMIN} 下的表

创建同义词

在${ADMIN}账号下执行,生成的语句,在${ACCOUNT}下执行

1
2
3
4
select 'create or replace SYNONYM ${ACCOUNT}.'||object_name|| ' for ' ||owner|| '.'||object_name||';'
from dba_objects
where owner in ('${ADMIN}')
and object_type='TABLE'

类似

1
create or replace SYNONYM ${ACCOUNT}.${TABLENAME} for ${ADMIN}.${TABLENAME};
Licensed under CC BY-NC-SA 4.0
记录平时瞎折腾遇到的各种问题, 方便查找
使用 Hugo 构建
主题 Stack 3.29.0Jimmy 设计