使用docker安装oracle11g数据库,并通过navicat远程连接
简介
oracle数据库是甲骨文公司旗下的一款关系型数据库产品,提供完整的数据管理功能,相较于mysql、redis等轻量级数据库,oracle数据库显得有点笨重,但因其数据安全性强、稳定性强等优点,仍被很多企业公司所使用。这里是通过docker容器技术来安装oracle,并使用navicat测试连接的详细教程。
1、拉取 docker 镜像:
2、查看 docker 镜像:
命令:docker images
然后运行镜像:docker run -d -p 1521:1521 --name oracle registry.aliyuncs.com/helowin/oracle_11g
3、查看 docker 镜像:
4、配置oracle:
第一步:进入容器
首先需要进入到oracle容器中,使用命令:docker exec -it oracle bash
第二步:修改环境变量
修改环境变量,切换到root:su root,密码是helowin,然后编辑文件vi /etc/profile
,在文件尾部添加如下几行内容:
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
export ORACLE_SID=helowin
export PATH=$ORACLE_HOME/bin:$PATH
注意:按i进入编辑模式,输入上述命令后,按ESC键退出编辑模式,再输入:wq保存退出
第三步:使修改生效
要记住export ORACLE_SID=helowin,helowin是naivcat登录的重要选项,
加载环境变量
source /home/oracle/.bash_profile
最后使用指令source /etc/profile
使环境变量立即生效
5、配置oracle system用户的账号和密码:
使用sysdba 连接oracle
7、 配置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
重启网络
8、navicat测试连接
需要注意几点:
主机ip地址是个人服务器的ip地址,端口是服务器的端口号,该端口号自动映射到oracle数据库的1521端口(docker已经设好)
服务名是helowin而不是默认的ORAL
用户名和密码就是在oracle新建数据库的账号密码,这里是system:system
9、使用navicat 远程创建表空间和用户
创建表空间
create tablespace ZJBPM
datafile '/home/oracle/app/oracle/oradata/helowin/ZJBPM.dbf'
size 400M autoextend on next 50M;
创建用户
create user zjbpm identified by zjbpm default tablespace ZJBPM;
给用户授权
grant dba to zjbpm;
10、使用navicat再次连接docker的oracle数据库
1,启动镜像
docker run -d -p 1521:1521 --name oracle registry.aliyuncs.com/helowin/oracle_11g
2. 启动容器
docker start oracle
运行进入容器docker exec -it oracle bash
加载环境变量
source /home/oracle/.bash_profile
使用sysdba 连接oracle