Docker安装oracle11g和通过plsql远程连接

通过docker拉取oracle11g的镜像文件,然后启动镜像和进入镜像进行配置。

# 拉取镜像
docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
# 启动镜像
docker run -d -p 1521:1521 --name oracle11g registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
# 进入镜像配置
docker exec -it oracle11g bash

进入镜像进行配置环境变量

#先切换到root用户下
su - root
密码:helowin
#注意这里还是在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
# 创建软连接
ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
# 切换到oracle用户
su - oracle

登录sqlplus并修改sys、system用户密码

sqlplus /nolog
conn /as sysdba
# 创建账户
alter user system identified by system;

alter user sys identified by sys;

create user test identified by test;

grant connect,resource,dba to test;

#刷新
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

至此oracle11g已经在docker上部署成功,如果是在阿里云上部署,需要对1521端口设置在安全组中。

Plsql配置

安装完oracle11g后,下载Plsqlinstantclient。一定要注意下载的版本必须和系统的版本一致。

修改oracle11g安装目录下的配置文件,通常是在NETWORK/ADMIN,涉及的文件主要是listener.ora 和tnsnames.ora,注意ip地址要写正确,目前遇到的错误如下:

# TNS:listener was not given the SERVICE_NAME in CONNECT_DATA

1.首先要查看一个当前用户下的ORACLE_HOME PATH TNS_ADMIN等配置是否正确。

2.不正确就修改当前用户下的.bash_profile,这个需要SOURCE(当然针对b shell),然后source 一下。

3.其它SESEEION下需要退出当前用户,再登陆到LINUX即可生效。
# 造成OracleOraDb10g_home1TNSListener服务无法启动可能有三种情况:

1.listener.ora文件配置有错误导致无法启动

2.相关环境变量没设置好

3.删除客户端时导致服务端相关注册表信息误删导致无法启动
# :TNS connect timeout occurred

查看宿主机的ip端口是否被占用,是否能够ping通,window下可以输入以下命令准许ping通:

netsh firewall set icmpsetting 8
  1. 配置系统环境变量,变量名TNS_ADMIN,地址是instantclient的NETWORK/ADMIN地址。
# tnsnames.ora

ORCL =
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.211.135)(PORT =1521))
   )
   (CONNECT_DATA =
     (SERVICE_NAME = helowinXDB)
   )
)