#chiroito ’s blog

Java を中心とした趣味の技術について

Docker 上に構築した Oracle Database のパスワードを変える

 Oracle 公式の Docker イメージで Oracle Database を構築すると docker run した時にパスワードが出力されます。(パスワードは下のZ6koiFT2K8A=)

> docker run --name orcl oracle/database:12.1.0.2-ee

ORACLE AUTO GENERATED PASSWORD FOR SYS, SYSTEM AND PDBAMIN: Z6koiFT2K8A=

 セキュリティ要件を満たすパスワードや自分が憶えやすいパスワードに変更するのではないでしょうか。 また、うっかり見忘れたり、久しぶりに起動したためどんなパスワードを設定したか忘れてしまうこともあるかと思います。
 Oracle Database には様々な管理者があるため、自分しか使わない環境でしたら全てのパスワードを同一にしたいところですが個別に変更することが大変だったり、そもそも Oracle Database に詳しくないためパスワードを変える方法が分からなかったりというこもあるでしょう。
 Oracle 公式の Docker イメージに含まれてる管理者のパスワードを一括で変更するシェルを使うことで、管理者のパスワードを一括で変更することが出来ます。

次の通り、 orcl という名前の Docker コンテナで Oracle Database が動いているものとします。

> docker ps
CONTAINER ID   IMAGE                         COMMAND                  CREATED       STATUS       PORTS                    NAMES
5712e265f393   oracle/database:12.1.0.2-ee   "/bin/sh -c $ORACLE_B"   8 hours ago   Up 7 hours   0.0.0.0:1521->1521/tcp   orcl

 パスワードの設定は、ワークディレクトリにある setPassword.sh を使用して、第一引数にパスワードを与えることで設定できます。今回の例ではパスワードとして pAssw0rd を指定します。

> docker exec orcl ./setPassword.sh pAssw0rd
The Oracle base remains unchanged with value /opt/oracle

SQL*Plus: Release 12.1.0.2.0 Production on Wed Dec 28 15:09:24 2016

Copyright (c) 1982, 2014, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL>
User altered.

SQL>
User altered.

SQL>
Session altered.

SQL>
User altered.

SQL> Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

これだけでパスワードの設定変更は完了です。確認のためユーザ名に sys、パスワードに新しく設定したパスワード、ロールに SYSDBA 権限を選択してデータベースサーバへログインしてみてください。