2.205 MAX_STRING_SIZE

MAX_STRING_SIZEは、SQL内のVARCHAR2NVARCHAR2およびRAWデータ型の最大サイズを制御します。

特性 説明

パラメータ・タイプ

文字列

構文

MAX_STRING_SIZE = { STANDARD | EXTENDED }

デフォルト値

STANDARD

変更可能

ALTER SYSTEM ... SID='*'脚注 1

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でVARCHAR2NVARCHAR2およびRAW列の最大サイズを増加するには、次の手順に従います。

  1. データベースを停止します。

  2. UPGRADEモードでデータベースを再起動します。

  3. MAX_STRING_SIZEの設定をEXTENDEDに変更します。

  4. rdbms/admin/utl32k.sqlスクリプトを実行します。このスクリプトを実行するには、AS SYSDBAと接続している必要があります。

  5. データベースをNORMALモードで再起動します。

    ノート:

    utl32k.sqlスクリプトによって、必要な場合に、VARCHAR2NVARCHAR2およびRAW列の最大サイズが増やされます。一部のビューのSQLのリライト方法が原因で、これらのビューのVARCHAR2NVARCHAR2およびRAW列の最大サイズが増加しない場合があります。

  6. rdbms/admin/utlrp.sqlスクリプトを実行して、無効なオブジェクトを再コンパイルします。このスクリプトを実行するには、AS SYSDBAと接続している必要があります。

CDBのVARCHAR2、NVARCHAR2およびRAW列の最大サイズを増加する

CDBおよびCDB内のすべてのPDBでVARCHAR2NVARCHAR2およびRAW列の最大サイズを増加するには、次の手順に従います。

  1. SYSDBAとしてCDBに接続します。

  2. ルートで、次のようにMAX_STRING_SIZEの設定をEXTENDEDに変更します。

    ALTER SESSION SET CONTAINER=CDB$ROOT;
    ALTER SYSTEM SET max_string_size=extended SCOPE=SPFILE;

    ノート:

    ルートでは、MAX_STRING_SIZEEXTENDEDに設定された後も、引き続きSTANDARDセマンティクスが使用されます。ルートでMAX_STRING_SIZEEXTENDEDに設定する理由は、CDB内のすべてのPDBがルートからEXTENDED設定を継承できるようにするためです。

  3. CDBを停止します。

  4. UPGRADEモードでCDBを再起動します。

    startup upgrade;
  5. catcon.plスクリプトを使用して、ルートに加えて、VARCHAR2NVARCHAR2および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スクリプトによって、必要な場合に、VARCHAR2NVARCHAR2およびRAW列の最大サイズが増やされます。一部のビューのSQLのリライト方法が原因で、これらのビューのVARCHAR2NVARCHAR2およびRAW列の最大サイズが増加しない場合があります。

  6. SYSDBAとしてCDBに接続して、データベースを停止します。

  7. CDBをNORMALモードで再起動します。

    startup;
  8. 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でVARCHAR2NVARCHAR2およびRAW列の最大サイズを増加するには、次の手順に従います。

  1. PDBを停止します。

  2. PDBを移行モードで再オープンします。

    ノート:

    現在のコンテナがPDBである場合、次のSQL文を使用してPDBを移行モードで再オープンできます。

    ALTER PLUGGABLE DATABASE pdb-name OPEN UPGRADE;

  3. PDBのMAX_STRING_SIZEの設定をEXTENDEDに変更します。

  4. PDBでrdbms/admin/utl32k.sqlスクリプトを実行します。utl32k.sqlスクリプトを実行するには、AS SYSDBAと接続している必要があります。

  5. PDBをNORMALモードで再度オープンします。

    ノート:

    utl32k.sqlスクリプトによって、必要な場合に、VARCHAR2NVARCHAR2およびRAW列の最大サイズが増やされます。一部のビューのSQLのリライト方法が原因で、これらのビューのVARCHAR2NVARCHAR2およびRAW列の最大サイズが増加しない場合があります。

  6. PDBでrdbms/admin/utlrp.sqlスクリプトを実行して、無効なオブジェクトを再コンパイルします。このスクリプトを実行するには、AS SYSDBAと接続している必要があります。

関連項目:

PDBのオープン・モード変更の詳細は、『Oracle Multitenant管理者ガイド』を参照してください。

Oracle RACデータベースのVARCHAR2、NVARCHAR2およびRAW列の最大サイズを増加する

Oracle RACデータベースでVARCHAR2NVARCHAR2およびRAW列の最大サイズを増加するには、次の手順に従います。

  1. 1つを残して、すべてのOracle RACデータベース・インスタンスを停止します。

  2. UPGRADEモードでOracle RACデータベース・インスタンスを再起動します。

  3. MAX_STRING_SIZEの設定をEXTENDEDに変更します。

  4. Oracle RACデータベース・インスタンスで、rdbms/admin/utl32k.sqlスクリプトを実行します。このスクリプトを実行するには、AS SYSDBAと接続している必要があります。

  5. NORMALモードですべてのOracle RACデータベース・インスタンスを再起動します。

    ノート:

    utl32k.sqlスクリプトによって、必要な場合に、VARCHAR2NVARCHAR2およびRAW列の最大サイズが増やされます。一部のビューのSQLのリライト方法が原因で、これらのビューのVARCHAR2NVARCHAR2およびRAW列の最大サイズが増加しない場合があります。

  6. rdbms/admin/utlrp.sqlスクリプトを実行して、無効なオブジェクトを再コンパイルします。このスクリプトを実行するには、AS SYSDBAと接続している必要があります。

Oracle Data Guardロジカル・スタンバイ・データベースのVARCHAR2、NVARCHAR2およびRAW列の最大サイズを増加する

Oracle Data Guardロジカル・スタンバイ・データベースのVARCHAR2NVARCHAR2、およびRAW列の最大サイズを増やすには、次の手順に従います。

  1. Oracle Data Guardプライマリ・データベースおよびロジカル・スタンバイ・データベースをシャットダウンします。

  2. プライマリ・データベースおよびロジカル・スタンバイ・データベースをUPGRADEモードで再起動します。

  3. プライマリ・データベースおよびロジカル・スタンバイ・データベースのMAX_STRING_SIZEの設定をEXTENDEDに変更します。

  4. プライマリ・データベースとロジカル・スタンバイ・データベースの両方でrdbms/admin/utl32k.sqlスクリプトを実行します。このスクリプトを実行するには、AS SYSDBAと接続している必要があります。

  5. プライマリ・データベースおよびロジカル・スタンバイ・データベースをNORMALモードで再起動します。

    ノート:

    utl32k.sqlスクリプトによって、必要な場合に、VARCHAR2NVARCHAR2およびRAW列の最大サイズが増やされます。一部のビューのSQLのリライト方法が原因で、これらのビューのVARCHAR2NVARCHAR2およびRAW列の最大サイズが増加しない場合があります。

  6. プライマリ・データベースおよびロジカル・スタンバイ・データベースでrdbms/admin/utlrp.sqlスクリプトを実行して、無効なオブジェクトを再コンパイルします。このスクリプトを実行するには、AS SYSDBAと接続している必要があります。

  7. SQL Applyを再起動します。

関連項目:

MAX_STRING_SIZEパラメータの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照