通过docker安装oracle数据库,并使用navicat远程测试连接的详细教程

一、前言

oracle数据库是甲骨文公司旗下的一款关系型数据库产品,提供完整的数据管理功能,相较于mysql、redis等轻量级数据库,oracle数据库显得有点笨重,但因其数据安全性强、稳定性强等优点,仍被很多企业公司所使用。这里是通过docker容器技术来安装oracle,并使用navicat测试连接的详细教程。

二、通过docker安装oracle

oracle体积很大,大约需要4G左右内存,如果不确定服务器所剩内存空间多大,可以通过下面命令查看内存使用情况:free -m,内存的单位为M
在这里插入图片描述

2.1 拉取镜像

有两种途径,一个是从docker hub社区中获取,另一个是下载国内阿里云的,下面进行分别介绍:

  1. docker search oracle 查看有哪些可用的oracle镜像,例如oracleinanutshell/oracle-xe-11g等,然后docker pull 镜像名拉取镜像,但有些镜像下载后还需要进行额外下载安装文件,过程挺麻烦,这里不作叙述。
    在这里插入图片描述
  2. docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g拉取国内镜像,该镜像大小为2.99G,已经集成了oracle环境,拉取完可以直接用,推荐使用这款oracle镜像
  3. docker images查看镜像是否成功被拉取
    在这里插入图片描述

2.2 创建和运行容器

拉取完镜像,下一步就是在利用镜像创建一个容器,从而使得oracle跑起来,使用如下命令:
docker run --name 容器名 -d -p 8094:1521 registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
这里说明一下几个参数:

1. --name  容器名
2. -d 允许后天运行
3. -p  端口映射,服务器开放的端口:oracle开放的端口,即通过访问服务器ip:端口就访问oracle数据库(oracle默认1521)

如果返回一个容器id则创建成功,然后可以查看是否容器成功启动docker ps
在这里插入图片描述
如果PORT没有出现端口映射,则说明容器没有成功启动,则需要检查镜像是否完整,也可以通过docker logs 容器名来查找运行日志排除错误。
至此,docker安装oracle完成,下一步则需要进行配置oracle

2.2 配置oracle数据库

尊重版权,本节内容参考了一个博客用户的笔记,并在此基础上完善。

  1. 首先需要进入到oracle容器中,使用命令docker exec -it 容器名/容器id bash
    在这里插入图片描述
  2. 修改环境变量,切换到root:su root,密码是helowin,然后编辑文件vi /etc/profile,在文件尾部添加如下几行内容:
# 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

在这里插入图片描述
要记住export ORACLE_SID=helowin,helowin是naivcat登录的重要选项,最后使用指令source /etc/profile使环境变量立即生效
3. 创建软连接,使用命令ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
4. 创建新的表空间,在/home/oracle下创建tablespace文件夹mkdir /home/oracle/tablespace,然后登录启用命令sqlplus /nolog,即可输入sql命令,连接数据库命令conn /as sysdba,返回“Connected”,接下来创建表空间、创建数据库用户和授权用户

创建表空间TEST

CREATE TABLESPACE TEST
         LOGGING
         DATAFILE '/home/oracle/tablespace/TEST.DBF'
         SIZE 32M
         AUTOEXTEND ON
         NEXT 32M MAXSIZE UNLIMITED
         EXTENT MANAGEMENT LOCAL;

创建用户tester,密码是123456

CREATE USER tester IDENTIFIED BY 123456
         ACCOUNT UNLOCK
         DEFAULT TABLESPACE TEST
         TEMPORARY TABLESPACE TEST_TEMP;

赋予用户权限

GRANT CONNECT,RESOURCE TO tester;
GRANT DBA TO tester;(可选,DBA为数据库管理员权限)

设置完后,使用exit命令返回我们的oracle,接着测试刚才创建的用户是否正常使用,使用命令sqlplus tester/123456 用户/密码,如果能跳转到SQL,则成功创建了用户
在这里插入图片描述

2.3 配置oracle网络,实现远程访问连接

修改oracle配置,主要修改listener.ora和tnsnames.ora两个文件,首先我们需要进到这两个文件目录cd /home/oracle/app/oracle/product/11.2.0/dbhome_2/network/admin,如果这个目录不对,我们可以通过这样查找find / | grep /network/admin,这样会返回所有匹配的目录路径,然后再选出我们的文件目录

  1. 使用vi listener.ora命令修改listener.ora,内容如下:
# 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

在这里插入图片描述

  1. 使用vi tnsnames.ora命令修改tnsnames.ora,内容如下:
# 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)  
    )
  )

在这里插入图片描述

这里需要注意的是,HOST改为localhost,PORT改为1521,SERVICE_NAME设置为helowin,这个与前面2.2 节配置oracle数据库设置的export ORACLE_SID=helowin 相同。
当然也可以在oracle用户下通过命令lsnrctl status来查看服务是否被侦听,如果报错:lsnrctl command not found,则需要先su 密码是helowin后,再切换到su - oracle 即可,

1. lsnrctl status  查看网络状态
2. lsnrctl reload 重启网络
3. lsnrctl start  开启网络
4. lsnrctl stop  停止网络

在这里插入图片描述
这里的helowin和helowinXDB就是启动中的服务名,需要放在tnsnames.ora中SERVICE_NAME ,这里为保持一致,选择helowin

一切配置好之后,执行lsnrctl reload 重启网络

2.4 navicat测试连接

需要注意几点:

  1. 主机ip地址是个人服务器的ip地址,端口是服务器的端口号,该端口号自动映射到oracle数据库的1521端口(docker已经设好)
  2. 服务名是helowin而不是默认的ORAL
  3. 用户名和密码就是在oracle新建数据库的账号密码,这里是tester:123456
    在这里插入图片描述

三、总结

通过docker安装oracle数据库,并使用navicat远程测试连接整个教程至此结束,花费了一天的时间从入门到完成任务,过程很曲折,百度很频繁,自身对问题的理解和耐心还是存在不足之处,以后面对类似问题会采取更好的逻辑思维和处理方法,共勉!

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值