ALTER SESSION

目的

ALTER SESSION文を使用すると、データベースへの接続に影響するすべての条件またはパラメータを、設定または変更できます。この文は、データベースとの接続を切断するまで有効です。

前提条件

SQLトレース機能を使用可能または使用禁止にするには、ALTER SESSIONシステム権限が必要です。

再開可能な領域割当てを使用可能または使用禁止にするには、RESUMABLEシステム権限が必要です。

特に指定がないかぎり、これ以外の操作についての権限は必要ありません。

構文

alter_session_set_clause::=

セマンティクス

ADVISE句

ADVISE句を指定すると、分散トランザクションを強制処理するためのアドバイスをリモート・データベースに送ることができます。リモート・データベース内のDBA_2PC_PENDINGビューのADVICE列に、アドバイスが表示されます(値'C'がCOMMIT、'R'がROLLBACK、' 'がNOTHINGを示します)。トランザクションの状態がインダウトになった場合、データベース管理者は、このアドバイスを使用してトランザクションをコミットするか、ロールバックするかを決定できます。

単一トランザクションにおいて、ADVISE句を指定したALTER SESSION文を複数発行し、リモート・データベースごとに異なるアドバイスを送ることができます。ADVISE句を指定した文はそれぞれ、ADVISE句を指定した別の文が発行されるまで、トランザクション内の後続する文で参照されるデータベースに対してアドバイスを送ります。

CLOSE DATABASE LINK句

CLOSE DATABASE LINKを指定すると、データベース・リンクdblinkをクローズできます。データベース・リンクを使用するSQL文を発行した場合、Oracle Databaseは、このデータベース・リンクを使用してリモート・データベース上にセッションを作成します。この接続は、セッションの終了またはデータベース・リンクの数が初期化パラメータOPEN_LINKSの値を超えるまでオープンされています。リンクをオープンしたままにしておくことによって発生するネットワークのオーバーヘッドを減らすには、セッションでデータベース・リンクを再度使用しない場合に、この句を使用してデータベース・リンクを明示的にクローズします。

ENABLE | DISABLE COMMIT IN PROCEDURE

プロシージャおよびストアド・ファンクションはPL/SQLで記述されるため、COMMIT文とROLLBACK文を発行できます。アプリケーション自体が直接発行していないCOMMIT文やROLLBACK文によって、アプリケーションが中断される場合、DISABLE COMMIT IN PROCEDUREを指定して、セッション中にコールされるプロシージャおよびストアド・ファンクションがこれらの文を発行しないように制御します。

その後、ENABLE COMMIT IN PROCEDUREを指定することによって、セッションでプロシージャおよびストアド・ファンクションがCOMMITおよびROLLBACK文を発行できるようになります。

一部のアプリケーションは、自動的にプロシージャおよびストアド・ファンクションでのCOMMIT文やROLLBACK文を禁止します。詳細は、ご使用のアプリケーションのドキュメントを参照してください。

ENABLE | DISABLE GUARD

ALTER DATABASEsecurity_clauseを使用すると、SYSユーザー以外のユーザーは、プライマリ・データベースまたはスタンバイ・データベース上のデータまたはデータベース・オブジェクトを変更できなくなります。この句を使用すると、現行のセッションの設定を上書きできます。

関連項目:

GUARDの設定の詳細は、security_clauseを参照してください。

PARALLEL DML | DDL | QUERY

PARALLELパラメータを使用すると、そのセッションの後続のDML、DDLまたは問合せ文をパラレル実行するかどうかを指定できます。この句は、現行のセッション中に表自体を変更せずに、表の並列度を上書き可能にします。コミットされていないトランザクションは、DMLに対してこの句を実行する前に、コミットまたはロールバックされる必要があります。

ENABLE句

ENABLEを指定すると、セッション内の後続文をパラレルで実行できます。これは、DDL文および問合せ文のデフォルトです。

  • DML: パラレル・ヒントまたはパラレル句が指定されている場合に、DML文をパラレル・モードで実行します。

  • DDL: パラレル句が指定されている場合に、DDL文をパラレル・モードで実行します。

  • QUERY: パラレル・ヒントまたはパラレル句が指定されている場合に、問合せをパラレル・モードで実行します。

ENABLE句の制限事項

オプションのPARALLEL integerENABLEと組み合せて指定することはできません。

DISABLE句

DISABLEを指定すると、セッション内の後続文をシリアルで実行できます。これは、DML文のデフォルトです。

  • DML: DML文をシリアルで実行します。

  • DDL: DDL文をシリアルで実行します。

  • QUERY: 問合せをシリアルで実行します。

DISABLE句の制限事項

オプションのPARALLEL integerDISABLEと組み合せて指定することはできません。

FORCE句

FORCEを使用すると、セッションの後続文を強制的にパラレル実行できます。パラレル句もパラレル・ヒントも指定されていない場合は、デフォルトの並列度が使用されます。この句は、セッションの後続文に指定されたすべてのparallel_clauseを上書きしますが、パラレル・ヒントによって上書きされます。

  • DML: パラレルDML制限のどれにも違反していない場合、特定の並列度がこの句に指定されていないかぎり、セッションの後続のDML文は、デフォルトの並列度で実行されます。

  • DDL: 特定の並列度がこの句に指定されていないかぎり、セッションの後続のDDL文は、デフォルトの並列度で実行されます。結果のデータベース・オブジェクトは、通常の並列度に対応します。

    FORCE DDLを指定した場合、そのセッションで作成されるすべての表は、自動的にデフォルトの並列度で作成されます。結果は、CREATE TABLE文で(デフォルトの並列度を使用して)parallel_clauseを指定した場合と同じです。

  • QUERY: 特定の並列度がこの句に指定されていないかぎり、後続の問合せは、デフォルトの並列度で実行されます。

PARALLEL integer

並列度を明示的に指定する整数を指定します。

  • FORCE DDLでは、並列度は後続のDDL文のパラレル句を上書きします。

  • FORCE DMLおよびFORCE QUERYでは、並列度は、データ・ディクショナリの表に格納されている現行の並列度を上書きします。

  • ヒントによって文に指定される並列度は、強制的に実行される並列度を上書きします。

次のDML操作は、この句に関係なくパラレル化されません。

  • クラスタ化表に対する操作

  • データベースまたはパッケージの状態を読み書きする埋込みファンクションを使用した操作

  • 起動する可能性のあるトリガーを使用した表に対する操作

  • オブジェクト型、LONGまたはLOBデータ型が含まれている表またはスキーマ・オブジェクトでの操作

RESUMABLE句

これらの句を使用すると、再開可能な領域割当てを使用可能および使用禁止にできます。この機能によって、領域不足のエラー条件が発生した場合に操作は停止され、エラー条件が修復されたときに中断したところから自動的に再開されます。

ノート:

再開可能な領域割当ては、ローカル管理表領域での操作で、完全にサポートされます。ディクショナリ管理表領域を使用する場合は、制限事項があります。制限事項の詳細は、『Oracle Database管理者ガイド』を参照してください。

ENABLE RESUMABLE

この句を使用すると、セッションに対する再開可能な領域割当てを使用可能にできます。

TIMEOUT

TIMEOUTを使用すると、エラー条件が修復されるまで操作を停止する時間を秒単位で指定できます。エラー条件がTIMEOUTで指定した時間までに修復されない場合は、停止操作は異常終了します。

NAME

NAMEを使用すると、ユーザー定義のテキスト文字列を指定でき、再開可能モードのセッション中に発行される文の識別に有効です。USER_RESUMABLEデータ・ディクショナリ・ビューおよびDBA_RESUMABLEデータ・ディクショナリ・ビューに、テキスト文字列が挿入されます。NAMEを指定しない場合は、デフォルト文字列「User username(userid), Session sessionid, Instance instanceid」が挿入されます。

関連項目:

データ・ディクショナリ・ビューの詳細は、『Oracle Databaseリファレンス』を参照してください。

DISABLE RESUMABLE

この句を使用すると、セッションに対する再開可能な領域割当てを使用禁止にできます。

SHARD DDL句

これらの句は、シャード・データベースに接続している場合にのみ有効です。これらを使用すると、セッションで発行されるDDLが、シャード・カタログ・データベースおよびすべてのシャードに対して発行されるか、シャード・カタログ・データベースに対してのみ発行されるかを制御できます。

  • ENABLE SHARD DDLを指定すると、セッションで発行されるDDLは、シャード・カタログ・データベースおよびすべてのシャードに対して発行されます。このモードは、SDBユーザー(シャード・カタログ・データベースおよびすべてのシャードに存在するユーザー)のデフォルトです。

  • DISABLE SHARD DDLを指定すると、セッションで発行されるDDLは、シャード・カタログ・データベースに対してのみ発行されます。このモードは、ローカル・ユーザー(シャード・カタログ・データベースのみに存在するユーザー)のデフォルトです。

SYNC WITH PRIMARY

この句を使用すると、フィジカル・スタンバイ・データベース上のREDO Applyをプライマリ・データベースに同期できます。この句をALTER SESSION文とともに使用すると、文の発行時にスタンバイによって受信されたすべてのREDOデータがREDO Applyで適用されるまでブロックされます。スタンバイ・データベースのREDO転送状態がSYNCHRONIZEDでない場合、またはREDO Applyがアクティブでない場合、この句はエラーを戻し、同期は実行されません。

関連項目:

このセッション・パラメータの詳細は、『Oracle Data Guard概要および管理』を参照してください。

alter_session_set_clause

alter_session_set_clauseを使用すると、現行セッションの初期化パラメータ値またはエディションを設定できます。

初期化パラメータ

この句を使用して、次の2種類のパラメータを設定できます。

同じalter_session_set_clauseで複数のパラメータに対する値を設定できます。

EDITION

EDITION = editionを指定すると、指定したエディションをデータベース・セッションのエディションとして設定できます。editionに対するUSEオブジェクト権限が必要であり、editionは、あらかじめ作成されている必要があります。このエディションはUSABLEである必要があります。

この文が正常に実行された場合、エディション化可能なパッケージに対応するPL/SQLパッケージ状態はデータベースにより廃棄されますが、エディション化が可能でないパッケージに対応するパッケージ状態は保持されます。

また、SQL*Plus CONNECTコマンドのEDITIONパラメータを使用すると、起動時に現行セッションのエディションを設定できます。ただし、再帰的SQLまたはPL/SQLブロックでは、ALTER SESSION SET EDITION文を指定できません。

次の問合せを使用して、現行セッションで使用中のエディションを確認できます。

SELECT SYS_CONTEXT('USERENV', 'CURRENT_EDITION_NAME') FROM DUAL;

関連項目:

エディションの詳細は「CREATE EDITION」、エディションをUSABLEに指定する方法の詳細は『Oracle Database PL/SQL言語リファレンス』を参照してください。

CONTAINER

マルチテナント・コンテナ・データベース(CDB)でこの句を使用すると、container_nameで指定したコンテナに切り替えることができます。

この句を使用するには、SET CONTAINER権限(共通に付与されている権限か、container_nameでローカルに付与されている権限のいずれか)を持つ共通ユーザーである必要があります。

container_nameには、次のいずれかを指定します。

  • ルートに切り替えるにはCDB$ROOT

  • シードに切り替えるにはPDB$SEED

  • プラガブル・データベース(PDB)に切り替えるにはPDB名。CDB内のPDBの名前を表示するには、DBA_PDBSビューを問い合せます。

現行のセッションの接続先のコンテナを確認するには、SQL*Plus SHOW CON_NAMEコマンドまたは次のSQL問合せを使用します。

SELECT SYS_CONTEXT('USERENV', 'CON_NAME') FROM DUAL;

SERVICE

デフォルトでは、コンテナに切り替えると、セッションはコンテナのデフォルト・サービスを使用します。コンテナの別のサービスを使用する場合は、SERVICE句を指定します。service_nameに、使用するサービスの名前を指定します。

関連項目:

特定のコンテナへの切替えの詳細は、『Oracle Database管理者ガイド』を参照してください。

ROW ARCHIVAL VISIBILITY

この句を使用すると、セッションに対する行アーカイブの可視性を構成できます。この句によりインデータベース・アーカイブを実装でき、表の行をアクティブまたはアーカイブ済として指定できます。その後、表内のアクティブな行のみを対象に問合せを実行できます。

  • ACTIVEを指定すると、行アーカイブが有効な表の問合せ実行時にアクティブな行のみが考慮されます。これはデフォルトです。

  • ALLを指定すると、行アーカイブが有効な表の問合せ実行時にすべての行が考慮されます。

この句は、行アーカイブが無効な表の問合せには影響しません。

関連項目:

DEFAULT_COLLATION

この句を使用すると、セッションのデフォルト照合を設定できます。

  • collation_nameを使用して、セッションのデフォルト照合を指定します。有効な名前付き照合または疑似照合の名前を指定できます。この照合は有効スキーマのデフォルト照合になります。この照合は、セッション中に任意のスキーマでそれ以降に作成される表、ビューおよびマテリアライズド・ビューに割り当てられます。セッションのデフォルト照合は、DBリンクを使用して現行のセッションに接続されているリモート・セッションには伝播されません。

  • NONEを指定した場合は、セッションのデフォルト照合は設定されません。この場合は、特定のスキーマのデフォルト照合がそのスキーマの有効スキーマのデフォルト照合になります。このデフォルト照合は、セッション中にそのスキーマでそれ以降に作成される表、ビューおよびマテリアライズド・ビューに割り当てられます。

前述のいずれの場合も、有効スキーマのデフォルト照合を上書きし、特定の表、マテリアライズド・ビューまたはビューのCREATEまたはALTER文のDEFAULT COLLATION句を指定することで、その表、マテリアライズド・ビューまたはビューにデフォルト照合を割り当てることができます。

有効スキーマのデフォルト照合は、DDL文CREATE FUNCTIONCREATE PACKAGECREATE PROCEDURECREATE TRIGGERおよびCREATE TYPEにも影響します。これらの文の詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。

次の文を使用して、セッションのデフォルト照合を問い合せることができます。

SELECT SYS_CONTEXT('USERENV', 'SESSION_DEFAULT_COLLATION') FROM DUAL;

SET DEFAULT_COLLATION句を指定できるのは、COMPATIBLE初期化パラメータが12.2以上に設定されており、MAX_STRING_SIZE初期化パラメータがEXTENDEDに設定されている場合のみです。

関連項目:

スキーマのデフォルト照合の詳細は、「CREATE USER」の「DEFAULT COLLATION句」を参照してください。

ノート:

セッションの有効スキーマのデフォルト照合を、セッション・パラメータNLS_SORTと混同しないでください。有効スキーマのデフォルト照合は、表、ビューおよびマテリアライズド・ビューの作成時に、それらのデフォルトのデータ・バインドされた照合を決定するためにDDL文で使用されます。セッション・パラメータNLS_SORTは、決定された照合がUSING_NLS_COMPUSING_NLS_SORTなどの疑似照合であるSQL操作を含む、問合せ、DML文またはPL/SQLコードの実行時に使用される名前付き照合を指定します。詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

初期化パラメータおよびALTER SESSION

初期化パラメータの中には、ALTER SESSIONの有効範囲内で動的であるものがあります。このようなパラメータをALTER SESSIONを使用して設定したときに、設定した値が有効であるのは現行セッションの終了までとなります。パラメータをALTER SESSION文を使用して変更できるかどうかを調べるには、V$PARAMETER動的パフォーマンス・ビューのISSES_MODIFIABLE列を問い合せます。

ノート:

初期化パラメータの値を変更する前に、『Oracle Databaseリファレンス』を参照してください。

ALTER SESSIONで設定可能な一部のパラメータは、初期化パラメータではありません。初期化パラメータ・ファイルではなく、ALTER SESSIONでのみ設定可能です。これらのセッション・パラメータの詳細は、「セッション・パラメータおよびALTER SESSION」を参照してください。

セッション・パラメータおよびALTER SESSION

次のパラメータは、セッション・パラメータであり、初期化パラメータではありません。

CONSTRAINT[S]

構文:

CONSTRAINT[S] = { IMMEDIATE | DEFERRED | DEFAULT }

CONSTRAINT[S]は、遅延可能制約によって指定された条件を、いつ適用するかを指定します。

  • IMMEDIATEを設定すると、遅延可能な制約によって指定される条件は、各DML文の直後にチェックされます。これは、セッションの各トランザクションの開始時に、SET CONSTRAINTS ALL IMMEDIATE文を発行することと同じです。

  • DEFERREDを設定すると、遅延可能な制約によって指定される条件は、トランザクションのコミット時にチェックされます。これは、セッションの各トランザクションの開始時に、SET CONSTRAINTS ALL DEFERRED文を発行することと同じです。

  • DEFAULTを設定すると、すべての制約は各トランザクションの開始時に、DEFERREDまたはIMMEDIATEの初期状態にリストアされます。

CURRENT_SCHEMA

構文:

CURRENT_SCHEMA = schema

CURRENT_SCHEMAは、セッションの現行のスキーマを、指定したスキーマに変更します。セッション中のスキーマ・オブジェクトに対する後続の未修飾の参照は、この指定したスキーマ内でオブジェクトに変換されます。この設定は、現行のセッションの存続期間中、またはALTER SESSION SET CURRENT_SCHEMA文を再発行するまで保持されます。

この設定を利用すると、現行のユーザーのものではないスキーマにあるオブジェクトに対する操作を実行するときも、オブジェクトをスキーマ名で修飾することは不要になります。この設定を指定すると、現行スキーマは変更されますが、セッション・ユーザーや現行ユーザーが変更されることはなく、セッションに対する追加のシステム権限やオブジェクト権限がセッション・ユーザーに付与されることもありません。

ERROR_ON_OVERLAP_TIME

構文:

ERROR_ON_OVERLAP_TIME = {TRUE | FALSE}

ERROR_ON_OVERLAP_TIMEパラメータには、Oracle Databaseが不明瞭な境界日時値(日時が標準か夏時間かが明確でない場合)を処理する方法を指定します。

  • TRUEを指定すると、不明瞭なオーバラップ・タイムスタンプに対してエラーが戻されます。

  • FALSEを指定すると、不明瞭なオーバラップ・タイムスタンプは標準時刻のデフォルトになります。これはデフォルトです。

境界日時値の詳細は、「夏時間のサポート」を参照してください。

FLAGGER

構文:

FLAGGER = { ENTRY | OFF }

FLAGGERパラメータは、FIPSのフラグ付け(Federal Information Processing Standard 127-2で規定)を指定するものであり、このフラグを設定すると、SQL-92のエントリ・レベル(正式には、ANSI X3.135-1992。現在、この規格はSQL:2016に置き換えられています)の拡張であるSQL文が発行されたときにエラー・メッセージが生成されます。FLAGGERはセッション・パラメータであり、初期化パラメータではありません。

セッションでフラグ付けが設定されると、これに続くALTER SESSION SET FLAGGER文は成功しますが、ORA-00097のメッセージが生成されます。このため、セッションを切断しなくてもFIPSのフラグ付けを変更できます。OFFを設定した場合、フラグ付けの使用は停止されます。

関連項目:

現行のANSI SQL規格に対するOracleの準拠の詳細は、「Oracleと標準SQL」を参照してください。

INSTANCE

構文:

INSTANCE = integer

INSTANCEパラメータを設定すると、自分のインスタンスに接続している場合と同様に、別のインスタンスにもアクセスできます。INSTANCEはセッション・パラメータであり、初期化パラメータではありません。Oracle Real Application Clusters(Oracle RAC)環境では、このパラメータの設定に基づき、各Oracle RACインスタンスで、最適なDMLパフォーマンスを実現するようにディスク領域の静的または動的な所有権が保持されます。

ISOLATION_LEVEL

構文:

ISOLATION_LEVEL = {SERIALIZABLE | READ COMMITTED} 

ISOLATION_LEVELパラメータは、データベースを変更するトランザクションがどのように処理されるかを指定します。ISOLATION_LEVELはセッション・パラメータであり、初期化パラメータではありません。

  • SERIALIZABLEを設定すると、セッション内のトランザクションは、SQL規格に規定されているとおりシリアル化可能トランザクション分離モードを使用します。シリアル化可能トランザクションが行を更新するDML文を実行する場合、現在の更新対象の行がそのシリアル化可能トランザクションの開始時にコミットされていない別のトランザクションによって更新されていたときは、そのDML文は失敗します。シリアル化可能トランザクションは、同一トランザクション内で行った更新を確認できます。

  • READ COMMITTEDを設定すると、セッション内のトランザクションは、Oracle Databaseトランザクションのデフォルトの動作を行います。別のトランザクションで行ロックを保持しておく必要があるDMLがトランザクションに指定されていると、DML文は行ロックが解除されるまで待ち状態になります。

ノート:

シリアル化可能トランザクションは、遅延セグメント作成または時間隔パーティションでは動作しません。セグメントが作成されていない空の表、またはセグメントが存在しない時間隔パーティション表のパーティションにデータを挿入しようとすると、エラーになります。

STANDBY_MAX_DATA_DELAY

構文:

STANDBY_MAX_DATA_DELAY =  { integer | NONE } 

Active Data Guard環境では、このセッション・パラメータを設定すると、管理ユーザー以外のユーザーがリアルタイム問合せモードのフィジカル・スタンバイ・データベースに発行した問合せに関して、セッション固有の適用ラグの許容値を秒単位で指定できます。この機能によって、スタンバイ・データベースが許容できないほど失効したかどうかを検出できるため、プライマリ・データベースからフィジカル・スタンバイ・データベースに問合せを安全に移動できます。

STANDBY_MAX_DATA_DELAYがデフォルト値NONEに設定されている場合、フィジカル・スタンバイ・データベースに発行された問合せは、そのデータベースの適用ラグに関係なく実行されます。

STANDBY_MAX_DATA_DELAYを0(ゼロ)以外の値に設定すると、フィジカル・スタンバイ・データベースに発行された問合せは、適用ラグがSTANDBY_MAX_DATA_DELAY以下の場合のみ実行されます。それ以外の場合、ORA-3172エラーが戻され、適用ラグが大きすぎることがクライアントに警告されます。

STANDBY_MAX_DATA_DELAY0に設定すると、フィジカル・スタンバイ・データベースに発行された問合せは、プライマリ・データベースに対して発行された場合と同じ結果を戻すことが保証されます。ただし、スタンバイ・データベースがプライマリ・データベースよりも遅れている場合、ORA-3172エラーが戻されます。

関連項目:

Active Data Guardおよびこのセッション・パラメータの使用方法の詳細は、『Oracle Data Guard概要および管理』を参照してください。

TIME_ZONE

構文:

TIME_ZONE =  '[+ | -] hh:mi' 
             | LOCAL 
             | DBTIMEZONE 
             | 'time_zone_region'

TIME_ZONEパラメータには、現行のSQLセッションのデフォルトのローカル・タイムゾーン・オフセットまたは地域名を指定します。TIME_ZONEはセッション・パラメータであり、初期化パラメータではありません。現行のセッションのタイムゾーンを確認するには、組込み関数SESSIONTIMEZONEを問い合せます(「SESSIONTIMEZONE」を参照)。

  • UTCの前または後の時間および分を示す書式マスク('[+|-]hh:mi')を指定します。hh:miの有効範囲は、-12:00から+14:00です。

  • LOCALを指定すると、現行のSQLセッションのデフォルトのローカル・タイムゾーン・オフセットが、現行のSQLセッションを起動したときに構築された、元のデフォルトのローカル・タイムゾーン・オフセットに設定されます。

  • DBTIMEZONEを指定すると、現行セッションのタイムゾーンはデータベースのタイムゾーンの値と一致するように設定されます。この設定を指定した場合は、DBTIMEZONEファンクションによってデータベースのタイムゾーンがUTCオフセットまたはタイムゾーン地域名として戻されるようになりますが、どちらで戻されるかはデータベースのタイムゾーンの設定によって決まります。

  • 有効なtime_zone_regionを指定します。有効なタイムゾーン地域名を表示するには、V$TIMEZONE_NAMES動的パフォーマンス・ビューのTZNAME列を問い合せます。この設定を指定する場合、SESSIONTIMEZONEファンクションは地域の名前を戻します。

ノート:

夏時間機能には、タイムゾーン地域名が必要です。この名前は、大小2つのタイムゾーン・ファイルに格納されます。これらのファイルのうち、使用する環境および使用するOracle Databaseのリリースに応じて、いずれか一方がデフォルトのファイルになります。タイムゾーン・ファイルおよびタイムゾーン名の詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

関連項目:

両方のファイル内のすべてのタイムゾーン地域名のリストは、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

ノート:

環境変数ORA_SDTZを使用して、クライアント・セッションのデフォルトのタイムゾーンを設定することもできます。この変数の詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

USE_PRIVATE_OUTLINES

構文:

USE_PRIVATE_OUTLINES = { TRUE | FALSE | category_name }

USE_PRIVATE_OUTLINESパラメータを使用すると、プライベート・アウトラインの使用を制御することができます。このパラメータが使用可能で、アウトライン化されたSQL文が発行された場合、オプティマイザは、USE_STORED_OUTLINESが使用可能なときに使用されるパブリック領域ではなく、そのセッションのプライベート領域からアウトラインを検索します。そのセッションのプライベート領域にアウトラインが存在しない場合、オプティマイザは、文のコンパイルにアウトラインを使用しません。USE_PRIVATE_OUTLINESは、初期化パラメータではありません。

  • TRUEに設定すると、要求をコンパイルするときに、オプティマイザはDEFAULTカテゴリのストアド・プライベート・アウトラインを使用します。

  • FALSEに設定すると、オプティマイザはストアド・プライベート・アウトラインを使用しません。これはデフォルトです。USE_STORED_OUTLINESが使用可能な場合、オプティマイザはストアド・パブリック・アウトラインを使用します。

  • category_nameに設定すると、要求をコンパイルするときに、オプティマイザはcategory_nameカテゴリのストアド・アウトラインを使用します。

USE_PRIVATE_OUTLINESの制限事項

USE_STORED_OUTLINESが有効な場合は、このパラメータを有効化できません。

USE_STORED_OUTLINES

ノート:

ストアド・アウトラインは非推奨になりました。ストアド・アウトラインは、下位互換性を保つために今でもサポートされています。ただし、かわりにSQL計画管理を使用することをお薦めします。SQL計画管理の詳細は、Oracle Database SQLチューニング・ガイドを参照してください。

構文:

USE_STORED_OUTLINES = { TRUE | FALSE | category_name }

USE_STORED_OUTLINESパラメータは、オプティマイザが実行計画を生成するためにストアド・パブリック・アウトラインを使用するかどうかを決定します。USE_STORED_OUTLINESは、初期化パラメータではありません。

  • TRUEに設定すると、要求をコンパイルするときに、オプティマイザはDEFAULTカテゴリのストアド・アウトラインを使用します。

  • FALSEに設定すると、オプティマイザはストアド・アウトラインを使用しません。これはデフォルトです。

  • category_nameに設定すると、要求をコンパイルするときに、オプティマイザはcategory_nameカテゴリのストアド・アウトラインを使用します。

USED_STORED_OUTLINESの制限事項

USE_PRIVATE_OUTLINESが有効な場合は、このパラメータを有効化できません。

パラレルDMLの有効化: 例

次の文を発行して、現行のセッションでパラレルDMLモードを有効にします。

ALTER SESSION ENABLE PARALLEL DML;

分散トランザクションの強制実行: 例

次のトランザクションは、データベース・リンクremoteによって識別されるデータベース上のemployees表に従業員のレコードを挿入し、localによって識別されるデータベース上のemployees表から従業員のレコードを削除します。

ALTER SESSION
   ADVISE COMMIT; 

INSERT INTO employees@remote
   VALUES (8002, 'Juan', 'Fernandez', 'juanf@example.com', NULL, 
   TO_DATE('04-OCT-1992', 'DD-MON-YYYY'), 'SA_CLERK', 3000, 
   NULL, 121, 20); 

ALTER SESSION
   ADVISE ROLLBACK; 

DELETE FROM employees@local
   WHERE employee_id = 8002; 

COMMIT;  

このトランザクションには、ADVISE句を指定したALTER SESSION文が2つあります。このトランザクションが状態不明(インダウト)になった場合、remoteには、最初に指定したALTER SESSION文によってアドバイス'COMMIT'が送信され、localには、2番目の文によってアドバイス'ROLLBACK'が送信されます。

「データベース・リンクをクローズする: 例」

次の文は、データベース・リンクを使用しているlocalデータベース上のjobs表を更新し、このトランザクションをコミットして、データベース・リンクを明示的にクローズします。

UPDATE jobs@local SET min_salary = 3000
   WHERE job_id = 'SH_CLERK';

COMMIT; 

ALTER SESSION
   CLOSE DATABASE LINK local;

日付書式の動的変更: 例

次の文は、セッションのデフォルトの日付形式を動的に'YYYY MM DD-HH24:MI:SS'に変更します。

ALTER SESSION 
   SET NLS_DATE_FORMAT = 'YYYY MM DD HH24:MI:SS';

変更後は、新しい日付書式が次のように適用されます。

SELECT TO_CHAR(SYSDATE) Today
   FROM DUAL; 

TODAY 
------------------- 
2001 04 12 12:30:38

日付言語の動的変更: 例

次の文は、日付書式要素の言語をフランス語に変更します。

ALTER SESSION 
   SET NLS_DATE_LANGUAGE = French;

SELECT TO_CHAR(SYSDATE, 'Day DD Month YYYY') Today
   FROM DUAL; 

TODAY 
--------------------------- 
Jeudi    12 Avril     2001

ISO通貨の変更: 例

次の文は、ISO通貨記号を、地域がアメリカの場合のISO通貨記号に動的に変更します。

ALTER SESSION
   SET NLS_ISO_CURRENCY = America; 

SELECT TO_CHAR( SUM(salary), 'C999G999D99') Total
   FROM employees; 

TOTAL
------------------
     USD694,900.00

小数点文字および桁区切りの変更: 例

次の文は、小数点文字をカンマ(,)に、桁区切りをピリオド(.)に動的に変更します。

ALTER SESSION SET NLS_NUMERIC_CHARACTERS = ',.' ;

これらの数値書式要素を使用した場合、新しい文字が戻ります。

ALTER SESSION SET NLS_CURRENCY = 'FF';

SELECT TO_CHAR( SUM(salary), 'L999G999D99') Total FROM employees;

TOTAL
---------------------
         FF694.900,00

NLS通貨の変更: 例

次の文は、各国通貨記号をDMに動的に変更します。

ALTER SESSION
   SET NLS_CURRENCY = 'DM'; 

SELECT TO_CHAR( SUM(salary), 'L999G999D99') Total
   FROM employees; 

TOTAL
---------------------
         DM694.900,00

NLS言語の変更: 例

次の文は、エラー・メッセージが表示される言語をフランス語に動的に変更します。

ALTER SESSION
   SET NLS_LANGUAGE = FRENCH; 

Session modifiee.

SELECT * FROM DMP;

ORA-00942: Table ou vue inexistante

言語ソート順の変更: 例

次の文は、言語ソート順をスペイン語に動的に変更します。

ALTER SESSION
   SET NLS_SORT = XSpanish; 

これによって、文字の値はスペイン語のソート順序に基づいてソートされます。

クエリー・リライトの有効化: 例

次の文は、明示的に無効にされていないすべてのマテリアライズド・ビューに対する現行のセッションのクエリー・リライトを有効にします。

ALTER SESSION
  SET QUERY_REWRITE_ENABLED = TRUE;