oracle user clone script
概述
在生产环境中,有时我们需要创建一个跟某用户一样权限的用户,现分享一下便捷的方法。
脚本内容
1、编辑脚本文件内容如下:
vim clone_user.sql
set pages 0 feed off veri off lines 500 accept oldname prompt "Enter user to model new user to: " accept newname prompt "Enter new user name: " accept psw prompt "Enter new user's password: " -- Create user... select 'create user &&newname identified by &&psw'|| ' default tablespace '||default_tablespace|| ' temporary tablespace '||temporary_tablespace||' profile '|| profile||';' from sys.dba_users where username = upper('&&oldname'); -- Grant Roles... select 'grant '||granted_role||' to &&newname'|| decode(ADMIN_OPTION, 'YES', ' WITH ADMIN OPTION')||';' from sys.dba_role_privs where grantee = upper('&&oldname'); -- Grant System Privs... select 'grant '||privilege||' to &&newname'|| decode(ADMIN_OPTION, 'YES', ' WITH ADMIN OPTION')||';' from sys.dba_sys_privs where grantee = upper('&&oldname'); -- Grant Table Privs... select 'grant '||privilege||' on '||owner||'.'||table_name||' to &&newname;' from sys.dba_tab_privs where grantee = upper('&&oldname'); -- Grant Column Privs... select 'grant '||privilege||' on '||owner||'.'||table_name|| '('||column_name||') to &&newname;' from sys.dba_col_privs where grantee = upper('&&oldname'); -- Tablespace Quotas... select 'alter user &&newname quota '|| decode(max_bytes, -1, 'UNLIMITED', ceil(max_bytes / 1024 / 1024) || 'M') || ' on '||tablespace_name||';' from sys.dba_ts_quotas where username = upper('&&oldname'); -- Set Default Role... select 'alter user &&newname default role '|| granted_role ||';' from sys.dba_role_privs where grantee = upper('&&oldname') and default_role = 'YES'; set pages 500 feed on veri on lines 500
2、执行脚本
SQL>@clone_user.sql,根据脚本提示输入旧用户名和新用户名即可。
喜欢请赞赏一下啦^_^
微信赞赏
支付宝赞赏