Olá a todos, há algumas semanas, durante um projeto, nosso cliente solicitou que durante o processo de migração do banco de dados tomássemos o SQL PLAN Baseline dos bancos de dados atuais.
Achei o tópico interessante para compartilhar com vocês, como fazer essa migração do SQL PLAN Baselines de um banco de dados para outro.
NOTA: O usuário do banco de dados deve ter o privilégio de “administer sql management object” para executar os passos abaixo.
- Crie uma tabela STAGING no banco de origem para exporta seus SQL PLAN Baselines. A tabela de STAGING não pode ser criado no esquema SYS para não receber o erro (ORA-19381)
Estou usando o esquema SYSTEM para executar este procedimento.
exec DBMS_SPM.CREATE_STGTAB_BASELINE('MIGBASELINE', MIGUSER);
2. Gere o Pack Baselines no banco de dados de Origem
Aqui podemos fazê-lo de quatro maneiras:
A) Gere um pack com todos os baselines do banco de dados.
set serveroutput on DECLARE x number; BEGIN x := DBMS_SPM.PACK_STGTAB_BASELINE('MIGBASELINE', MIGUSER); dbms_output.put_line(to_char(x) || ' plan baselines packed'); END; /
B) Gere um pack com todos os Baselines Plan de uma query
set serveroutput on
DECLARE
x number;
BEGIN
x := DBMS_SPM.PACK_STGTAB_BASELINE('MIGBASELINE', MIGUSER, sql_handle => 'SYS_SQL_58d940ad9b3ac043');
dbms_output.put_line(to_char(x) || ' plan baselines packed');
END;
/
C) Gere um pack de um Baseline Plan específico de uma query
set serveroutput on DECLARE x number; BEGIN x := DBMS_SPM.PACK_STGTAB_BASELINE('MIGBASELINE', MIGUSER, sql_handle => ' SYS_SQL_58d940ad9b3ac043', plan_name => 'SYS_SQL_PLAN_d380ae0c0a76c437' ); dbms_output.put_line(to_char(x) || ' plan baselines packed'); END; /
D) Gere um pack com os Baselines Plan que foram aceitos de uma query
set serveroutput on DECLARE x number; BEGIN x := DBMS_SPM.PACK_STGTAB_BASELINE('MIGBASELINE', MIGUSER, sql_handle => ' SYS_SQL_58d940ad9b3ac043', accepted => 'YES' ); dbms_output.put_line(to_char(x) || ' plan baselines packed'); END; /
3. Exporte a tabela de STAGING “MIGBASELINE” do banco de origem.
4. Importe a tabela de STAGING “MIGBASELINE” no banco de destino.
5. Descompacte as Baselines Plan no seu banco de destino.
set serveroutput on DECLARE x number; BEGIN x := DBMS_SPM.UNPACK_STGTAB_BASELINE('MIGBASELINE', MIGUSERN); dbms_output.put_line(to_char(x) || ' plan baselines unpacked'); END; /
Espero que isso ajude você!!!
André Luiz Dutra Ontalba
Disclaimer: “The postings on this site are my own and don’t necessarily represent may actual employer positions, strategies or opinions. The information here was edited to be useful for general purpose, specific data and identifications was removed to allow reach generic audience and to be useful
One Comment
LjGodRcDHJUP
mQvBUkWSrub