gikoha’s blog

個人的メモがわり

Ubuntu 22.04への oracle 21 xe のインストール

  • そもそも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
  • v21 express edition 無料版 が出ていたので試す

  • githubを 部分的にダウンロードするためにはsvnが必要

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 .
  • 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`
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;
  • 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