2.205 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リリースの長さ制限が適用されることを意味します(たとえば、VARCHAR2および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でVARCHAR2、NVARCHAR2およびRAW列の最大サイズを増加するには、次の手順に従います。
                  
- 
                        データベースを停止します。 
- 
                        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と接続している必要があります。
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 DATABASEpdb-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グローバリゼーション・サポート・ガイド』を参照