linux系统通过docker安装oracle远程访问(附带相关问题解决方案)


一、虚拟机网络配置

---------虚拟机配置的方案 :
1.桥接模式(虚拟机和主机共用同一个网段,适用于固定网络的开发环境,否则若网络改动导致主机网段改变,则需要重新配置虚拟机网段)
虚拟机桥接模式配置方案
2.NAT模式(建议使用此方案,主机当做上层路由给虚拟机网络分发,无论主机网络IP怎么换,都不影响虚拟机网络访问)
1)虚拟机网络设置开启NAT模式。
2)虚拟机网络编辑器配置NAT子网IP,NAT设置子网网关,DHCP设置子网IP的起止区间。
3)虚拟机cd /etc/sysconfig/network-scripts/ 然后vi ifcfg-xxx文件。
4)编辑上一步的文件,设置BOOTPROTO=none,新增参数IPADDR=自定义(区间在DHCP设置的子网区间内),GATEWAY=自定义(取值步骤2中NAT设置的值)
5)进入虚拟机systemctl restart network.service重启网络

二、安装docker

1.下载docker并安装

curl -fsSL https://get.docker.com | bash -s docker --mirror aliyun
或者
curl -sSL https://get.daocloud.io/docker | sh

2.设置docker仓库,安装存储驱动程序需要的 device-mapper-persistent-data 和 lvm2软件包。(直接CV)

yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2
yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3.安装 Docker Engine-Community

yum install docker-ce docker-ce-cli containerd.io

4.配置国内镜像加速

镜像加速配置方案


三、拉取oracle镜像并配置

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

1.下载ing
下载中

下载镜像的坑:

  1. 拉取始终超时–vi /etc/resolv.conf 查看DNS域名解析是否正确,通用8.8.8.8,公司内网DNS(cmd:ipconfig /all)
    在这里插入图片描述
  2. /home文件夹容量一定要足够大,不然就会像我一样只给了1G拉完oracle镜像就报错容量不够结果扩容失败只能重装虚拟机

docker images 查看镜像

2.制作运行容器

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

docker ps 查看容器
到这里oracle已经安装成功了,下面配置oracle相关参数

3.进入容器

docker exec -it -u root 《自己的容器ID或者名称》 bash

修改配置文件 vi /etc/profile
修改需要root权限,如果不是root进入容器则 su root 密码oracle切换为root用户
内部新增如下配置信息:

# oracle home目录
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2   
# oracle 服务名或者 SID名,要记住这个名字helowin,它是naivcat登录的重要选项
export ORACLE_SID=helowin     
# oracle环境变量
export PATH=$ORACLE_HOME/bin:$PATH

在这里插入图片描述
刷新环境变量

source /etc/profile

4.测试登入oracle
切换oracle用户su - oracle注意“-”的前后都一定要有空格

sqlplus / as sysdba #进入oracle

5.修改oracle默认超级管理员用户的登录密码并设置永不过期

SQL> alter user system identified by oracle; #此处的oracle就是设置的登录密码
User altered.
SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
Profile altered.

到这一步,linux上的docker里的oracle就安装完毕了,如果只是通过linux内访问现在已经可以登入了,下面是重点配置使oracle支持外部连接访问


四、设置oracle支持外部连接访问(重难点)

首先当前的oracle运行情况是linux包裹docker容器包裹oracle数据库
1.一共需要配置两个文件,一个是监听器listener.ora一个是tnsnames.ora

find / | grep /network/admin #查找属于自己的oracle监听配置文件目录
vi listener.ora

2.修改listener.ora的监听地址HOST参数 注意那个监听地址:localhost只是一个代称,每个人自己具体的配置地址需要通过输入命令 hostname来获取并替换
在这里插入图片描述
具体参考:ORA-12541:TNS:无监听程序异常

# listener.ora Network Configuration File: /home/oracle/app/oracle/product/11.2.0/dbhome_2/network/admin/listener.ora
# Generated by Oracle configuration tools.

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))  # localhost:1521
    )
  )
ADR_BASE_LISTENER = /home/oracle/app/oracle

3.修改tnsnames.ora监听地址HOST参数同listener相同

# tnsnames.ora Network Configuration File: /home/oracle/app/oracle/product/11.2.0/dbhome_2/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

LISTENER_HELOWIN =
  (ADDRESS = (PROTOCOL = TCP)(HOST = loaclhost)(PORT = 1521))

HELOWIN =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = helowin)  
    )
  )

4.(重点)每次更改oracle的监听配置文件后都需要重新刷新配置90%的连接异常都是来源于监听配置问题

exit#退出容器
systemctl restart docker.service#重启服务
docker start 《自己的容器id/名》#重启容器
docker exec -it -u root 《自己的容器id/名称》 bash#重新进入容器
su - oracle#切换oracle账户
sqlplus / as sysdba #登入数据库
SQL>alter system register;#强制重新注册实例
SQL>quit#退出数据库
lsnrctl reload#在容器内重启监听
lsnrctl status#查看监听服务状态

4.navicat配置
主机ip填写linux的ip地址
服务名填写/etc/profile 里自己配置的SID名称helowin
密码填写之前自己改的oracle
在这里插入图片描述
问题1:navicat连接闪退
工具----选项----环境:不要用navicat自带的oci.dll ,自己去官网下载一个较高版本的instantclient要与docker里的oracle兼容
在这里插入图片描述
问题2:The listener supports no services
修改listener.ora添加如下:
oraclehome填自己之前在/etc/porfile 里配的

SID_LIST_LISTENER=
  (SID_LIST=
      (SID_DESC=
                      #BEQUEATH CONFIG
         (GLOBAL_DBNAME=helowin)
         (SID_NAME=helowin)
         (ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2)
                      #PRESPAWN CONFIG
        (PRESPAWN_MAX=20)
        (PRESPAWN_LIST=
          (PRESPAWN_DESC=(PROTOCOL=tcp)(POOL_SIZE=2)(TIMEOUT=1))
        )
      )
  )

问题3:Instance “helowin”, status UNKNOWN
查看/etc/hosts文件里是否产生了相同ip冲突

问题4:Connect failed because target host or object does not exist
检查监听配置的HOST是否正确,我最开始host填写的虚拟机桥接分配的ip地址但是监听服务一直报未知地址,后来通过hostname命令得到hostname并填入后就解决了这个问题,当然navicat连接主机地址还是填虚拟机桥接分配的ip地址 ifconfig也可以查询出来自己的虚拟机ip地址

问题5:TNS-12547: TNS:lost contact
解决方案

总结

最终监听配置启动成功的界面(我这还有几个未知状态,不过没影响连接)
在这里插入图片描述
我一天时间下载安装,两天时间全在踩坑,要么忘了刷新以为配置错了无效,要么一直找不到监听器应该填的正确的HOST

  • 11
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
要在Linux安装Oracle Database 21c,可以使用Docker容器化技术进行安装。下面是一些基本步骤: 1. 首先,确保你已经在Linux安装Docker。如果没有安装,请根据你的Linux发行版文档进行安装。 2. 在终端中运行以下命令,从Docker Hub下载Oracle Database 21c的镜像: ``` docker pull store/oracle/database-enterprise:21.3.0.0 ``` 3. 下载Oracle Database 21c的安装文件。你需要前往Oracle官方网站(https://www.oracle.com/database/technologies/oracle21c-linux-downloads.html)并获取适用于Linux安装文件。 4. 将下载的安装文件复制到一个目录中,比如 `/opt/oracle21c` 5. 使用以下命令启动Docker容器并安装Oracle Database 21c: ``` docker run -d -it --name oracle21c \ -p 1521:1521 -p 5500:5500 \ -e ORACLE_SID=ORCLCDB \ -e ORACLE_PDB=ORCLPDB1 \ -e ORACLE_PWD=your_password \ -v /opt/oracle21c:/install \ store/oracle/database-enterprise:21.3.0.0 ``` 这个命令会创建一个名为 `oracle21c` 的Docker容器,并将它与主机的1521端口和5500端口进行映射。你需要将 `your_password` 替换为你自己的密码。 6. 运行以下命令进入容器的Bash终端: ``` docker exec -it oracle21c bash ``` 7. 在容器中,将安装文件解压缩到 `/install` 目录: ``` cd /install unzip oracle-database-21c-*.zip ``` 8. 运行安装脚本: ``` ./runInstaller ``` 根据提示进行安装,选择相应的选项和配置。 9. 安装完成后,可以使用Oracle Database 21c了。你可以使用SQL*Plus等工具连接到数据库。 这些是基本的安装步骤,你可以根据实际需要进行调整。请注意,在安装Oracle Database 21c之前,确保你的Linux系统满足Oracle的硬件和软件要求。此外,根据你的需求,你可能需要进行其他配置和调整。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值