Opa Chiappa, o que quis dizer é exatamente o que você entendeu.
Eu até tinha montado a query dinâmica da mesma forma que você a escreveu, só 
não tinha feito o script.
E realmente, burrice minha, nao tinha pensado no expdp passando somente os 
dados dos owners para depois fazer o impdp para o novo owner do catálogo, mas 
simples e mais elegante dessa forma.


    Em quinta-feira, 18 de janeiro de 2018 17:40:18 BRST, 
[email protected] [oracle_br] <[email protected]> escreveu:  
 
     
Xô entender melhor a sua situação : num único database Oracle, database esse 
que é usado como RMAN catalog database, vc tem muitos catálogos, sendo que é um 
catálogo RMAN pra cada database, é isso ??? E dado o fato que a utiliuzação 
Normal e Rotineira de um catálogo RMAN é manter dados de backup para Múltiplos 
Databases (isso é demonstrado Inclusive na Modelagem do catálogo, vc vai ver 
que as tabelas do catálogo ** TODAS ELAS ** possuem já uma coluna DB_KEY, para 
que a mesma tabela possa guardar backups de N databases), vc quer Unificar 
isso, correto ?

 Muito bem : antes de responder a sua pergunta, deixa eu perguntar - vc precisa 
guardar os dados hoje armazenados nesses catálogos, transportando-os como estão 
para o novo catálogo único que vc vai criar ?? Se sim, veja que um catálogo 
RMAN nada mais é do que uma série de tabelas Oracle que pertencem a um dado 
schema/usuário Oracle qualquer : hoje, se vc tem no seu banco de catálogo 
digamos 30 catalogs vc tem nesse banco de catálogo 30 schemas, um schema que é 
owner do catálogo1, um schema que é owner do catálogo2, um schema que é owner 
do catálogo3, assim por diante... SE todos esses catálogos são da MESMA EXATA 
VERSÃO, as tabelas que compõem esses catálogos VÃO SER ABSOLUTA E COMPLETAMENTE 
IGUAIS em termos de estrutura, com as colunas e constraints COMPLETAMENTE 
IGUAIZINHAS, só os dados dentro de cada tabela é que mudam... 
  SENDO ASSIM, E SE realmente os dados anteriores não podem ser perdidos, não 
faz sentido vc partir pra bloco PL/SQL anônimo : simplesmente crie o 
repositório unificado vazio (com o comando de CREATE CATALOG) num schema novo 
(chamado REP_UNIF, digamos), faça um EXPORT via datapump apenas com os dados 
(ie, SEM pedir pra criar tabelas!!) de cada schema owner, depois faça import 
pedindo pros mover os dados que originalmente pertenciam ao schema original 
para o schema REP_UNIF, isso se faz com REMAP_SCHEMA....
  
 Agora sim, respondendo a sua pergunta :  ao que entendi, se (digamos) a tua 
consulta principal :
 
SELECT OWNER FROM DBA_OBJECTS WHERE OBJECT_NAME = 'RC_DATABASE';

retorne, digamos 10 linhas :

OWNER1
OWNER2
OWNER3
OWNER4
OWNER5
OWNER6
OWNER7
OWNER8
OWNER9
OWNER10

vc quer executar um SQL :

select name from OWNER1.RC_DATABASE;

depois executar :

select name from OWNER2.RC_DATABASE;

depois executar :

select name from OWNER3.RC_DATABASE;

assim por diante, né ? 

Eu pessoalmente, sempre que tenho uma tarefa do tipo (ie, sei EXATAMENTE quais 
SQLs precisam ser escritos, é possível vc os montar lendo de alguma tabela 
Oracle E tenho acesso ao sql*plus (ou tools similar que execute scripts) SEMPRE 
PREFIRO usar a técnica amiga do DBA, que já me salvou a pele N+1! vezes, que é 
: montar os SQLs numa query E salvar a saída da query num arquivo-texto, que 
depois executo pelo sql*plus ou o que tiver...
 Um exemplo :
 
==> digamos que meus dados estejam assim :

SYSTEM:@XE:SQL>SELECT OWNER FROM DBA_OBJECTS WHERE OBJECT_NAME = 'RC_DATABASE';

OWNER
----------------
BI
PM
OE

SYSTEM:@XE:SQL>

==> tenho portanto que gerar 3 linhas, com a diff única que a parte da string 
que indica o OWNER vai vir da coluna OWNER do select demonstrado, seria algo 
tipo :

SYSTEM:@XE:SQL>SELECT 'SELECT NAME FROM ' || OWNER || '.rc_database;'  FROM 
DBA_OBJECTS WHERE OBJECT_NAME = 'RC_DATABASE';

==> DEU PRA PERCEBER que gerei os comandos que queria concatenando a parte fixa 
com a parte variável que vem da coluna OWNER da conulta anterior ?? Olha como 
fica o resultado :


'SELECTNAMEFROM'||OWNER||'.RC_DATABASE;'
------------------------------------------------------------
SELECT NAME FROM BI.rc_database;
SELECT NAME FROM PM.rc_database;
SELECT NAME FROM OE.rc_database;

SYSTEM:@XE:SQL> 
 
==> Não é bico de entender ?? Pra mim sim... Agora só preciso que o sql*plus me 
GRAVE EM DISCO com um nome qualquer e extensão .SQL esse output, quem faz isso 
é o comando SPOOL... Vou incluir o SPOOL e uns ajustes de tela pra não vir o 
cabeçalho e coisitas assim :

C:\Users\jlchi_000>type gera_script.sql
set term off feedback off verify off pages 0 lines 500 trimspool on head off
spool pesquisa_names.sql
SELECT 'SELECT NAME FROM ' || OWNER || '.rc_database;' FROM DBA_OBJECTS WHERE 
OBJECT_NAME = 'RC_DATABASE';
exit;


==> vou executar o script gerador pelo sqlplus :

C:\Users\jlchi_000>sqlplus system/oracle @gera_script

SQL*Plus: Release 11.2.0.2.0 Production

Copyright (c) 1982, 2014, Oracle.  All rights reserved.


Conectado a:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

Desconectado de Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit 
Production

C:\Users\jlchi_000>

==> ÓIA só a lista dos comandos que eu preciso executar gerada pra mim sozinha :

C:\Users\jlchi_000>type pesquisa_names.sql
SELECT NAME FROM BI.rc_database;
SELECT NAME FROM PM.rc_database;
SELECT NAME FROM OE.rc_database;

C:\Users\jlchi_000> 
 
==> Pronto, executo essa lista de comandos numa tool qualquer (copiando e 
colando, ou executando o arquivo .sql) e tá feita a fofoca...

[]s

  Chiappa
  
  OBS :
    

     apenas para registro, Observo que há 3 outros métodos possíveis de se ter 
SQL dinâmico no RDBMS Oracle : 
     
     1. vc pode usar o DBMS_SQL

     2. vc pode usar o comando EXECUTE IMMEDIATE 
     
     3. vc pode usar a macrosubstituição do sql*plus com &'stringSQL'
     
  esses outros métodos são possíveis/funcionam também...
  #yiv2768820908 #yiv2768820908 -- #yiv2768820908ygrp-mkp {border:1px solid 
#d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv2768820908 
#yiv2768820908ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv2768820908 
#yiv2768820908ygrp-mkp #yiv2768820908hd 
{color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 
0;}#yiv2768820908 #yiv2768820908ygrp-mkp #yiv2768820908ads 
{margin-bottom:10px;}#yiv2768820908 #yiv2768820908ygrp-mkp .yiv2768820908ad 
{padding:0 0;}#yiv2768820908 #yiv2768820908ygrp-mkp .yiv2768820908ad p 
{margin:0;}#yiv2768820908 #yiv2768820908ygrp-mkp .yiv2768820908ad a 
{color:#0000ff;text-decoration:none;}#yiv2768820908 #yiv2768820908ygrp-sponsor 
#yiv2768820908ygrp-lc {font-family:Arial;}#yiv2768820908 
#yiv2768820908ygrp-sponsor #yiv2768820908ygrp-lc #yiv2768820908hd {margin:10px 
0px;font-weight:700;font-size:78%;line-height:122%;}#yiv2768820908 
#yiv2768820908ygrp-sponsor #yiv2768820908ygrp-lc .yiv2768820908ad 
{margin-bottom:10px;padding:0 0;}#yiv2768820908 #yiv2768820908actions 
{font-family:Verdana;font-size:11px;padding:10px 0;}#yiv2768820908 
#yiv2768820908activity 
{background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv2768820908
 #yiv2768820908activity span {font-weight:700;}#yiv2768820908 
#yiv2768820908activity span:first-child 
{text-transform:uppercase;}#yiv2768820908 #yiv2768820908activity span a 
{color:#5085b6;text-decoration:none;}#yiv2768820908 #yiv2768820908activity span 
span {color:#ff7900;}#yiv2768820908 #yiv2768820908activity span 
.yiv2768820908underline {text-decoration:underline;}#yiv2768820908 
.yiv2768820908attach 
{clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 
0;width:400px;}#yiv2768820908 .yiv2768820908attach div a 
{text-decoration:none;}#yiv2768820908 .yiv2768820908attach img 
{border:none;padding-right:5px;}#yiv2768820908 .yiv2768820908attach label 
{display:block;margin-bottom:5px;}#yiv2768820908 .yiv2768820908attach label a 
{text-decoration:none;}#yiv2768820908 blockquote {margin:0 0 0 
4px;}#yiv2768820908 .yiv2768820908bold 
{font-family:Arial;font-size:13px;font-weight:700;}#yiv2768820908 
.yiv2768820908bold a {text-decoration:none;}#yiv2768820908 dd.yiv2768820908last 
p a {font-family:Verdana;font-weight:700;}#yiv2768820908 dd.yiv2768820908last p 
span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv2768820908 
dd.yiv2768820908last p span.yiv2768820908yshortcuts 
{margin-right:0;}#yiv2768820908 div.yiv2768820908attach-table div div a 
{text-decoration:none;}#yiv2768820908 div.yiv2768820908attach-table 
{width:400px;}#yiv2768820908 div.yiv2768820908file-title a, #yiv2768820908 
div.yiv2768820908file-title a:active, #yiv2768820908 
div.yiv2768820908file-title a:hover, #yiv2768820908 div.yiv2768820908file-title 
a:visited {text-decoration:none;}#yiv2768820908 div.yiv2768820908photo-title a, 
#yiv2768820908 div.yiv2768820908photo-title a:active, #yiv2768820908 
div.yiv2768820908photo-title a:hover, #yiv2768820908 
div.yiv2768820908photo-title a:visited {text-decoration:none;}#yiv2768820908 
div#yiv2768820908ygrp-mlmsg #yiv2768820908ygrp-msg p a 
span.yiv2768820908yshortcuts 
{font-family:Verdana;font-size:10px;font-weight:normal;}#yiv2768820908 
.yiv2768820908green {color:#628c2a;}#yiv2768820908 .yiv2768820908MsoNormal 
{margin:0 0 0 0;}#yiv2768820908 o {font-size:0;}#yiv2768820908 
#yiv2768820908photos div {float:left;width:72px;}#yiv2768820908 
#yiv2768820908photos div div {border:1px solid 
#666666;min-height:62px;overflow:hidden;width:62px;}#yiv2768820908 
#yiv2768820908photos div label 
{color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv2768820908
 #yiv2768820908reco-category {font-size:77%;}#yiv2768820908 
#yiv2768820908reco-desc {font-size:77%;}#yiv2768820908 .yiv2768820908replbq 
{margin:4px;}#yiv2768820908 #yiv2768820908ygrp-actbar div a:first-child 
{margin-right:2px;padding-right:5px;}#yiv2768820908 #yiv2768820908ygrp-mlmsg 
{font-size:13px;font-family:Arial, helvetica, clean, sans-serif;}#yiv2768820908 
#yiv2768820908ygrp-mlmsg table {font-size:inherit;font:100%;}#yiv2768820908 
#yiv2768820908ygrp-mlmsg select, #yiv2768820908 input, #yiv2768820908 textarea 
{font:99% Arial, Helvetica, clean, sans-serif;}#yiv2768820908 
#yiv2768820908ygrp-mlmsg pre, #yiv2768820908 code {font:115% 
monospace;}#yiv2768820908 #yiv2768820908ygrp-mlmsg * 
{line-height:1.22em;}#yiv2768820908 #yiv2768820908ygrp-mlmsg #yiv2768820908logo 
{padding-bottom:10px;}#yiv2768820908 #yiv2768820908ygrp-msg p a 
{font-family:Verdana;}#yiv2768820908 #yiv2768820908ygrp-msg 
p#yiv2768820908attach-count span {color:#1E66AE;font-weight:700;}#yiv2768820908 
#yiv2768820908ygrp-reco #yiv2768820908reco-head 
{color:#ff7900;font-weight:700;}#yiv2768820908 #yiv2768820908ygrp-reco 
{margin-bottom:20px;padding:0px;}#yiv2768820908 #yiv2768820908ygrp-sponsor 
#yiv2768820908ov li a {font-size:130%;text-decoration:none;}#yiv2768820908 
#yiv2768820908ygrp-sponsor #yiv2768820908ov li 
{font-size:77%;list-style-type:square;padding:6px 0;}#yiv2768820908 
#yiv2768820908ygrp-sponsor #yiv2768820908ov ul {margin:0;padding:0 0 0 
8px;}#yiv2768820908 #yiv2768820908ygrp-text 
{font-family:Georgia;}#yiv2768820908 #yiv2768820908ygrp-text p {margin:0 0 1em 
0;}#yiv2768820908 #yiv2768820908ygrp-text tt {font-size:120%;}#yiv2768820908 
#yiv2768820908ygrp-vital ul li:last-child {border-right:none 
!important;}#yiv2768820908   

Responder a