注意: 2022年現在では
gvenzl/oracle-xe
を使ったほうが楽。以下の手順では事前に Oracle Database の zip ファイルのダウンロードが必要だが、gvenzl/oracle-xe
ならば docker image の中に含まれている。
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/ORCLPDB1SGAは以下の設定だった。
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