Atualização de schemas no Oracle 11gR2 com o Oracle Data Pump
Este artigo apresenta conceitos e práticas de uso do utilitário Oracle Data Pump Export e Data Pump Import na atualização de schemas, geração de backup e outros em servidores demonstrativos de produção, homologação e desenvolvimento.
No curso normal dos eventos em um banco de dados, os comandos DMLs (INSERT, UPDATE e DELETE) e SELECT são utilizados para extrair e inserir dados no banco de dados, porém há situações em que será necessário um método muito mais rápido e eficiente para realizar operações de grande volume.
Antes da versão Oracle 10g, era utilizado o utilitário export e import, que realizava a extração/importação dos dados como um processo de usuário no sistema operacional, usando uma sessão para recuperar os dados e transformá-los em arquivos, para depois salvá-los no sistema operacional.
Após a chegada da versão Oracle 10g, o utilitário padrão passou a ser o Oracle Data Pump usando os clientes expdp e impdp, que rodam como um processo de servidor. Isso melhora consideravelmente o desempenho da extração e importação de dados, pois, por ser um processo de servidor, o acesso aos arquivos de dados e a SGA serão diretos, não sendo mais necessário recuperar os mesmos através de uma sessão como era realizado nos utilitários anteriores.
O Oracle Data Pump é também base para muitos outros recursos-chave no banco de dados Oracle, como AWR, replicação Streams-Based, Logical Standby, Grid e em tablespaces transportáveis (Transportable tablespace). No entanto, não é o objetivo deste artigo detalhar cada um desses recursos.
Além do ganho em performance, os utilitários expdp e impdp trouxeram ganho na administração. É possível gerenciar o andamento de vários jobs se conectando a eles através de um usuário e senha que foram utilizados na execução da rotina ou com algum usuário que tenha os privilégios necessários para administrar o job.
Após conectado a um determinado job, o mesmo poderá ser consultado, pausado, reiniciado, interrompido, ou até mesmo ter alguns parâmetros alterados. Iremos realizar a administração de um job mais adiante.
Quando um job do Data Pump é iniciado, ao menos dois processos se iniciam: um processo Data Pump Master (DMnn) e um ou mais processos Worker (DWnn). Como o nome sugere, o processo mestre irá controlar os outros processos workers. Se for utilizado paralelismo, cada DWnn poderá fazer uso de dois ou mais servidores de execução paralela (Pnnn). O processo interno do Oracle Data Pump não é o escopo desse artigo, sendo assim, não entraremos em mais detalhes referentes ao funcionamento interno do utilitário.
Modos de exportação usando Oracle Data Pump
O Oracle Data Pump possui alguns modos específicos de exportação de dados que podem ser especificados na linha de comando ou usando o arquivo de parâmetros. Os modos que estão disponíveis para o Data Pump Export são:
- "FULL EXPORT MODE";
- "SCHEMA MODE";
- "TABLE MODE";
- "TABLESPACE MODE";
- "TRANSPORTABLE TABLESPACE MODE".
Neste artigo iremos utilizar alguns desses modos, os demais poderão ser consultados na documentação de referência da Oracle 11gR2.
O modo "FULL EXPORT MODE" equivale à exportação completa do banco de dados, todos os dados e meta dados que estiverem no banco de dados, sendo uma exportação de todos os schemas e objetos presentes no banco. Para a execução do Data Pump Export nesse nível, é necessário que o usuário que estiver executando a rotina de exportação tenha o privilégio DATA PUMP_EXP_FULL_DATABASE.
O modo de exportação por schema, "SCHEMA MODE", ocorre quando é especificado o parâmetro schemas e equivale à exportação específica de alguns determinados que forem especificados na linha de comando ou através dos arquivos de parâmetro. Esse modo é o padrão, sendo necessário ter o privilégio DATA PUMP_EXP_FULL_DATABASE para então poder especificar uma lista de schemas a serem exportados.
Se o usuário utilizado na execução da rotina não tiver os privilégios necessários para exportação completa (FULL) do banco de dados, o mesmo poderá somente exportar seu próprio schema.
Objetos que estejam cruzados entre schemas, como uma trigger que está habilitada para uma tabela residente em um determinado schema, mas que pertence a outro que não for especificado no momento da exportação, não serão exportados. A menos que o schema em que o objeto pertence esteja ou seja adicionado na lista dos exportados. É possível especificar todos eles da lista um a um ou através do parâmetro "FULL", o qual irá exportá-los no banco, exceto se houver alguma restrição utilizada com o parâmetro EXCLUDE.
O modo de exportação conhecido como “TABLE MODE” é especificado utilizando o parâmetro TABLES. Nesse modo, somente aquelas tabelas que forem especificadas serão exportadas além de outros objetos pertencentes ao schema em questão. Para utilização desse modo, também é necessário que o usuário tenha o privilégio DATA PUMP_EXP_FULL_DATABASE para exportar tabelas que não estejam no próprio schema, caso contrário, o usuário poderá exportar somente suas próprias tabelas.
As definições dos tipos de colunas presentes na tabela não serão exportadas, uma vez que deverão existir no banco de dados de destino. Assim como o modo de exportação de schemas, o modo de exportação de tabelas também não exporta referências de schemas cruzados.
O modo de exportação de “TABLESPACES"
[...] continue lendo...Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo