OracleデーターベースをDockerで構築する
以前参考に構築したイメージがなくなり、新しく構築する必要ができたので、Oracleさんの公式Containerを利用してみました。
Oracle Container Registry
Oracle Container Registryから公式のDockerイメージをダウンロードすることが可能
ダウンロードにはサイトへのログインが必要なので、IDが無い場合は、登録が必要
必要とするリポジトリを選択する。
右側の欄に同意をしないと、ダウンロードできないので、ご注意
最後に命令コマンドがあるのでこれを使います。
イメージダウンロード
まず、コマンドラインからのログインが必要です。
docker login container-registry.oracle.com # 手順1で登録したユーザ名とパスワードを入力 > Username: xxxxx@xxxxx > Password: xxxxxx
ここから、Tagに有ったコマンドを実行、ダウンロードにかなり時間かかりました。
docker pull container-registry.oracle.com/database/standard:12.1.0.2
環境設定ファイル作成
common.env
TZ=Asia/Tokyo DB_SID=ORCL DB_PASSWD={password} DB_DOMAIN=mylocaldomain DB_BUNDLE=basic
コンテイナー作成
docker run -d --env-file ./common.env -p 1521:1521 -p 5500:5500 -it --name ora12c --shm-size="8g" container-registry.oracle.com/database/standard:12.1.0.2
実行はあっさり終わりましたが、ここからが時間かかりました。
Dockerログで最後のReadyまで表示されるまで待ちます。
User check : root. Setup Oracle Database Oracle Database 12.1.0.2 Setup Thu Apr 2 10:28:32 JST 2020 Check parameters ...... log file is : /home/oracle/setup/log/paramChk.log paramChk.sh is done at 0 sec untar DB bits ...... log file is : /home/oracle/setup/log/untarDB.log untarDB.sh is done at 276 sec config DB ...... log file is : /home/oracle/setup/log/configDB.log configDB.sh is done at 1334 sec Done ! The database is ready for use .
接続情報について
接続には環境設定ファイルのDB_SIDとDB_DOMAINで決まります。
形式:{DB_SID}.{DB_DOMAIN}
Database=localhost:1521 SN=ORCL.mylocaldomain
SQLPLUS起動
docker exec -it ora12c bash -c "source /home/oracle/.bashrc; sqlplus /nolog" ## sys ユーザ のパスワードは Oradoc_db1 で、 sysdba として接続します。 SQL> conn sys/{password}@ORCL.mylocaldomain as sysdba
DumpからDBを復元
インスタンスの中のDPDUMPフォルダーにDumpファイルをコピー
docker cp /Downloads/MYDB.DMP ora12c:/u01/app/oracle/admin/ORCL/dpdump
コンテナに接続し、impを実行する。
docker exec -it ora12c bash impdp system/{password} directory=DATA_PUMP_DIR dumpfile=MYDB.DMP log=expdp_MYDB.log
PASSWORDの期限を無期限にする
DEFAULTパスワード期限を無期限に設定する。
docker exec -it ora12c bash sqlplus sys/{password} as sysdba SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
パスワード再設定
ALTER USER ユーザ名 IDENTIFIED BY 新パスワード;
ロックの解除
ALTER USER ユーザ名 ACCOUNT UNLOCK;