---------虚拟机配置的方案 :
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重启网络
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.配置国内镜像加速
镜像加速配置方案
docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
下载镜像的坑:
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运行情况是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