windows环境下使用docker安装oracle11g

昨天使用docker安装oracle11g的时候遇到了不少坑,所以打算记录一下安装过程。

1.拉取oracle11g镜像

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

下载完成后查看镜像
在这里插入图片描述

2.创建oracle临时容器

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

这里会报一个启动失败,docker的状态是Exited 139。解决办法是在%userprofile%文件夹下创建一个.wslconfig文件。
在这里插入图片描述
文件内容

[wsl2]
kernelCommandLine = vsyscall=emulate

创建好之后在命令窗口执行命令重启一下wsl。

wsl --shutdown
wsl -l

3.复制关键文件到宿主机

docker cp oracle11g:/home/oracle/app/oracle/oradata "E:\program files\oracle"

复制完成后,删除临时容器oracle11g。

4.重新创建oracle容器并挂载本地卷

docker run -d --name oracle11g -p 1521:1521 --privileged=true  -v "E:/program files/oracle":/home/oracle/app/oracle/oradata registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g:latest

–name:容器名称
-p:端口号 1531:1521 把容器内的端口1521 映射到本地机器1531上
–privileged=true 设置权限
-v:用于挂在本地卷(卷有多种,此处不详述),本地目录:容器内目录。

5.配置数据库

首先进入容器中。

docker exec -it oracle11g bash

切换到root用户,密码helowin。

su root

然后编辑/home/oracle/.bashrc文件配置oracle的环境变量。

vi /home/oracle/.bashrc

在文件的结尾加上这三行。

export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
export ORACLE_SID=helowin
export PATH=$ORACLE_HOME/bin:$PATH

使环境变量生效。

source /home/oracle/.bashrc

6.连接数据库

创建软连接。

ln -s $ORACLE_HOME/bin/sqlplus /usr/bin

切换回oracle用户。

su oracle

连接数据库并修改用户的密码。

sqlplus /nolog
conn /as sysdba
alter user system identified by system;
alter user sys identified by sys;
alter user scott account unlock;
alter user scott identified by tiger;

在这一步的时候我遇到了一个问题,执行修改密码命令的时候数据库并没有启动。但是使用alert database mount;报ORA-00214: control file ‘/home/oracle/app/oracle/oradata/helowin/control01.ctl’
version 1416 inconsistent with file
‘/home/oracle/app/oracle/flash_recovery_area/helowin/control02.ctl’ version 841

解决方法是将控制文件复制到报错中指定的目录下。

cp /home/oracle/app/oracle/flash_recovery_area/helowin/control02.ctl /home/oracle/app/oracle/flash_recovery_area/helowin/control02_bak.ctl
cp /home/oracle/app/oracle/oradata/helowin/control01.ctl /home/oracle/app/oracle/flash_recovery_area/helowin/control02.ctl

然后就可以启动数据库修改密码了。

alter database mount;
alter database open;

此时数据库就可以通过宿主机的navicat进行访问了。

7.导入数据

将dmp文件复制到oracle的容器内。

docker cp "E:\app\oracleData\daochu.dmp" oracle11g:/home/oracle/

然后就可以在oracle容器内正常进行数据库导入操作了。
在这里插入图片描述

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值