dockerで動かしているOracle DB 11gをShift-JISに変えたらデータが永続化されなくなった

dockerで上げた11gをShift-JISに変更しました。
変更方法は以下の記事の通りです。 qiita.com この記事のとおりに文字コードを変更したところ以下のような問題が発生したので対応を行いました

  1. データが永続化されなくなった
  2. sysやsystemでアクセスできなくなった

準備

docker版Oracle DBだと、oracleユーザにsqlplusなどのパスが通っていないため、
oracleユーザに切り替えるときは

# su oracle

として環境を引き継ぐ必要があります

1 データが永続化されなくなった

以下のように文字コードのみ変更すると、DBの保存先が変わるため永続化できなくなります

createdb.sh -dbchar JA16SJIS
変更前

f:id:tmegos:20180116114435p:plain

変更後

f:id:tmegos:20180116152926p:plain

これを回避するため、-filedir-logdirのオプションも指定する必要があります

createdb.sh -dbchar JA16SJIS -filedir /u01/app/oracle/oradata/XE -logdir /u01/app/oracle/oradata/XE

2 sysやsystemでアクセスできなくなった

createdb.shを実行すると、DBが再構成されるため、オプションで指定していたパスワードでアクセスできなくなります
パスワードの再設定が必要です

docker exec <container name> ./setPassword.sh <your password>