[oracle_br] Re: Script sql para geração de DDL de todo o database/instancia separado por usuario
Segue as respostas adicionais : "O export das DDL´s será executado em inúmeros servidores que por sua vez possuem diversos databases e algumas instâncias e repetido em intervalos de tempo irregulares." E daí ? NENHUM desses detalhes te impede de montar um shell script que faça o export via datapump programaticamente ... Muito menos o haver múltiplas instâncias, é ** trivial ** vc escrever um shell script que identifica as instâncias E o oracle_home de cada instância e gera os parâmetros adequados e aciona o client de datapump apropriado... "A aplicabilidade de uma técnica é inerente à tarefa a ser executada" Concordo : por isso indiquei aquela que imho é MAIS ADEQUADA à tarefa E depende menos de programação... Mas repito : seja por qual motivo for, se a geração de script DDLs pelo expor/datapump não te atende, teu próximo passo a analisar é a viabilidade de DBMS_METADATA, antes de apelar para a forma mais cru, ** complexa ** e primitiva de gerar os DDLs ... Só pra vc ter uma idéia da Complexidade envolvida, veja em https://asktom.oracle.com/pls/asktom/f?p=100:11:P11_QUESTION_ID:1464804639878 a *** centena *** de linhas necessária para gerar o DDL de UMA TABELA, por aí vc imagina (se puder) a Complexidade de um script que gere os Vários e muitos DDLs de diversos objetos em múltiplos Schemas. Sorry, eu tenho peixes *** muito maiores *** pra fritar, meu tempo é Precioso para reinventar a roda Mas se é isso que vc quer, seja meu convidado e vá em frente : vamos ver se mais alguém das antigas tem um script do tipo pra te enviar, como eu disse os meus já joguei fora há ANOS, simplesmente não valia a pena dar manutenção nele cfrme novos objetos e detalhes são introduzidos no Dicionário de Dados a cada novo release Sorte aí pra vc... []s Chiappa
Re: [oracle_br] Re: Script sql para geração de DDL de todo o database/instancia separado por usuario
Tem uma idéia no link Extraindo comando DDL com o pacote DBMS_METADATA | | | Extraindo comando DDL com o pacote DBMS_METADATA Integrated Cloud Applications & Platform Services | | | Silvio Commodaro JuniorFones: (11)99154-8694(cel) / (xx11)4330-8409(res) Em Quarta-feira, 2 de Agosto de 2017 19:11, "fro...@gmail.com [oracle_br]" escreveu: Caso alguem possua o script referido na minha solicitação original e puder me fazer a gentileza de ceder, agradeço enormemente. #yiv6512679032 #yiv6512679032 -- #yiv6512679032ygrp-mkp {border:1px solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv6512679032 #yiv6512679032ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv6512679032 #yiv6512679032ygrp-mkp #yiv6512679032hd {color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 0;}#yiv6512679032 #yiv6512679032ygrp-mkp #yiv6512679032ads {margin-bottom:10px;}#yiv6512679032 #yiv6512679032ygrp-mkp .yiv6512679032ad {padding:0 0;}#yiv6512679032 #yiv6512679032ygrp-mkp .yiv6512679032ad p {margin:0;}#yiv6512679032 #yiv6512679032ygrp-mkp .yiv6512679032ad a {color:#ff;text-decoration:none;}#yiv6512679032 #yiv6512679032ygrp-sponsor #yiv6512679032ygrp-lc {font-family:Arial;}#yiv6512679032 #yiv6512679032ygrp-sponsor #yiv6512679032ygrp-lc #yiv6512679032hd {margin:10px 0px;font-weight:700;font-size:78%;line-height:122%;}#yiv6512679032 #yiv6512679032ygrp-sponsor #yiv6512679032ygrp-lc .yiv6512679032ad {margin-bottom:10px;padding:0 0;}#yiv6512679032 #yiv6512679032actions {font-family:Verdana;font-size:11px;padding:10px 0;}#yiv6512679032 #yiv6512679032activity {background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv6512679032 #yiv6512679032activity span {font-weight:700;}#yiv6512679032 #yiv6512679032activity span:first-child {text-transform:uppercase;}#yiv6512679032 #yiv6512679032activity span a {color:#5085b6;text-decoration:none;}#yiv6512679032 #yiv6512679032activity span span {color:#ff7900;}#yiv6512679032 #yiv6512679032activity span .yiv6512679032underline {text-decoration:underline;}#yiv6512679032 .yiv6512679032attach {clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 0;width:400px;}#yiv6512679032 .yiv6512679032attach div a {text-decoration:none;}#yiv6512679032 .yiv6512679032attach img {border:none;padding-right:5px;}#yiv6512679032 .yiv6512679032attach label {display:block;margin-bottom:5px;}#yiv6512679032 .yiv6512679032attach label a {text-decoration:none;}#yiv6512679032 blockquote {margin:0 0 0 4px;}#yiv6512679032 .yiv6512679032bold {font-family:Arial;font-size:13px;font-weight:700;}#yiv6512679032 .yiv6512679032bold a {text-decoration:none;}#yiv6512679032 dd.yiv6512679032last p a {font-family:Verdana;font-weight:700;}#yiv6512679032 dd.yiv6512679032last p span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv6512679032 dd.yiv6512679032last p span.yiv6512679032yshortcuts {margin-right:0;}#yiv6512679032 div.yiv6512679032attach-table div div a {text-decoration:none;}#yiv6512679032 div.yiv6512679032attach-table {width:400px;}#yiv6512679032 div.yiv6512679032file-title a, #yiv6512679032 div.yiv6512679032file-title a:active, #yiv6512679032 div.yiv6512679032file-title a:hover, #yiv6512679032 div.yiv6512679032file-title a:visited {text-decoration:none;}#yiv6512679032 div.yiv6512679032photo-title a, #yiv6512679032 div.yiv6512679032photo-title a:active, #yiv6512679032 div.yiv6512679032photo-title a:hover, #yiv6512679032 div.yiv6512679032photo-title a:visited {text-decoration:none;}#yiv6512679032 div#yiv6512679032ygrp-mlmsg #yiv6512679032ygrp-msg p a span.yiv6512679032yshortcuts {font-family:Verdana;font-size:10px;font-weight:normal;}#yiv6512679032 .yiv6512679032green {color:#628c2a;}#yiv6512679032 .yiv6512679032MsoNormal {margin:0 0 0 0;}#yiv6512679032 o {font-size:0;}#yiv6512679032 #yiv6512679032photos div {float:left;width:72px;}#yiv6512679032 #yiv6512679032photos div div {border:1px solid #66;min-height:62px;overflow:hidden;width:62px;}#yiv6512679032 #yiv6512679032photos div label {color:#66;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv6512679032 #yiv6512679032reco-category {font-size:77%;}#yiv6512679032 #yiv6512679032reco-desc {font-size:77%;}#yiv6512679032 .yiv6512679032replbq {margin:4px;}#yiv6512679032 #yiv6512679032ygrp-actbar div a:first-child {margin-right:2px;padding-right:5px;}#yiv6512679032 #yiv6512679032ygrp-mlmsg {font-size:13px;font-family:Arial, helvetica, clean, sans-serif;}#yiv6512679032 #yiv6512679032ygrp-mlmsg table {font-size:inherit;font:100%;}#yiv6512679032 #yiv6512679032ygrp-mlmsg select, #yiv6512679032 input, #yiv6512679032 textarea {font:99% Arial, Helvetica, clean, sans-serif;}#yiv6512679032 #yiv6512679032ygrp-mlmsg pre, #yiv6512679032 code {font:115% monospace;}#yiv6512679032 #yiv6512679032ygrp-mlmsg * {line-height:1.22em;}#yiv6512679032 #yiv6512679032ygrp-mlmsg #yi
Fw: Re: [oracle_br] Re: Script sql para geração de DDL de todo o database/instancia separado por usuario
Froier, Concordo com o Chiappa sobre isso, o expdp/impdp com sqlfile é a melhor opção, você pode fazer o export com o sys ou outro usuário com permissão de export full database e filtrar com o parametro "schemas". Ele vai gerar um script funcional para recriar os esquemas de forma fácil. Do exemplo que ele já mandou pode incluir a opção "CONTENT=metadata_only" no export, o que deve gerar um arquivo pequeno, contendo apenas a definição dos objetos. Você vai precisar gerar scripts com os grants concedidos ao schemas também. Se optar por usar o dbms_metadata, sugiro incluir os comandos abaixo, para gerar os scripts. Quando usei esta ferramenta tive muitos problemas com o tratamento de objetos dependentes e grants. É mais útil quando se extrai objetos individuais. dbms_metadata.set_transform_param (dbms_metadata.session_transform, 'SQLTERMINATOR', true); dbms_metadata.set_transform_param (dbms_metadata.session_transform, 'PRETTY', true); Atc,Luis Freitas On Wednesday, August 2, 2017, 5:44:07 PM GMT-3, fro...@gmail.com [oracle_br] wrote: Boa tarde Chiappa,Apenas a criação dos objetos vazios e sem o "Create database".Reconheço e estou preparado para excluir os usuário de acesso ao database (account_status='OPEN', os schemas de dados sempre estão com disable) e quando forem usuários de sistema (default_tablespace not in ('users','sysaux','system')). Agradeço-lhe muito a gentileza em tentar responder a minha pergunta, mas percebo que não possui o que estou procurando. Acredito ter sido bem específico, sendo o link repassado de nenhuma utilidade para mim. Obrigado de qualquer forma, Frederico Roier ---Em oracle_br@yahoogrupos.com.br, escreveu: Detalha um pouco mais : vc quer obter o comando CREATE DATABASE também ou não ? Vc diz que "quer DDLs", então IMAGINO que vc quer obter os DDLs de criação dos objetos mas VAZIOS, SEM DADOS, é isso ?? Outra coisa, vc fala "gerar DDL completa", mas vc *** SABE *** que dentro de um database Oracle existem *** DIVERSOS *** schemas de uso INTERNO APENAS, como o SYS, o SYSTEM, e vários outros : NEM PENSE em querer 'clonar' o schema SYS ou o SYSTEM de um database em outro, isso só pode dar os mais altos enroscos.. SUPONDO que os procedimentos normais de clone de database (principalmente clone físico via cópia de arquivos) não te atendem mesmo (por questões de espaço ou o que for), E que o que vc vai fazer é o ** NORMAL ** de se ver pelaí (ie, simplesmente usar o DBCA pra criar um database ** VAZIO ** de dados de usuários e clonar *** APENAS *** os itens gerais do banco (como TABLESPACES e ROLES, digamos), os objetos de usuários públicos não criados internamente pelo RDBMS (principalmente sinônimos públicos), os usuários de banco não-internos e seus privilégios E os poucos schemas não-internos que possuem dados, a melhor opção imho seria gerar os DDLs em um arquivo-texto pelo datapump : http://www.acehints.com/2011/07/data-pump-impdp-expdp-sqlfile-option-to.html é um pequeno exemplo pra te dar um start Provavelmente vc vai ter que enfiar um EXCLUDEs pra exluir os schemas internos e os dados das tabelas, mas não é nada muito complexo []s Chiappa
Re: [oracle_br] Re: Script sql para geração de DDL de todo o database/instancia separado por usuario
Froier, Concordo com o Chiappa sobre isso, o expdp/impdp com sqlfile é a melhor opção, você pode fazer o export com o sys ou outro usuário com permissão de export full database e filtrar com o parametro "schemas". Ele vai gerar um script funcional para recriar os esquemas de forma fácil. Do exemplo que ele já mandou pode incluir a opção "CONTENT=metadata_only" no export, o que deve gerar um arquivo pequeno, contendo apenas a definição dos objetos. Você vai precisar gerar scripts com os grants concedidos ao schemas também. Se optar por usar o dbms_metadata, sugiro incluir os comandos abaixo, para gerar os scripts. Quando usei esta ferramenta tive muitos problemas com o tratamento de objetos dependentes e grants. É mais útil quando se extrai objetos individuais. dbms_metadata.set_transform_param (dbms_metadata.session_transform, 'SQLTERMINATOR', true); dbms_metadata.set_transform_param (dbms_metadata.session_transform, 'PRETTY', true); Atc,Luis Freitas On Wednesday, August 2, 2017, 5:44:07 PM GMT-3, fro...@gmail.com [oracle_br] wrote: Boa tarde Chiappa,Apenas a criação dos objetos vazios e sem o "Create database".Reconheço e estou preparado para excluir os usuário de acesso ao database (account_status='OPEN', os schemas de dados sempre estão com disable) e quando forem usuários de sistema (default_tablespace not in ('users','sysaux','system')). Agradeço-lhe muito a gentileza em tentar responder a minha pergunta, mas percebo que não possui o que estou procurando. Acredito ter sido bem específico, sendo o link repassado de nenhuma utilidade para mim. Obrigado de qualquer forma, Frederico Roier ---Em oracle_br@yahoogrupos.com.br, escreveu: Detalha um pouco mais : vc quer obter o comando CREATE DATABASE também ou não ? Vc diz que "quer DDLs", então IMAGINO que vc quer obter os DDLs de criação dos objetos mas VAZIOS, SEM DADOS, é isso ?? Outra coisa, vc fala "gerar DDL completa", mas vc *** SABE *** que dentro de um database Oracle existem *** DIVERSOS *** schemas de uso INTERNO APENAS, como o SYS, o SYSTEM, e vários outros : NEM PENSE em querer 'clonar' o schema SYS ou o SYSTEM de um database em outro, isso só pode dar os mais altos enroscos.. SUPONDO que os procedimentos normais de clone de database (principalmente clone físico via cópia de arquivos) não te atendem mesmo (por questões de espaço ou o que for), E que o que vc vai fazer é o ** NORMAL ** de se ver pelaí (ie, simplesmente usar o DBCA pra criar um database ** VAZIO ** de dados de usuários e clonar *** APENAS *** os itens gerais do banco (como TABLESPACES e ROLES, digamos), os objetos de usuários públicos não criados internamente pelo RDBMS (principalmente sinônimos públicos), os usuários de banco não-internos e seus privilégios E os poucos schemas não-internos que possuem dados, a melhor opção imho seria gerar os DDLs em um arquivo-texto pelo datapump : http://www.acehints.com/2011/07/data-pump-impdp-expdp-sqlfile-option-to.html é um pequeno exemplo pra te dar um start Provavelmente vc vai ter que enfiar um EXCLUDEs pra exluir os schemas internos e os dados das tabelas, mas não é nada muito complexo []s Chiappa #yiv5064173973 #yiv5064173973 -- #yiv5064173973ygrp-mkp {border:1px solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv5064173973 #yiv5064173973ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv5064173973 #yiv5064173973ygrp-mkp #yiv5064173973hd {color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 0;}#yiv5064173973 #yiv5064173973ygrp-mkp #yiv5064173973ads {margin-bottom:10px;}#yiv5064173973 #yiv5064173973ygrp-mkp .yiv5064173973ad {padding:0 0;}#yiv5064173973 #yiv5064173973ygrp-mkp .yiv5064173973ad p {margin:0;}#yiv5064173973 #yiv5064173973ygrp-mkp .yiv5064173973ad a {color:#ff;text-decoration:none;}#yiv5064173973 #yiv5064173973ygrp-sponsor #yiv5064173973ygrp-lc {font-family:Arial;}#yiv5064173973 #yiv5064173973ygrp-sponsor #yiv5064173973ygrp-lc #yiv5064173973hd {margin:10px 0px;font-weight:700;font-size:78%;line-height:122%;}#yiv5064173973 #yiv5064173973ygrp-sponsor #yiv5064173973ygrp-lc .yiv5064173973ad {margin-bottom:10px;padding:0 0;}#yiv5064173973 #yiv5064173973actions {font-family:Verdana;font-size:11px;padding:10px 0;}#yiv5064173973 #yiv5064173973activity {background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv5064173973 #yiv5064173973activity span {font-weight:700;}#yiv5064173973 #yiv5064173973activity span:first-child {text-transform:uppercase;}#yiv5064173973 #yiv5064173973activity span a {color:#5085b6;text-decoration:none;}#yiv5064173973 #yiv5064173973activity span span {color:#ff7900;}#yiv5064173973 #yiv5064173973activity span .yiv5064173973underline {text-decoration:underline;}#yiv5064173973 .yiv5064173973attach {clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 0;width:400px;}#yiv5064173973 .yiv5064173973attach div a {text-decora
[oracle_br] Re: Script sql para geração de DDL de todo o database/instancia separado por usuario
Caso alguem possua o script referido na minha solicitação original e puder me fazer a gentileza de ceder, agradeço enormemente.
[oracle_br] Re: Script sql para geração de DDL de todo o database/instancia separado por usuario
Primeiro não me atende, segundo, não foi isso que, humildemente, perguntei se alguém possuía e podia me ceder. A aplicabilidade de uma técnica é inerente à tarefa a ser executada, não apenas o afã de utiliza-la. O export das DDL´s será executado em inúmeros servidores que por sua vez possuem diversos databases e algumas instâncias e repetido em intervalos de tempo irregulares.
[oracle_br] Re: Script sql para geração de DDL de todo o database/instancia separado por usuario
Discordo em gênero, número e Grau sobre a inadequação da técnica de extração dos DDLs via datapump ilustrada pelo link que forneci : ** SE ** vc incluir num exclude os usuários SYS, SYSTEM e demais usuários internos E excluir a geração dos dados (via CONTENT=metadata_only) E habilitar a geração de arquivo-texto com a saída, o que vc *** VAI OBTER *** é SIM os DDLs, é o que 'sobra' numa exportação nessa situação... Isso é *** Líquido e Certo *** , siga o exemplo do link que vc chega SIM nesse resultado, Inevitavelmente Anyway, se vc QUER/PRECISA seja por que motivo for (por questão de formatação avançada, por falta de acesso ao datapump, seja pelo que for) da opção MANUAL de extrair DDLs (ie, um script SQL que monte os DDLs a partir da DBMS_METADATA ou - algo mais Antigo ainda - consultando o dicionário de dados), embora não use isso (eu EVITO reinventar a roda sempre que possível) eu posso indicar https://stackoverflow.com/questions/10886450/how-to-generate-entire-ddl-of-an-oracle-schema-scriptable como um exemplo do uso de METADATA clonando todo um schema (é ** trivial ** adaptar a técnica para múltiplos schemas) A opção de criar os DDLs consultando diretamente o dicionário de dados, Justamente por ser trabalhosa e complexa E ter sido há Muito abandonada em favor do datapump e/ou do dbms_metadata, ainda existe mas hoje em dia é muito difícil de achar exemplos (eu mesmo há ** anos ** já joguei fora os scripts que tinha para isso), então para essa opção fico te devendo refs/exemplos []s Chiappa
[oracle_br] Re: Script sql para geração de DDL de todo o database/instancia separado por usuario
Boa tarde Chiappa, Apenas a criação dos objetos vazios e sem o "Create database". Reconheço e estou preparado para excluir os usuário de acesso ao database (account_status='OPEN', os schemas de dados sempre estão com disable) e quando forem usuários de sistema (default_tablespace not in ('users','sysaux','system')). Agradeço-lhe muito a gentileza em tentar responder a minha pergunta, mas percebo que não possui o que estou procurando. Acredito ter sido bem específico, sendo o link repassado de nenhuma utilidade para mim. Obrigado de qualquer forma, Frederico Roier ---Em oracle_br@yahoogrupos.com.br, escreveu: Detalha um pouco mais : vc quer obter o comando CREATE DATABASE também ou não ? Vc diz que "quer DDLs", então IMAGINO que vc quer obter os DDLs de criação dos objetos mas VAZIOS, SEM DADOS, é isso ?? Outra coisa, vc fala "gerar DDL completa", mas vc *** SABE *** que dentro de um database Oracle existem *** DIVERSOS *** schemas de uso INTERNO APENAS, como o SYS, o SYSTEM, e vários outros : NEM PENSE em querer 'clonar' o schema SYS ou o SYSTEM de um database em outro, isso só pode dar os mais altos enroscos.. SUPONDO que os procedimentos normais de clone de database (principalmente clone físico via cópia de arquivos) não te atendem mesmo (por questões de espaço ou o que for), E que o que vc vai fazer é o ** NORMAL ** de se ver pelaí (ie, simplesmente usar o DBCA pra criar um database ** VAZIO ** de dados de usuários e clonar *** APENAS *** os itens gerais do banco (como TABLESPACES e ROLES, digamos), os objetos de usuários públicos não criados internamente pelo RDBMS (principalmente sinônimos públicos), os usuários de banco não-internos e seus privilégios E os poucos schemas não-internos que possuem dados, a melhor opção imho seria gerar os DDLs em um arquivo-texto pelo datapump : http://www.acehints.com/2011/07/data-pump-impdp-expdp-sqlfile-option-to.html é um pequeno exemplo pra te dar um start Provavelmente vc vai ter que enfiar um EXCLUDEs pra exluir os schemas internos e os dados das tabelas, mas não é nada muito complexo []s Chiappa
[oracle_br] Re: Script sql para geração de DDL de todo o database/instancia separado por usuario
Detalha um pouco mais : vc quer obter o comando CREATE DATABASE também ou não ? Vc diz que "quer DDLs", então IMAGINO que vc quer obter os DDLs de criação dos objetos mas VAZIOS, SEM DADOS, é isso ?? Outra coisa, vc fala "gerar DDL completa", mas vc *** SABE *** que dentro de um database Oracle existem *** DIVERSOS *** schemas de uso INTERNO APENAS, como o SYS, o SYSTEM, e vários outros : NEM PENSE em querer 'clonar' o schema SYS ou o SYSTEM de um database em outro, isso só pode dar os mais altos enroscos.. SUPONDO que os procedimentos normais de clone de database (principalmente clone físico via cópia de arquivos) não te atendem mesmo (por questões de espaço ou o que for), E que o que vc vai fazer é o ** NORMAL ** de se ver pelaí (ie, simplesmente usar o DBCA pra criar um database ** VAZIO ** de dados de usuários e clonar *** APENAS *** os itens gerais do banco (como TABLESPACES e ROLES, digamos), os objetos de usuários públicos não criados internamente pelo RDBMS (principalmente sinônimos públicos), os usuários de banco não-internos e seus privilégios E os poucos schemas não-internos que possuem dados, a melhor opção imho seria gerar os DDLs em um arquivo-texto pelo datapump : http://www.acehints.com/2011/07/data-pump-impdp-expdp-sqlfile-option-to.html é um pequeno exemplo pra te dar um start Provavelmente vc vai ter que enfiar um EXCLUDEs pra exluir os schemas internos e os dados das tabelas, mas não é nada muito complexo []s Chiappa