Blog
Movendo AWR Snapshots para outro database
As tabelas do AWR (Automatic Workload Repository) contém uma grande quantidade de dados de desempenho extremamente úteis para análises de performance e detecção de problemas. Os dados do AWR são armazenados em tabelas WRH$ e DBA_HIST alimentadas através de snapshots regulares e armazenados por um período de tempo definido na SYSAUX tablespace.
Algumas vezes é necessário que estes dados sejam salvos para utilizações futuras ou mesmo importados em outras bases de dados para comparações, maior tempo de armazenamento em relação ao definido na base origem, etc. A Oracle fornece dois scripts para realizar o export e import dos dados do AWR, são eles: awrextr.sql e awrload.sql, ambos localizados em $ORACLE_HOME/rdbms/admin
O export dos dados é realizado através do script awrextr.sql que gera um arquivo data pump contendo o intervalo de snapshots desejado e que posteriormente pode ser importado em outra base de dados.
Criando o diretório que será gerado o arquivo de dump:
SQL> create directory awr_directory as '/orabackup'; Directory created.
Executando o script de export:
SQL> @?/rdbms/admin/awrextr.sql ~~~~~~~~~~~~~ AWR EXTRACT ~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~ This script will extract the AWR data for a range of snapshots ~ ~ into a dump file. The script will prompt users for the ~ ~ following information: ~ ~ (1) database id ~ ~ (2) snapshot range to extract ~ ~ (3) name of directory object ~ ~ (4) name of dump file ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Databases in this Workload Repository schema ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DB Id DB Name Host ------------ ------------ ------------ * 3274873056 DBPRD tst1 The default database id is the local one: '3274873056'. To use this database id, press <return> to continue, otherwise enter an alternative.
Quando executado o script precisa de 4 interações para gerar o export dos snapshots.
- Informar o DBID da base de dados desejada. O script irá listar todos os dbids disponíveis, se o dbid desejado for o default(*) basta pressionar ENTER ou então primeiramente informar o dbid necessário.
Enter value for dbid: 3274873056 Using 3274873056 for Database ID
- O segundo passo é especificar a quantidade de dias para que a listagem dos snapshots (snap_ids) seja retornada e o período (begin_snap/end_snap) da extração de dados definida.
Specify the number of days of snapshots to choose from ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Entering the number of days (n) will result in the most recent (n) days of snapshots being listed. Pressing <return> without specifying a number lists all completed snapshots. Enter value for num_days: 1 Listing the last day's Completed Snapshots DB Name Snap Id Snap Started ------------ --------- ------------------ DBPRD 1 05 Nov 2017 09:50 2 05 Nov 2017 11:00 3 05 Nov 2017 12:00 4 05 Nov 2017 13:00 5 05 Nov 2017 14:00 6 05 Nov 2017 15:00 7 05 Nov 2017 16:00 Specify the Begin and End Snapshot Ids ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Enter value for begin_snap: 2 Begin Snapshot Id specified: 2 Enter value for end_snap: 6 End Snapshot Id specified: 6
- Especificar o diretório que será utilizado para gerar o arquivo de dump (expdp).
Specify the Directory Name ~~~~~~~~~~~~~~~~~~~~~~~~~~ Directory Name Directory Path ------------------------------ ------------------------------------------------- AWR_DIRECTORY /orabackup DATA_PUMP_DIR /u01/app/oracle/product/11.2.0.4/dbhome1/rdbms/lo g/ ORACLE_OCM_CONFIG_DIR /u01/app/oracle/product/11.2.0.4/dbhome1/ccr/host s/tst1/state ORACLE_OCM_CONFIG_DIR2 /u01/app/oracle/product/11.2.0.4/dbhome1/ccr/stat e Choose a Directory Name from the above list (case-sensitive). Enter value for directory_name: AWR_DIRECTORY Using the dump directory: AWR_DIRECTORY
- Por fim, informar o nome do arquivo data pump que será gerado. O nome não deve conter a extensão .dmp, ele será acrescentado automaticamente pelo script.
Specify the Name of the Extract Dump File ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The prefix for the default dump file name is awrdat_2_6. To use this name, press <return> to continue, otherwise enter an alternative. Enter value for file_name: awrdata_dbprd_2_6 Using the dump file prefix: awrdata_dbprd_2_6 | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | The AWR extract dump file will be located | in the following directory/file: | /orabackup | awrdata_dbprd_2_6.dmp | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | *** AWR Extract Started ... | | This operation will take a few moments. The | progress of the AWR extract operation can be | monitored in the following directory/file: | /orabackup | awrdata_dbprd_2_6.log | End of AWR Extract
Dependendo da quantidade de dados AWR que precisa ser extraído a operação de extração pode demorar um pouco para ser concluída. Uma vez concluída você pode levar o arquivo para o local ou servidor desejado.
O import de dados é realizado através do script awrload.sql utilizando o dump gerado anteriormente pelo script awrextr.sql, conforme demonstrado abaixo:
Criando o diretório em outra base de dados com o caminho onde se encontra o arquivo de dump:
SQL> create directory awr_directory as '/orabackup'; Directory created.
Executando o script de import:
SQL> @?/rdbms/admin/awrload.sql ~~~~~~~~~~ AWR LOAD ~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~ This script will load the AWR data from a dump file. The ~ ~ script will prompt users for the following information: ~ ~ (1) name of directory object ~ ~ (2) name of dump file ~ ~ (3) staging schema name to load AWR data into ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Da mesma forma que no script de export, o script de import também requer algumas interações.
- Informar o nome do diretório que contem o arquivo.
Specify the Directory Name ~~~~~~~~~~~~~~~~~~~~~~~~~~ Directory Name Directory Path ------------------------------ ------------------------------------------------- AWR_DIRECTORY /orabackup DATA_PUMP_DIR /u01/app/oracle/product/11.2.0.4/dbhome1/rdbms/lo g/ ORACLE_OCM_CONFIG_DIR /u01/app/oracle/product/11.2.0.4/dbhome1/ccr/host s/tst1/state ORACLE_OCM_CONFIG_DIR2 /u01/app/oracle/product/11.2.0.4/dbhome1/ccr/stat e Choose a Directory Name from the list above (case-sensitive). Enter value for directory_name: AWR_DIRECTORY Using the dump directory: AWR_DIRECTORY
- Informar o nome do arquivo contendo os dados AWR extraídos anteriormente. Não é preciso incluir junto ao nome do arquivo sua extensão (.dmp), ela será adicionada automaticamente pelo script.
Specify the Name of the Dump File to Load ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Please specify the prefix of the dump file (.dmp) to load: Enter value for file_name: awrdata_dbprd_2_6 Loading from the file name: awrdata_dbprd_2_6.dmp
- Nesta etapa deve ser informado o nome de um schema temporário para que os dados sejam importados e posteriormente transferidos para as tabelas do AWR. Após a transferencia dos dados para as tabelas do AWR o schema é automaticamente removido.
Informações como a tablespace permanente e temporária do schema também serão solicitadas nesta etapa e ao fim os dados serão finalmente importados.
Staging Schema to Load AWR Snapshot Data ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The next step is to create the staging schema where the AWR snapshot data will be loaded. After loading the data into the staging schema, the data will be transferred into the AWR tables in the SYS schema. The default staging schema name is AWR_STAGE. To use this name, press <return> to continue, otherwise enter an alternative. Enter value for schema_name: AWR_STAGE Using the staging schema name: AWR_STAGE Choose the Default tablespace for the AWR_STAGE user ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Choose the AWR_STAGE users's default tablespace. This is the tablespace in which the AWR data will be staged. TABLESPACE_NAME CONTENTS DEFAULT TABLESPACE ------------------------------ --------- ------------------ SYSAUX PERMANENT * Pressing will result in the recommended default tablespace (identified by *) being used. Enter value for default_tablespace: SYSAUX Using tablespace SYSAUX as the default tablespace for the AWR_STAGE Choose the Temporary tablespace for the AWR_STAGE user ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Choose the AWR_STAGE user's temporary tablespace. TABLESPACE_NAME CONTENTS DEFAULT TEMP TABLESPACE ------------------------------ --------- ----------------------- TEMP TEMPORARY * Pressing <return> will result in the database's default temporary tablespace (identified by *) being used. Enter value for temporary_tablespace: TEMP Using tablespace TEMP as the temporary tablespace for AWR_STAGE ... Creating AWR_STAGE user | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | Loading the AWR data from the following | directory/file: | /orabackup | awrdata_dbprd_2_6.dmp | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | *** AWR Load Started ... | | This operation will take a few moments. The | progress of the AWR load operation can be | monitored in the following directory/file: | /orabackup | awrdata_dbprd_2_6.log | ... Dropping AWR_STAGE user End of AWR Load
Dependendo da quantidade de dados AWR que serão importadas a operação pode demorar um pouco para ser concluída.
Verificando se os snapshots do DBID desejado foram importados:
SQL> select distinct dbid from DBA_HIST_SNAPSHOT; DBID ---------- 3274873056 3149615557