ablog

不器用で落着きのない技術者のメモ

OPT_PARAM ヒント句で任意の SQL 実行中のみ一部の初期化パラメータを変更する

OPT_PARAM というヒント句を使うと、その SQL の実行中のみ初期化パラメータを変更することができるらしいです。

  • Oracle Database SQL言語リファレンス 11g リリース1(11.1) E05750-03

OPT_PARAMヒントを使用すると、現行の問合せ中にのみ初期化パラメータを設定できます。このヒントは、パラメータOPTIMIZER_DYNAMIC_SAMPLING、OPTIMIZER_INDEX_CACHING、OPTIMIZER_INDEX_COST_ADJ、OPTIMIZER_SECURE_VIEW_MERGINGおよびSTAR_TRANSFORMATION_ENABLEDに対してのみ有効です。たとえば、次のヒントは、ヒントを追加した文のパラメータSTAR_TRANSFORMATION_ENABLEDをTRUEに設定します。

SELECT /*+ OPT_PARAM('star_transformation_enabled' 'true') */ * FROM ... ;

文字列のパラメータ値は、一重引用符で囲まれます。数値のパラメータ値は、一重引用符で囲まずに指定されます。

Oracle SQLの基本要素
  • Oracle Database SQL言語リファレンス 11gリリース2(11.2) B56299-01

OPT_PARAMヒントを使用すると、現行の問合せ中にのみ初期化パラメータを設定できます。 このヒントは、パラメータOPTIMIZER_DYNAMIC_SAMPLING、OPTIMIZER_INDEX_CACHING、OPTIMIZER_INDEX_COST_ADJ、OPTIMIZER_SECURE_VIEW_MERGINGおよびSTAR_TRANSFORMATION_ENABLEDに対してのみ有効です。 たとえば、次のヒントは、ヒントを追加した文のパラメータSTAR_TRANSFORMATION_ENABLEDをTRUEに設定します。

SELECT /*+ OPT_PARAM('star_transformation_enabled' 'true') */ * FROM ... ;
文字列のパラメータ値は、一重引用符で囲まれます。 数値のパラメータ値は、一重引用符で囲まずに指定されます。

コメント

Staring in Oracle 10g release 2, Oracle introduced the opt_param SQL hint, without documentation. It appears that the opt_param hint is very similar to the "alter session" method for changing parameters, but it only applies to that specific SQL statement.

Troubleshooting tip! For testing, you can quickly test the effect of another optimizer parameter value at the query level without using an alter session command, using the new opt_param SQL hint:

Oracle opt_param SQL hint tips

製品マニュアルに登場するのは 11g からですが、10gR2 から存在していたようですね。