Help us understand the problem. What is going on with this article?

OracleXE 11gの SJIS化

この記事について

  • OracleDatabase Express Edition(XE) 11g のDockerコンテナで文字コードを変更するためにやったことを書く(N番煎じ)
  • 11gでは文字コードはデフォルトでUTF8となっており、変更するためにはDBを再構築する必要がある
  • 単体テストとかで使いたいので、起動したときに既に文字コードが変更されている状態にしたい
  • 「え、今の時代に11g…?」
    • 仰るとおりだと思いますが、古いシステムだし皆さんのところにもそういうのありますよね?ね?

前提

  • oracleが公開しているDockerfileを使って作成したイメージをベースイメージとする
    • 記事作成時点での最新コミットは 0972d17

手順

追加で修正する箇所

  • CMDコマンドで実行されている$ORACLE_BASE/$RUN_FILEを実行しないようにする必要がある
    • 起動時に/etc/init.d/oracle-xe configureが実行されないようにするため
  • 以下のことを自前で行う
    • tnsnames.oraの書き換え
    • listener.oraの書き換え
    • /etc/init.d/oracle-xe configureに渡すrspファイルの書き換え
      • SYSとSYSTEM向けのパスワードの部分

上記もろもろに対応したDockerfile

確認

  • コンテナを起動
$ docker run --name oracle --shm-size 1g --rm nkiri/oracle/database:11.2.0.2-sjis
  • 別ターミナルでdocker execでコンテナに入る
$ docker exec -it oracle
  • 以下のコマンドを実行
su -p oracle -c "sqlplus -s / as sysdba" <<EOS
> select * from nls_database_parameters where parameter = 'NLS_CHARACTERSET';
> EOS
  • 結果
PARAMETER
------------------------------
VALUE
--------------------------------------------------------------------------------
NLS_CHARACTERSET
JA16SJISTILDE

まとめ

  • まぁできるんだけど、ビルドに1時間くらいかかる…
  • SYSとSYSTEMのパスワードをビルド時に確定することになるので、公式のやつより若干自由度が下がる
Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away