添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

脚注1

ALTER SYSTEMはデータベースがUPGRADEモードの場合のみ使用し、この項で説明するようにその後にutl32k.sqlを実行してください。

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

STANDARD は、Oracle Database 12 c より前のOracle Databaseリリースの長さ制限が適用されることを意味します(たとえば、 VARCHAR 2および NVARCHAR2 には4000バイト、 RAW には2000バイト)。

EXTENDED は、Oracle Database 12 c で導入された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 列の最大サイズを増加するには、次の手順に従います。

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

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

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

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

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

        注意:

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

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

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

        CDBおよびCDB内のすべてのPDBで VARCHAR2 NVARCHAR2 および 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_SIZE EXTENDED に設定された後も、引き続き STANDARD セマンティクスが使用されます。ルートで MAX_STRING_SIZE EXTENDED に設定する理由は、CDB内のすべてのPDBがルートから EXTENDED 設定を継承できるようにするためです。

        3. CDBを停止します。

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

          startup upgrade;
        5. すべてのPDBを移行モードでオープンした後、データベースを終了します。

          ALTER PLUGGABLE DATABASE ALL OPEN UPGRADE;
          EXIT;
        6. catcon.pl スクリプトを使用して、ルートに加えて、 VARCHAR2 NVARCHAR2 および RAW 列の最大サイズを増やすCDB内のすべてのPDBで rdbms/admin/utl32k.sql スクリプトを実行します。プロンプトが表示されたら、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 
          -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列の最大サイズが増加しない場合があります。

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

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

          startup;
        9. CDB内のすべてのPDBをオープンします。

          ALTER PLUGGABLE DATABASE ALL OPEN READ WRITE;
        10. catcon.plスクリプトを使用して、ルートおよびCDB内のすべてのPDBでrdbms/admin/utlrp.sqlスクリプトを実行して、無効なオブジェクトを再コンパイルします。プロンプトが表示されたら、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 -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 Database管理者ガイド』を参照してください。

          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 Database管理者ガイド』を参照してください。

            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グローバリゼーション・サポート・ガイド』を参照