ALTER SESSION文は、セッション・パラメータを動的に変更します。
必要な権限
ありません。
SQL構文
ALTER SESSION SET {NLS_SORT = {BINARY| SortName} | NLS_LENGTH_SEMANTICS = {BYTE|CHAR} | NLS_NCHAR_CONV_EXCP = {TRUE|FALSE} | ISOLATION_LEVEL = {SERIALIZABLE | READ COMMITTED} | PLSQL_TIMEOUT = n | PLSQL_OPTIMIZE_LEVEL = {0|1|2|3}| PLSCOPE_SETTINGS = {'IDENTIFIERS:ALL'|'IDENTIFIERS:NONE'} | PLSQL_CONN_MEM_LIMIT = n } ...
パラメータ
ALTER SESSION文には、次のパラメータがあります。
| パラメータ | 説明 | 
|---|---|
NLS_SORT={BINARY| SortName} | 
言語の比較に使用する照合の順序を示します。
 大/小文字を区別しないソートの場合またはアクセントを区別しないソートの場合は、BINARYまたは NLS_SORTを指定しない場合、デフォルトはBINARYです。 
 大/小文字を区別しないソートまたはアクセントを区別しないソートの詳細は、『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です。 | 
ISOLATION_LEVEL = {SERIALIZABLE|READ COMMITTED} | 
分離レベルを設定します。 変更は次のトランザクションから有効になります。
 分離レベルの詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』を参照してください。  | 
PLSQL_TIMEOUT= n | 
自動終了するまでのPL/SQLプロシージャの実行時間を制御します。nは、時間(秒)を示します。 0(ゼロ)を指定して時間制限をなしにするか、または正の整数を指定します。 デフォルトは30です。
この値を変更すると、新しい値は、現在実行しているPL/SQLプログラム・ユニットおよび同じ接続でこの後実行される他のすべてのプログラム・ユニットに影響します。 データベースでPL/SQLが無効になっているときにこの属性を指定した場合、TimesTenによってエラーがスローされます。  | 
PLSQL_OPTIMIZE_LEVEL = {0|1|2|3} | 
PL/SQLライブラリ・ユニットのコンパイルに使用する最適化レベルを指定します。 設定を高くするほど、PL/SQLライブラリ・ユニットを最適化するためにコンパイラにかかる負荷が大きくなります。 可能な値は0、1、2または3です。デフォルトは2です。
 データベースでPL/SQLが無効になっているときにこの属性を指定した場合、TimesTenによってエラーが返されます。 詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。  | 
PLSCOPE_SETTINGS = '{IDENTIFIERS:ALL |IDENTIFIERS:NONE}' | 
PL/SQLコンパイラで相互参照情報を生成するかどうかを制御します。 相互参照情報を生成するには、IDENTIFIERS:ALLを指定します。 デフォルトはIDENTIFIERS:NONEです。
データベースでPL/SQLが無効になっているときにこの属性を指定した場合、TimesTenによってエラーが返されます。 詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。  | 
PLSQL_CONN_MEM_LIMIT = n | 
PL/SQLでこの接続に使用できるプロセス・ヒープ・メモリーの最大容量を指定します。nは整数で、MB単位で示します。 デフォルトは100です。
データベースでPL/SQLが無効になっているときにこの属性を指定した場合、TimesTenによってエラーが返されます。 詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。  | 
説明
ALTER SESSION文は、そのセッションで次に実行されるコマンドから作用します。新しいセッション・パラメータはただちに有効になります。
NLS_SORTの設定は、マテリアライズド・ビューおよびキャッシュ・グループの維持に影響します。 NLS_SORTの設定に頼るのではなく、NLSSORT() SQL関数を使用してください。
文字長およびバイト長セマンティクスは、列長および記憶域サイズについて発生する可能性がある問題を解決するためにサポートされています。マルチバイト・エンコードのキャラクタ・セットがサポートされています(例: UTF-8またはAL32UTF8)。マルチバイト・エンコードでは、1文字に必要な記憶域量が文字によって異なります。たとえば、UTF-8の文字では1から4バイトが必要です。
たとえば、CHAR (10)と定義された列の場合、キャラクタ・セットのエンコードに関係なく、この列には10文字が収まると想定されます。しかし、キャラクタ・セットのエンコードがUTF-8の場合は、最大40バイトが必要になります。TimesTenでは、文字長およびバイト長セマンティクスをサポートすることで、このような問題を回避します。
文字比較を含む演算では、言語を区別する照合順番がサポートされています。大/小文字を区別しないソートは、DISTINCT値の解釈に影響することがあります。照合順番を区別する演算でサポートされているものは、次のとおりです。
MIN、MAX
BETWEEN
=、!=、 >、 >=、<、<=
DISTINCT
CASE
GROUP BY
HAVING
ORDER BY
IN
LIKE
主キー索引は、BINARY照合順番に基づいています。 主キー索引の等価検索でバイナリ以外のNLS_SORTは使用できません。
CHARとNCHAR間の暗黙的および明示的な変換がサポートされています。
TIMESTEN8キャラクタ・セットを使用している場合は、CHARとNCHAR間の変換ができません。
サポートされているキャラクタ・セットで、SQL文字列関数を使用できます。 たとえば、UPPERおよびLOWER関数では、ASCII以外のCHARおよびVARCHAR2文字とNCHARおよびNVARCHAR2文字がサポートされています。
TIMESTEN8キャラクタ・セットには、次の制限があります。
キャラクタ・セットの変換はできません。
使用できる照合順番はBINARYのみです。
CHARセマンティクスは無視されます。文字はシングルバイトであると想定されます。
UPPERおよびLOWER関数でサポートされるのはASCII文字のみです。ASCII以外の文字に対する結果は定義されていません。エラーは返されません。
NLS_SORTでBINARY以外を設定すると、文字演算でのパフォーマンスに影響する可能性があります。
選択したキャラクタ・セットによっては、CHARおよびVARCHAR2列のデータに対するメモリー消費に影響する可能性があります。
レプリケーション・スキームに含まれるすべてのデータ・ストアのキャラクタ・セットが一致している必要があります。
例
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
ttConfigurationをコールして、現在のPLSCOPE_SETTINGSの値を表示します。 ALTER SESSION文を使用して、PLSCOPE_SETTINGSの値をIDENTIFIERS:ALLに変更します。 ダミーのプロシージャpを作成します。 システム・ビューSYS.USER_PLSQL_OBJECT_SETTINGSに問合せを発行して、プロシージャpに新しい設定が適用されていることを確認します。
Command> CALL TTCONFIGURATION ();< CkptFrequency, 600 >< CkptLogVolume, 0 >< CkptRate, 0 >
...< PLSCOPE_SETTINGS, IDENTIFIERS:NONE >...47 rows found.
Command> ALTER SESSION SET PLSCOPE_SETTINGS = 'IDENTIFIERS:ALL';
Session altered.
Command> CREATE OR REPLACE PROCEDURE p IS
       > BEGIN
       >  NULL;
       > END;
       > /
Procedure created.
Command> SELECT PLSCOPE_SETTINGS FROM SYS.USER_PLSQL_OBJECT_SETTINGS WHERE
       > NAME = 'p';
< IDENTIFIERS:ALL >
1 row found.
次の例では、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;TypeMode=0;
(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.