我的docker随笔29:oracle数据库部署

本文涉及:
oracle 的容器化部署。

下载镜像:

1
docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

镜像列表:

1
2
REPOSITORY                                             TAG                 IMAGE ID            CREATED             SIZE
registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g latest 3fa112fd3642 4 years ago 6.85 GB

启动容器:

1
2
3
4
5
6
7
8
9
10
11
docker run -itd -p 1521:1521 --name oracle registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g


数据持久化:
docker run -itd -p 1521:1521 \
--name=oracle \
-v $PWD/helowin:/home/oracle/app/oracle/oradata/helowin \
-v $PWD/flash_recovery_area:/home/oracle/app/oracle/flash_recovery_area \
registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g bash

--restart=always

状态:

1
2
3
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d3b1cd3efbc7 registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g "/bin/sh -c '/home..." 32 seconds ago Up 6 seconds 0.0.0.0:1521->1521/tcp oracle

默认账号和密码:

1
2
#username: system
#password: helowin

进入容器:

1
docker exec -it oracle bash

连接数据库。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
source /home/oracle/.bash_profile  

sqlplus /nolog
SQL> conn / as sysdba
Connected.


$ sqlplus

SQL*Plus: Release 11.2.0.1.0 Production on Mon Oct 26 09:17:43 2020

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

Enter user-name: system # 账号
Enter password: # 密码为helowin

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

修改账号密码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
SQL> alter user system identified by system;    ## 账号和密码为system

User altered.

SQL> alter user sys identified by sys; ## 账号和密码为sys

User altered.

SQL>
SQL> alter profile default limit password_life_time unlimited;

Profile altered.

SQL> exit


$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 30-AUG-2020 00:54:57

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date 27-AUG-2020 23:26:21
Uptime 2 days 1 hr. 28 min. 36 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /home/oracle/app/oracle/product/11.2.0/dbhome_2/network/admin/listener.ora
Listener Log File /home/oracle/app/oracle/diag/tnslsnr/d3b1cd3efbc7/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=d3b1cd3efbc7)(PORT=1521)))
Services Summary...
Service "helowin" has 1 instance(s).
Instance "helowin", status READY, has 1 handler(s) for this service...
Service "helowinXDB" has 1 instance(s).
Instance "helowin", status READY, has 1 handler(s) for this service...
The command completed successfully

问题

ORA-12528: TNS: 监听程序: 所有适用例程都无法建立新连接。
查看状态为 BLOCKED:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 26-OCT-2020 11:05:00

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date 26-OCT-2020 10:11:00
Uptime 0 days 0 hr. 53 min. 59 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /home/oracle/app/oracle/product/11.2.0/dbhome_2/network/admin/listener.ora
Listener Log File /home/oracle/app/oracle/diag/tnslsnr/5041887d0189/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=5041887d0189)(PORT=1521)))
Services Summary...
Service "helowin" has 1 instance(s).
Instance "helowin", status BLOCKED, has 1 handler(s) for this service...
The command completed successfully

小结

尝试挂载数据库目录,但无法访问,原因未明。所有内容在容器中,可以正常使用。

默认启动命令:

1
2
3
4
5
6
7
8
"Volumes": {
"/home/oracle/app/oracle/oradata": {}
},
"WorkingDir": "",
"Entrypoint": [
"/bin/sh",
"-c",
"/home/oracle/app/oracle/product/11.2.0/dbhome_2/bin/dbstart /home/oracle/app/oracle/product/11.2.0/dbhome_2 && tail -f /home/oracle/app/oracle/product/11.2.0/dbhome_2/startup.log"

参考

https://www.cnblogs.com/qiuxiangmuyu/p/7895154.html
https://www.cnblogs.com/YsirSun/p/13543313.html
https://blog.csdn.net/chenjin_csdn/article/details/106470108
https://github.com/oracle/docker-images/tree/master/OracleDatabase/SingleInstance#running-oracle-database-11gr2-express-edition-in-a-docker-container
https://www.cnblogs.com/yxb-blog/p/12654229.html
https://www.imooc.com/article/18498?block_id=tuijian_wz
https://www.cnblogs.com/lovling/p/12547007.html
https://blog.csdn.net/qq_27050005/article/details/81479171

2020.8.28 李迟