- そもそもdockerがインストールされていなかった
sudo mkdir -p /etc/apt/keyrings sudo apt-get update curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
- userをdockerグループに追加して、sudoしなくてもよくする
sudo gpasswd -a $USER docker sudo systemctl restart docker
sudo apt-get install subversion
- 適当な共有データフォルダを設定し読み書き可能にしておく (dockerからマウントして使う)
cd ~/Develop mkdir oradata chmod 777 oradata
- githubを 部分的にダウンロード
svn checkout https://github.com/oracle/docker-images/trunk/OracleDatabase/SingleInstance/dockerfiles/21.3.0 mv 21.3.0 oracle-xe-21.3.0 mv startup oracle-xe-21.3.0 cd oracle-xe-21.3.0 sudo docker build -t oracle/database:21.3.0-xe -f Dockerfile.xe .
(変更前):ExecStart=/usr/bin/docker daemon -H fd:// ↓ ↓ (変更後):ExecStart=/usr/bin/docker daemon -H fd:// --dns=8.8.8.8
- https://qiita.com/miwato/items/a8146f38c6ac4a849e95 を参考。
- ただし
-dns
ではエラーで、-- dns
にする必要があった - だいたい 6.5GBのイメージができた ちょっとでかい
- あとは以前の通りにやる
sudo docker run -d --name oraclerdb -it \ -p 1521:1521 -p 5500:5500 \ -e ORACLE_PWD=hogehogeA00 \ -e NLS_LANG=JAPANESE_JAPAN.AL32UTF8 \ -v /home/$USER/Develop:/home/oracle/Develop \ -v /home/$USER/Develop/oradata:/opt/oracle/oradata \ -v /home/$USER/Develop/oracle-xe-21.3.0/startup:/docker-entrypoint-initdb.d/startup \ oracle/database:21.3.0-xe
- real time なコンテナのlog参照 (CTRL+Cで停止)
sudo docker logs -f `sudo docker ps -aq`
- できあがったら max_string_size = EXTENDED にする
sudo docker exec -it `sudo docker ps -aqf name="^oracle"` bash sqlplus / as sysdba Oracle Database 21c Express Edition Release 21.0.0.0.0 - Production Version 21.3.0.0.0 に接続されました。 SQL> ALTER SESSION SET CONTAINER=CDB$ROOT; ALTER SYSTEM SET max_string_size=extended SCOPE=SPFILE; shutdown immediate startup upgrade ALTER PLUGGABLE DATABASE ALL OPEN UPGRADE; EXIT;
- utl32kスクリプトを走らせる
mkdir /tmp/utl32k_cdb_pdbs_output $ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -u SYS --force_pdb_mode 'UPGRADE' -d $ORACLE_HOME/rdbms/admin -l '/tmp/utl32k_cdb_pdbs_output' -b utl32k_cdb_pdbs_output utl32k.sql Enter Password: hogehogeA00 catcon.pl: completed successfully
sqlplus / as sysdba shutdown immediate startup show parameter MAX_STRING_SIZE;
- admin ユーザを作る
sqlplus sys/hogehogeA00@XE as sysdba alter session set container = XEPDB1; grant grant any privilege to PDBADMIN; grant grant any role to PDBADMIN; QUIT sqlplus pdbadmin/hogehogeA00@XEPDB1 grant create user to PDB_DBA; grant create tablespace to PDB_DBA; alter session set container = XEPDB1; CREATE TABLESPACE "DATA" DATAFILE '/opt/oracle/oradata/XE/tbs_data.dbf' SIZE 10M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED NOLOGGING; create user admin identified by hogehogeA00 default tablespace "DATA" temporary tablespace temp; grant connect, resource to admin; grant unlimited tablespace to admin; QUIT
- 使い方
SQLDeveloper では以下の接続
- 認証タイプ デフォルト ユーザー名 ADMIN パスワード hogehogeA00
- 接続タイプ 基本 ホスト名 local ポート 1521 サービス名 XEPDB1
sqlplus admin/hogehogeA00@//127.0.0.1/XEPDB1