Docker安装Oracle19.3

Posted by NekouTarou on 01-05,2022

下载镜像

➜  Oracle git clone git@github.com:oracle/docker-images.git
正克隆到 'docker-images'...
remote: Enumerating objects: 15140, done.
remote: Counting objects: 100% (2/2), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 15140 (delta 0), reused 0 (delta 0), pack-reused 15138
接收对象中: 100% (15140/15140), 10.19 MiB | 1008.00 KiB/s, 完成.
处理 delta 中: 100% (8923/8923), 完成.
➜  Oracle ll
总用量 2.9G
drwxrwxr-x 32 llc  llc  4.0K 1月   5 14:21 docker-images
-rw-r--r--  1 root root 2.9G 1月   5 14:12 LINUX.X64_193000_db_home.zip
➜  Oracle cd docker-images
➜  docker-images git:(main) ll
总用量 140K
drwxrwxr-x 6 llc llc 4.0K 1月   5 14:21 Archive
-rw-rw-r-- 1 llc llc 3.3K 1月   5 14:21 CODE_OF_CONDUCT.md
-rw-rw-r-- 1 llc llc 1.4K 1月   5 14:21 CODEOWNERS
drwxrwxr-x 3 llc llc 4.0K 1月   5 14:21 Contrib
-rw-rw-r-- 1 llc llc 9.5K 1月   5 14:21 CONTRIBUTING.md
drwxrwxr-x 3 llc llc 4.0K 1月   5 14:21 GraalVM
-rw-rw-r-- 1 llc llc 1.9K 1月   5 14:21 LICENSE.txt
drwxrwxr-x 3 llc llc 4.0K 1月   5 14:21 NoSQL
drwxrwxr-x 4 llc llc 4.0K 1月   5 14:21 OracleAccessManagement
drwxrwxr-x 3 llc llc 4.0K 1月   5 14:21 OracleBI
drwxrwxr-x 3 llc llc 4.0K 1月   5 14:21 OracleCloudInfrastructure
drwxrwxr-x 5 llc llc 4.0K 1月   5 14:21 OracleCoherence
drwxrwxr-x 4 llc llc 4.0K 1月   5 14:21 OracleDatabase
drwxrwxr-x 4 llc llc 4.0K 1月   5 14:21 OracleEssbase
drwxrwxr-x 4 llc llc 4.0K 1月   5 14:21 OracleFMWInfrastructure
drwxrwxr-x 4 llc llc 4.0K 1月   5 14:21 OracleGoldenGate
drwxrwxr-x 4 llc llc 4.0K 1月   5 14:21 OracleHTTPServer
drwxrwxr-x 5 llc llc 4.0K 1月   5 14:21 OracleIdentityGovernance
drwxrwxr-x 4 llc llc 4.0K 1月   5 14:21 OracleInstantClient
drwxrwxr-x 4 llc llc 4.0K 1月   5 14:21 OracleInternetDirectory
drwxrwxr-x 5 llc llc 4.0K 1月   5 14:21 OracleJava
drwxrwxr-x 4 llc llc 4.0K 1月   5 14:21 OracleLinuxDevelopers
drwxrwxr-x 3 llc llc 4.0K 1月   5 14:21 OracleOpenJDK
drwxrwxr-x 3 llc llc 4.0K 1月   5 14:21 OracleRestDataServices
drwxrwxr-x 4 llc llc 4.0K 1月   5 14:21 OracleSOASuite
drwxrwxr-x 5 llc llc 4.0K 1月   5 14:21 OracleUnifiedDirectory
drwxrwxr-x 4 llc llc 4.0K 1月   5 14:21 OracleUnifiedDirectorySM
drwxrwxr-x 3 llc llc 4.0K 1月   5 14:21 OracleVeridata
drwxrwxr-x 3 llc llc 4.0K 1月   5 14:21 OracleWebCenterContent
drwxrwxr-x 3 llc llc 4.0K 1月   5 14:21 OracleWebCenterPortal
drwxrwxr-x 3 llc llc 4.0K 1月   5 14:21 OracleWebCenterSites
drwxrwxr-x 4 llc llc 4.0K 1月   5 14:21 OracleWebLogic
-rw-rw-r-- 1 llc llc 3.2K 1月   5 14:21 README.md
➜  docker-images git:(main) cd OracleDatabase
➜  OracleDatabase git:(main) ll
总用量 12K
drwxrwxr-x 6 llc llc 4.0K 1月   5 14:21 RAC
-rw-rw-r-- 1 llc llc  878 1月   5 14:21 README.md
drwxrwxr-x 7 llc llc 4.0K 1月   5 14:21 SingleInstance
➜  OracleDatabase git:(main) cd SingleInstance
➜  SingleInstance git:(main) ll
总用量 56K
-rw-rw-r--  1 llc llc 1.1K 1月   5 14:21 COPYRIGHT
drwxrwxr-x  9 llc llc 4.0K 1月   5 14:21 dockerfiles
drwxrwxr-x  6 llc llc 4.0K 1月   5 14:21 extensions
-rw-rw-r--  1 llc llc 8.4K 1月   5 14:21 FAQ.md
drwxrwxr-x  3 llc llc 4.0K 1月   5 14:21 helm-charts
-rw-rw-r--  1 llc llc  20K 1月   5 14:21 README.md
drwxrwxr-x 13 llc llc 4.0K 1月   5 14:21 samples
drwxrwxr-x  3 llc llc 4.0K 1月   5 14:21 tests
➜  SingleInstance git:(main) cd dockerfiles
➜  dockerfiles git:(main) ll
总用量 36K
drwxrwxr-x 2 llc llc 4.0K 1月   5 14:21 11.2.0.2
drwxrwxr-x 2 llc llc 4.0K 1月   5 14:21 12.1.0.2
drwxrwxr-x 2 llc llc 4.0K 1月   5 14:21 12.2.0.1
drwxrwxr-x 2 llc llc 4.0K 1月   5 14:21 18.3.0
drwxrwxr-x 2 llc llc 4.0K 1月   5 14:21 18.4.0
drwxrwxr-x 2 llc llc 4.0K 1月   5 14:21 19.3.0
drwxrwxr-x 2 llc llc 4.0K 1月   5 14:21 21.3.0
-rwxrwxr-x 1 llc llc 7.0K 1月   5 14:21 buildContainerImage.sh
➜  dockerfiles git:(main) cd 19.3.0
➜  19.3.0 git:(main) ll
总用量 84K
-rwxrwxr-x 1 llc llc 1.1K 1月   5 14:21 checkDBStatus.sh
-rwxrwxr-x 1 llc llc  904 1月   5 14:21 checkSpace.sh
-rw-rw-r-- 1 llc llc   63 1月   5 14:21 Checksum.ee
-rw-rw-r-- 1 llc llc   63 1月   5 14:21 Checksum.se2
-rwxrwxr-x 1 llc llc 7.5K 1月   5 14:21 createDB.sh
-rw-rw-r-- 1 llc llc 9.0K 1月   5 14:21 dbca.rsp.tmpl
-rw-rw-r-- 1 llc llc 6.8K 1月   5 14:21 db_inst.rsp
-rw-rw-r-- 1 llc llc 4.3K 1月   5 14:21 Dockerfile
-rwxrwxr-x 1 llc llc 2.7K 1月   5 14:21 installDBBinaries.sh
-rw-rw-r-- 1 llc llc 2.0K 1月   5 14:21 relinkOracleBinary.sh
-rwxrwxr-x 1 llc llc 7.6K 1月   5 14:21 runOracle.sh
-rwxrwxr-x 1 llc llc 1021 1月   5 14:21 runUserScripts.sh
-rwxrwxr-x 1 llc llc  795 1月   5 14:21 setPassword.sh
-rwxrwxr-x 1 llc llc 1.1K 1月   5 14:21 setupLinuxEnv.sh
-rwxrwxr-x 1 llc llc  679 1月   5 14:21 startDB.sh

查看19.3版本所需安装包名称


➜  19.3.0 git:(main) cat Dockerfile|grep INSTALL_FILE_1
    INSTALL_FILE_1="LINUX.X64_193000_db_home.zip" \
COPY --chown=oracle:dba $INSTALL_FILE_1 $INSTALL_RSP $INSTALL_DB_BINARIES_FILE $INSTALL_DIR/
➜  19.3.0 git:(main)
➜  19.3.0 git:(main) LINUX.X64_193000_db_home.zip
zsh: command not found: LINUX.X64_193000_db_home.zip

将安装包拷贝到当前路径

➜  19.3.0 git:(main) sudo cp /home/llc/Applications/Oracle/oracle/product/19.3.0/dbhome_1/LINUX.X64_193000_db_home.zip ./
[sudo] llc 的密码:
➜  19.3.0 git:(main) ll
总用量 2.9G
-rwxrwxr-x 1 llc  llc  1.1K 1月   5 14:21 checkDBStatus.sh
-rwxrwxr-x 1 llc  llc   904 1月   5 14:21 checkSpace.sh
-rw-rw-r-- 1 llc  llc    63 1月   5 14:21 Checksum.ee
-rw-rw-r-- 1 llc  llc    63 1月   5 14:21 Checksum.se2
-rwxrwxr-x 1 llc  llc  7.5K 1月   5 14:21 createDB.sh
-rw-rw-r-- 1 llc  llc  9.0K 1月   5 14:21 dbca.rsp.tmpl
-rw-rw-r-- 1 llc  llc  6.8K 1月   5 14:21 db_inst.rsp
-rw-rw-r-- 1 llc  llc  4.3K 1月   5 14:21 Dockerfile
-rwxrwxr-x 1 llc  llc  2.7K 1月   5 14:21 installDBBinaries.sh
-rw-r--r-- 1 root root 2.9G 1月   5 14:24 LINUX.X64_193000_db_home.zip
-rw-rw-r-- 1 llc  llc  2.0K 1月   5 14:21 relinkOracleBinary.sh
-rwxrwxr-x 1 llc  llc  7.6K 1月   5 14:21 runOracle.sh
-rwxrwxr-x 1 llc  llc  1021 1月   5 14:21 runUserScripts.sh
-rwxrwxr-x 1 llc  llc   795 1月   5 14:21 setPassword.sh
-rwxrwxr-x 1 llc  llc  1.1K 1月   5 14:21 setupLinuxEnv.sh
-rwxrwxr-x 1 llc  llc   679 1月   5 14:21 startDB.sh
➜  19.3.0 git:(main) ./buildContainerImage.sh  -v 19.3.0 -e
➜  19.3.0 git:(main) pwd
/home/llc/AppData/GitHub/Oracle/docker-images/OracleDatabase/SingleInstance/dockerfiles/19.3.0
➜  19.3.0 git:(main) cd ..

使用buildDockerImage.sh文件制作镜像

➜  dockerfiles git:(main) ./buildContainerImage.sh  -v 19.3.0 -e
Checking Docker version.
Checking if required packages are present and valid...
LINUX.X64_193000_db_home.zip: 成功
==========================
Container runtime info:
Client:
 Context:    default
 Debug Mode: false
 Plugins:
  app: Docker App (Docker Inc., v0.9.1-beta3)
  buildx: Docker Buildx (Docker Inc., v0.7.1-docker)
  scan: Docker Scan (Docker Inc., v0.9.0)

Server:
 Containers: 10
  Running: 5
  Paused: 0
  Stopped: 5
 Images: 9
 Server Version: 20.10.12
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 7b11cfaabd73bb80907dd23182b9347b4245eb5d
 runc version: v1.0.2-0-g52b36a2
 init version: de40ad0
 Security Options:
  apparmor
  seccomp
   Profile: default
 Kernel Version: 5.11.0-43-generic
 Operating System: Ubuntu 20.04.3 LTS
 OSType: linux
 Architecture: x86_64
 CPUs: 4
 Total Memory: 7.658GiB
 Name: llc-UX410UQK
 ID: DL55:E6EF:HDR3:BOZU:VCHJ:B4MR:FQ53:6AN2:BWRH:YOWV:3UKF:63WX
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

==========================
Building image 'oracle/database:19.3.0-ee' ...
Sending build context to Docker daemon   3.06GB
Step 1/22 : FROM oraclelinux:7-slim as base
7-slim: Pulling from library/oraclelinux
f09c1d3b7e7b: Pull complete
Digest: sha256:09e76dbbb70c3fd3496bebbb7dd00811371d7e509a2e8179e219d3909070f744
Status: Downloaded newer image for oraclelinux:7-slim
 ---> 5ca608cbbc7a
Step 2/22 : LABEL "provider"="Oracle"                                                     "issues"="https://github.com/oracle/docker-images/issues"               "volume.data"="/opt/oracle/oradata"                                     "volume.setup.location1"="/opt/oracle/scripts/setup"                    "volume.setup.location2"="/docker-entrypoint-initdb.d/setup"            "volume.startup.location1"="/opt/oracle/scripts/startup"                "volume.startup.location2"="/docker-entrypoint-initdb.d/startup"        "port.listener"="1521"                                                  "port.oemexpress"="5500"
 ---> Running in 7ac05e9a2220
Removing intermediate container 7ac05e9a2220
 ---> 0be542c99c67
Step 3/22 : ARG SLIMMING=true
 ---> Running in 4b76d1aa40a2
Removing intermediate container 4b76d1aa40a2
 ---> 23e4f517fcaa
Step 4/22 : ENV ORACLE_BASE=/opt/oracle     ORACLE_HOME=/opt/oracle/product/19c/dbhome_1     INSTALL_DIR=/opt/install     INSTALL_FILE_1="LINUX.X64_193000_db_home.zip"     INSTALL_RSP="db_inst.rsp"     CONFIG_RSP="dbca.rsp.tmpl"     PWD_FILE="setPassword.sh"     RUN_FILE="runOracle.sh"     START_FILE="startDB.sh"     CREATE_DB_FILE="createDB.sh"     SETUP_LINUX_FILE="setupLinuxEnv.sh"     CHECK_SPACE_FILE="checkSpace.sh"     CHECK_DB_FILE="checkDBStatus.sh"     USER_SCRIPTS_FILE="runUserScripts.sh"     INSTALL_DB_BINARIES_FILE="installDBBinaries.sh"     RELINK_BINARY_FILE="relinkOracleBinary.sh"     SLIMMING=$SLIMMING     ENABLE_ARCHIVELOG=false     ARCHIVELOG_DIR_NAME=archive_logs     CLONE_DB=false     PRIMARY_DB_CONN_STR=""     CHECKPOINT_FILE_EXTN=".created"     WALLET_DIR=""
 ---> Running in 40bd9736aedd
Removing intermediate container 40bd9736aedd
 ---> 8e92106aebfb
Step 5/22 : ENV PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch/:/usr/sbin:$PATH     LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib     CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
 ---> Running in 98925e108f21
Removing intermediate container 98925e108f21
 ---> a936adc1350b
Step 6/22 : COPY $SETUP_LINUX_FILE $CHECK_SPACE_FILE $INSTALL_DIR/
 ---> d2b6b5876fb9
Step 7/22 : COPY $RUN_FILE $START_FILE $CREATE_DB_FILE $CONFIG_RSP $PWD_FILE $CHECK_DB_FILE $USER_SCRIPTS_FILE $RELINK_BINARY_FILE $ORACLE_BASE/
 ---> 20b8d3c38e77
Step 8/22 : RUN chmod ug+x $INSTALL_DIR/*.sh &&     sync &&     $INSTALL_DIR/$CHECK_SPACE_FILE &&     $INSTALL_DIR/$SETUP_LINUX_FILE &&     rm -rf $INSTALL_DIR
 ---> Running in 5c030a853991
Loaded plugins: ovl
Resolving Dependencies
--> Running transaction check
---> Package openssl.x86_64 1:1.0.2k-22.el7_9 will be installed
--> Processing Dependency: make for package: 1:openssl-1.0.2k-22.el7_9.x86_64
---> Package oracle-database-preinstall-19c.x86_64 0:1.0-3.el7 will be installed

最后出现下面提示,成功

The response file for this session can be found at:
 /opt/oracle/product/19c/dbhome_1/install/response/db_2022-01-05_06-34-40AM.rsp

You can find the log of this install session at:
 /tmp/InstallActions2022-01-05_06-34-40AM/installActions2022-01-05_06-34-40AM.log

As a root user, execute the following script(s):
	1. /opt/oracle/oraInventory/orainstRoot.sh
	2. /opt/oracle/product/19c/dbhome_1/root.sh

Execute /opt/oracle/oraInventory/orainstRoot.sh on the following nodes:
[e1fbee875bfb]
Execute /opt/oracle/product/19c/dbhome_1/root.sh on the following nodes:
[e1fbee875bfb]


Successfully Setup Software with warning(s).
Moved the install session logs to:
 /opt/oracle/oraInventory/logs/InstallActions2022-01-05_06-34-40AM
 Removing intermediate container e1fbee875bfb
 ---> 5a593704c166
Step 14/22 : FROM base
 ---> fb8af8ff23f1
Step 15/22 : USER oracle
 ---> Running in cfa9b76d7d31
Removing intermediate container cfa9b76d7d31
 ---> 663c021cfdeb
Step 16/22 : COPY --chown=oracle:dba --from=builder $ORACLE_BASE $ORACLE_BASE
 ---> 720caf9caaba
Step 17/22 : USER root
 ---> Running in d9c666ff79a7
Removing intermediate container d9c666ff79a7
 ---> 480452bff75a
Step 18/22 : RUN $ORACLE_BASE/oraInventory/orainstRoot.sh &&     $ORACLE_HOME/root.sh
 ---> Running in 8ffc9dcfc3b7
Changing permissions of /opt/oracle/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.

Changing groupname of /opt/oracle/oraInventory to dba.
The execution of the script is complete.
Check /opt/oracle/product/19c/dbhome_1/install/root_8ffc9dcfc3b7_2022-01-05_06-43-34-840050584.log for the output of root script
Removing intermediate container 8ffc9dcfc3b7
 ---> d069aa1ebd50
Step 19/22 : USER oracle
 ---> Running in 8d275df21f52
Removing intermediate container 8d275df21f52
 ---> 99ae5ae1a5cd
Step 20/22 : WORKDIR /home/oracle
 ---> Running in b0cb58dfcd01
Removing intermediate container b0cb58dfcd01
 ---> fbc7de4c3f8c
Step 21/22 : HEALTHCHECK --interval=1m --start-period=5m    CMD "$ORACLE_BASE/$CHECK_DB_FILE" >/dev/null || exit 1
 ---> Running in 0cff7d40a17d
Removing intermediate container 0cff7d40a17d
 ---> 31c3829b6088
Step 22/22 : CMD exec $ORACLE_BASE/$RUN_FILE
 ---> Running in 85ad26dcadaa
Removing intermediate container 85ad26dcadaa
 ---> da0574edfb88
Successfully built da0574edfb88
Successfully tagged oracle/database:19.3.0-ee


  Oracle Database container image for 'ee' version 19.3.0 is ready to be extended:

    --> oracle/database:19.3.0-ee

  Build completed in 1084 seconds.

查看镜像

➜  dockerfiles git:(main) docker images
REPOSITORY                      TAG         IMAGE ID       CREATED         SIZE
oracle/database                 19.3.0-ee   da0574edfb88   2 minutes ago   6.53GB
oraclelinux                     7-slim      5ca608cbbc7a   4 weeks ago     132MB

准备启动容器

创建本机挂载目录

➜  docker pwd
/home/llc/AppData/docker
➜  docker mkdir oracle
➜  docker chmod 775 oracle
➜  docker ll
总用量 32K
drwxrwxr-x  4 llc              llc 4.0K 6月  21  2021 fastdfs
drwxrwxr-x 24 llc              llc 4.0K 9月  11 15:21 jenkins
drwxrwxr-x  4 systemd-coredump llc 4.0K 8月  16 09:47 mongo
drwxrwxr-x  3 llc              llc 4.0K 6月  15  2021 mysql
drwxrwxr-x  2 llc              llc 4.0K 1月   5 14:56 oracle

指定挂载本地目录启动 加-v参数,-p宿主机的1522映射容器的1521端口

➜  docker docker run --name oracle-19c -p 1522:1521 -p 5501:5500 -e ORACLE_SID=orcl -e ORACLE_PDB=pdb1 -e ORACLE_PWD=oracle -v /home/llc/AppData/docker/oracle:/opt/oracle/oradata oracle/database:19.3.0-ee
ORACLE EDITION: ENTERPRISE

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 05-JAN-2022 07:02:40

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

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

TNSLSNR for Linux: Version 19.0.0.0.0 - Production
System parameter file is /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora
Log messages written to /opt/oracle/diag/tnslsnr/294ceb729665/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 19.0.0.0.0 - Production
Start Date                05-JAN-2022 07:02:41
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora
Listener Log File         /opt/oracle/diag/tnslsnr/294ceb729665/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
[WARNING] [DBT-06208] The 'SYS' password entered does not conform to the Oracle recommended standards.
   CAUSE:
a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
b.The password entered is a keyword that Oracle does not recommend to be used as password
   ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
[WARNING] [DBT-06208] The 'SYSTEM' password entered does not conform to the Oracle recommended standards.
   CAUSE:
a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
b.The password entered is a keyword that Oracle does not recommend to be used as password
   ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
[WARNING] [DBT-06208] The 'PDBADMIN' password entered does not conform to the Oracle recommended standards.
   CAUSE:
a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
b.The password entered is a keyword that Oracle does not recommend to be used as password
   ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
Prepare for db operation
Cannot create directory "/opt/oracle/oradata/ORCL".
8% complete
Copying database files
31% complete
100% complete
[FATAL] Recovery Manager failed to restore datafiles. Refer logs for details.
8% complete
0% complete
Look at the log file "/opt/oracle/cfgtoollogs/dbca/ORCL/ORCL.log" for further details.
[ 2022-01-05 07:02:49.776 UTC ] [WARNING] [DBT-06208] The 'SYS' password entered does not conform to the Oracle recommended standards.
[ 2022-01-05 07:02:49.777 UTC ] [WARNING] [DBT-06208] The 'SYSTEM' password entered does not conform to the Oracle recommended standards.
[ 2022-01-05 07:02:49.777 UTC ] [WARNING] [DBT-06208] The 'PDBADMIN' password entered does not conform to the Oracle recommended standards.
[ 2022-01-05 07:02:51.637 UTC ] Prepare for db operation
[ 2022-01-05 07:02:51.695 UTC ] Cannot create directory "/opt/oracle/oradata/ORCL".
DBCA_PROGRESS : 8%
[ 2022-01-05 07:02:51.698 UTC ] Copying database files
DBCA_PROGRESS : 31%
DBCA_PROGRESS : 100%
[ 2022-01-05 07:03:13.606 UTC ] [FATAL] Recovery Manager failed to restore datafiles. Refer logs for details.
DBCA_PROGRESS : 8%
DBCA_PROGRESS : 0%

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Jan 5 07:03:14 2022
Version 19.3.0.0.0

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


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL>    ALTER SYSTEM SET control_files='/opt/oracle/oradata/ORCL/control01.ctl' scope=spfile
*
ERROR at line 1:
ORA-32001: write to SPFILE requested but no SPFILE is in use


SQL>
System altered.

SQL>    ALTER PLUGGABLE DATABASE PDB1 SAVE STATE
*
ERROR at line 1:
ORA-01109: database not open


SQL> BEGIN DBMS_XDB_CONFIG.SETGLOBALPORTENABLED (TRUE); END;

      *
ERROR at line 1:
ORA-06550: line 1, column 7:
PLS-00201: identifier 'DBMS_XDB_CONFIG.SETGLOBALPORTENABLED' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored


SQL> SQL>
Session altered.

SQL>    CREATE USER OPS$oracle IDENTIFIED EXTERNALLY
*
ERROR at line 1:
ORA-01109: database not open


SQL>    GRANT CREATE SESSION TO OPS$oracle
*
ERROR at line 1:
ORA-01109: database not open


SQL>    GRANT SELECT ON sys.v_$pdbs TO OPS$oracle
*
ERROR at line 1:
ORA-01109: database not open


SQL>    ALTER USER OPS$oracle SET container_data=all for sys.v_$pdbs container = current
*
ERROR at line 1:
ORA-01109: database not open


SQL> SQL> Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
ORACLE_HOME = [/home/oracle] ? ORACLE_BASE environment variable is not being set since this
information is not available for the current user ID .
You can set ORACLE_BASE manually if it is required.
Resetting ORACLE_BASE to its previous value or ORACLE_HOME
The Oracle base remains unchanged with value /opt/oracle
/opt/oracle/checkDBStatus.sh: line 27: sqlplus: command not found
mkdir: cannot create directory '/opt/oracle/oradata/dbconfig': Permission denied
mv: cannot stat '/opt/oracle/product/19c/dbhome_1/dbs/spfileORCL.ora': No such file or directory
mv: cannot stat '/opt/oracle/product/19c/dbhome_1/dbs/orapwORCL': No such file or directory
mv: cannot move '/opt/oracle/product/19c/dbhome_1/network/admin/sqlnet.ora' to '/opt/oracle/oradata/dbconfig/ORCL/': No such file or directory
mv: cannot move '/opt/oracle/product/19c/dbhome_1/network/admin/listener.ora' to '/opt/oracle/oradata/dbconfig/ORCL/': No such file or directory
mv: cannot move '/opt/oracle/product/19c/dbhome_1/network/admin/tnsnames.ora' to '/opt/oracle/oradata/dbconfig/ORCL/': No such file or directory
mv: cannot move '/opt/oracle/product/19c/dbhome_1/install/.docker_enterprise' to '/opt/oracle/oradata/dbconfig/ORCL/': No such file or directory
cp: cannot create regular file '/opt/oracle/oradata/dbconfig/ORCL/': No such file or directory
ln: failed to create symbolic link '/opt/oracle/product/19c/dbhome_1/network/admin/sqlnet.ora': File exists
ln: failed to create symbolic link '/opt/oracle/product/19c/dbhome_1/network/admin/listener.ora': File exists
ln: failed to create symbolic link '/opt/oracle/product/19c/dbhome_1/network/admin/tnsnames.ora': File exists
cp: cannot stat '/opt/oracle/oradata/dbconfig/ORCL/oratab': No such file or directory
ORACLE_HOME = [/home/oracle] ? ORACLE_BASE environment variable is not being set since this
information is not available for the current user ID .
You can set ORACLE_BASE manually if it is required.
Resetting ORACLE_BASE to its previous value or ORACLE_HOME
The Oracle base remains unchanged with value /opt/oracle
/opt/oracle/checkDBStatus.sh: line 27: sqlplus: command not found
#####################################
########### E R R O R ###############
DATABASE SETUP WAS NOT SUCCESSFUL!
Please check output for further info!
########### E R R O R ###############
#####################################
The following output is now a tail of the alert.log:
2022-01-05T07:03:07.666927+00:00
Successful mount of redo thread 1, with mount id 126909927
2022-01-05T07:03:07.667885+00:00
Database mounted in Exclusive Mode
Lost write protection disabled
.... (PID:581): Using STANDBY_ARCHIVE_DEST parameter default value as /opt/oracle/product/19c/dbhome_1/dbs/arch [krsd.c:18141]
Create Relation IPS_PACKAGE_UNPACK_HISTORY
Completed: ALTER DATABASE   MOUNT
2022-01-05T07:03:14.254185+00:00
ALTER SYSTEM SET local_listener='' SCOPE=MEMORY;

  lib/libclntsh.so.11.1  -> libclntsh.so
  lib/libclntsh.so.12.1  -> libclntsh.so
  lib/libclntsh.so.18.1  -> libclntsh.so
  precomp/public/SQLCA.H -> sqlca.h
  precomp/public/SQLDA.H -> sqlda.h
  precomp/public/ORACA.H -> oraca.h
  precomp/public/SQLCA.COB -> sqlca.cob
  precomp/public/ORACA.COB -> oraca.cob
  javavm/admin/classes.bin -> ../../javavm/jdk/jdk8/admin/classes.bin
  javavm/admin/libjtcjt.so -> ../../javavm/jdk/jdk8/admin/libjtcjt.so
  jdk/jre/bin/ControlPanel -> jcontrol
  javavm/admin/lfclasses.bin -> ../../javavm/jdk/jdk8/admin/lfclasses.bin
  javavm/lib/security/cacerts -> ../../../javavm/jdk/jdk8/lib/security/cacerts
  javavm/lib/sunjce_provider.jar -> ../../javavm/jdk/jdk8/lib/sunjce_provider.jar
  javavm/lib/security/README.txt -> ../../../javavm/jdk/jdk8/lib/security/README.txt
  javavm/lib/security/java.security -> ../../../javavm/jdk/jdk8/lib/security/java.security
  jdk/jre/lib/amd64/server/libjsig.so -> ../libjsig.so
Launching Oracle Database Setup Wizard...

[WARNING] [INS-32055] The Central Inventory is located in the Oracle base.
   ACTION: Oracle recommends placing this Central Inventory in a location outside the Oracle base directory.
[WARNING] [INS-13014] Target environment does not meet some opti

报错了,进入容器。oradata的属主为1000:1000;

在宿主机上创建oracle用户,更改/data/oracle的属主为oracle:oinstall

➜  oracle docker exec -it oracle-19c bash
[oracle@294ceb729665 ~]$
[oracle@294ceb729665 ~]$ cd /opt
[oracle@294ceb729665 opt]$ cd oracle
[oracle@294ceb729665 oracle]$ ll
total 92
drwxr-x--- 3 oracle oinstall 4096 Jan  5 07:02 admin
drwxr-x--- 2 oracle oinstall 4096 Jan  5 07:02 audit
drwxr-x--- 3 oracle oinstall 4096 Jan  5 07:02 cfgtoollogs
-rwxrwxr-x 1 oracle dba      1044 Jan  5 06:21 checkDBStatus.sh
drwxr-xr-x 2 oracle dba      4096 Jan  5 06:35 checkpoints
-rwxrwxr-x 1 oracle dba      7634 Jan  5 06:21 createDB.sh
-rw-rw-r-- 1 oracle dba      9204 Jan  5 06:21 dbca.rsp.tmpl
drwxrwxr-x 1 oracle dba      4096 Jan  5 06:35 diag
drwxrwx--- 1 oracle dba      4096 Jan  5 07:02 oraInventory
drwxrwxr-x 2   1000     1000 4096 Jan  5 06:56 oradata
drwxr-xr-x 1 oracle dba      4096 Jan  5 06:26 product
-rwxrwxr-- 1 oracle dba      2008 Jan  5 06:21 relinkOracleBinary.sh
-rwxrwxr-x 1 oracle dba      7743 Jan  5 06:21 runOracle.sh
-rwxrwxr-x 1 oracle dba      1021 Jan  5 06:21 runUserScripts.sh
drwxr-xr-x 1 oracle dba      4096 Jan  5 06:26 scripts
-rwxrwxr-x 1 oracle dba       795 Jan  5 06:21 setPassword.sh
-rwxrwxr-x 1 oracle dba       679 Jan  5 06:21 startDB.sh

容器中的Oracle用户ID如下

[oracle@294ceb729665 oracle]$ id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54330(racdba)

而宿主中的ID如下

➜  ~ id oracle
用户id=1002(oracle) 组id=1002(oinstall) 组=1002(oinstall),1003(dba)

注意:/oracle/oradata目录权限一定要正确,在容器中oracle用户的uid是54321,所以要保证容器内的oracle用户有权限读写该目录。 如创建oracle用户且uid是54321

➜  llc groupadd -g 54321 oinstall
➜  llc groupadd -g 54322 dba
➜  llc groupadd -g 54323 oper
➜  llc useradd -u 54321 -g oinstall -G dba,oper -d /home/oracle -s /bin/bash -c "Oracle Software Owner" oracle

➜  ~llc id oracle
用户id=54321(oracle) 组id=54321(oinstall) 组=54321(oinstall),54322(dba),54323(oper)
➜  ~llc chown oracle:oinstall /home/llc/AppData/docker/oracle

重新运行Docker

➜  docker docker run --name oracle-19c -p 1522:1521 -p 5501:5500 -e ORACLE_SID=orcl -e ORACLE_PDB=pdb1 -e ORACLE_PWD=oracle -v /home/llc/AppData/docker/oracle:/opt/oracle/oradata oracle/database:19.3.0-ee
ORACLE EDITION: ENTERPRISE

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 05-JAN-2022 07:49:22

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

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

TNSLSNR for Linux: Version 19.0.0.0.0 - Production
System parameter file is /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora
Log messages written to /opt/oracle/diag/tnslsnr/aa62eba5828a/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 19.0.0.0.0 - Production
Start Date                05-JAN-2022 07:49:23
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora
Listener Log File         /opt/oracle/diag/tnslsnr/aa62eba5828a/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
[WARNING] [DBT-06208] The 'SYS' password entered does not conform to the Oracle recommended standards.
   CAUSE:
a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
b.The password entered is a keyword that Oracle does not recommend to be used as password
   ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
[WARNING] [DBT-06208] The 'SYSTEM' password entered does not conform to the Oracle recommended standards.
   CAUSE:
a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
b.The password entered is a keyword that Oracle does not recommend to be used as password
   ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
[WARNING] [DBT-06208] The 'PDBADMIN' password entered does not conform to the Oracle recommended standards.
   CAUSE:
a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
b.The password entered is a keyword that Oracle does not recommend to be used as password
   ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
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/ORCL.
Database Information:
Global Database Name:ORCL
System Identifier(SID):ORCL
Look at the log file "/opt/oracle/cfgtoollogs/dbca/ORCL/ORCL.log" for further details.

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Jan 5 08:05:47 2022
Version 19.3.0.0.0

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


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.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>
User altered.

SQL> SQL> Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
The Oracle base remains unchanged with value /opt/oracle
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:
PDB1(3):ALTER DATABASE DEFAULT TABLESPACE "USERS"
PDB1(3):Completed: ALTER DATABASE DEFAULT TABLESPACE "USERS"
2022-01-05T08:05:47.311899+00:00
ALTER SYSTEM SET control_files='/opt/oracle/oradata/ORCL/control01.ctl' SCOPE=SPFILE;
2022-01-05T08:05:47.319721+00:00
ALTER SYSTEM SET local_listener='' SCOPE=BOTH;
   ALTER PLUGGABLE DATABASE PDB1 SAVE STATE
Completed:    ALTER PLUGGABLE DATABASE PDB1 SAVE STATE

XDB initialized.
2022-01-05T08:15:36.377526+00:00
PDB1(3):Resize operation completed for file# 10, old size 327680K, new size 337920K

出现DATABASE IS READY TO USE!代表数据库创建成功

进入容器后连接数据库查询测试发现报错

SQL> select * from all_users;
select * from all_users
*
ERROR at line 1:
ORA-01034: ORACLE not available
Process ID: 0
Session ID: 0 Serial number: 0


SQL> startup;
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/opt/oracle/product/19c/dbhome_1/dbs/initorcl.ora'
SQL> exit

提示服务不可用,尝试启动发现缺少文件。

[oracle@aa62eba5828a ~]$ cd /opt/oracle/product/19c/dbhome_1/dbs/
[oracle@aa62eba5828a dbs]$ ll
total 12
-rw-rw---- 1 oracle oinstall 1544 Jan  5 08:39 hc_ORCL.dat
-rw-r--r-- 1 oracle dba      3079 May 14  2015 init.ora
-rw-r----- 1 oracle oinstall   24 Jan  5 07:49 lkORCL
lrwxrwxrwx 1 oracle oinstall   43 Jan  5 08:05 orapwORCL -> /opt/oracle/oradata/dbconfig/ORCL/orapwORCL
lrwxrwxrwx 1 oracle oinstall   48 Jan  5 08:05 spfileORCL.ora -> /opt/oracle/oradata/dbconfig/ORCL/spfileORCL.ora

解决办法如下

$ORACLE_BASE/admin/ORCL/pfile/下的init.ora拷贝到/opt/oracle/product/19c/dbhome_1/dbs/之后重启

oracle@aa62eba5828a dbs]$ cp /opt/oracle/admin/ORCL/pfile/init.ora.0520228230 ./initorcl.ora
[oracle@aa62eba5828a dbs]$ ll
total 16
-rw-rw---- 1 oracle oinstall 1544 Jan  5 08:39 hc_ORCL.dat
-rw-r--r-- 1 oracle dba      3079 May 14  2015 init.ora
-rw-r----- 1 oracle oinstall 2233 Jan  5 09:00 initorcl.ora
-rw-r----- 1 oracle oinstall   24 Jan  5 07:49 lkORCL
lrwxrwxrwx 1 oracle oinstall   43 Jan  5 08:05 orapwORCL -> /opt/oracle/oradata/dbconfig/ORCL/orapwORCL
lrwxrwxrwx 1 oracle oinstall   48 Jan  5 08:05 spfileORCL.ora -> /opt/oracle/oradata/dbconfig/ORCL/spfileORCL.ora
[oracle@aa62eba5828a dbs]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Wed Jan 5 09:00:45 2022
Version 19.3.0.0.0

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

Connected to an idle instance.

SQL> startup

;
ORACLE instance started.

Total System Global Area 1610609928 bytes
Fixed Size		    9135368 bytes
Variable Size		  385875968 bytes
Database Buffers	 1207959552 bytes
Redo Buffers		    7639040 bytes

SQL> select 1 from dual;

	 1
----------
	 1

SQL>