1. 準備鏡像
接上一章 準備好Oraccle19c鏡像:
myzmac:dockerfiles myz$ docker images oracle/database:19.3.0-ee
REPOSITORY TAG IMAGE ID CREATED SIZE
oracle/database 19.3.0-ee 3c1a9d1ffc0a 14 minutes ago 6.61GB
2. 通過鏡像創(chuàng)建實例
2.1. 創(chuàng)建實例
把數(shù)據(jù)文件 ,參數(shù)配置文件 ,tns ,監(jiān)聽掛載出來
分配2G內(nèi)存,設(shè)定時區(qū), 容器中的主機名, 容器名, 端口映身等
mkdir -p /Users/myz/Docker/Oracle/19.3/
--執(zhí)行創(chuàng)建
docker run -e TZ="Asia/Shanghai" -itd -h ora193 -m 2048m --name ora193 \
-p 1521:1521 -p 5500:5500 \
-e ORACLE_SID=mycdb \
-e ORACLE_PDB=pdb1 \
-v /Users/myz/Docker/Oracle/19.3/:/opt/oracle/oradata oracle/database:19.3.0-ee
通過命令:docker logs -f ora193 觀察部署進度,預(yù)估15-25分鐘完成
myzmac:Oracle myz$ docker logs -f ora193
ORACLE PASSWORD FOR SYS, SYSTEM AND PDBADMIN: C1eNxx1/a+k=1
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 21-FEB-2020 00:03:01
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/ora193a/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 21-FEB-2020 00:03:01
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/ora193/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/MYCDB.
Database Information:
Global Database Name: MYCDB
System Identifier(SID): MYCDB
Look at the log file "/opt/oracle/cfgtoollogs/dbca/MYCDB/MYCDB.log" for further details.
SQL*Plus: Release 19.0.0.0.0 - Production on Fri Feb 21 00:25:35 2020
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> 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
#########################
DATABASE IS READY TO USE!
#########################
The following output is now a tail of the alert.log:
ORCLPDB1(3):ALTER DATABASE DEFAULT TABLESPACE "USERS"
ORCLPDB1(3):Completed: ALTER DATABASE DEFAULT TABLESPACE "USERS"
2020-02-21T00:25:35.547850+08:00
ALTER SYSTEM SET control_files='/opt/oracle/oradata/MYCDB/control01.ctl' SCOPE=SPFILE;
2020-02-21T00:25:35.568154+08:00
ALTER SYSTEM SET local_listener='' SCOPE=BOTH;
ALTER PLUGGABLE DATABASE PDB1 SAVE STATE
Completed: ALTER PLUGGABLE DATABASE PDB1 SAVE STATE
XDB initialized.
^C
myzmac:Oracle myz$
當(dāng)看到顯示 DATABASE IS READY TO USE!
表示部署完成, 可以ctrl+c退出Log, 查看實例:
myzmac:Oracle myz$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
02c23cc4cda5 oracle/database:19.3.0-ee "/bin/sh -c 'exec $O…" 27 minutes ago Up 27 minutes (healthy) 0.0.0.0:1521->1521/tcp, 0.0.0.0:5500->5500/tcp ora193
3. 使用
設(shè)置sys,system等用戶密碼
docker exec ora193 ./setPassword.sh welcome1
3.1. 客戶端連接
sqlplus sys/oracle@//127.0.0.1:1521/mycdb as sysdba
SQL> sho pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB1 READ WRITE NO
SQL>
sqlplus sys/oracle@//127.0.0.1:1521/pdb1 as sysdba
SQL> sho con_name
CON_NAME
------------------------------
PDB1
SQL>
3.2. 容器本地連接
需要配置環(huán)境變量,不然報如下錯
myzmac:Oracle myz$ docker exec -it ora193a bash
[oracle@ora193a ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Fri Feb 21 00:33:03 2020
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
ERROR:
ORA-12162: TNS:net service name is incorrectly specified
Enter user-name: ^C
[oracle@ora193a ~]$
--這里報錯是因為沒有配環(huán)境變量
配置bash_profile
vi ~/.bash_profile
--增加如下內(nèi)容
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
export EDITOR=vi
stty erase ^H
vi ~/.bashrc
--增加如下內(nèi)容
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'
export ORACLE_SID=MYCDB
PS1='\[\e[37;40m\][\[\e[32;40m\]\u\[\e[37;40m\]@\h \[\e[35;40m\]\W\[\e[0m\]]\$'
alias tf='tail -100f /opt/oracle/diag/rdbms/mycdb/MYCDB/trace/al*.log'
alias tf100='tail -100 /opt/oracle/diag/rdbms/mycdb/MYCDB/trace/al*.log|more'
alias tf1000='tail -1000 /opt/oracle/diag/rdbms/mycdb/MYCDB/trace/al*.log|more'
不知道為什么ORACLEA_SID寫到.bash_profile中并不生效.. 改到bashrc中了
重新登錄
[oracle@ora193~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Dec 31 20:57:15 2019
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>
4. 其他操作, 如遷移容器:
導(dǎo)出該容器,做為新的鏡像 , 過程為 容器-> 導(dǎo)出為鏡像-> scp-> 導(dǎo)入鏡像->創(chuàng)建實例
--導(dǎo)出
docker export 02c23cc4cda5 > 19c.tar
--復(fù)制新鏡像到其他環(huán)境后然后導(dǎo)入tar包(導(dǎo)入后是鏡像)
docker import 19c.tar oracle19c:19.3
--就可以創(chuàng)建個新的容器出來, 如果是本機注意外掛目錄, 及映身端口的不同