Forum Stats

  • 3,769,989 Users
  • 2,253,043 Discussions
  • 7,875,261 Comments

Discussions

como exportar e importar base de dados no SQLPLUS.

Tem acesso ao shell (linha de comando) do SQLPLUS, consigo gerenciar a BD

por tanto, quero exportar a base de dados completa, apartir do shell (linha de comando) SQLPLUS

do  Oracle.

Best Answer

  • J.Laurindo Chiappa
    J.Laurindo Chiappa Member Posts: 28
    edited Jan 29, 2019 11:32AM Accepted Answer

    Se é APENAS e TÃO SOMENTE ao sqlplus que vc tem acesso não, vc Não Conseguirá exportar ou importar bancos inteiros pelo sqlplus, no sqlplus de nativo só há o comando COPY, que é para copiar TABELAS, e não DATABASES INTEIROS...

    IDEALMENTE, para fazer esse tipo de tarefa (ALÉM das permissões necessárias E de um local em disco onde gerar o dump file, óbvio) vc deveria :

    a. ter acesso ao servidor Oracle (e lá executar as tools de export/import tradicionais OU o client de datapump) : isso geraria um dump file lá, que vc transferiria para a máquina destino e importaria lá

    OU

    b. ter um database Oracle qquer (um XE, que seja) na sua máquina local e ter a partir dessa máquina acesso via dblink ao banco origem dos dados : aí vc gera o dump local na sua máquina lendo os dados lá da origem remota via datapump com a opção NETWORK_LINK... Gerado esse dump file na sua máquina local, vc o transfere pra máquina destino onde vai ficar a "cópia" do database origem

    OU

    c. numa variação de b. , vc conecta no banco-origem a partir do banco destino (que vai estar vazio, acredito) via dblink e usa um impdp com o parâmetro NETWORK_LINK : com isso, nem sequer vai ser gerado dump file, a transferência de dados entre os bancos vai ser feita totalmente por rede

    OU

    d. usa uma tool de administração que POSSUA built-in para cópia não de tabelas mas de DATABASES : uma delas (da própria Oracle) é o freeware chamado ORACLE SQL DEVELOPER... Se vc a for usar, veja na doc dela sobre a opção "Database Copy", acessível pelo menu Tools

    ok ???? SE REALMENTE vc só tem acesso a esse database via sqlplus e NENHUMA outra ferramenta/meio mais, o que vc pode fazer (SE tiver as permissões necessárias e requisitos pra gerar dump file, se necessário) é simplesmente acionar o datapump direto do sqlplus, isso se faz com a package dbms_datapump, que permite acessar as rotinas internas do datapump SEM que seja exigido vc ter acesso ao prompt de comando de uma máquina com RDBMS Oracle presente - PL/SQL (como é o caso dessa package) pode ser acessado pelo prompt do sqlplus....

      SE for isso o que vc vai usar, veja no manual "Oracle Database Utilities" o capítulo "Examples of Using the Data Pump API", que demonstra isso....

     

      Abraços,

     

        José Laurindo Chiappa

Answers

  • Levi Pereira
    Levi Pereira Member Posts: 2,676 Gold Trophy
    edited Jan 29, 2019 11:12AM
  • J.Laurindo Chiappa
    J.Laurindo Chiappa Member Posts: 28
    edited Jan 29, 2019 11:32AM Accepted Answer

    Se é APENAS e TÃO SOMENTE ao sqlplus que vc tem acesso não, vc Não Conseguirá exportar ou importar bancos inteiros pelo sqlplus, no sqlplus de nativo só há o comando COPY, que é para copiar TABELAS, e não DATABASES INTEIROS...

    IDEALMENTE, para fazer esse tipo de tarefa (ALÉM das permissões necessárias E de um local em disco onde gerar o dump file, óbvio) vc deveria :

    a. ter acesso ao servidor Oracle (e lá executar as tools de export/import tradicionais OU o client de datapump) : isso geraria um dump file lá, que vc transferiria para a máquina destino e importaria lá

    OU

    b. ter um database Oracle qquer (um XE, que seja) na sua máquina local e ter a partir dessa máquina acesso via dblink ao banco origem dos dados : aí vc gera o dump local na sua máquina lendo os dados lá da origem remota via datapump com a opção NETWORK_LINK... Gerado esse dump file na sua máquina local, vc o transfere pra máquina destino onde vai ficar a "cópia" do database origem

    OU

    c. numa variação de b. , vc conecta no banco-origem a partir do banco destino (que vai estar vazio, acredito) via dblink e usa um impdp com o parâmetro NETWORK_LINK : com isso, nem sequer vai ser gerado dump file, a transferência de dados entre os bancos vai ser feita totalmente por rede

    OU

    d. usa uma tool de administração que POSSUA built-in para cópia não de tabelas mas de DATABASES : uma delas (da própria Oracle) é o freeware chamado ORACLE SQL DEVELOPER... Se vc a for usar, veja na doc dela sobre a opção "Database Copy", acessível pelo menu Tools

    ok ???? SE REALMENTE vc só tem acesso a esse database via sqlplus e NENHUMA outra ferramenta/meio mais, o que vc pode fazer (SE tiver as permissões necessárias e requisitos pra gerar dump file, se necessário) é simplesmente acionar o datapump direto do sqlplus, isso se faz com a package dbms_datapump, que permite acessar as rotinas internas do datapump SEM que seja exigido vc ter acesso ao prompt de comando de uma máquina com RDBMS Oracle presente - PL/SQL (como é o caso dessa package) pode ser acessado pelo prompt do sqlplus....

      SE for isso o que vc vai usar, veja no manual "Oracle Database Utilities" o capítulo "Examples of Using the Data Pump API", que demonstra isso....

     

      Abraços,

     

        José Laurindo Chiappa

  • Levi Pereira
    Levi Pereira Member Posts: 2,676 Gold Trophy
    edited Jan 29, 2019 12:09PM

    Até entendo as alternativas que você postou, mas penso que se o usuário  não tem permissão ou acesso a utilitário de exportação de dados ele deve requisitar ao DBA o acesso ou os dados em questão. 

    Acredito que você cuida de banco de dados e não vai querer ninguém tirando dados do seu banco com acessos paliativos.