Dockerコンテナ内の単一インスタンスのOracle Database Enterprise Edition

ドキュメント『Oracle Database Enterprise Edition Installation Guide for Docker Containers For Oracle Linux x86-64』を参照してください。このドキュメントには11ページしかありません。ただし、Docker をインストールするプロセスはカバーされていません。

Oracle Container Registry にも詳細なヘルプがあります

準備フェーズ

  1. Linux 仮想マシンを準備します。この例では、OCI で Oracle Linux 8 を使用します。
  2. docker をインストールします。ここを参照してください。
sudo -s
dnf install -y dnf-utils zip unzip
dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
  1. ドッカーを起動
systemctl enable docker
systemctl start docker
systemctl status docker

コンテナ内の単一インスタンス Oracle Database Enterprise Edition

Container Registry にログインする

docker login container-registry.oracle.com

Oracle データベースを起動する

イメージは初めて取得する必要があるため、時間がかかります。

# time docker run -d --name ORCLCDB container-registry.oracle.com/database/enterprise:21.3.0.0
Unable to find image 'container-registry.oracle.com/database/enterprise:21.3.0.0' locally
21.3.0.0: Pulling from database/enterprise
66fb34780033: Pull complete
3160e5ce220f: Pull complete
0437799a5b58: Pull complete
482f23cb4332: Pull complete
aa126f7f477e: Pull complete
301b19663f45: Pull complete
05f1fb1cf84e: Pull complete
598f60c72ddf: Pull complete
81e8d20d2156: Pull complete
9d9c75a88c10: Pull complete
bca95ae31b8e: Pull complete
4398a68b7fea: Pull complete
93a2104a5838: Pull complete
26cd4127e02c: Pull complete
5809f26d1dd7: Pull complete
6fe7a53a2535: Pull complete
30c9251aff49: Pull complete
Digest: sha256:e2518d6d42c67a1778b2d0a7b7a447f0dd42d9729d112b4b3e89db874dcc5aac
Status: Downloaded newer image for container-registry.oracle.com/database/enterprise:21.3.0.0
a6e59560a57a5d3f7eb6b9d327cbd5bae8aad13ef2d9fc8adbceefa4acf37131

real    5m13.234s
user    0m0.258s
sys     0m0.122s

この時点でコンテナは起動していますが、まだ作成中です。

作成が完了すると、完全なログは次のようになります。

# docker logs ORCLCDB
[2023:04:06 06:16:00]: Acquiring lock .ORCLCDB.create_lck with heartbeat 30 secs
[2023:04:06 06:16:00]: Lock acquired
[2023:04:06 06:16:00]: Starting heartbeat
[2023:04:06 06:16:00]: Lock held .ORCLCDB.create_lck
ORACLE EDITION: ENTERPRISE

LSNRCTL for Linux: Version 21.0.0.0.0 - Production on 06-APR-2023 06:16:00

Copyright (c) 1991, 2021, Oracle.  All rights reserved.

Starting /opt/oracle/product/21c/dbhome_1/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 21.0.0.0.0 - Production
System parameter file is /opt/oracle/homes/OraDB21Home1/network/admin/listener.ora
Log messages written to /opt/oracle/diag/tnslsnr/a6e59560a57a/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 21.0.0.0.0 - Production
Start Date                06-APR-2023 06:16:00
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /opt/oracle/homes/OraDB21Home1/network/admin/listener.ora
Listener Log File         /opt/oracle/diag/tnslsnr/a6e59560a57a/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))
The listener supports no services
The command completed successfully
Prepare for db operation
8% complete
Copying database files
31% complete
Creating and starting Oracle instance
32% complete
36% complete
40% complete
43% complete
46% complete
Completing Database Creation
51% complete
54% complete
Creating Pluggable Databases
58% complete
77% complete
Executing Post Configuration Actions
100% complete
Database creation complete. For details check the logfiles at:
 /opt/oracle/cfgtoollogs/dbca/ORCLCDB.
Database Information:
Global Database Name:ORCLCDB
System Identifier(SID):ORCLCDB
Look at the log file "/opt/oracle/cfgtoollogs/dbca/ORCLCDB/ORCLCDB.log" for further details.

SQL*Plus: Release 21.0.0.0.0 - Production on Thu Apr 6 06:23:59 2023
Version 21.3.0.0.0

Copyright (c) 1982, 2021, Oracle.  All rights reserved.


Connected to:
Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0

SQL>
System altered.

SQL>
System altered.

SQL>
Pluggable database altered.

SQL>
PL/SQL procedure successfully completed.

SQL> SQL>
Session altered.

SQL>
User created.

SQL>
Grant succeeded.

SQL>
Grant succeeded.

SQL>
Grant succeeded.

SQL>
User altered.

SQL> SQL> Disconnected from Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
The Oracle base remains unchanged with value /opt/oracle

Executing user defined scripts
/opt/oracle/runUserScripts.sh: running /opt/oracle/scripts/extensions/setup/swapLocks.sh
[2023:04:06 06:24:00]: Releasing lock .ORCLCDB.create_lck
[2023:04:06 06:24:00]: Lock released .ORCLCDB.create_lck
[2023:04:06 06:24:00]: Acquiring lock .ORCLCDB.exist_lck with heartbeat 30 secs
[2023:04:06 06:24:00]: Lock acquired
[2023:04:06 06:24:00]: Starting heartbeat
[2023:04:06 06:24:00]: Lock held .ORCLCDB.exist_lck

DONE: Executing user defined scripts

The Oracle base remains unchanged with value /opt/oracle
#########################
DATABASE IS READY TO USE!
#########################
The following output is now a tail of the alert.log:
ORCLPDB1(3):CREATE SMALLFILE TABLESPACE "USERS" LOGGING  DATAFILE  '/opt/oracle/oradata/ORCLCDB/ORCLPDB1/users01.dbf' SIZE 5M REUSE AUTOEXTEND ON NEXT  1280K MAXSIZE UNLIMITED  EXTENT MANAGEMENT LOCAL  SEGMENT SPACE MANAGEMENT  AUTO
ORCLPDB1(3):Completed: CREATE SMALLFILE TABLESPACE "USERS" LOGGING  DATAFILE  '/opt/oracle/oradata/ORCLCDB/ORCLPDB1/users01.dbf' SIZE 5M REUSE AUTOEXTEND ON NEXT  1280K MAXSIZE UNLIMITED  EXTENT MANAGEMENT LOCAL  SEGMENT SPACE MANAGEMENT  AUTO
ORCLPDB1(3):ALTER DATABASE DEFAULT TABLESPACE "USERS"
ORCLPDB1(3):Completed: ALTER DATABASE DEFAULT TABLESPACE "USERS"
2023-04-06T06:23:59.190948+00:00
ALTER SYSTEM SET control_files='/opt/oracle/oradata/ORCLCDB/control01.ctl' SCOPE=SPFILE;
2023-04-06T06:23:59.205131+00:00
ALTER SYSTEM SET local_listener='' SCOPE=BOTH;
ALTER PLUGGABLE DATABASE ORCLPDB1 SAVE STATE
Completed: ALTER PLUGGABLE DATABASE ORCLPDB1 SAVE STATE

このインストール プロセスには、06:16 から 06:24 までさらに 8 分かかりました。

この時点でのデータベースの STATUS は正常です。

# docker ps
CONTAINER ID   IMAGE                                                        COMMAND                  CREATED          STATUS                    PORTS     NAMES
a6e59560a57a   container-registry.oracle.com/database/enterprise:21.3.0.0   "/bin/sh -c 'exec $O…"   18 minutes ago   Up 18 minutes (healthy)             ORCLCDB

SYS/SYSTEM パスワードを変更します。

# docker exec ORCLCDB ./setPassword.sh Welcome1

データベースにログインします。

# docker exec -it ORCLCDB sqlplus / as sysdba

SQL*Plus: Release 21.0.0.0.0 - Production on Thu Apr 6 06:41:40 2023
Version 21.3.0.0.0

Copyright (c) 1982, 2021, Oracle.  All rights reserved.

ERROR:
ORA-12162: TNS:net service name is incorrectly specified


Enter user-name: 

上記の方法がうまくいかない場合は、別の方法を試してください。

# docker exec -it ORCLCDB bash
bash-4.2$ sqlplus / as sysdba

SQL*Plus: Release 21.0.0.0.0 - Production on Thu Apr 6 06:42:54 2023
Version 21.3.0.0.0

Copyright (c) 1982, 2021, Oracle.  All rights reserved.


Connected to:
Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0

SQL> show parameter cpu_cout
SQL> show parameter cpu

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
cpu_count                            integer     2
cpu_min_count                        string      2
parallel_threads_per_cpu             integer     1
resource_manager_cpu_allocation      integer     0
resource_manager_cpu_scope           string      INSTANCE_ONLY
SQL> show parameter sga

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
allow_group_access_to_sga            boolean     FALSE
lock_sga                             boolean     FALSE
pre_page_sga                         boolean     TRUE
sga_max_size                         big integer 1536M
sga_min_size                         big integer 0
sga_target                           big integer 1536M
SQL> show parameter pga

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_limit                  big integer 2G
pga_aggregate_target                 big integer 512M

コンテナーを開始および停止します。

docker stop a6e59560a57a
docker start a6e59560a57a

コンテナーを削除します。

docker stop a6e59560a57a
docker rm a6e59560a57a

確認:

# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
# docker images
REPOSITORY                                          TAG        IMAGE ID       CREATED        SIZE
container-registry.oracle.com/database/enterprise   21.3.0.0   da441e2c6de2   6 months ago   8.01GB

カスタマイズされた開始:

time docker run -d --name ORCLCDB \
 -e ORACLE_SID=ORCLCDB \
 -e ORACLE_PDB=ORCLPDB1 \
 -e ORACLE_PWD=Welcome1 \
 -e INIT_SGA_SIZE=4000 \
 -e INIT_PGA_SIZE=2000 \
 -e ORACLE_EDITION=enterprise \
 -e ORACLE_CHARACTERSET=ZHS16GBK \
 -e ENABLE_ARCHIVELOG=true \
container-registry.oracle.com/database/enterprise:21.3.0.0

イメージはすでにローカルに到着しているため、このプロセスは実際にはデータベースをインストールするプロセスであり、7 分かかります。

ORACLE_EDITION が標準として指定されている場合は、標準版です。

XE もサポートされています。コマンドは次のとおりです。

docker run -d --name ORCLCDB container-registry.oracle.com/database/express:21.3.0-xe

残りのプロセスは以前と同じです。

また、Oracle Vagrant Projectには Oracle データベース コンテナーが存在せず、DockerEngine 仮想マシンと ContainerRegistry 仮想マシンのみであることを確認しました。

参考

  • https://blogs.oracle.com/coretec/post/oracle-database-with-docker
  • https://github.com/oracle/docker-images/blob/main/OracleDatabase/SingleInstance/README.md
  • https://github.com/oracle/docker-images
  • https://oracle-base.com/articles/linux/docker-oracle-database-on-docker
  • https://oracle.github.io/learning-library/data-management-library/database/docker/db-on-docker/workshops/freetier/?lab=create-db-container

おすすめ

転載: blog.csdn.net/stevensxiao/article/details/129988634