No Oracle SQL Developer, abra a seção DBA, Segurança e Usuários.
Selecione sua conta.
Clique com o botão direito.
Escolha, Crie Curtir.
Ative 'Copiar privs do objeto'
Forneça o novo nome de usuário/senha.
Voilá.
Vá para a página SQL para ver o código que extraímos do dicionário de dados para você.
Ele pegou cotas, funções, privilégios de sistema e privilégios de objeto.
Na versão 18.1, você também pode simplesmente abrir o User e ir para a página SQL e copiar/colar/substituir o nome do esquema no código fornecido lá.
Infelizmente! (Eu ouço você dizendo, eu preciso do CÓDIGO para fazer isso.)
Você pode ver o SQL que estamos usando para obter essas informações do banco de dados, abrindo o painel Log no SQL Developer e clicando na página Statements.
Aqui está esse código:
select M.NAME,
decode(
NVL(
S.ADMIN_OPTION,
'NULL'
),
'NO',
'YES',
'NULL',
'NO',
'YES'
) GRANTED,
NVL(
ADMIN_OPTION,
'NO'
) ADMIN
from SYSTEM_PRIVILEGE_MAP M,
(
select *
from DBA_SYS_PRIVS
where (
GRANTEE =?
or ? = null
)
) S
where S.PRIVILEGE (+) = M.NAME
order by 1;
select R.ROLE,
decode(
S.NAME,
R.ROLE,
'YES',
'NO'
) GRANTED,
NVL(
S.ADMIN,
'NO'
) ADMIN,
NVL(
S.DEF,
'NO'
) DEF
from DBA_ROLES R,
(
select GRANTED_ROLE NAME,
ADMIN_OPTION ADMIN,
DEFAULT_ROLE DEF
from DBA_ROLE_PRIVS
where GRANTEE =?
) S
where S.NAME (+) = R.ROLE
and R.AUTHENTICATION_TYPE != 'GLOBAL'
order by 1;
select OWNER,
TABLE_NAME,
PRIVILEGE,
GRANTABLE
from DBA_TAB_PRIVS
where GRANTEE =?;
select ACCOUNT_STATUS,
DEFAULT_TABLESPACE DEF,
TEMPORARY_TABLESPACE TEMP,
PASSWORD,
EXTERNAL_NAME,
EDITIONS_ENABLED,
ALL_SHARD
from DBA_USERS
where USERNAME =?;
select T.TABLESPACE_NAME,
NVL(
Q.UNLIMITED,
'NO'
) UNLIMITED,
Q.QUOTA,
Q.UNIT,
T.CONTENTS
from DBA_TABLESPACES T,
(
select TABLESPACE_NAME,
decode(
MAX_BYTES,
-1,
'YES',
'NO'
) UNLIMITED,
decode(
MAX_BYTES,
-1,
null,
MAX_BYTES / 1024
) QUOTA,
'K' UNIT
from DBA_TS_QUOTAS
where (
USERNAME =:1
or :1 = null
)
) Q
where Q.TABLESPACE_NAME (+) = T.TABLESPACE_NAME
order by 1;