docker安装oracle

拉取镜像:
docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

下载完成后 查看镜像:
docker images

创建容器:
docker run -d -p 1521:1521 --name oracle11g registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

默认启动容器方式(2)
docker run -d -it -p 1521:1521 --name oracle11g --restart=always registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

持久化启动方式如下(3):

1
2
3
4
5
6
7
docker run -d -it -p 1521:1521 --name oracle --restart=always --mount source=oracle_vol,target=/home/oracle/app/oracle/oradata registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

一般用默认启动方式就可以了,若是需要将数据保存到本地的采用持久化方式。

--mount表示要将Host上的路径挂载到容器中。

source=oracle_vol为Host的持久化卷,若未提前创建会自动创建,可通过docker volume instpect 【容器名】查看volume的具体位置,target为容器中的路径
1
2
3
4
5
6
7
8
9
10
docker错误
docker: Error response from daemon: Conflict. The container name "/oracle11g" is already in use by container "7edb8b99791ff4b298a6fa78a7c57be7cd646ab776883b5e07f670ed3506d7bf". You have to remove (or rename) that container to be able to reuse that name

docker stop oracle11g

这里说一下,命令后面的地址一定要是你下载的镜像地址也就是你拉取镜像名字,否则会出现名字已存在等问题!
如果空间不足可以清理数据:
删除所有dangling数据卷(即无用的Volume):

docker volume rm $(docker volume ls -qf dangling=true)
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
启动容器

docker start oracle11g

进入镜像进行配置

进入oracle的命令环境中。

docker exec -it oracle11g bash

切换到oracle数据库的root 用户下
su root
密码:helowin

编辑profile文件配置ORACLE环境变量

vi /etc/profile
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
export ORACLE_SID=lihao
export PATH=$ORACLE_HOME/bin:$PATH
使配置生效
source /etc/profile
创建软连接
ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
切换到oracle 用户
这里还要说一下,一定要写中间的内条 - 必须要,否则软连接无效
su - oracle
sqlplus /nolog
conn /as sysdba
修改sys、system用户密码:
alter user system identified by li1718;
alter user sys identified by li1718;
alter profile default limit PASSWORD_LIFE_TIME UNLIMITED;
创建用户(可选,根据需要)
用一个具有dba权限的用户登录(sysdba),然后输入以下语句
create user 用户名 identified by 密码;
create user lihao identified by li1718;
grant connect,resource,dba to test;
过程中出现的报错需要输入以下内容:
输入:alter database mount;
输入 :alter database open;

cd $ORACLE_HOME

find /home/oracle/app/oracle/product/11.2.0 -name listener.ora
cd /home/oracle/app/oracle/product/11.2.0/dbhome_2/network/admin
vi listener.ora

设置服务器主机名
  (ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-0PNL4C3)(PORT = 1521))

cd /home/oracle/app/oracle/product/11.2.0/dbhome_2/bin
lsnrctl stop
lsnrctl start

查看oracle版本
https://hub.docker.com/_/oraclelinux
下载docker pull doctorkirk/oracle-19c
docker run -d –name -p :1521 -e ORACLE_SID= -e ORACLE_PDB= -e ORACLE_PWD= :

docker run -d -it -p 1521:1521 –restart=always –name oracle19C –mount source=oracle_vol,target=/home/oracle/app/oracle/oradata doctorkirk/oracle-19c:latest

查看oracle-12c启动日志

docker logs -f oracle19C

docker exec -it oracle19C /bin/bash

在容器中打开 SQLPlus:在容器的命令行界面上,使用以下命令打开 SQLPlus:

sqlplus sys/li1718@lihao as sysdba

docker启动镜像doctorkirk/oracle-19c后连接数据库实例未启动
可能是未找到启动init.ora文件,STARTUP失败

1
2
3
4
sqlplus / as sysdba
SQL> STARTUP
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/opt/oracle/product/19c/dbhome_1/dbs/initlihao.ora'

找到init.ora文件复制到该文件

1
2
find / -name *.ora
cp /opt/oracle/admin/LIHAO/pfile/init.ora /opt/oracle/product/19c/dbhome_1/dbs/initlihao.ora