2.221 MAX_STRING_SIZE
MAX_STRING_SIZE
は、SQL内のVARCHAR2
、NVARCHAR2
およびRAW
データ型の最大サイズを制御します。
特性 | 説明 |
---|---|
パラメータ・タイプ |
文字列 |
構文 |
|
デフォルト値 |
|
変更可能 |
|
PDBで変更可能 |
はい |
基本 |
いいえ |
Oracle RAC |
複数インスタンスには、同じ値を使用する必要がある。 |
脚注1
ALTER SYSTEMはデータベースがUPGRADEモードの場合のみ使用し、この項で説明するようにその後にutl32k.sqlを実行してください。
STANDARD
は、Oracle Database 12cより前のOracle Databaseリリースの長さ制限が適用されることを意味します(たとえば、VARCHAR
2およびNVARCHAR2
には4000バイト、RAW
には2000バイト)。
EXTENDED
は、Oracle Database 12cで導入された32767バイトの上限が適用されることを意味します。
MAX_STRING_SIZE
= EXTENDED
を設定するには、COMPATIBLE
初期化パラメータを12.0.0.0
以上に設定する必要があります。
MAX_STRING_SIZE
の値はSTANDARD
からEXTENDED
に変更できます。ただし、MAX_STRING_SIZE
の値をEXTENDED
からSTANDARD
には変更できません。
MAX_STRING_SIZE
= EXTENDED
に設定することにより、ユーザーはデータベース内でアプリケーションの非互換性を引き起こす可能性がある操作を明示的に行うことになります。拡張データ型の使用を禁止するアプリケーションは、リライトすることによりいずれかの設定との互換性を確保できます(たとえば、これらのアプリケーションは明示的にCASTを使用することにより、CREATE TABLE AS SELECT
の実行中のVARCHAR2
式の長さを固定できます)。
MAX_STRING_SIZE
を変更すると、データベース・オブジェクトが更新され、次のように無効化される場合があります。
-
仮想列を持つ表は新しいデータ型メタデータで更新され、仮想列が
VARCHAR2(4000)
、4000バイトのNVARCHAR2
またはRAW(2000)
型となります。-
ファンクション索引に関連する仮想列の変更によって索引キーが索引キー長さ制限を超過した場合、ファンクション索引は使用できなくなります。このような索引の再構築の試行は、
「ORA-01450: キーが最大長を超えました」
エラーで失敗します。
-
-
ビューに
VARCHAR2(4000)
、4000バイトのNVARCHAR2
またはRAW(2000)
型の式列が含まれている場合、これらのビューは無効化されます。 -
マテリアライズド・ビューは新しいメタデータで更新され、
VARCHAR2(4000)
、4000バイトのNVARCHAR2
またはRAW(2000)
型の式列となります。
CDBのVARCHAR2、NVARCHAR2およびRAW列の最大サイズを増加する
CDBおよびCDB内のすべてのPDBでVARCHAR2
、NVARCHAR2
およびRAW
列の最大サイズを増加するには、次の手順に従います。
-
SYSDBAとしてCDBに接続します。
-
ルートで、次のように
MAX_STRING_SIZE
の設定をEXTENDED
に変更します。ALTER SESSION SET CONTAINER=CDB$ROOT; ALTER SYSTEM SET max_string_size=extended SCOPE=SPFILE;
ノート:
ルートでは、
MAX_STRING_SIZE
がEXTENDED
に設定された後も、引き続きSTANDARD
セマンティクスが使用されます。ルートでMAX_STRING_SIZE
をEXTENDED
に設定する理由は、CDB内のすべてのPDBがルートからEXTENDED
設定を継承できるようにするためです。 -
CDBを停止します。
-
UPGRADEモードでCDBを再起動します。
startup upgrade;
-
catcon.pl
スクリプトを使用して、ルートに加えて、VARCHAR2
、NVARCHAR2
およびRAW
列の最大サイズを増やすCDB内のすべてのPDBでrdbms/admin/utl32k.sql
スクリプトを実行します。--force_pdb_mode 'UPGRADE'オプションは、アプリケーション・ルート・クローンを含め、すべてのPDBが移行モードでオープンされるようにするために使用します。プロンプトが表示されたら、SYSのパスワードを入力します。$ cd $ORACLE_HOME/rdbms/admin $ mkdir /scratch/mydir/utl32k_cdb_pdbs_output $ $ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -u SYS --force_pdb_mode 'UPGRADE' -d $ORACLE_HOME/rdbms/admin -l '/scratch/mydir/utl32k_cdb_pdbs_output' -b utl32k_cdb_pdbs_output utl32k.sql catcon: ALL catcon-related output will be written to [/scratch/mydir/utl32k_cdb_pdbs_output/utl32k_cdb_pdbs_output_catcon_23172.lst] catcon: See [/scratch/mydir/utl32k_cdb_pdbs_output/utl32k_cdb_pdbs_output*.log] files for output generated by scripts catcon: See [/scratch/mydir/utl32k_cdb_pdbs_output/utl32k_cdb_pdbs_output_*.lst] files for spool files, if any Enter Password: catcon.pl: completed successfully $
ノート:
utl32k.sql
スクリプトによって、必要な場合に、VARCHAR2
、NVARCHAR2
およびRAW
列の最大サイズが増やされます。一部のビューのSQLのリライト方法が原因で、これらのビューのVARCHAR2
、NVARCHAR2
およびRAW
列の最大サイズが増加しない場合があります。 -
SYSDBAとしてCDBに接続して、データベースを停止します。
-
CDBをNORMALモードで再起動します。
startup;
-
catcon.pl
スクリプトを使用して、ルートおよびCDB内のすべてのPDBでrdbms/admin/utlrp.sql
スクリプトを実行して、無効なオブジェクトを再コンパイルします。--force_pdb_mode 'READ WRITE'オプションは、すべてのPDB (アプリケーション・ルート・クローンを含む)が読取り/書込みモードでオープンされるようにするために使用します。プロンプトが表示されたら、SYSのパスワードを入力します。$ cd $ORACLE_HOME/rdbms/admin $ mkdir /scratch/mydir/utlrp_cdb_pdbs_output $ $ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -u SYS --force_pdb_mode 'READ WRITE' -d $ORACLE_HOME/rdbms/admin -l '/scratch/mydir/utlrp_cdb_pdbs_output' -b utlrp_cdb_pdbs_output utlrp.sql catcon: ALL catcon-related output will be written to [/scratch/mydir/utlrp_cdb_pdbs_output/utlrp_cdb_pdbs_output_catcon_24271.lst] catcon: See [/scratch/mydir/utlrp_cdb_pdbs_output/utlrp_cdb_pdbs_output*.log] files for output generated by scripts catcon: See [/scratch/mydir/utlrp_cdb_pdbs_output/utlrp_cdb_pdbs_output_*.lst] files for spool files, if any Enter Password: catcon.pl: completed successfully $
関連項目:
CDBおよびPDBでオラクル社が提供するスクリプトを実行するためのcatcon.pl
スクリプトの使用方法の詳細は、『Oracle Multitenant管理者ガイド』を参照してください。
PDBのVARCHAR2、NVARCHAR2およびRAW列の最大サイズを増加する
PDBでVARCHAR2
、NVARCHAR2
およびRAW
列の最大サイズを増加するには、次の手順に従います。
-
PDBを停止します。
-
PDBを移行モードで再オープンします。
ノート:
現在のコンテナがPDBである場合、次のSQL文を使用してPDBを移行モードで再オープンできます。
ALTER PLUGGABLE DATABASE
pdb-nameOPEN UPGRADE;
-
PDBの
MAX_STRING_SIZE
の設定をEXTENDED
に変更します。 -
PDBで
rdbms/admin/utl32k.sql
スクリプトを実行します。utl32k.sql
スクリプトを実行するには、AS SYSDBA
と接続している必要があります。 -
PDBを
NORMAL
モードで再度オープンします。ノート:
utl32k.sql
スクリプトによって、必要な場合に、VARCHAR2
、NVARCHAR2
およびRAW
列の最大サイズが増やされます。一部のビューのSQLのリライト方法が原因で、これらのビューのVARCHAR2
、NVARCHAR2
およびRAW
列の最大サイズが増加しない場合があります。 -
PDBで
rdbms/admin/utlrp.sql
スクリプトを実行して、無効なオブジェクトを再コンパイルします。このスクリプトを実行するには、AS SYSDBA
と接続している必要があります。
関連項目:
PDBのオープン・モード変更の詳細は、『Oracle Multitenant管理者ガイド』を参照してください。
Oracle RACデータベースのVARCHAR2、NVARCHAR2およびRAW列の最大サイズを増加する
Oracle RACデータベースでVARCHAR2
、NVARCHAR2
およびRAW
列の最大サイズを増加するには、次の手順に従います。
-
1つを残して、すべてのOracle RACデータベース・インスタンスを停止します。
-
UPGRADE
モードでOracle RACデータベース・インスタンスを再起動します。 -
MAX_STRING_SIZE
の設定をEXTENDED
に変更します。 -
Oracle RACデータベース・インスタンスで、
rdbms/admin/utl32k.sql
スクリプトを実行します。このスクリプトを実行するには、AS SYSDBA
と接続している必要があります。 -
NORMAL
モードですべてのOracle RACデータベース・インスタンスを再起動します。ノート:
utl32k.sql
スクリプトによって、必要な場合に、VARCHAR2
、NVARCHAR2
およびRAW
列の最大サイズが増やされます。一部のビューのSQLのリライト方法が原因で、これらのビューのVARCHAR2
、NVARCHAR2
およびRAW
列の最大サイズが増加しない場合があります。 -
rdbms/admin/utlrp.sql
スクリプトを実行して、無効なオブジェクトを再コンパイルします。このスクリプトを実行するには、AS SYSDBA
と接続している必要があります。
Oracle Data Guardロジカル・スタンバイ・データベースのVARCHAR2、NVARCHAR2およびRAW列の最大サイズを増加する
Oracle Data Guardロジカル・スタンバイ・データベースのVARCHAR2
、NVARCHAR2
、およびRAW
列の最大サイズを増やすには、次の手順に従います。
-
Oracle Data Guardプライマリ・データベースおよびロジカル・スタンバイ・データベースをシャットダウンします。
-
プライマリ・データベースおよびロジカル・スタンバイ・データベースを
UPGRADE
モードで再起動します。 -
プライマリ・データベースおよびロジカル・スタンバイ・データベースの
MAX_STRING_SIZE
の設定をEXTENDED
に変更します。 -
プライマリ・データベースとロジカル・スタンバイ・データベースの両方で
rdbms/admin/utl32k.sql
スクリプトを実行します。このスクリプトを実行するには、AS SYSDBA
と接続している必要があります。 -
プライマリ・データベースおよびロジカル・スタンバイ・データベースを
NORMAL
モードで再起動します。ノート:
utl32k.sql
スクリプトによって、必要な場合に、VARCHAR2
、NVARCHAR2
およびRAW
列の最大サイズが増やされます。一部のビューのSQLのリライト方法が原因で、これらのビューのVARCHAR2
、NVARCHAR2
およびRAW
列の最大サイズが増加しない場合があります。 -
プライマリ・データベースおよびロジカル・スタンバイ・データベースで
rdbms/admin/utlrp.sql
スクリプトを実行して、無効なオブジェクトを再コンパイルします。このスクリプトを実行するには、AS SYSDBA
と接続している必要があります。 -
SQL Applyを再起動します。
関連項目:
MAX_STRING_SIZE
パラメータの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照