Devido a alguns projetos profissionais que demandaram uma grande carga de trabalho, fiquei algum tempo se publicar novos artigos no blog.
Espero poder periodicamente pode compartilhar
experiências e conhecimentos através do blog. Sem delongas, vamos ao que interessa...
Imagine a necessidade de realizar uma carga de um owner de produção para uma base de testes na qual a senha é diferente de produção e desconhecemos a mesma. Em alguns casos basta perguntar ao usuário, porém nem sempre o usuário pode ter essa informação.
Para solucionar esse problema, basta gerarmos a DDL de criação do owner e a DCL dos grants que o mesmo possuí, antes de excluí-lo na base de testes para realizar o processo de carga.
Abaixo compartilho os script usado para gerar a DDL e a DCL para recriação de um usuário, basta apenas substituir o nome do usuário no campo NOME_OWNER.
script
DEFINE OWNER = 'NOME_ONWER';
set head off
set pages 0
SET LINES 210
set long 9999999
select
dbms_metadata.get_ddl('USER', '&OWNER') from dual;
select * from (
select 'grant ' || privilege ||
decode(privilege,'READ',' on directory "','WRITE',' on directory
"',' on "' || owner || '"."') ||
table_name || '" to "' || grantee ||
decode(grantable, 'YES', '" with grant option','"') || ';' from dba_tab_privs where
grantee in ('&OWNER')
union all
select 'grant '||privilege||' to
"'||grantee||'"'||decode(admin_option,'YES',' with admin
option')||';' from dba_sys_privs where
grantee in ('&OWNER')
union all
select 'grant "'||granted_role||'" to
"'||grantee||'"'||decode(admin_option,'YES',' with admin
option')||';' from dba_role_privs where
grantee in
('&OWNER'));
|
Comentários
Postar um comentário