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.