Docker安装Oracle
Docker 安装 Oracle
通过 Docker 安装 Oracle11g
1. 背景
Oracle
作为全球最强大的关系型数据库,应用在各行各业。但是在 Linux
中安装 Oracle
非常麻烦,为了一次装好,也方便将来直接可以导出镜像在各平台移植使用,所以选择用 Docker
安装,并做详细记录,方便今后参考。
2. 安装
前期准备
Docker 安装
#升级yum
sudo yum update
#卸载旧版本
sudo yum remove docker docker-common docker-selinux docker-engine
#安装依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
#设置源
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 更新yum缓存
yum makecache fast
# 安装Docker
yum -y install docker-ce
# 启动
systemctl start docker
# 查看是否启动成功
docker info
# 开机自启
systemctl enable docker
# Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the d
systemctl restart docker #重启一下就行
# 在下载镜像前,需要设置一下国内源,用来提高下载速度
sudo vim /etc/docker/daemon.json
# 配置
{
"registry-mirrors": ["https://d7grpode.mirror.aliyuncs.com"]
}
# 重启
sudo systemctl restart docker
安装成功界面
2.1. 环境准备
- CentOs 7.0
- Docker 环境
Client: Docker Engine - Community
Version: 20.10.17
API version: 1.41
Go version: go1.17.11
Git commit: 100c701
Built: Mon Jun 6 23:05:12 2022
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.17
API version: 1.41 (minimum version 1.12)
Go version: go1.17.11
Git commit: a89b842
Built: Mon Jun 6 23:03:33 2022
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.6
GitCommit: 10c12954828e7c7c9b6e0ea9b0c02b01407d3ae1
runc:
Version: 1.1.2
GitCommit: v1.1.2-0-ga916309
docker-init:
Version: 0.19.0
GitCommit: de40ad0
2.2. 搜索镜像
docker search oracle_11g
Oracle
镜像文件比较大,请检查自己磁盘空间。此处用一个博主上传的镜像,来演示。
2.3. 拉取镜像
docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
2.4. 磁盘挂载
在 CentOs
宿主机构建一个目录用来存储 Oracle
的数据。
mkdir -p /data/oracle10g
3. 容器操作
3.1. 创建容器
docker run -itd -p 1521:1521 --name oracle --restart=always --mount source=oracle_vol,target=/home/oracle/app/oracle/oradata registry.aliyuncs.com/helowin/oracle_11g
备注:此处改为 Shell
脚本,可以重复使用。
docker rm -f oracle10g;
docker run -it -d -p 1521:1521 -v /data/oracle10g:/data/oracle --name oracle10g klwang/oracle10g
3.2. 进入容器
docker exec -it oracle bash
3.3. 环境设置
此时 sqlplus
是不可以用的,需要配置一下环境变量。
切换回到容器中的 root
用户,密码为 helowin
。
3.3.1. 编辑环境变量
优化冒泡排序和选择排序 zip
0 星超过 10%的资源 595KB
vi /etc/profile
添加如下变量。
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
export ORACLE_SID=helowin
export PATH=$ORACLEHOME/bin:PATH
保存后,将环境变量生效。
source /etc/profile
3.3.2. 添加软连接
ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
3.3.3. 切换到 oracle 用户
su - oracle
3.4. 登录 oracle
sqlplus /nolog --登录
conn /as sysdba
3.5. Oracle 操作
3.5.1. 修改 sys、system 用户密码
alter
user system identified by system ;--修改system用户账号密码;
alter
user sys identified by sys ;--修改sys用户账号密码;
冒泡排序和选择法排序的源代码
3.5.2. 添加和授权用户
create
user test identified by test; -- 创建内部管理员账号密码;
grant connect,resource,dba to test; --将dba权限授权给内部管理员账号和密码;
ALTER
PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; --设置密码永不过期:
alter
system set processes=1000 scope=spfile; --修改数据库最大连接数据;
3.5.3. 查询
show
parameter password
3.5.4. 检查用户
select *
from v$pwfile_users;
3.6. 重启服务
conn
/as sysdba;--保存数据库
shutdown
immediate; --关闭数据库
startup; --启动数据库
show
user;
4. 远程登录
- HOST: $HOST
- POST: 1521
- SID: helowin
- User: test
- PassWord:test
通过 Docker 安装 Oracle12C
version: "3.6"
# https://hub.docker.com/r/wangpengcheng
services:
oracle12:
container_name: oracle12
image: wangpengcheng/oracle12c-enterprise:12.2.0.1-sys
environment:
- ORACLE_ALLOW_REMOTE=true
- ORACLE_PDB=ORCLPDB1
- ORACLE_SID=ORCLCDB
- ORACLE_PASSWORD=123456
- ORACLE_PWD=123456
- ORACLE_MEM=1000
- ORACLE_CHARACTERSET=AL32UTF8
ports:
- 1523:1521
- 5503:5500
volumes:
- /root/oracle/oradata:/opt/oracle/oradata
restart: unless-stopped
privileged: true
通过 Docker 安装 Oracle18c
1、拉取 oracle18c 镜像
docker pull registry.cn-hangzhou.aliyuncs.com/zhengqing/oracle18c
2、运行
docker run -d --name oracle18c -p 1521:1521 -v /IT_zhengqing/soft/db/oracle18c/data:/opt/oracle registry.cn-hangzhou.aliyuncs.com/zhengqing/oracle18c
运行之后查看容器日志
通过 Docker 安装 Oracle19c
第一种
version: "3.6"
services:
oracle19:
container_name: oracle19
image: dsinnovators/oracle-ee:19.3.0.2
#image: banglamon/oracle193db:19.3.0-ee
environment:
- ORACLE_ALLOW_REMOTE=true
- ORACLE_PDB=ORCLPDB
- ORACLE_SID=ORCLCDB
- ORACLE_PASSWORD=12345678
- ORACLE_PWD=12345678
- ORACLE_EDITION=enterprise
- ORACLE_MEM=1024
- INIT_SGA_SIZE=1024
- INIT_PGA_SIZE=1024
- ORACLE_CHARACTERSET=AL32UTF8
- TZ=Asia/Shanghai
ports:
- 1523:1521
- 5503:5500
volumes:
- /root/oracle/oradata:/opt/oracle/oradata
restart: unless-stopped
privileged: true
第二种
# 下载镜像
docker pull registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle:19c
第二步:创建挂载文件
# 创建文件
mkdir -p /root/oracle19/oradata
# 授权,不授权会导致后面安装失败
chmod 777 /root/oracle19/oradata
第三步:安装 Oracle
1、安装 oracle,并把配置挂载到本地文件
docker run -d \
-p 1524:1521 -p 5502:5500 \
-e ORACLE_SID=ORCL \
-e ORACLE_PDB=ORCLPDB \
# 此处是oracle密码
-e ORACLE_PWD=123456 \
-e ORACLE_EDITION=standard \
-e ORACLE_CHARACTERSET=AL32UTF8 \
-v /root/oracle19/oradata:/opt/oracle/oradata \
--name orcl19 \
registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle:19c
或者使用docker-compose.yml
cd /root/oracle19
vim docker-compose.yml
文件内容为:
version: "3.6"
services:
oracle19:
container_name: oracle19
image: registry.cn-hangzhou.aliyuncs.com/it-boy/oracle19c:latest
#image: registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle:19c
environment:
- ORACLE_ALLOW_REMOTE=true
- ORACLE_PDB=ORCLPDB
- ORACLE_SID=ORCL
- ORACLE_PWD=123456
- ORACLE_EDITION=standard
- ORACLE_MEM=1000
- ORACLE_CHARACTERSET=AL32UTF8
ports:
- 1523:1521
- 5503:5500
volumes:
- /root/oracle19/oradata:/opt/oracle/oradata
restart: unless-stopped
启动
docker-compose up
或者
docker-compose up -d
查看 oracle 是否安装成功
# 查看启动日志
docker logs -ft orcl19
注意: 如果安装失败 ,执行以下命令 docker stop orcl19c_03 docker rm orcl19c_03
第四步:连接 Oracle
docker exec -it orcl19 /bin/bash
sqlplus / as sysdba
show pdbs;
这样就可以了
还可以通过访问https://localhost:5502/em
username:sys
password:123456
Container Name:ORCLPDB
注意 :是 https,不是 http
关于 Oracle12C 默认用户名 system 密码不正确登录不上解决方案
解决方案:
1.使用 sysdba 账号 登陆后 可以修改其他账号密码
运行 cmd 按如下输入命令
以sys登陆
超级用户
(sysdba
)
sqlplus / as sysdba
2.解除锁定账号
alter user 用户名 account unlock; --------- 解除锁定(必须带“;”号)
以 system 用户名为例,即命令为
alter
user system account unlock;
3.为该账户设置新密码
alter user 用户名 identified by 密码; -------------修改密码(密码加不加双引号均可,必须带“;”号)
以用户名 system 密码 dhee 为例,即命令为
alter
user system identified by dhee;
如果可以登录任意的一个用户可以通过一下方法来知道当前有哪些用户。 查看当前用户。
select distinct owner
from all_objects
如果你在安装的时候没有设置密码的话
oracle 有三个默认的用户名和密码
1.用户名:sys密码:change_on_install
2.用户名:system密码:manager
3.用户名:scott密码:tiger