ノート:
- このチュートリアルではOracle Cloudへのアクセスが必要です。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
- Oracle Cloud Infrastructure資格証明、テナンシおよびコンパートメントの値の例を使用します。演習を完了する場合は、これらの値をクラウド環境に固有の値に置き換えてください。
Oracleデータベースの拡張データ型機能の有効化
イントロダクション
Oracle Database 12cでは、VARCHAR2、NVARCHAR2およびRAWデータ型の最大サイズを制御するMAX_STRING_SIZEパラメータが導入されました。MAX_STRING_SIZEパラメータをEXTENDEDに設定すると、データ型のサイズが32767バイトの制限になります。MAX_STRING_SIZEをEXTENDED値に設定すると、データベースのCOMPATIBLE初期化パラメータが12.0.0.0以上のバージョンになります。
このチュートリアルでは、特定のアップグレード・アクションが必要な新しい拡張データ型をOracle Databaseで使用できるようにするためのタスクについて説明します。
目的
- VARCHAR2、NVARCHAR2およびRAWデータ型のサポートを32767バイト制限に活用します。
前提条件
- データベース・バージョンはOracle 12.2以上である必要があります。
タスク1: 非コンテナ・データベースでの拡張データ型の設定
-
次のコマンドを実行します
SQL> SHOW PARAMETER MAX_STRING_ | NAME | TYPE | VALUE | | --------------- | ------ | -------- | | max_string_size | string | STANDARD |
-
アップグレード・モードでデータベースを起動します。
SQL> SHUTDOWN IMMEDIATE; Database closed. Database dismounted. ORACLE instance shut down. SQL>STARTUP UPGRADE ORACLE instance started. Total System Global Area 1.4663E+10 bytes Fixed Size 15697000 bytes Variable Size 1.1878E+10 bytes Database Buffers 2717908992 bytes Redo Buffers 51404800 bytes Database mounted. Database opened.
-
MAX_STRING_SIZE
値をEXTENDEDに変更します。SQL> alter system set MAX_STRING_SIZE='EXTENDED' SCOPE=BOTH; System altered. SQL> show parameter MAX_STRING_SIZE | NAME | TYPE | VALUE | | --------------- | ------ | -------- | | max_string_size | string | EXTENDED |
-
utl32k.sql
スクリプト@?/rdbms/admin/utl32k.sql
を実行します。SQL> @?/rdbms/admin/utl32k.sql Session altered. DOC>####################################################################### DOC>####################################################################### DOC> The following statement will cause an "ORA-01722: invalid number" DOC> error if the database has not been opened for UPGRADE. DOC> DOC> Perform a "SHUTDOWN ABORT" and DOC> restart using UPGRADE. DOC>####################################################################### DOC>####################################################################### DOC># no rows selected DOC>####################################################################### DOC>####################################################################### DOC> The following statement will cause an "ORA-01722: invalid number" DOC> error if the database does not have compatible >= 12.0.0 DOC> DOC> Set compatible >= 12.0.0 and retry. DOC>####################################################################### DOC>####################################################################### DOC># PL/SQL procedure successfully completed. Session altered. 1524 rows updated. Commit complete. System altered. PL/SQL procedure successfully completed. Commit complete. System altered. Session altered. Session altered. Table created. Table created. Table created. Table truncated. 0 rows created. PL/SQL procedure successfully completed. no rows selected DOC>####################################################################### DOC>####################################################################### DOC> The following statement will cause an "ORA-01722: invalid number" DOC> error if we encountered an error while modifying a column to DOC> account for data type length change as a result of enabling or DOC> disabling 32k types. DOC> DOC> Contact Oracle support for assistance. DOC>####################################################################### DOC>####################################################################### DOC># PL/SQL procedure successfully completed. PL/SQL procedure successfully completed. Commit complete.
-
データベースを再起動します。
shutdown immediate; startup SQL> show parameter max_string | NAME | TYPE | VALUE | | --------------- | ------ | -------- | | max_string_size | string | EXTENDED |
タスク2: コンテナ・データベースでの拡張データ型の設定(CDB$ROOT)
-
次のコマンドを実行します。
[oracle@vm4 ~]$ sqlplus "/ as sysdba" SQL*Plus: Release 12.2.0.1.0 Production on Thu Sep 7 13:26:41 2023 Copyright (c) 1982, 2016, Oracle. All rights reserved. Connected to: Oracle Database 12c EE Extreme Perf Release 12.2.0.1.0 - 64bit Production SQL> SHOW PARAMETER MAX_STRING_ | NAME | TYPE | VALUE | | --------------- | ------ | -------- | | max_string_size | string | STANDARD | SQL> show pdbs; | CON_ID | CON_NAME | OPEN MODE | RESTRICTED | | ------ | ----------- | ---------- | ---------- | | 2 | PDB$SEED | READ ONLY | NO | | 3 | RATPRD_PDB1 | READ WRITE | NO | [oracle@vm4 ~]$ cd $ORACLE_HOME/rdbms/admin [oracle@vm4 admin]$ pwd /u01/app/oracle/product/12.2.0.1/dbhome_1/rdbms/admin [oracle@vm4 ~]$ mkdir -p /home/oracle/mydir/utl32k_cdb_pdbs_output [oracle@vm4 ~]$ sqlplus "/ as sysdba" SQL*Plus: Release 12.2.0.1.0 Production on Thu Sep 7 13:30:18 2023 Copyright (c) 1982, 2016, Oracle. All rights reserved. Connected to: Oracle Database 12c EE Extreme Perf Release 12.2.0.1.0 - 64bit Production SQL> ALTER SESSION SET CONTAINER=CDB$ROOT; Session altered.
-
MAX_STRING_SIZE
値をEXTENDEDに変更します。SQL> ALTER SYSTEM SET MAX_STRING_SIZE=extended SCOPE=SPFILE; System altered.
-
アップグレード・モードでデータベースを起動します。
SQL> shutdown; Database closed. Database dismounted. ORACLE instance shut down. SQL> startup upgrade; ORACLE instance started. Total System Global Area 3.2749E+10 bytes Fixed Size 12351112 bytes Variable Size 4160751992 bytes Database Buffers 2.8387E+10 bytes Redo Buffers 188973056 bytes Database mounted. Database opened. SQL> exit
-
catcon.pl
スクリプトを実行します。ノート:
catcon.pl
スクリプトを使用して、ルート、およびVARCHAR2、NVARCHAR2およびRAW列の最大サイズを増やすCDB内のすべてのPDBでrdbms/admin/utl32k.sql
スクリプトを実行します。-force_pdb_mode 'UPGRADE'オプションは、アプリケーション・ルート・クローンを含め、すべてのPDBが移行モードでオープンされるようにするために使用します。要求されたら、SYSのパスワードを入力します。[oracle@vm4 ~]$ $ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -u SYS --force_pdb_mode 'UPGRADE' -d $ORACLE_HOME/rdbms/admin -l '/home/oracle/mydir/utl32k_cdb_pdbs_output' -b utl32k_cdb_pdbs_output utl32k.sql catcon: ALL catcon-related output will be written to [/home/oracle/mydir/utl32k_cdb_pdbs_output/utl32k_cdb_pdbs_output_catcon_88242.lst] catcon: See [/home/oracle/mydir/utl32k_cdb_pdbs_output/utl32k_cdb_pdbs_output*.log] files for output generated by scripts catcon: See [/home/oracle/mydir/utl32k_cdb_pdbs_output/utl32k_cdb_pdbs_output_*.lst] files for spool files, if any Enter Password: -> enter sys password catcon.pl: completed successfully [oracle@vm4 ~]$ sqlplus "/ as sysdba" SQL*Plus: Release 12.2.0.1.0 Production on Thu Sep 7 13:48:56 2023 Copyright (c) 1982, 2016, Oracle. All rights reserved. Connected to: Oracle Database 12c EE Extreme Perf Release 12.2.0.1.0 - 64bit Production
SQL> startup; ORA-01081: cannot start already-running ORACLE - shut it down first SQL> shut immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> startup; ORACLE instance started. Total System Global Area 3.2749E+10 bytes Fixed Size 12351112 bytes Variable Size 4160751992 bytes Database Buffers 2.8387E+10 bytes Redo Buffers 188973056 bytes Database mounted. Database opened. SQL> show parameter max_string_size; | NAME | TYPE | VALUE | | --------------- | ------ | -------- | | max_string_size | string | EXTENDED |
タスク3: PDBでの拡張データ型の設定
-
次のコマンドを実行して、データベースを変更します。
SQL> alter session set container = RATPRD_PDB1; Session altered. SQL> show pdbs | CON_ID | CON_NAME | OPEN MODE | RESTRICTED | | ------ | ----------- | ---------- | ---------- | | 3 | RATPRD_PDB1 | READ WRITE | NO | SQL> ALTER PLUGGABLE DATABASE RATPRD_PDB1 CLOSE IMMEDIATE; Pluggable database altered. SQL> show pdbs | CON_ID | CON_NAME | OPEN MODE | RESTRICTED | | ------ | ----------- | --------- | ---------- | | 3 | RATPRD_PDB1 | MOUNTED |
-
max_string_sizeパラメータの変更に必要なPDB RATPRD_PDB1をアップグレード・モードでオープンします。
SQL> ALTER PLUGGABLE DATABASE RATPRD_PDB1 OPEN UPGRADE; $ Pluggable database altered. SQL> show pdbs; | CON_ID | CON_NAME | OPEN MODE | RESTRICTED | | ------ | ----------- | --------- | ---------- | | 3 | RATPRD_PDB1 | MIGRATE | YES |
-
utl32k.sqlを実行して、PDB RATPRD_PDB1のVARCHAR2、NVARCHAR2およびRAW列の最大サイズを変更します。
SQL> @$ORACLE_HOME/rdbms/admin/utl32k.sql; Session altered. DOC>####################################################################### DOC>####################################################################### DOC> The following statement will cause an "ORA-01722: invalid number" DOC> error if the database has not been opened for UPGRADE. DOC> DOC> Perform a "SHUTDOWN ABORT" and DOC> restart using UPGRADE. DOC>####################################################################### DOC>####################################################################### DOC># no rows selected DOC>####################################################################### DOC>####################################################################### DOC> The following statement will cause an "ORA-01722: invalid number" DOC> error if the database does not have compatible >= 12.0.0 DOC> DOC> Set compatible >= 12.0.0 and retry. DOC>####################################################################### DOC>####################################################################### DOC># PL/SQL procedure successfully completed. Session altered. 0 rows updated. Commit complete. System altered. PL/SQL procedure successfully completed. Commit complete. System altered. Session altered. Session altered. Table created. Table created. Table created. Table truncated. 0 rows created. PL/SQL procedure successfully completed. STARTTIME : 09/07/2023 14:32:06.790646000 PL/SQL procedure successfully completed. No errors. PL/SQL procedure successfully completed. Session altered. Session altered. 0 rows created. no rows selected no rows selected DOC>####################################################################### DOC>####################################################################### DOC> The following statement will cause an "ORA-01722: invalid number" DOC> error if we encountered an error while modifying a column to DOC> account for data type length change as a result of enabling or DOC> disabling 32k types. DOC> DOC> Contact Oracle support for assistance. DOC>####################################################################### DOC>####################################################################### DOC># PL/SQL procedure successfully completed. PL/SQL procedure successfully completed. Commit complete. Package altered. Package altered. SQL> show pdbs; | CON_ID | CON_NAME | OPEN MODE | RESTRICTED | | ------ | ----------- | --------- | ---------- | | 3 | RATPRD_PDB1 | MIGRATE | YES | SQL> ALTER PLUGGABLE DATABASE RATPRD_PDB1 CLOSE IMMEDIATE; Pluggable database altered.
-
max_string_sizeパラメータ値がEXTENDEDに変更されていることを確認します。
SQL> ALTER PLUGGABLE DATABASE RATPRD_PDB1 open ; Pluggable database altered. SQL> show pdbs; | CON_ID | CON_NAME | OPEN MODE | RESTRICTED | | ------ | ----------- | ---------- | ---------- | | 3 | RATPRD_PDB1 | READ WRITE | NO | SQL> show parameter max_string_size; | NAME | TYPE | VALUE | | --------------- | ------ | -------- | | max_string_size | string | EXTENDED |
関連リンク
承認
- 著者 - Hakim Ahamad(プリンシパル・クラウド・アーキテクト)
その他の学習リソース
docs.oracle.com/learnで他のラボをご覧いただくか、Oracle Learning YouTubeチャネルでより無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスして、Oracle Learning Explorerになります。
製品ドキュメントについては、Oracle Help Centerを参照してください。
Enable the Extended Data Type Capability for Oracle databases
F87592-01
October 2023
Copyright © 2023, Oracle and/or its affiliates.