初期化パラメータ

データベースをプロビジョニングすると、Autonomous Databaseによってデータベース初期化パラメータが自動的に構成されます。サービスの使用を開始するために初期化パラメータを設定する必要はありません。ただし、必要に応じて一部のパラメータを変更できます。

変更可能な初期化パラメータのリスト

APPROX_FOR_AGGREGATION
APPROX_FOR_COUNT_DISTINCT
APPROX_FOR_PERCENTILE
BLANK_TRIMMING (Allowed only with ALTER SYSTEM)
CLIENT_PREFETCH_ROWS (see CLIENT_PREFETCH_ROWS
CONSTRAINTS (Allowed only with ALTER SESSION)
CONTAINER (Allowed only with ALTER SESSION)
CONTAINER_DATA
CURRENT_SCHEMA (Allowed only with ALTER SESSION)
CURSOR_INVALIDATION (Allowed only with ALTER SESSION)
CURSOR_SHARING
DDL_LOCK_TIMEOUT
DEFAULT_COLLATION (Allowed only with ALTER SESSION)
DEFAULT_CREDENTIAL (Allowed only with ALTER SESSION)
EDITION (Allowed only with ALTER SESSION)
FIXED_DATE (Allowed only with ALTER SYSTEM)
IGNORE_SESSION_SET_PARAM_ERRORS
ISOLATION_LEVEL (Allowed only with ALTER SESSION)
JOB_QUEUE_PROCESSES (Allowed only with ALTER SYSTEM)
LDAP_DIRECTORY_ACCESS
LOAD_WITHOUT_COMPILE 
MAX_IDLE_TIME (Allowed only with ALTER SYSTEM)
MAX_STRING_SIZE (See Data Types for details)
NLS_CALENDAR
NLS_COMP
NLS_CURRENCY
NLS_DATE_FORMAT
NLS_DATE_LANGUAGE
NLS_DUAL_CURRENCY
NLS_ISO_CURRENCY
NLS_LANGUAGE
NLS_LENGTH_SEMANTICS
NLS_NCHAR_CONV_EXCP
NLS_NUMERIC_CHARACTERS
NLS_SORT
NLS_TERRITORY
NLS_TIME_FORMAT
NLS_TIME_TZ_FORMAT
NLS_TIMESTAMP_FORMAT
NLS_TIMESTAMP_TZ_FORMAT
OPTIMIZER_CAPTURE_SQL_QUARANTINE
OPTIMIZER_IGNORE_HINTS
OPTIMIZER_IGNORE_PARALLEL_HINTS
OPTIMIZER_MODE
OPTIMIZER_REAL_TIME_STATISTICS
OPTIMIZER_USE_SQL_QUARANTINE
PLSCOPE_SETTINGS
PLSQL_CCFLAGS
PLSQL_DEBUG
PLSQL_OPTIMIZE_LEVEL
PLSQL_WARNINGS
QUERY_REWRITE_INTEGRITY
READ_ONLY (Allowed only with ALTER SESSION)
RECYCLE_BIN 
REMOTE_DEPENDENCIES_MODE
RESULT_CACHE_INTEGRITY (See RESULT_CACHE_INTEGRITY)
RESULT_CACHE_MODE (See RESULT_CACHE_MODE)
SESSION_EXIT_ON_PACKAGE_STATE_ERROR (Allowed only with ALTER SYSTEM) See SESSION_EXIT_ON_PACKAGE_STATE_ERROR
SKIP_UNUSABLE_INEDEXES
SQL_TRACE (Allowed only with ALTER SESSION) See Perform SQL Tracing on Autonomous Database for details
SQL_TRANSLATION_PROFILE (Allowed only with ALTER SESSION)
STATISTICS_LEVEL (Allowed only with ALTER SESSION)
SYSDATE_AT_DBTIMEZONE (See SYSDATE_AT_DBTIMEZONE Select a Time Zone for SYSDATE on Autonomous Database)
TIMEZONE (Allowed only with ALTER SESSION)

初期化パラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。TIME_ZONEの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

OPTIMIZER_IGNORE_HINTSおよびOPTIMIZER_IGNORE_PARALLEL_HINTSの詳細は、Autonomous Databaseでのオプティマイザ統計の管理に関する項を参照してください。

SESSION_EXIT_ON_PACKAGE_STATE_ERROR

SESSION_EXIT_ON_PACKAGE_STATE_ERRORは、セッションで実行されているステートフルPL/SQLパッケージの特別な処理を有効または無効にします。

プロパティ 説明
パラメータ型 Boolean
デフォルトの値 FALSE
変更可能 ALTER SYSTEM
値の範囲 TRUE | FALSE

SESSION_EXIT_ON_PACKAGE_STATE_ERRORは、セッションで実行されているステートフルPL/SQLパッケージの処理を指定します。このようなパッケージが変更された場合(Oracle提供オブジェクトの計画メンテナンス中など)、パッケージのアクティブなインスタンス化があるセッションは、パッケージを実行しようとすると次のエラーを受け取ります:

ORA-4068 existing state of package has been discarded

ただし、ORA-4068エラーを受信するアプリケーション・コードでは、その再試行ロジックでこのエラーを処理できない場合があります。

SESSION_EXIT_ON_PACKAGE_STATE_ERRORTRUEに設定すると、このケースで異なる処理が行われます。SESSION_EXIT_ON_PACKAGE_STATE_ERRORTRUEの場合、パッケージ状態が破棄されると、ORA-4068エラーが発生するのみでなく、セッションもすぐに終了します。多くのアプリケーションが自動的かつ透過的に接続を再確立することによってセッションの終了を処理できるため、これは有益である可能性があります。

SYSDATE_AT_DBTIMEZONE Autonomous DatabaseでのSYSDATEのタイム・ゾーンの選択

SYSDATE_AT_DBTIMEZONEは、SYSDATEおよびSYSTIMESTAMPへのコールで返される日時値に対するセッションでの特別な処理を有効にします。

SYSDATE_AT_DBTIMEZONEの値に応じて、デフォルトのAutonomous Databaseタイム・ゾーン、協定世界時(UTC)、またはデータベースに設定したタイム・ゾーンに基づく日時が表示されます。

プロパティ 説明
パラメータ型 Boolean
デフォルトの値 FALSE
変更可能 ALTER SESSION, ALTER SYSTEM
値の範囲 TRUE | FALSE

デフォルトのAutonomous Databaseタイムゾーン

デフォルトのAutonomous Databaseタイム・ゾーンは、UTC (Coordinated Universal Time)であり、デフォルトではSYSDATEおよびSYSTIMESTAMPをコールすると、日付と時刻がUTCで返されます。

データベースのタイム・ゾーンを変更するには、次の文を実行します。この例では、データベースのタイム・ゾーンをUTC-5に設定しています。

ALTER DATABASE SET TIME_ZONE='-05:00';
ノート

変更を有効にするには、Autonomous Databaseインスタンスを再起動する必要があります。

データベースのタイム・ゾーンの設定後、デフォルトでは、SYSDATEおよびSYSTIMESTAMPは引き続きUTCで日時を返します(SYSDATE_AT_DBTIMEZONEはデフォルトでFALSEです)。セッションでSYSDATE_AT_DBTIMEZONETRUEに設定すると、SYSDATEおよびSYSTIMESTAMPはデータベースのタイム・ゾーンを返します。

ALTER DATABASESET TIME_ZONE句を使用する方法の詳細は、データベースのタイム・ゾーンの設定を参照してください。

セッションでのSYSDATE_AT_DBTIMEZONEの使用

セッションでSYSDATE_AT_DBTIMEZONEFALSEの場合、SYSDATEおよびSYSTIMESTAMPをコールすると、デフォルトのAutonomous Databaseタイム・ゾーンであるCoordinated Universal Time (UTC)に基づいて値が返されます。

セッションでSYSDATE_AT_DBTIMEZONETRUEの場合、SYSDATEまたはSYSTIMESTAMPをコールすると、データベースのタイム・ゾーンに基づいて日付と時刻が返されます。

ノート

SYSDATE_AT_DBTIMEZONETRUEに設定すると、アプリケーションSQLの演算子としてのSYSDATEおよびSYSTIMESTAMPの使用にのみ影響します(たとえば、問合せ、DMLおよびCTAS操作の場合)。このパラメータを使用する場合は、クライアント/セッションのタイムゾーンがデータベースのタイムゾーンと一致することをお薦めします。

次の例では、SYSDATE_AT_DBTIMEZONEパラメータ値に基づいて、2つの異なるタイム・ゾーンの日時が返されます:

SQL> SELECT DBTIMEZONE FROM DUAL;

DBTIMEZONE
_____________
-05:00

SQL> ALTER SESSION SET SYSDATE_AT_DBTIMEZONE=FALSE;

Session altered.

SQL> SELECT SYSTIMESTAMP FROM DUAL;

SYSTIMESTAMP
______________________________________
27-JAN-22 06.59.45.708082000 PM GMT

SQL> ALTER SESSION SET SYSDATE_AT_DBTIMEZONE=TRUE;

Session altered.

SQL> SELECT SYSTIMESTAMP FROM DUAL;

SYSTIMESTAMP
_________________________________________
27-JAN-22 02.14.47.578946000 PM -05:00 
ノート

データベース・アクションのSQLワークシートでSYSDATEまたはSYSTIMESTAMP問合せを実行すると、返される日時の値はUTCになります(SYSDATE_AT_DBTIMEZONEパラメータがTRUEまたはFALSEに設定されている場合)。データベース・アクションでの作業時にデータベースのタイム・ゾーンを取得するには、次のようにTO_CHAR()を使用します:

SQL> SELECT TO_CHAR(SYSTIMESTAMP,'YYYY-MM-DD"T"HH24:MI:SS TZH":"TZM') FROM DUAL;

TO_CHAR(SYSTIMESTAMP,'YYYY-MM-DD"T"HH24:MI:SSTZH":"TZM')
___________________________________________________________
2022-01-27T14:15:00 -05:00

CLIENT_PREFETCH_ROWS

CLIENT_PREFETCH_ROWSパラメータを設定して、クライアントが問合せ結果セットの行のフェッチ中に必要なラウンドトリップ数を削減できるようにします。

CLIENT_PREFETCH_ROWSは、クライアント・アプリケーションを変更せずに、Oracleクライアント・ドライバによってプリフェッチされる行数を指定します。クライアント・ドライバは、問合せの実行が成功するたび、データベースに送信される後続のフェッチ・リクエストごとに、プリフェッチされた行をバッファリングします。

このパラメータは、Oracle Call Interface (OCI)を使用してデータベースに接続するクライアントのみに適用されます。

このパラメータは、すべてのプラットフォームでOracle Instant Client/Oracle Database Client 19.17 (以上)および21.8 (以上)にのみ適用されます。

プロパティ 説明
パラメータ型 Integer
構文 CLIENT_PREFETCH_ROWS = integer
デフォルトの値 0 (クライアント側の設定のみが適用されます)
変更可能 ALTER SYSTEM, ALTER SESSION
値の範囲 0からUB4MAXVAL (4294967295)
Basic いいえ

CLIENT_PREFETCH_ROWSパラメータは、ALTER SESSIONまたはALTER SYSTEMで設定できます。ALTER SESSIONを使用してパラメータ値が変更されると、後続の結果セット・フェッチでその特定のセッションに対して新しい値が有効になります。ALTER SYSTEMを使用してパラメータ値が変更された場合、新しい値は、ALTER SYSTEMコマンドの後に作成された接続で実行される文に対して有効になります。

たとえば、CLIENT_PREFETCH_ROWSが100に設定され、クライアント・アプリケーションが10行のフェッチを要求した場合、合計110行がクライアント・ドライバに返されます。110行中の最初の10行がアプリケーションに与えられ、クライアント・ドライバは残りの100行を内部的にバッファリングします。クライアント・アプリケーションから次の10行がフェッチされ、フェッチ反復ごとに10行がそれぞれ、クライアント・ドライバによって内部的にバッファされる100行から処理できます。このプロセスにより、データベースとの間の必要なネットワーク・ラウンドトリップの数が削減されます。この例では、11番目のフェッチで、新しいネットワーク・ラウンドトリップが発生し、結果セットが使い果たされておらず、サイクルが繰り返されているかぎり、データベースは110行の次のバッチを返します。

CLIENT_PREFETCH_ROWSの設定に関するノート:

  • CLIENT_PREFETCH_ROWSがゼロ以外の値に設定されている場合、その値はプリフェッチ行数のデフォルトのOCI_ATTR_PREFETCH_ROWS値よりも優先されます。

  • OCI_ATTR_PREFETCH_ROWS値がデフォルト以外の値に設定されている場合、プリフェッチ行数のCLIENT_PREFETCH_ROWS値は無視されます。

  • OCIAttrSet()CLIENT_PREFETCH_ROWSを使用する場合:

    OCI_ATTR_PREFETCH_ROWSは、プリフェッチされるトップレベル行の数を設定します。デフォルトは1行です。ただし、CLIENT_PREFETCH_ROWSが設定されている場合、プリフェッチされる最上位行の数は、次の優先順位によって決定されます。

    1. OCIAttrSet()関数またはoraaccess.xmlを値'1'として使用してOCI_ATTR_PREFETCH_ROWS属性を設定すると、データベース初期化パラメータのCLIENT_PREFETCH_ROWS値が優先され、プリフェッチされる最上位行の数が決定されます。

    2. OCIAttrSet()関数またはoraaccess.xmlを1以外の値'x'として使用してOCI_ATTR_PREFETCH_ROWS属性を設定すると、最上位行数の'x'がプリフェッチされ、データベース初期化パラメータCLIENT_PREFETCH_ROWSは無視されます。

    3. OCIAttrSet()またはoraaccess.xmlを使用してOCI_ATTR_PREFETCH_ROWS値を設定しない場合、データベース初期化パラメータのCLIENT_PREFETCH_ROWS値が優先され、プリフェッチされる最上位行の数が決定されます。

  • OCIAttrGet()CLIENT_PREFETCH_ROWSを使用する場合:

    ファンクションOCIAttrGet()は、OCI_ATTR_PREFETCH_ROWSoraaccess.xmlおよびデータベース初期化パラメータCLIENT_PREFETCH_ROWSから設定された有効なプリフェッチ行値を返します。OCI_ATTR_PREFETCH_MEMORY値が設定されている場合、OCIAttrGet()によって返される値は、最終的なプリフェッチ行の値ではない可能性があり、OCI_ATTR_PREFETCH_MEMORY属性で指定されたメモリー値で許可される最大行数に制限される場合があります。

参照:

JOB_QUEUE_PROCESSES

JOB_QUEUE_PROCESSESパラメータを設定して、Oracle Scheduler (DBMS_SCHEDULER)ジョブを実行するために作成できるジョブ・ワーカーの最大数を指定します。

値を0に設定すると、Oracle提供でないスケジューラ・ジョブが無効になります。

プロパティ 説明
パラメータ型 Integer
構文 JOB_QUEUE_PROCESSES = integer
デフォルトの値

デフォルト値は、ECPU数(データベースがOCPUを使用している場合はOCPU数)およびECPU自動スケーリングの設定(データベースがOCPUを使用している場合はOCPU自動スケーリング)によって異なります。詳細は次の表を参照してください。

変更可能 ALTER SYSTEM
値の範囲

最小値: 0

最大値は、次の表に示すように、ECPU数(データベースがOCPUを使用している場合はOCPU数)およびECPU自動スケーリング(データベースがOCPUを使用している場合はOCPU自動スケーリング)の設定によって異なります。

JOB_QUEUE_PROCESSESのデフォルト値と最大値は、使用するコンピュート・モデルによって異なります。詳細は、Autonomous Databaseのコンピュート・モデルを参照してください。

コンピュート・モデル 自動スケーリングが無効なデフォルトおよび最大値 自動スケーリングが有効なデフォルトおよび最大値
ECPU 7.5 x ECPU数 22.5 x ECPU数
OCPU 30 x OCPU数 90 x OCPU数

Oracle Schedulerのジョブ・コーディネータおよびジョブ・ワーカーは、JOB_QUEUE_PROCESSESパラメータによって制御されます。Oracle Schedulerジョブ用に作成されるジョブ・ワーカーの数は、使用可能なリソース、リソース・マネージャ設定、現在実行中のジョブなどの複数のファクタに応じて、スケジューラにより自動チューニングされます。

JOB_QUEUE_PROCESSESのデフォルト値では、アプリケーションのサービス品質とシステム・リソースの適切な使用の両立を図っています。ただし、すべての環境にデフォルト値が適合するとはかぎりません。

JOB_QUEUE_PROCESSESの値を0に設定すると、Oracle提供でないスケジューラ・ジョブが無効になります。JOB_QUEUE_PROCESSES0に設定されている場合、Oracle提供ユーザーの内部ジョブは無効化されません(Oracle提供ユーザーが実行するサービス関連ジョブは引き続きスケジュールされます)。

Oracle提供のユーザーは、値がYORACLE_MAINTAINEDとしてマークされたユーザーです。Oracle提供以外のユーザーは、値がNORACLE_MAINTAINEDとしてマークされたユーザーです。

詳細は、ALL_USERSを参照してください。

RESULT_CACHE_INTEGRITY

RESULT_CACHE_INTEGRITYパラメータを設定して、結果キャッシュで結果キャッシュの候補として決定的でない可能性のある構造を使用する問合せを考慮するかどうかを指定します。

プロパティ 説明
パラメータ型 文字列
構文 RESULT_CACHE_INTEGRITY = { ENFORCED | TRUSTED }
デフォルトの値

Autonomous Databaseのデフォルト値はENFORCEDです

変更可能 ALTER SYSTEM

  • ENFORCED: RESULT_CACHE_MODEまたは指定されたヒントの設定に関係なく、結果キャッシュの対象となるのは決定論的な構成のみです。たとえば、決定論的として宣言されていないPL/SQLファンクションを使用する問合せはキャッシュされません(ファンクションが決定論的として宣言されていないかぎり、そのようなファンクションを使用した問合せ結果はキャッシュされません)。

  • TRUSTED: データベースは、RESULT_CACHE_MODEおよび指定されたヒントの設定を尊重し、結果キャッシュの候補として決定的でない可能性のある構造を使用する問合せを検討します。たとえば、決定論的として宣言されていないPL/SQLファンクションを使用する問合せはキャッシュできます。ただし、非決定的であることがわかっている結果はキャッシュされません(たとえば、SYSDATEまたはSYSDATEを含むコンストラクト)。

RESULT_CACHE_MODE

RESULT_CACHE_MODEパラメータを設定して、結果キャッシュに格納する適格な問合せを指定します。結果キャッシュ演算子が指定されている問合せ計画のみが、結果キャッシュに対する読取りまたは書込みを試行します。

プロパティ 説明
パラメータ型 文字列
構文 RESULT_CACHE_MODE = { MANUAL | MANUAL_TEMP | FORCE | FORCE_TEMP }
デフォルトの値

ワークロード・タイプがデータ・ウェアハウスに設定されているAutonomous Databaseの場合: FORCE

ワークロード・タイプ「トランザクション処理」、「JSON」または「APEX」の場合: MANUAL

変更可能 ALTER SESSION, ALTER SYSTEM

詳細は、RESULT_CACHE_MODEを参照してください。

SQLの結果キャッシュ・ヒントの使用

キャッシュの動作を制御するには、アプリケーション・レベルで結果キャッシュ・ヒントを使用します。SQLの結果キャッシュ・ヒントは、結果キャッシュのモードおよび表注釈よりも優先されます。

SQL結果キャッシュ・ヒントは、次の方法で使用できます。

  • RESULT_CACHEヒントの使用

  • NO_RESULT_CACHEヒントの使用

  • ビューでのRESULT_CACHEヒントの使用

RESULT_CACHEヒントの使用

結果キャッシュ・モードがMANUALの場合、/*+ RESULT_CACHE */ヒントは、問合せブロックの結果をキャッシュに格納し、キャッシュされた結果を今後の実行で使用するようデータベースに指示します。

詳細は、RESULT_CACHEヒントの使用およびRESULT_CACHEヒントを参照してください。

NO_RESULT_CACHEヒントの使用

/*+ NO_RESULT_CACHE */ヒントは、データベースがサーバーまたはクライアントの結果キャッシュに結果をキャッシュしないように指示します。

詳細は、NO_RESULT_CACHEヒントの使用およびRESULT_CACHEヒントを参照してください。

ビューでのRESULT_CACHEヒントの使用

RESULT_CACHEヒントは、ヒントが指定された問合せブロックにのみ適用されます。ビューにのみヒントが指定されている場合は、その結果のみがキャッシュされます。

詳細は、「ビューでのRESULT_CACHEヒントの使用」およびRESULT_CACHEヒントを参照してください。