LoginSignup
17
14

More than 5 years have passed since last update.

【Oracle 12Cのお勉強】varchar2の最大サイズを4000バイト→32767バイトに拡張

Last updated at Posted at 2016-08-25

内容

12cより、以下の作業を行うことで、varchar2の最大サイズを4000バイトから32767バイトに拡張できる。
※一度拡張すると、元に戻せないので注意。

  • 初期化パラメータmax_string_sizeをEXTENDに設定。
  • utl32k.sqlを実行。

検証

▼初期化パラメータ"max_string_size"の確認

SQL> show parameter max_string_size;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
max_string_size                      string      STANDARD

▼4000バイト以上のサイズを指定して、テーブルを作成してみる

SQL> create table ts (v varchar2(4001));
create table ts (v varchar2(4001))
                            *
1でエラーが発生しました。:
ORA-00910: 指定した長さがデータ型に対して長すぎます

▼初期化パラメータmax_string_sizeの値をextendedに変更

SQL> shutdown immediate
プラガブル・データベースがクローズされました。

SQL> startup upgrade
プラガブル・データベースがオープンされました。

SQL> select status from v$instance;
STATUS
------------
OPEN MIGRATE

SQL> alter system set max_string_size=extended;
システムが変更されました。

▼utl32k.sqlスクリプトの実行

SQL> @?/rdbms/admin/utl32k.sql

セッションが変更されました。

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>#

レコードが選択されませんでした。

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プロシージャが正常に完了しました。


セッションが変更されました。


1行が更新されました。



…(省略)…



パッケージが変更されました。


パッケージが変更されました。

▼再起動

SQL> shutdown immediate
プラガブル・データベースがクローズされました。
SQL> startup
プラガブル・データベースがオープンされました。

▼再度、4000バイト以上のサイズを指定して、テーブルを作成してみる

SQL> create table ts (v varchar2(4001));
表が作成されました。

拡張できた。

17
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
14