- そもそも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
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 .
- VPN越しのせいか、yumが失敗する(DNS)エラーがでたのでなんとかする
/usr/lib/systemd/system/docker.service
を編集
(変更前):ExecStart=/usr/bin/docker daemon -H fd://
↓ ↓
(変更後):ExecStart=/usr/bin/docker daemon -H fd:// --dns=8.8.8.8
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;
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;
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