在wsl2的ubuntu中用docker安装oracle

直接装桌面端的Oracle要安很多组件,而且很占内存,如果只是偶尔用一下基础功能,并且不涉及使用数据泵导入导出数据时候,可以使用基于wsl2的docker去安装Oracle。

换国内镜像源

  1. 将系统源文件复制一份备用

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
  1. 用 vi 编辑器打开源文件

sudo vi /etc/apt/sources.list
# 然后直接输入49dd,就可以清除所有内容了,然后输入i就可以进行编辑了
  1. 粘贴以下内容

deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
  1. 更新系统

sudo apt-get -y update && sudo apt-get -y upgrade

安装docker

#添加GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
 
#设置存储库位置
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
 
#执行安装命令
apt-get install -y docker-ce

拉取镜像

docker pull oracleinanutshell/oracle-xe-11g

拷贝数据

# 先运行容器
docker run -d -p 1521:1521 -e ORACLE_ALLOW_REMOTE=true -p 8081:8080 --name oracle oracleinanutshell/oracle-xe-11g
# 在宿主机中创建挂载文件夹
mkdir -p /usr/local/docker/volumes/
# 将容器中的数据拷贝到宿主机
docker cp oracle:/u01/app/oracle/  /usr/local/docker/volumes/

重新运行容器

# 删除刚才运行的oracle容器,运行以下命令
docker run -d -p 1521:1521 -e ORACLE_ALLOW_REMOTE=true -p 8081:8080 -v /usr/local/docker/volumes/oracle/:/u01/app/oracle/ --restart=always --privileged=true --name oracle oracleinanutshell/oracle-xe-11g

设置静态IP

# 因为使用wsl,没有办法设置静态ip,所以采用每次开机都设一个固定ip的方法
# 编写以下脚本,并在组策略添加登录启动脚本
@echo off
setlocal enabledelayedexpansion

::不管三七二十一先停掉可能在跑的wsl实例
wsl --shutdown ubuntu
::重新拉起来,并且用root的身份,启动ssh服务和docker服务
wsl -u root service ssh start
wsl -u root service docker start | findstr "Starting Docker" > nul
if !errorlevel! equ 0 (
    echo docker start success
    :: set wsl2 ip
    wsl -u root ip addr | findstr "192.168.169.2" > nul
    if !errorlevel! equ 0 (
        echo wsl ip has set
    ) else (
        wsl -u root ip addr add 192.168.169.2/28 broadcast 192.168.169.15 dev eth0 label eth0:1
        echo set wsl ip success: 192.168.169.2
    )

    :: set windows ip
    ipconfig | findstr "192.168.169.1" > nul
    if !errorlevel! equ 0 (
        echo windows ip has set
    ) else (
        netsh interface ip add address "vEthernet (WSL)" 192.168.169.1 255.255.255.240
        echo set windows ip success: 192.168.169.1
    )
)
pause

端口映射

# 在cmd中执行
# netsh interface portproxy add v4tov4 listenport=[win10端口] listenaddress=0.0.0.0 connectport=[虚拟机的端口] connectaddress=[虚拟机的ip]
netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=80 connectaddress=172.29.41.233

使用Navicat连接

服务名:XE

账号:system

密码:oracle

可能遇到的问题

  1. 能ping 通,但ssh连接不上

解决办法:使用 “/usr/sbin/ssh -d” 命令调试,显示 “connect to host 172.25.95.30 port 22: Connection refused”,使用 “service sshd start” 显示 “ssh:unrecognized service”,则可能是没装ssh服务,输入以下命令解决:

# 安装ssh服务器
sudo apt install openssh-server
# 安装ssh客户端
sudo apt install openssh-client
# 配置ssh客户端,去掉PasswordAuthentication yes前面的#号,保存退出
# 配置ssh服务器,把PermitRootLogin prohibit-password改成PermitRootLogin yes,保存退出。
sudo vi /etc/ssh/ssh_config
# 重启ssh服务
sudo /etc/init.d/ssh restart

PS:使用docker安装的Oracle没有SQL Plus、Net Manager等组件,只能使用最基础数据库功能,如果涉及到使用数据泵导入导出数据建议本机安装完整版的Oracle。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值