Cuando tenemos que migrar los sql profiles de una base de datos a otra, por ej los generados en Testing a Produccion debemos realizar los siguientes pasos
1 - En la Base Origen ; Verificar cuantos sql_profiles tenemos
select count(*) from dba_sql_profiles;
2 - Crear una Staging Table
Esta tabla no la podemos crear en SYS, en este ejemplo esta en SYSTEM, pero se puede usar cualquier usuario
sqlplus / as sysdba
SQL> BEGIN
DBMS_SQLTUNE.CREATE_STGTAB_SQLPROF
(table_name => ‘TAB_SQL_PROFILES’,schema_name=>’SYSTEM’);
END;
/
3. Copiar los SQL PROFILES a la Staging Table
SQL> BEGIN
DBMS_SQLTUNE.PACK_STGTAB_SQLPROF
(profile_category => ‘%’,
staging_table_name => ‘TAB_SQL_PROFILES’,
staging_schema_owner=>’SYSTEM’);
END;
/
4. Verificar
select count(*) from SYSTEM.TAB_SQL_PROFILES;
5 . Exportar los SQL PROFILES
expdp system/***** dumpfile=expdp_sql_profiles.dmp TABLES=SYSTEM.TAB_SQL_PROFILES
DIRECTORY=DATA_PUMP_DIR
(Verificar donde apunta el directorio select * from dba_directories;)
6. Transferir el dump al servidor de la Base Destino
7. En la Base Destino : Crear la Staging Table
sqlplus / as sysdba
SQL> BEGIN
DBMS_SQLTUNE.CREATE_STGTAB_SQLPROF
(table_name => ‘TAB_SQL_PROFILES’,schema_name=>’SYSTEM’);
END;
/
8. Importar los SQL PROFILE, con TABLE_EXISTS_ACTION=TRUNCATE, esto implica que si la tabla existe ejecuta el truncate y la carga con los datos del dump
impdp system/***** dumpfile=expdp_sql_profiles.dmp TABLES=SYSTEM.TAB_SQL_PROFILES DIRECTORY=DATA_PUMP_DIR TABLE_EXISTS_ACTION=TRUNCATE
9. Verificar que se importaron
select count(*) from SYSTEM.TAB_SQL_PROFILES;
10. Verificar cuantos SQL PROFILES hay antes de desempaquetar
select count(*) from dba_sql_profiles;
11. Desempaquetar
SQL> BEGIN
DBMS_SQLTUNE.UNPACK_STGTAB_SQLPROF
(staging_table_name => ‘TAB_SQL_PROFILES’,
staging_schema_owner=>’SYSTEM’, replace=>FALSE);
12. Verificar que se agregaron bien los profiles. Tiene que dar el valor del resultado que dio el punto 10 + el punto 11, salvo que ya existiera previamente alguno de los profiles en ese caso puede dar menos.
select count(*) from dba_sql_profiles;
No hay comentarios:
Publicar un comentario