概要
Part1.の続きです。
マニュアルの記載に沿ってMAX_STRING_SIZEを変更してみます。
1. PDBを停止します。
2. PDBを移行モードで再オープンします。
3. PDBのMAX_STRING_SIZEの設定をEXTENDEDに変更します。
4. PDBでrdbms/admin/utl32k.sqlスクリプトを実行します。
5. PDBをNORMALモードで再度オープンします。
しかし、
MAX_STRING_SIZEの値はSTANDARDからEXTENDEDに変更できます。
ただし、MAX_STRING_SIZEの値をEXTENDEDからSTANDARDには変更できません。
この仕様はちょっと怖いですね。もしも本番DBに適用して、不可避なバグでも踏んでしまったら・・・
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
CentOS Linux release 7.3.1611 (Core)
検証
MAX_STRING_SIZEの変更
SQL> conn / as sysdba
Connected.
SQL>
SQL> alter pluggable database pdborcl2 close;
Pluggable database altered.
Elapsed: 00:00:14.71
SQL>
upgrade句をつけて
PDBをオープン。
SQL> alter pluggable database pdborcl2 open upgrade;
Pluggable database altered.
Elapsed: 00:00:01.36
SQL>
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
2 PDB$SEED READ ONLY NO
3 PDBORCL READ WRITE NO
4 PDBORCL2 MIGRATE YES
SQL>
変更する
PDBに切り替えて、
SQL> alter session set container = pdborcl2;
Session altered.
Elapsed: 00:00:00.02
SQL>
alter systemで変更します。
SQL> alter system set MAX_STRING_SIZE = 'EXTENDED' SCOPE = BOTH;
System altered.
Elapsed: 00:00:00.01
SQL>
SQL> @$ORACLE_HOME/rdbms/admin/utl32k
Session altered.
いったんcloseして、今度は普通にopenします。
SQL> alter pluggable database pdborcl2 close;
Pluggable database altered.
Elapsed: 00:00:00.31
SQL>
SQL> alter pluggable database pdborcl2 open;
Pluggable database altered.
Elapsed: 00:00:01.38
SQL>
MAX_STRING_SIZEの確認
変更したPDBにテストユーザで接続して、
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
4 PDBORCL2 READ WRITE NO
SQL>
MAX_STRING_SIZEがEXETENDEDに変更されていることを確認出来ました。
SQL> show parameter max_string_size
NAME TYPE VALUE
max_string_size string EXTENDED
SQL>
Part3.では、拡張データ型カラムの追加、変更、インデックスの作成を検証します。