文章目录
- 一、前言
- 二、通过docker安装oracle
- 2.1 拉取镜像
- 2.2 创建和运行容器
- 2.2 配置oracle数据库
- 2.3 配置oracle网络,实现远程访问连接
- 2.4 navicat测试连接
- 三、总结
一、前言
oracle数据库是甲骨文公司旗下的一款关系型数据库产品,提供完整的数据管理功能,相较于mysql、redis等轻量级数据库,oracle数据库显得有点笨重,但因其数据安全性强、稳定性强等优点,仍被很多企业公司所使用。这里是通过docker容器技术来安装oracle,并使用navicat测试连接的详细教程。
二、通过docker安装oracle
oracle体积很大,大约需要4G左右内存,如果不确定服务器所剩内存空间多大,可以通过下面命令查看内存使用情况:free -m
,内存的单位为M
2.1 拉取镜像
有两种途径,一个是从docker hub社区中获取,另一个是下载国内阿里云的,下面进行分别介绍:
docker search oracle
查看有哪些可用的oracle镜像,例如oracleinanutshell/oracle-xe-11g等,然后docker pull 镜像名
拉取镜像,但有些镜像下载后还需要进行额外下载安装文件,过程挺麻烦,这里不作叙述。
docker pull registry-hangzhou.aliyuncs/helowin/oracle_11g
拉取国内镜像,该镜像大小为2.99G,已经集成了oracle环境,拉取完可以直接用,推荐使用这款oracle镜像docker images
查看镜像是否成功被拉取
2.2 创建和运行容器
拉取完镜像,下一步就是在利用镜像创建一个容器,从而使得oracle跑起来,使用如下命令:
docker run --name 容器名 -d -p 8094:1521 registry-hangzhou.aliyuncs/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数据库
尊重版权,本节内容参考了一个博客用户的笔记,并在此基础上完善。
- 首先需要进入到oracle容器中,使用命令
docker exec -it 容器名/容器id bash
- 修改环境变量,切换到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
,这样会返回所有匹配的目录路径,然后再选出我们的文件目录
- 使用
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
- 使用
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测试连接
需要注意几点:
- 主机ip地址是个人服务器的ip地址,端口是服务器的端口号,该端口号自动映射到oracle数据库的1521端口(docker已经设好)
- 服务名是helowin而不是默认的ORAL
- 用户名和密码就是在oracle新建数据库的账号密码,这里是tester:123456
三、总结
通过docker安装oracle数据库,并使用navicat远程测试连接整个教程至此结束,花费了一天的时间从入门到完成任务,过程很曲折,百度很频繁,自身对问题的理解和耐心还是存在不足之处,以后面对类似问题会采取更好的逻辑思维和处理方法,共勉!
更多推荐
通过docker安装oracle数据库,并使用navicat远程测试连接的详细教程
发布评论