ALTER SESSION

ALTER SESSION文は、セッション・パラメータを動的に変更します。これは、現在のセッションの同等の接続属性の設定を上書きします(適用可能な場合)。

必要な権限

なし

TimesTen Scaleoutでの使用

この文は、TimesTen Scaleoutでサポートされています。ただし、これらのパラメータはサポートされていません。

  • DDL_REPLICATION_ACTION

  • DDL_REPLICATION_LEVEL

  • REPLICATION_TRACK

SQL構文

ALTER SESSION SET
  {COMMIT_BUFFER_SIZE_MAX = n |
   DDL_REPLICATION_ACTION={'INCLUDE'|'EXCLUDE'} | 
   DDL_REPLICATION_LEVEL={1|2|3} |
   ISOLATION_LEVEL = {SERIALIZABLE | READ COMMITTED} |
   NLS_SORT = {BINARY| SortName} |
   NLS_LENGTH_SEMANTICS = {BYTE|CHAR} |
   NLS_NCHAR_CONV_EXCP = {TRUE|FALSE} |
   PLSQL_TIMEOUT = n |
   PLSQL_OPTIMIZE_LEVEL = {0|1|2|3}|
   PLSQL_CONN_MEM_LIMIT = n |
   PLSQL_CCFLAGS = 'name1:value1, name2:value2,..., nameN:valueN' |
   PLSQL_SESSION_CACHED_CURSORS = n |
   REPLICATION_TRACK = TrackNumber |
   } 

パラメータ

パラメータ 説明

COMMIT_BUFFER_SIZE_MAX= n

接続の実行中に、コミット・バッファの最大サイズを変更します。nは整数で表現され、コミット・バッファの最大サイズ(MB)を示します。

変更は次のトランザクションから有効になります。

ttConfiguration組込みプロシージャをコールして、現在構成されているコミット・バッファの最大サイズを確認します。0を指定すると、デフォルト・サイズでバッファが設定されます。デフォルト・サイズは128KBです。

コミット・バッファおよびトランザクションの再利用操作の詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』「トランザクションの再要求操作」、および『Oracle TimesTen In-Memory Databaseリファレンス』「CommitBufferSizeMax」を参照してください。

ノート: 同等の接続属性はCommitBufferSizeMaxです。

DDL_REPLICATION_ACTION={'INCLUDE'|'EXCLUDE'}

表または順序のいずれかの作成時に表または順序をアクティブ・スタンバイ・ペアに含めるには、DDL_REPLICATION_ACTIONINCLUDEに設定します。表または順序のいずれかの作成時に表または順序をアクティブ・スタンバイ・ペアに含めない場合は、DDL_REPLICATION_ACTIONEXCLUDEに設定します。デフォルトはINCLUDEです。

EXCLUDEに設定した場合:

  • 表をレプリケーション・スキームに追加するには、後でALTER ACTIVE STANDBY PAIR ... INCLUDE TABLEをアクティブ・データベースで実行する必要があります。この文を実行すると表の内容は切り捨てられるため、すべての表がすべてのアクティブ・スタンバイ・データベースおよびサブスクライバで空である必要があります。

  • 順序をレプリケーション・スキームに追加するには、後でALTER ACTIVE STANDBY PAIR ... INCLUDE SEQUENCEをアクティブ・データベースで実行する必要があります。

この属性が有効なのは、DDL_REPLICATION_LEVELが2以上の場合のみです。

詳細は、『Oracle TimesTen In-Memory Databaseレプリケーション・ガイド』「アクティブ・スタンバイ・ペアでのDDL変更」を参照してください。

ノート: 同等の接続属性はDDLReplicationActionです。

DDL_REPLICATION_LEVEL={1|2|3}

DDLがアクティブ・スタンバイ・ペアのすべてのデータベースにわたってレプリケートされるかどうかを指定します。値は次のいずれかです。

  • 1: デフォルト。ALTER TABLEを使用して、アクティブ・データベースのレプリケートされる表に対して列を追加または削除します。変更は、スタンバイ・データベースの表にレプリケートされます。

  • 2: アクティブ・データベースからスタンバイ・データベースへの、表、シノニムまたは索引の作成または削除のレプリケーションをサポートします。これには、グローバル一時表の作成または削除は含まれますが、CREATE TABLE AS SELECTは含まれません。この文は、空の表に索引が作成された場合にのみレプリケートされます。

  • 3: レベル2でサポートされているすべてのDDLのレプリケーション、ビューと順序(マテリアライズド・ビューは含まれません)の作成または削除のレプリケーションをサポートし、ttCacheUidPwdSet組込みプロシージャをコールすると、キャッシュ管理ユーザーIDおよびパスワードの設定を変更します。

    ノート: キャッシュ・グループを定義した後に、キャッシュ管理ユーザーIDを変更することはできませんが、キャッシュ管理パスワードは変更できます。

詳細は、『Oracle TimesTen In-Memory Databaseレプリケーション・ガイド』「アクティブ・スタンバイ・ペアでのDDL変更」を参照してください。

ノート: 同等の接続属性はDDLReplicationLevelです。

ISOLATION_LEVEL = {SERIALIZABLE|READ COMMITTED}

分離レベルを設定します。変更は次のトランザクションから有効になります。

分離レベルの詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』「トランザクションの分離レベル」を参照してください。

ノート: 同等の接続属性はIsolationです。

NLS_SORT={BINARY| SortName}

言語の比較に使用する照合の順序を示します。

大/小文字を区別しないソートの場合またはアクセントを区別しないソートの場合は、BINARYまたはSortName値に_CIまたは_AIを追加します。

NLS_SORTを指定しない場合、デフォルトはBINARYです。

SortNameでサポートされる値の完全なリストは、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』「言語ソート・ルールでのサポートされている言語規則」を参照してください。

大/小文字を区別しないソートまたはアクセントを区別しないソートの詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』「大/小文字およびアクセントを区別しない言語ソート」を参照してください。

NLS_LENGTH_SEMANTICS ={BYTE|CHAR}

長さセマンティクス構成のデフォルトを設定します。BYTEはバイト長セマンティクスを示します。CHARは文字長セマンティクスを示します。デフォルトはBYTEです。

長さセマンティクスの詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』「データ格納に影響する文字セットの長さセマンティクス」を参照してください。

NLS_NCHAR_CONV_EXCP = {TRUE|FALSE}

NCHAR/NVARCHAR2データとCHAR/VARCHAR2データ間でキャラクタ・タイプの暗黙的または明示的な変換中にデータの損失があった場合に、エラーを報告するかどうかを指定します。TRUEを指定するとエラーが報告されます。FALSEを指定するとエラーは報告されません。デフォルトは、FALSEです。

PLSQL_TIMEOUT= n

PL/SQLプロシージャが自動的に終了されるまでの実行時間を制御します。nは時間(秒)を表します。0(時間制限なし)または正の整数を指定します。デフォルトは30です。

この値を変更すると、新しい値は、現在実行しているPL/SQLプログラム・ユニットおよび同じ接続でこの後実行される他のすべてのプログラム・ユニットに影響します。

タイムアウト値の設定の詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』「SQLおよびPL/SQLのタイムアウト値の選択」を参照してください。

PLSQL_OPTIMIZE_LEVEL = {0|1|2|3}

PL/SQLライブラリ・ユニットのコンパイルに使用する最適化レベルを指定します。設定値が高いほど、コンパイラでPL/SQLライブラリ・ユニットを最適化するのに多くの処理が必要になります。可能な値は0、1、2または3です。デフォルトは2です。

詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』「PLSQL_OPTIMIZE_LEVEL」を参照してください。

PLSQL_CONN_MEM_LIMIT = n

この接続でPL/SQLが使用できるプロセス・ヒープ・メモリーの最大量を指定します。nは整数(MB単位)です。デフォルトは100です。

詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』「PLSQL_CONN_MEM_LIMIT」を参照してください。

PLSQL_CCFLAGS = 'name1:value1, name2:value2, ..., nameN:valueN'

PL/SQLユニットの条件付きコンパイルを制御する問合せディレクティブを指定し、確認する条件に応じて、PL/SQLプログラムの機能をカスタマイズできます。たとえば、デバッグ機能をアクティブ化するには、次のようにします。

PLSQL_CCFLAGS = 'DEBUG:TRUE'

PLSQL_SESSION_CACHED_CURSORS= n

キャッシュするセッション・カーソルの最大数を指定します。デフォルトは50です。値の範囲は1から65535です。

TimesTenのPLSQL_SESSION_CACHED_CURSORS設定の動作は、Oracle RDBMSのSESSION_CACHED_CURSORS設定と同じです。

REPLICATION_TRACK = TrackNumber

追跡ベース・パラレル・レプリケーションを管理している場合は、レプリケーション追跡に接続を割り当てることができます。接続によって発行されたすべてのトランザクションは、追跡が変更されないかぎり、この追跡に割り当てられます。

指定された番号が、存在しないレプリケーション・トラックXに対してである場合、トランザクションはXReplicationParallelismで割った余りとして計算されたトラック番号に割り当てられます。

先行する操作がすべて読取り操作だった場合を除き、トランザクションの途中でトラックを変更することはできません。

詳細は、『Oracle TimesTen In-Memory Databaseレプリケーション・ガイド』「自動パラレル・レプリケーション環境でのレプリケーション・トラックの指定」を参照してください。

同等の接続属性はReplicationTrackです。

説明

  • ALTER SESSION文は、そのセッションで次に実行されるコマンドから作用します。ALTER SESSIONは暗黙的なコミットを実行しません。

  • クライアント・フェイルオーバーの場合、ALTER SESSION文が失敗した接続で発行された場合は、その設定は表示されず、新しい接続に継承されます。ALTER SESSION文を再発行して、そのパラメータの値を再指定する必要があります。クライアント・フェイルオーバーの詳細は、TimesTen Classicの場合は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』「自動クライアント・フェイルオーバーの使用」を参照してください。また、TimesTen Scaleoutの場合は、『Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイド』「クライアント接続のフェイルオーバー」を参照してください。

  • 文字比較を含む演算では、言語を区別する照合順番がサポートされています。大/小文字を区別しないソートは、DISTINCT値の解釈に影響することがあります。

  • CHARNCHAR間の暗黙的および明示的な変換がサポートされています。

  • サポートされている文字セットで、SQL文字列関数を使用できます。たとえば、UPPERおよびLOWER関数では、ASCII以外のCHARおよびVARCHAR2文字とNCHARおよびNVARCHAR2文字がサポートされています。

  • 選択した文字セットによっては、CHARおよびVARCHAR2列のデータに対するメモリー消費に影響する可能性があります。

  • レプリケーション・スキームに含まれるすべてのデータベースの文字セットが一致している必要があります。

  • 既存の表をアクティブ・スタンバイ・ペアに追加するには、DDL_REPLICATION_LEVELを2以上に設定し、DDL_REPLICATION_ACTIONINCLUDEに設定します。または、DDL_REPLICATION_ACTIONEXCLUDEに設定されている場合は、ALTER ACTIVE STANDBY PAIR ... INCLUDE TABLE文を使用できます。この場合、ALTER ACTIVE STANDBY PAIR ... INCLUDE TABLE文を実行すると表の内容は切り捨てられるため、この文を実行する前に、表は空であり、すべてのデータベースに存在している必要があります。

  • 既存の順序またはビューをアクティブ・スタンバイ・ペアに追加するには、DDL_REPLICATION_LEVELを3に設定します。順序をレプリケーション・スキームに含めるには、DDL_REPLICATION_ACTIONINCLUDEに設定する必要があります。これは、マテリアライズド・ビューには適用されません。

  • オブジェクトは、受信側データベースがそのレベルのレプリケーションをサポートするTimesTenリリースであり、アクティブ・スタンバイ・ペアのレプリケーション・スキーム用に構成されている場合にのみレプリケートされます。たとえば、11.2.2.7.0より前のデータベース・リリースへの順序のレプリケーション(DDL_REPLICATION_LEVEL=3が必要)は、サポートされません。受信側データベースは、DDL_REPLICATION_LEVEL=2でサポートされているオブジェクトのレプリケーション用に、リリース11.2.1.8.0以上である必要があります。

ALTER SESSION文を使用してCOMMIT_BUFFER_SIZE_MAXを500MBに設定します。まず、ttConfigurationをコールして現在の接続設定を表示します。ALTER SESSION文を使用して、COMMIT_BUFFER_SIZE_MAXを500に変更します。ttConfigurationをコールして、新しい設定を表示します。

Command>  CALL ttConfiguration ('CommitBufferSizeMax');
< CommitBufferSizeMax, 0 >
1 row found.
Command> ALTER SESSION SET COMMIT_BUFFER_SIZE_MAX = 500;
 
Session altered.
 
Command> CALL ttConfiguration ('CommitBufferSizeMax');
< CommitBufferSizeMax, 500 >
1 row found.

ALTER SESSION文を使用して、PLSQL_TIMEOUTを60秒に変更します。2つ目のALTER SESSION文を使用して、PLSQL_OPTIMIZE_LEVELを3に変更します。次に、ttConfigurationをコールして新しい値を表示します。

Command> ALTER SESSION SET PLSQL_TIMEOUT = 60;
Session altered.
Command> ALTER SESSION SET PLSQL_OPTIMIZE_LEVEL = 3;
Session altered.

Command> CALL TTCONFIGURATION ();
< CkptFrequency, 600 >
< CkptLogVolume, 0 >
< CkptRate, 0 >
...
< PLSQL_OPTIMIZE_LEVEL, 3 >
< PLSQL_TIMEOUT, 60 >
...
47 rows found.

この例では、PLSQL_TIMEOUTを20秒に設定します。無限にループするプログラムを実行してみます。20秒で実行が終了し、エラーが戻されます。

Command> ALTER SESSION SET PLSQL_TIMEOUT = 20;

Command> DECLARE v_timeout NUMBER;
         BEGIN
           LOOP
             v_timeout :=0;
             EXIT WHEN v_timeout < 0;
           END LOOP;
         END;
         /
 8509: PL/SQL execution terminated; PLSQL_TIMEOUT exceeded

次の例では、ALTER SESSION文を使用してNLS_SORT設定をBINARYからBINARY_CIに変更し、さらにBINARY_AIに変更しています。データベースおよび接続の文字セットはWE8ISO8859P1です。

Command> connect "dsn=cs;ConnectionCharacterSet=WE8ISO8859P1";
Connection successful: DSN=cs;UID=user;DataStore=/datastore/user/cs;
DatabaseCharacterSet=WE8ISO8859P1;
ConnectionCharacterSet=WE8ISO8859P1;PermSize=32;
(Default setting AutoCommit=1)
Command> -- Create the Table
Command> CREATE TABLE collatingdemo (letter VARCHAR2 (10));
Command> -- Insert values
Command> INSERT INTO collatingdemo VALUES ('a');
1 row inserted.
Command> INSERT INTO collatingdemo VALUES ('A');
1 row inserted.
Command> INSERT INTO collatingdemo VALUES ('Y');
1 row inserted.
Command> INSERT INTO collatingdemo VALUES ('ä');
1 row inserted.
Command> -- SELECT
Command> SELECT * FROM collatingdemo;
< a >
< A >
< Y >
< ä >
4 rows found.
Command> --SELECT with ORDER BY
Command> SELECT * FROM collatingdemo ORDER BY letter;
< A >
< Y >
< a >
< ä >
4 rows found.
Command>-- set NLS_SORT to BINARY_CI and SELECT
Command> ALTER SESSION SET NLS_SORT = BINARY_CI;
Command> SELECT * FROM collatingdemo ORDER BY letter;
< a >
< A >
< Y >
< Ä >
< ä >
4 rows found.
Command> -- Set NLS_SORT to BINARY_AI and SELECT
Command> ALTER SESSION SET NLS_SORT = BINARY_AI;
Command> SELECT * FROM collatingdemo ORDER BY letter;
< ä >
< a >
< A >
< Y >
4 rows found.

次の例では、コミット依存性を無効にした自動パラレル・レプリケーションを有効にします。ALTER SESSION文を使用して、現在の接続のレプリケーション・トラック数を5に変更します。レプリケーション・スキームのコミット依存性を無効にした自動パラレル・レプリケーションを有効にするには、ReplicationApplyOrderingを2に設定します。次に、REPLICATION_TRACKは常にReplicationParallelism以下の番号に設定します。たとえば、ReplicationParallelism接続属性を、REPLICATION_TRACKに設定された値である5よりも大きい6に設定できます。

Command> ALTER SESSION SET REPLICATION_TRACK = 5;
Session altered.

次の例では、変更スタンバイ・レプリケーション・ペアのアクティブ・データベースでDDL_REPLICATON_LEVEL2に設定し、DDLReplicationAction'INCLUDE'に設定して、列、表、シノニムおよび索引の追加および削除のレプリケーションを有効にします。

Command > ALTER SESSION SET DDL_REPLICATION_LEVEL=2;
Session altered.

Command > ALTER SESSION SET DDL_REPLICATION_ACTION='INCLUDE';
Session altered.

ノート:

DDL_REPLICATION_LEVELおよびDDL_REPLICATION_ACTIONの同等の接続属性は、それぞれDDLReplicationLevelおよびDDLReplicationActionです。