Un SQL profile mis au point en test doit souvent suivre le code jusqu’en production. Oracle fournit pour cela un mécanisme de table de transit dans DBMS_SQLTUNE.

1. Lister les profils pour récupérer le nom du profil

SELECT * FROM DBA_SQL_PROFILES;

2. Créer la table de transit

BEGIN
  DBMS_SQLTUNE.CREATE_STGTAB_SQLPROF (
    table_name  => 'TMP_SQL_PROFILES'
,   schema_name => 'SYSTEM'
);
END;

3. Charger le profil dans la table de transit

Utilisez le NAME du profil trouvé à l’étape 1.

BEGIN
  DBMS_SQLTUNE.PACK_STGTAB_SQLPROF (
    profile_name         => 'SYS_SQLPROF_02701ab7b57c0000'
,   staging_table_name   => 'TMP_SQL_PROFILES'
,   staging_schema_owner => 'SYSTEM'
);
END;

4. Transférer la table de transit vers la base cible

Tout moyen de transfert de table convient ; avec Data Pump :

# Sur le serveur source
expdp system tables=SYSTEM.TMP_SQL_PROFILES directory=DATA_PUMP_DIR dumpfile=sql_profiles.dmp
# Copier le fichier dump sur le serveur cible, puis
impdp system tables=SYSTEM.TMP_SQL_PROFILES directory=DATA_PUMP_DIR dumpfile=sql_profiles.dmp

5. Restaurer le profil dans la base cible

BEGIN
  DBMS_SQLTUNE.UNPACK_STGTAB_SQLPROF(
     replace              => true
,    staging_table_name   => 'TMP_SQL_PROFILES'
,    staging_schema_owner => 'SYSTEM'
);
END;

Le profil est actif dès sa restauration. Vérifiez-le dans DBA_SQL_PROFILES sur la cible, puis supprimez la table de transit des deux côtés.