Oracle Database 19cのdockerで立ち上げたら文字コード(データベース・キャラクタ・セット)がAL32UTF8だったのですが、JA16EUCTILDEに変更したくて、対応しました。
以前は、JA16SJISTILDEにもしたことがあります。
なお、なんもデータが入ってない場合の前提です。データが入っている場合は中身が壊れる可能性があると思いますので注意してください
Oracle Database 19c 環境をDockerで作成する方法は以下を参考にさせていただきました。
有用な記事ありがとうございます。
変更手順
- 現状確認
sqlplus / as sysdba で入ります。
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> SELECT value FROM V$NLS_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET' ;
VALUE
----------------------------------------------------------------
AL32UTF8
- 変換
SQL> SHUTDOWN IMMEDIATE;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> STARTUP MOUNT;
ORACLE instance started.
Total System Global Area 3221223192 bytes
Fixed Size 9139992 bytes
Variable Size 687865856 bytes
Database Buffers 2516582400 bytes
Redo Buffers 7634944 bytes
Database mounted.
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
System altered.
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
System altered.
SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;
System altered.
SQL> ALTER DATABASE OPEN;
Database altered.
SQL> ALTER DATABASE CHARACTER SET INTERNAL_USE JA16EUCTILDE;
Database altered.
SQL> SHUTDOWN IMMEDIATE;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> STARTUP;
ORACLE instance started.
Total System Global Area 3221223192 bytes
Fixed Size 9139992 bytes
Variable Size 687865856 bytes
Database Buffers 2516582400 bytes
Redo Buffers 7634944 bytes
Database mounted.
Database opened.
- 変わったかの確認
SQL> SELECT value FROM V$NLS_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET' ;
VALUE
----------------------------------------------------------------
JA16EUCTILDE