CentOS7.x docker安装Oracle11g并使用navicat连接

news2024/11/24 3:53:29

1.拉取Oracle11g镜像 

#因为国内访问docker官方镜像源速度很慢,所以这里使用阿里的
docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

#名字太长,重新打标签
docker tag registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g:latest helowin/oracle_11g

2.启动测试容器用例

        2.1 用以获取必要文件,为下面正式启动做文件映射

docker run -d --name test --restart unless-stopped -p 1521:1521 helowin/oracle_11g

         2.2 设置目录及授权信息

#假设你Oracle工作目录在/data/oracle

#1. 创建数据目录
mkdir -p /data/oracle

#2. 进入/data/oracle目录
cd /data/oracle/

#3. 将oracle容器中的helowin复制到/data/oracle/目录下
docker cp test:/home/oracle/app/oracle/oradata/helowin/ .

#4. 删除如上启动的容器名称为test的oracle容器
docker rm -f test

#5. 授权
chown -R 500.500 helowin

3.启动容器

docker run -d --name oracle11g --restart=always \
-v /data/oracle/helowin:/home/oracle/app/oracle/oradata/helowin \
-p 1521:1521 helowin/oracle_11g

5.进入容器,新增Oracle环境变量

#1. 以root用户进入容器
docker exec -it -u root oracle11g bash

#2. 在/etc/profile文件最后追加如下内容
vi /etc/profile
------------------------------
# oracle home目录
export ORACLE_HOME=/home/oracle/app/oracle/prouct/11.2.0/dbhome_2   
# oracle 服务名或者 SID名,要记住这个名字helowin,它是naivcat或者DBeaver登录的重要选项
export ORACLE_SID=helowin     
# oracle环境变量
export PATH=$ORACLE_HOME/bin:$PATH
----------------------------------
#3. 刷新环境变量
source /etc/profile

#4. 创建软连接
ln -s $ORACLE_HOME/bin/sqlplus /usr/bin

6. 切换到oracle用户并修改超管密码

#1. 切换为oracle用户
su - oracle

#2. 使用sqlplus无密码登陆
sqlplus /nolog

#3. 连接到sysdba用户
conn /as sysdba

#4. 修改system用户账号密码;
alter user system identified by system;

#5. 修改sys用户账号密码;
alter user sys identified by system;

#6. 创建内部管理员账号密码;
create user test identified by test;

#7. 为新创建的test授权
grant connect,resource,dba to test;

#8. 修改密码规则策略为密码永不过期;(会出现坑,后面讲解)
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

#9. 修改数据库最大连接数
alter system set processes=1000 scope=spfile;

注意: 如果执行如上某些命令报错: ORA-01109: database not open 需要执行如下指令:

并且依旧需要保持如下操作是oracle用户

#1. 移除原默认配置文件
rm -rf /home/oracle/app/oracle/flash_recovery_area/helowin/control02.ctl

#2. 将同目录下的control01.ctl复制为control02.ctl
cp /home/oracle/app/oracle/oradata/helowin/control01.ctl /home/oracle/app/oracle/flash_recovery_area/helowin/control02.ctl

#3. 以 dba 身份无密码连接 oracle 数据库
sqlplus / as sysdba

#4. 关闭数据库实例(这里会报错,不用管)
shutdown immediate

#5. 启动数据库实例
startup 

 7. 启动mount数据库并设置字符集

#1. 使用sqlplus 无密码登陆sysdba
sqlplus / as sysdba (要注意,这个地方/和as中间有个空格)

#注意:如下步骤2-9 所有命令都在登陆sysdba之后执行: SQL>xxx
#-------------------------------------------------------
#2. 关闭数据库
shutdown immediate;

#3. 调整字符集
#3.1启动数据库mount
startup mount

#3.2 按顺序执行如下操作
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; 
ALTER SYSTEM SET AQ_TM_PROCESSES=0; 

#4. 设置开启数据库
alter database open;

#5. 修改数据库字符集
    #5.1 执行此步骤可能会报错,如此需要执行5.2操作,强制执行
ALTER DATABASE CHARACTER SET ZHS16GBK;
    #5.2 强制执行设置字符集
ALTER DATABASE character set INTERNAL_USE ZHS16GBK; 

#6. 关闭数据库
shutdown immediate; 

7. 启动数据库
startup;

#8. 查询字符集(就可以看到已经将字符集设置为ZHS16GBK了)
select userenv ('language')  from dual;

#9. 退出plsql
exit
#-------------------------------------------------------

8. 注意事项

 1. listener.ora和tnsnames.ora文件在容器中的目录如下:

/home/oracle/app/oracle/product/11.2.0/dbhome_2/network/admin/tnsnames.ora

/home/oracle/app/oracle/product/11.2.0/dbhome_2/network/admin/listener.ora

2. 如果外部需要访问该oracle需要将上面两个文件中的localhost改为主机名或者为空

(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

2.1 .方法一,设置主机名

        查询容器中主机名: 

#1. 输入hostname查询主机名,通常就是容器的ID
hostname

#2. 容器会自动在/etc/hosts中追加一行 192.168.xx.xx 容器ID的映射,例如如下
192.168.xx.xx    9879a88ff262

 设置之后的地址为:

(ADDRESS = (PROTOCOL = TCP)(HOST = 9879a88ff262)(PORT = 1521))

2.2 方法二,设置空

(ADDRESS = (PROTOCOL = TCP)(HOST = )(PORT = 1521))

2.3 较新版本的镜像中该值均为空,可以直接连接无需此设置 

3. 每次如果修改了 tnsnames.ora 或者 listener.ora 这两个文件,都需要执行如下操作,可以解决90%连接方面的问题

#1. 如果在oracle容器中,需要退出容器
exit

#2. 重启docker服务
systemctl restart docker

#3. 如果oracle没有设置restart=always,则需要手动启动,如果设置了就跳过这一步
docker start oracle11g(这是oracle容器的name,我的是oracle11g)

#4. 以bash方式并使用root用户进入容器操作系统
docker exec -it -u root oracle11g bash

#5. 切换到oracle账户横杠"-"的前后都有空格
su - oracle

#6. 登陆数据库,可以看到后面的操作都是如此: SQL> xxx
sqlplus / as sysdba

#7. 强制重新注册实例
SQL>alter system register;

#8. 退出数据库(如果是从root切换到oracle的,则需要输入两次quit,第一次是退出sqlplus应用,第二次是退出oracle用户)
SQL>quit

#9. 在容器中重启监听
lsnrctl reload

#10. 查看监听服务状态
lsnrctl status

9. 使用Navicat连接oracle11g数据库

 9.1 新建oracle连接,并填写服务信息

注意: 这里的服务名必须是操作步骤5 所设置的ORACLE_SID=helowin

 9.2 会提示如下错误,是因为oracle的客户端不对

 9.3 解决方案如下

        1. 查询安装的oracle大版本号是多少

#1. 以root用户进入oracle容器
docker exec -it -u root oracle11g bash

#1.1 切换到oracle用户
su - oracle

#2.使用sqlplus登陆sysdba
sqlplus / as sysdba

#3. 执行sql查询oracle版本
select * from v$version

 执行sql后,结果如下,只需要看前面的大版本号,比如如下大版本号为: 11.2

         2. 到Instant Client for Windows x64(<--可点击)地址去下载对应客户端包,一共有2个包需要下载,连接分别是:

Instant Client Package - Basichttps://download.oracle.com/otn/nt/instantclient/11204/instantclient-basic-windows.x64-11.2.0.4.0.zip,Instant Client Package - SQL*Plushttps://download.oracle.com/otn/nt/instantclient/11204/instantclient-sqlplus-windows.x64-11.2.0.4.0.zip

        我的是11.2所以下载了如下两个包

 

         2.1 如果当时网络有问题下载不了,可以直接从我的博客中下载,地址是: 点击这里下载 ,

我的是已经解压好的,可以直接覆盖到Navicat安装目录的下instantclient_11_2

我的是: D:\Program Files\PremiumSoft\Navicat Premium 15\instantclient_11_2

 需要注意的是: 需要将2个压缩包的内容均解压到instantclient_11_2目录下,不能嵌套目录

9.4 设置Navicat

路径为: 工具->选项->环境

 1) SQL*Plus项: 选择刚解压到instantclient_11_2目录下的sqlplus.exe

 2)OCI library项: 选择刚解压到instantclient_11_2目录下的oci.dll

点击确定,然后关闭Navicat,再次打开,就可以连接上啦~

 10. 参考资料

  参考连接: Docker安装配置oracle详细教程https://www.cnblogs.com/blogof-fusu/p/16327293.html

使用Navicat连接oraclehttps://blog.csdn.net/aoshilang2249/article/details/125356964

 喜欢这篇文章的小伙伴点个赞和关注再走吧(* ̄︶ ̄)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/456948.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

采用海明窗,设计FIR滤波器

clc; % 清空命令行窗口 clear; %清空工作区 close all;% fir1函数使用方法 b fir1(48,[0.35 0.65]); freqz(b,1,512)figure b1 fir1(11,0.2); plot(20*log(abs(fft(b1)))/log(10))% E4_1_fir1.m文件的源码 % % 采用海明窗&#xff0c;分别设计长度为41&#xff08;阶数为40…

python基基基基基基础知识

python 基础入门 一、python介绍和安装 1. python语言的特点 语法简洁类库丰富跨平台可扩展源码开放 2. python版本 官方版本 只包含python的解释程序和一些标准库 https://www.python.org/downloads/&#xff0c;安装后打开终端输入python&#xff0c;显示python版本即为安…

手推FlinkML2.2(二)

FeatureHasher&#xff08;特征哈希器&#xff09;是一种用于处理高维分类特征&#xff08;如文本或类别特征&#xff09;的方法。它将特征转换为固定长度的数值向量&#xff0c;以便在机器学习模型中使用。特征哈希通过哈希函数将特征映射到较低维度的向量空间&#xff0c;可以…

【Linux网络】PXE高效批量网络装机

PEX高效批量网络装机 一、部署PXE远程安装服务1.1PXE的优点1.2搭建PXE网络体系的前提条件 二、实现Kincksatrt无人值守安装2.1实验思路&#xff0c;2.2实验&#xff1a;无人值守远程安装2.2.1实现 Kickstart 无人值守安装 一、部署PXE远程安装服务 PXE&#xff08;预启动执行环…

Apple 的 plist 编辑器入门指南:基础操作与高级功能详解

PlistEdit Pro是一款专为macOS编写的最高级属性列表Plist编辑器。对于Mac和IOS开发人员来说&#xff0c;编写应用程序时必须编辑各种列表文件。PlistEdit Pro通过提供直观且功能强大的界面&#xff0c;使编辑这些文件更加容易。它不仅能够复制和粘贴或拖放属性列表数据&#xf…

三种线程安全的List

在单线程开发环境中&#xff0c;我们经常使用ArrayList作容器来存储我们的数据&#xff0c;但它不是线程安全的&#xff0c;在多线程环境中使用它可能会出现意想不到的结果。 多线程中的ArrayList&#xff1a; 我们可以从一段代码了解并发环境下使用ArrayList的情况&#xff…

用友滴滴:商旅费控领域现实中的1+1>2

当前&#xff0c;AI、5G、大数据等数智技术持续演进&#xff0c;千行百业数智化正在加速。在行业数字化之下&#xff0c;企业服务生态也进入新发展阶段&#xff0c;同时也孕育着新合作、新机遇。 在2023用友生态峰会上&#xff0c;用友与滴滴签署战略合作。用友依托数智化商旅费…

塔望3W消费战略产品案丨筷手小厨:筷手功夫饭的差异化致胜之道

筷手小厨 自热米饭 客户&#xff1a;颐海国际控股有限公司 品牌&#xff1a;筷手小厨 服务&#xff1a;3W消费战略 自热米饭产品案 项目背景 颐海国际控股有限公司,成立于2013年。2016年在香港主板上市&#xff08;股票代码&#xff1a;01579.HK&#xff09;。是一家集研…

使用随机森林回归填补缺失值

文章目录 一、概述二、实现1. 导入需要的库2. 加载数据集3. 构造缺失值4. 使用0和均值填充缺失值5. 使用随机森林填充缺失值6. 对填充好的数据进行建模7. 评估效果对比 一、概述 现实中收集的数据&#xff0c;几乎不可能是完美无缺的&#xff0c;往往都会有一些缺失值。面对缺…

简单沟通,远离纸质繁琐!灵活简单的在线表单制作工具

在线表单制作表单的便利性、灵活性、简易性等优势特点已经成为当今现代化办公中的必需品。随着科技的进步和发展&#xff0c;大到企业、学校&#xff0c;小到集体、个人都需要采用正确的方式去采集信息。鉴于此&#xff0c;在线表单制作工具就是比较理想的记录工具了。那么&…

独立储能的现货电能量与调频辅助服务市场出清协调机制(Matlab代码实现)

&#x1f4a5; &#x1f4a5; &#x1f49e; &#x1f49e; 欢迎来到本博客 ❤️ ❤️ &#x1f4a5; &#x1f4a5; &#x1f3c6; 博主优势&#xff1a; &#x1f31e; &#x1f31e; &#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 …

中小型企业的仓库管理中常见问题及解决方案

中小型企业的仓储管理是企业运营中非常关键的一环&#xff0c;直接影响到企业的资金使用效率和客户体验。因此&#xff0c;建立高效的仓储管理系统对于企业来说至关重要。今天我们就来聊聊中小型企业该如何建立高效的仓库管理。 一、分析一下中小型企业仓库管理的现状 1、手工…

16.Java IO数据流

目录 1. Java基本介绍 2. JDK下载安装及其环境配置 3. 一个简单的java程序 4. Eclipse基本使用、数据类型、运算符 5. 控制语句&#xff08;if、switch、for、while、foreach&#xff09; 6. Java数组 7. Java字符串对象(String|StringBuffer|StringBuilder|StringJoiner…

功能安全ISO26262 道路车辆 功能安全审核及评估方法第3部分:软件层面

道路车辆 功能安全审核及评估方法 第3部分&#xff1a;软件层面 Road vehicles - Functional Safety Audit and Assessment Method - Part 3: Software Level &#xff08;工作组草案&#xff09; 2022.4.15 前  言 本文件按照GB/T 1.1—2020《标准化工作导则 第1部分…

什么是客户服务平台?

在社交媒体和智能手机出现之前&#xff0c;品牌主要通过单向广告渠道与客户互动。社交媒体打破了这种自上而下的动态&#xff0c;以前所未有的方式打开了对话&#xff0c;将客户包括在内。 品牌不再控制客户对人们分享公司内容的行为。人们可以点击离开&#xff0c;向左滑动&a…

分别使用软件和硬件SPI驱动1.28寸LCD屏幕刷新时间对比(驱动IC为GC9A01)

写在前面&#xff1a; 屏幕供应商提供的GC9A01驱动代码过于简陋&#xff0c;使用的话需要修改的东西比较多&#xff0c;还好看到一篇文章&#xff0c;而且博主分享了驱动代码。文章地址 以下软件SPI部分是通过博主分享的驱动代码得来的&#xff0c;稍微改一下就可以用&#xf…

jconsole工具监测jvm

背景 本篇文章为了记录如何使用jconsole工具。 jconsole工具使用环境是windows&#xff0c;监控服务端在linux上。 如何启动jconsole 找到你本地jdk的目录&#xff0c;进入bin目录&#xff0c;找到jconsole.exe程序双击启动即可 本地进程 如果是想调试本地程序的话&#xf…

23、iOS逆向防护

一、ptrace 1.1 、ptrace概述 ptrace: process trace,提供一个进程监察和控制另一个进程.并且可以读取和改变被控制进程的内存和寄存器里面的数据.它就可以用来实现断点调试和系统调用跟踪. App可以被lldb动态调试,因为App被设备中的debugserver附加,它会跟踪我们的应用进程…

Java阶段二Day08

Java阶段二Day08 文章目录 Java阶段二Day08DML语言-数据操作语言INSERTUPDATEDELETE 数据类型整数类型浮点类型字符类型日期类型 约束条件主键约束&#xff08;PRIMARY KEY&#xff09;非空约束&#xff08;NOT NULL&#xff09;唯一性约束&#xff08;UNIQUE&#xff09;检查约…

安科瑞:列头柜、监控系统、触摸屏的数据中心机房配电方案

摘要 安科瑞精密配电系统是安科瑞针对数据中心集中监控要求提供的多回路监控装置&#xff0c;监控多回路电参量并可对各种故障进行告警。主要适用于各类列头柜、精密配电柜、电源分配柜、UPS输出柜等末端配电设备的监控。在阐述数据中心机房机柜配电目标要求的基础上&#xff…