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后,下载Plsql和instantclient。一定要注意下载的版本必须和系统的版本一致。
修改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
- 配置系统环境变量,变量名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)
)
)