
目录
一、从Docker Hub或阿里云镜像下载小麦苗上传的镜像文件二、创建容器并启动数据库三、尽情使用吧3.1 数据库使用3.2 创建数据库3.3 EMDE的使用3.4 使用ssh连接到容器内3.5 外部客户端连接容器内的数据库
一、从Docker Hub或阿里云镜像下载小麦苗上传的镜像文件
小麦苗的Docker Hub的地址:https://hub.docker.com/u/lhrbest Oracle 18c DB的地址:https://hub.docker.com/r/lhrbest/oracle18clhr_rpm_db/tags

1# 从Docker hub下载,网络不好时,一般比较慢
2docker pull lhrbest/oracle18clhr_rpm_db
3# 可以选择从阿里云下载
4docker pull registry.cn-hangzhou.aliyuncs.com/lhrbest/oracle18clhr_rpm_db
5# 从阿里云下载后可以tag成如下形式
6docker tag registry.cn-hangzhou.aliyuncs.com/lhrbest/oracle18clhr_rpm_db lhrbest/oracle18clhr_rpm_db
镜像大概5G左右,解压后大约13G左右,所以请保留充足的空间。执行过程如下:
1[root@docker35 ~]# docker pull registry.cn-hangzhou.aliyuncs.com/lhrbest/oracle18clhr_rpm_db
2Using default tag: latest
3latest: Pulling from lhrbest/oracle18clhr_rpm_db
4ac9208207ada: Already exists
55f7f556e707f: Pull complete
6Digest: sha256:e2e90034c232e328441b704a3db2edeb13a83cfe5e5dd9221f6ee954c4efdf1e
7Status: Downloaded newer image for registry.cn-hangzhou.aliyuncs.com/lhrbest/oracle18clhr_rpm_db:latest
8registry.cn-hangzhou.aliyuncs.com/lhrbest/oracle18clhr_rpm_db:latest
9[root@docker35 ~]# docker tag registry.cn-hangzhou.aliyuncs.com/lhrbest/oracle18clhr_rpm_db lhrbest/oracle18clhr_rpm_db
10[root@docker35 ~]# docker images | grep 18c
11lhrbest/oracle18clhr_rpm_db latest d99be9a3f472 11 days ago 13.1GB
12registry.cn-hangzhou.aliyuncs.com/lhrbest/oracle18clhr_rpm_db latest d99be9a3f472 11 days ago 13.1GB
13[root@docker35 ~]#
二、创建容器并启动数据库
1# 1、创建容器
2docker run -itd -h lhr18cocp --name lhr18cocp -p 222:22 -p 1522:1521 -p 5500:5500 --privileged=true lhrbest/oracle18clhr_rpm_db /usr/sbin/init
3# 2、进入容器
4docker exec -it lhr18cocp bash
5# 3、启动监听和数据库,使用root命令一键启动
6/etc/init.d/oracledb_ORCLCDB-18c start
在创建容器时,需要注意端口映射关系。在以上命令中,主机的222、1522和5500这3个端口不能被占用,否则会创建失败。
如果想再创建一个容器,那么只需要将以上命令修改参数name和p不同即可,立马就可以拥有一个新的环境,而且和之前的IP地址不同,用来做测试再方便不过了,如下:
1# 1、创建容器2
2docker run -itd -h lhr18cocp --name lhr18cocp2 -p 223:22 -p 1523:1521 -p 5501:5500 --privileged=true lhrbest/oracle18clhr_rpm_db /usr/sbin/init
3# 2、进入容器2
4docker exec -it lhr18cocp2 bash
5# 3、启动监听和数据库,使用root命令一键启动
6/etc/init.d/oracledb_ORCLCDB-18c start
执行过程:
1[root@docker35 ~]# docker images | grep 18c
2lhrbest/oracle18clhr_rpm_db latest d99be9a3f472 11 days ago 13.1GB
3registry.cn-hangzhou.aliyuncs.com/lhrbest/oracle18clhr_rpm_db latest d99be9a3f472 11 days ago 13.1GB
4[root@docker35 ~]# docker run -itd -h lhr18cocp --name lhr18cocp -p 222:22 -p 1522:1521 -p 5500:5500 --privileged=true lhrbest/oracle18clhr_rpm_db /usr/sbin/init
54bf134861d2c67faf68b1a8c42beb66821abc0fa2fc49a34beb143d218f00657
6[root@docker35 ~]# docker exec -it lhr18cocp bash
7
8[root@lhr18crpm /]# cat /etc/redhat-release
9CentOS Linux release 7.6.1810 (Core)
10[root@lhr18cocp /]# ifconfig
11eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
12 inet 172.17.0.8 netmask 255.255.0.0 broadcast 172.17.255.255
13 ether 02:42:ac:11:00:08 txqueuelen 0 (Ethernet)
14 RX packets 672 bytes 101230 (98.8 KiB)
15 RX errors 0 dropped 0 overruns 0 frame 0
16 TX packets 593 bytes 3748736 (3.5 MiB)
17 TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
18
19[root@lhr18cocp /]# /etc/init.d/oracledb_ORCLCDB-18c start
20Starting Oracle Net Listener.
21Oracle Net Listener started.
22Starting Oracle Database instance ORCLCDB.
23Oracle Database instance ORCLCDB started.
24
25[root@lhr18crpm /]# su - oracle
26Last login: Sun Jun 28 14:05:18 CST 2020 on pts/0
27[oracle@lhr18crpm ~]$ echo $ORACLE_HOME
28/opt/oracle/product/18c/dbhome_1
29[oracle@lhr18crpm ~]$ echo $ORACLE_SID
30ORCLCDB
再创建一个新的容器,可以看到IP地址和之前的不同,容器和容器之间是互不影响的,用来做cdb和pdb的迁移再好不过了:
1[root@docker35 ~]# docker run -itd -h lhr18cocp --name lhr18cocp2 -p 223:22 -p 1523:1521 -p 5501:5500 --privileged=true lhrbest/oracle18clhr_rpm_db /usr/sbin/init
268a14533f2024f33400c37ba0056456834db17ac1d6af62b05464016b137bdcc
3[root@docker35 ~]# docker exec -it lhr18cocp2 bash
4[root@lhr18cocp /]# ifconfig
5eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
6 inet 172.17.0.9 netmask 255.255.0.0 broadcast 172.17.255.255
7 ether 02:42:ac:11:00:09 txqueuelen 0 (Ethernet)
8 RX packets 8 bytes 656 (656.0 B)
9 RX errors 0 dropped 0 overruns 0 frame 0
10 TX packets 0 bytes 0 (0.0 B)
11 TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
三、尽情使用吧
3.1 数据库使用
1[root@lhr18cocp /]# su - oracle
2Last login: Thu Jul 9 16:57:52 CST 2020 on pts/1
3
4[oracle@lhr18cocp ~]$ lsnrctl status
5
6LSNRCTL for Linux: Version 18.0.0.0.0 - Production on 09-JUL-2020 17:02:23
7
8Copyright (c) 1991, 2018, Oracle. All rights reserved.
9
10Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=lhr18cocp)(PORT=1521)))
11STATUS of the LISTENER
12------------------------
13Alias LISTENER
14Version TNSLSNR for Linux: Version 18.0.0.0.0 - Production
15Start Date 09-JUL-2020 16:57:52
16Uptime 0 days 0 hr. 4 min. 31 sec
17Trace Level off
18Security ON: Local OS Authentication
19SNMP OFF
20Listener Parameter File /opt/oracle/product/18c/dbhome_1/network/admin/listener.ora
21Listener Log File /opt/oracle/diag/tnslsnr/lhr18cocp/listener/alert/log.xml
22Listening Endpoints Summary...
23 (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=lhr18cocp)(PORT=1521)))
24 (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
25 (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=lhr18cocp)(PORT=5500))(Security=(my_wallet_directory=/opt/oracle/product/18c/dbhome_1/admin/ORCLCDB/xdb_wallet))(Presentation=HTTP)(Session=RAW))
26Services Summary...
27Service "ORCLCDB" has 1 instance(s).
28 Instance "ORCLCDB", status READY, has 1 handler(s) for this service...
29Service "ORCLCDBXDB" has 1 instance(s).
30 Instance "ORCLCDB", status READY, has 1 handler(s) for this service...
31Service "a8cb5bdeb697291fe0530f0011acfe5a" has 1 instance(s).
32 Instance "ORCLCDB", status READY, has 1 handler(s) for this service...
33Service "orclpdb1" has 1 instance(s).
34 Instance "ORCLCDB", status READY, has 1 handler(s) for this service...
35The command completed successfully
36
37[oracle@lhr18cocp ~]$ sas
38
39SQL*Plus: Release 18.0.0.0.0 - Production on Thu Jul 9 17:01:30 2020
40Version 18.3.0.0.0
41
42Copyright (c) 1982, 2018, Oracle. All rights reserved.
43
44
45Connected to:
46Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
47Version 18.3.0.0.0
48
49SYS@ORCLCDB> show pdbs
50
51 CON_ID CON_NAME OPEN MODE RESTRICTED
52---------- ------------------------------ ---------- ----------
53 2 PDB$SEED READ ONLY NO
54 3 ORCLPDB1 READ WRITE NO
3.2 创建数据库
我们也可以自己创建自己需要的数据库,如下所示,创建了一个非cdb的数据库,dbname和sid都是lhrdb:
1[oracle@lhr18cocp ~]$ dbca -silent -ignorePreReqs -createDatabase -templateName General_Purpose.dbc -responseFile NO_VALUE \
2> -gdbname lhrdb -sid lhrdb \
3> -createAsContainerDatabase FALSE \
4> -sysPassword lhr -systemPassword lhr -dbsnmpPassword lhr \
5> -datafileDestination '/opt/oracle/oradata' -recoveryAreaDestination '/opt/oracle/flash_recovery_area' \
6> -storageType FS \
7> -characterset ZHS16GBK \
8> -sampleSchema true \
9> -totalMemory 1024 \
10> -databaseType MULTIPURPOSE \
11> -emConfiguration NONE
12[WARNING] [DBT-06208] The 'SYS' password entered does not conform to the Oracle recommended standards.
13 CAUSE:
14a. 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].
15b.The password entered is a keyword that Oracle does not recommend to be used as password
16 ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
17[WARNING] [DBT-06208] The 'SYSTEM' password entered does not conform to the Oracle recommended standards.
18 CAUSE:
19a. 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].
20b.The password entered is a keyword that Oracle does not recommend to be used as password
21 ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
22Prepare for db operation
2310% complete
24Copying database files
2540% complete
26Creating and starting Oracle instance
2742% complete
2846% complete
2950% complete
3054% complete
3158% complete
3260% complete
33Completing Database Creation
3466% complete
3569% complete
3670% complete
37Executing Post Configuration Actions
38100% complete
39Database creation complete. For details check the logfiles at:
40 /opt/oracle/cfgtoollogs/dbca/lhrdb.
41Database Information:
42Global Database Name:lhrdb
43System Identifier(SID):lhrdb
44Look at the log file "/opt/oracle/cfgtoollogs/dbca/lhrdb/lhrdb0.log" for further details.
45
46[oracle@lhr18cocp ~]$ . oraenv
47ORACLE_SID = [ORCLCDB] ? lhrdb
48The Oracle base remains unchanged with value /opt/oracle
49[oracle@lhr18cocp ~]$ sas
50
51SQL*Plus: Release 18.0.0.0.0 - Production on Thu Jul 9 17:20:47 2020
52Version 18.3.0.0.0
53
54Copyright (c) 1982, 2018, Oracle. All rights reserved.
55
56
57Connected to:
58Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
59Version 18.3.0.0.0
60
61SYS@lhrdb> show pdbs
62SYS@lhrdb>
3.3 EMDE的使用
这个镜像默认配置了EM,端口为5500,所以EM的访问地址为:https://192.168.1.35:5500/em
1[oracle@lhr18cocp ~]$ lsnrctl status | grep tcps
2 (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=lhr18cocp)(PORT=5500))(Security=(my_wallet_directory=/opt/oracle/product/18c/dbhome_1/admin/ORCLCDB/xdb_wallet))(Presentation=HTTP)(Session=RAW))


3.4 使用ssh连接到容器内
1C:\Users\lhrxxt>ssh root@192.168.1.35 -p222
2The authenticity of host '[192.168.1.35]:222 ([192.168.1.35]:222)' can't be established.
3ECDSA key fingerprint is SHA256:9LX3zOgSJ7HC5MztqfJg7S46TJLZBdwV4/xIdCkExy8.
4Are you sure you want to continue connecting (yes/no)? yes
5Warning: Permanently added '[192.168.1.35]:222' (ECDSA) to the list of known hosts.
6root@192.168.1.35's password:
7Last login: Wed Jun 24 08:53:40 2020 from gateway
8[root@lhr18cocp ~]# ps -ef|grep pmon
9oracle 244 0 0 16:57 ? 00:00:00 ora_pmon_ORCLCDB
10oracle 4143 0 0 17:19 ? 00:00:00 ora_pmon_lhrdb
11root 5193 5125 0 17:31 pts/2 00:00:00 grep --color=auto pmon
3.5 外部客户端连接容器内的数据库
我们可以在容器外部通过sqlplus或其他工具连接容器内的数据库,注意此时的端口应该为1522:
1C:\Users\lhrxxt>sqlplus sys/lhr@192.168.1.35:1522/ORCLCDB as sysdba
2
3SQL*Plus: Release 12.1.0.2.0 Production on Thu Jul 9 17:39:43 2020
4
5Copyright (c) 1982, 2014, Oracle. All rights reserved.
6
7
8Connected to:
9Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
10
11SYS@192.168.1.35:1522/ORCLCDB> show pdbs
12
13 CON_ID CON_NAME OPEN MODE RESTRICTED
14---------- ------------------------------ ---------- ----------
15 2 PDB$SEED READ ONLY NO
16 3 ORCLPDB1 READ WRITE NO
如果使用PLSQL Developer也是可以连接的,如下:


怎么样,是不是很爽,是不是非常方便呢,文末记得点赞哈。
本文结束。

• 微信公众号:DB宝,作者:小麦苗
• 作者博客地址:http://blog.itpub.net/26736162/
• 作者微信:db_bao• 作者QQ:646634621,QQ群:230161599、618766405
• 提供Oracle OCP、OCM、高可用(rac+dg+ogg)和MySQL DBA培训
• 版权所有,欢迎分享本文,转载请保留出处• 若有侵权请联系小麦苗删除

★DB宝分享的IT资料:https://mp.weixin.qq.com/s/Iwsy-zkzwgs8nYkcMz29ag★DB宝笔试面试详解:https://mp.weixin.qq.com/s/Vm5PqNcDcITkOr9cQg6T7w

长按下图识别二维码或微信扫描下图二维码来关注小麦苗的微信公众号:DB宝,学习最实用的数据库技术。



文章转载自DB宝,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




