2018年9月に作ったときのメモが残っていたので投稿。
Docker のインストール
$ sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
$ sudo apt-get update
$ sudo apt-get install -y docker-ce
Dockerイメージの作成
事前に
LINUX.X64_180000_db_home.zip をダウンロードしておく。
$ git clone https://github.com/oracle/docker-images.git
$ cd docker-images/OracleDatabase/SingleInstance/dockerfiles/18.3.0
$ ln ~/Downloads/LINUX.X64_180000_db_home.zip .
$ cd ..
$ sudo ./buildDockerImage.sh -v 18.3.0 -e
$ sudo groupadd -g 54321 oracle
$ sudo useradd -u 54321 -g oracle oracle
$ sudo mkdir -p /var/oradata/ora183
$ sudo chown -R oracle:oracle /var/oradata
Dockerコンテナの実行
$ sudo docker run --name コンテナ名 -p 1521:1521 -p 5500:5500 -e ORACLE_PWD=manager -v /var/oradata/ora183:/opt/oracle/oradata oracle/database:18.3.0-ee
上記コマンドの引数の説明は
ここを参照。
ローカルホストの 1521 番ポートにアクセスするとコンテナ内の 1521 番ポートに転送される。
$ sqlplus system/manager@//localhost:1521/ORCLPDB1
ただし、この接続方法だと
OOB を通さないので、
クライアントからのSQL実行のキャンセルが効かない。実行キャンセルを行う場合は Docker コンテナのIPアドレスを調べてそこに接続すること。
$ docker inspect --format '{{ .NetworkSettings.IPAddress }}' コンテナ名
172.17.0.2
$ sqlplus system/manager@//172.17.0.2:1521/ORCLPDB1
SGAは以下の設定だった。
SQL> show sga
Total System Global Area 1610608648 bytes
Fixed Size 8896520 bytes
Variable Size 419430400 bytes
Database Buffers 1174405120 bytes
Redo Buffers 7876608 bytes
SQL> show parameter target
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
archive_lag_target integer 0
db_big_table_cache_percent_target string 0
db_flashback_retention_target integer 1440
fast_start_io_target integer 0
fast_start_mttr_target integer 0
memory_max_target big integer 0
memory_target big integer 0
parallel_servers_target integer 32
pga_aggregate_target big integer 512M
sga_target big integer 0
target_pdbs integer 3