| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Mailing Lists -> Oracle-L -> Re: Grant all question
On 7/18/06, Sinardy Xing <oracle.rdbms_at_gmail.com> wrote:
>
> Hi guys,
>
> I have schema A and A own 20 many objects (tables, functions, triggers and
> others stuff).
>
> How to create user B having same privileges with what A can do with his
> own objects
>
The following script will do what you want.
--
Jared Still
Certifiable Oracle DBA and Part Time Perl Evangelist
-----------------------------------------------------------------------------
-- dup_user.sql
-- can call from command line
-- e.g. @dup_user OLD_USERNAME NEW_USERNAME
-- duplicate a user with a new name, same privs.
-- does NOT move objects
-- you must run the generated file manually
-- you will also have to manually drop the old user
set pause off
set echo off
set timing off
set trimspool on
set feed on term on echo off verify off
set line 80
set pages 24 head on
clear col
clear break
clear computes
btitle off
ttitle off
col colduser new_value uolduser noprint
col cnewuser new_value unewuser noprint
col cspoolfile new_value uspoolfile noprint
prompt Old Username:
set term off feed off
select upper('&1') colduser from dual;
set term on feed on
prompt New Username:
set term off feed off
select upper('&2') cnewuser from dual;
select '_' || lower(replace('&unewuser','$','\$')) || '.sql' cspoolfile
from dual;
set term on feed on
set pages 0 lines 200 term on feed off
spool &uspoolfile
prompt set echo on
select 'create user &unewuser identified by values ' || '''' || password ||
'''' ||
' default tablespace ' || default_tablespace ||
' temporary tablespace ' || temporary_tablespace || ';'
from dba_users
where username = upper('&uolduser')
/
select 'alter user &unewuser quota ' ||
decode(max_bytes, -1, ' UNLIMITED ', max_bytes ) || ' on ' ||
tablespace_name || ';'
from dba_ts_quotas
where username = upper('&uolduser')
/
select 'grant ' || granted_role || ' to &unewuser;'
from dba_role_privs
where grantee = upper('&uolduser')
union
select 'grant ' || privilege || ' to &unewuser;'
from dba_sys_privs
where grantee = upper('&uolduser')
union
select 'grant '
|| decode(privilege,
'READ', 'READ on directory ',
'WRITE', 'WRITE on directory ',
privilege || ' on '
)
|| owner || '.' || table_name || ' to &unewuser;'
from dba_tab_privs
where grantee = upper('&uolduser')
--order by 1, 2, 3, 4, 5
/
prompt set echo off
spool off
set pages 60 lines 80 feed on
prompt
prompt The file '&uspoolfile' will create the new user '&unewuser'
prompt
--
http://www.freelists.org/webpage/oracle-l
Received on Wed Jul 19 2006 - 10:14:30 CDT
![]() |
![]() |