全网最全的linux上docker安装oracle的详细文档,遇到了n个问题,查了几十篇文章,最终汇总版,再有解决不了的,私聊我,我帮你解决

news2024/11/19 3:40:16

文章目录

  • 全网最全的linux上docker安装oracle的详细文档,遇到了n个问题,查了几十篇文章,最终汇总版,再有解决不了的,私聊我,我帮你解决
    • 1. 拉取阿里镜像oracle
    • 2. 创建初始化数据
    • 3. 创建启动容器 数据持久化
    • 4. 进入oracle容器
    • 5. 切换到root用户下进行配置
    • 6. 编辑profile文件配置ORACLE环境变量
    • 7. 创建软连接
    • 8. 切换到oracle 用户
    • 9. 登录sqlplus并修改sys、system用户密码
    • 10. 修改sys、system用户密码并刷新权限
      • 10.1 当执行修改密码的时候出现 :database not open
      • 10.2 又提示另一个错误: ORA-01507: database not mounted
      • 10.3 又提示另一个错误:ORA-00214:control file
    • 11. 查看一下oracle实例状态
    • 12. 用navicat连接oracle数据库
      • 12.1 用navicat连接报错ORA-12514: TNS :no listener
      • 12.2 结果navicat连接继续报错ORA-12514:TNS:listener does not currently know of service requested in connect descriptor
      • 12.3 The listener supports no services
      • 12.4 oracle修改端口启动的别忘了遇到的1521全改成自定义的,仔细看我上面的listener.ora和tnsname.ora里host和port我全改成一致的了,在此就不多说了。
      • 12.5 就在我满心欢喜的时候又报了个错ORA-01031: insufficient privileges

全网最全的linux上docker安装oracle的详细文档,遇到了n个问题,查了几十篇文章,最终汇总版,再有解决不了的,私聊我,我帮你解决

1. 拉取阿里镜像oracle

docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

在这里插入图片描述

2. 创建初始化数据

#容器启动
docker run -di --name oracle11521 --restart=always  \
-p 1521:1521 registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
# 创建文件夹
mkdir -p /home/esopadm/data/oracle
#复制文件出来 
docker cp oracle11521:/home/oracle/app/ /home/esopadm/data/oracle

docker cp oracle11521:/etc/profile  /home/esopadm/data/oracle/

cd /home/esopadm/data/oracle
# 500 500 是容器内 oracle 组和用户的 id
chown -R 500.500  app
# 删除容器
docker rm -f oracle11521

3. 创建启动容器 数据持久化

docker run -d -p 11521:11521 -v /home/esopadm/data/oracle/app:/home/oracle/app \
-v  /home/esopadm/data/oracle/profile:/etc/profile \
--restart=always --name oracle11521 registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

4. 进入oracle容器

docker exec -it oracle /bin/bash

这个命令就是我噩梦的开始,由于我用的是公司的开发环境的服务器,别人已经事先装过oracle了,所以我上面那个命令进入的是别人oracle,导致下面执行的命令都是在别人地盘上玩的,白白浪费了好长时间,所以我只能改个端口号继续玩,那容器名也不能一样了,我把端口改成了11521,容器名为oracle11521。

那正确的命令应该是下面这个

docker exec -it oracle11521 /bin/bash

5. 切换到root用户下进行配置

su root
#密码:helowin

6. 编辑profile文件配置ORACLE环境变量

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

7. 创建软连接

ln -s $ORACLE_HOME/bin/sqlplus /usr/bin

8. 切换到oracle 用户

su - oracle

9. 登录sqlplus并修改sys、system用户密码

sqlplus /nolog

conn /as sysdba

在这里插入图片描述

10. 修改sys、system用户密码并刷新权限

alter user system identified by 123456;
alter user sys identified by 123456;
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
exit 退出

上面简单的三步我这就开始报错了,下面是我遇到的错误及解决办法

10.1 当执行修改密码的时候出现 :database not open

提示数据库没有打开,不急按如下操作

输入:alter database open;

10.2 又提示另一个错误: ORA-01507: database not mounted

输入:alter database mount;

10.3 又提示另一个错误:ORA-00214:control file

在这里插入图片描述

这个解决方法很多,我只用了其中一个,想看其他方法,查看这篇文章:https://blog.csdn.net/Ruishine/article/details/115323525

由于control102.ctl版本号是845比control101.ctl版本号841高,所以我将control101.ctl删除,然后将control102.ctl拷贝到control101.ctl目录下并改名为control101.ctl。

也就是说用高版本的覆盖低版本的

11. 查看一下oracle实例状态

lsnrctl status

在这里插入图片描述

12. 用navicat连接oracle数据库

服务名:helowin(一定要填写helowin)
用户名:system 第10步设置的用户)
密码:123456(第10步设置的密码)

终于大功告成了,这回开始使用吧。。。结果。。。

12.1 用navicat连接报错ORA-12514: TNS :no listener

这个错误卡了我很久,我也不能每次都指定ip吧,其他同事用我再把他们ip加上?太蠢了。最后终于找到一个靠谱的

修改/home/oracle/app/oracle/product/11.2.0/dbhome_2/network/admin/listener.ora文件里的host

在这里插入图片描述

HOST默认是localhost ,本机连接正常,远程无法连接。改为机器名,本地、远程都可以连接!

那我们就通过hostname查看主机名呗。

在这里插入图片描述

注意:是容器的主机名,而不是宿主机的。

修改完需要重新开启监听。先停止,再启动。

lsnrctl stop
lsnrctl start

12.2 结果navicat连接继续报错ORA-12514:TNS:listener does not currently know of service requested in connect descriptor

大概意思是当前服务不可用

在这里插入图片描述

结果又是一顿瞎搞,结果lsnrctl status命令显示的内容和以前又不一样了,没有可用的服务。
在这里插入图片描述

12.3 The listener supports no services

这个问题也找到解决办法了。

继续修改listener.ora 文件。

在这里插入图片描述

SID_LIST_LISTENER =
(SID_LIST =
  (SID_DESC =
  (GLOBAL_DBNAME = helowin)
  (SID_NAME = helowin) 
  )
)

继续lsnrctl stop然后lsnrctl start
在这里插入图片描述
熟悉的服务、实例终于又回来了。

12.4 oracle修改端口启动的别忘了遇到的1521全改成自定义的,仔细看我上面的listener.ora和tnsname.ora里host和port我全改成一致的了,在此就不多说了。

12.5 就在我满心欢喜的时候又报了个错ORA-01031: insufficient privileges

在这里插入图片描述

权限不足???

这个简单查了一下

解决Navicat连接Oracle数据库用户权限问题:

第一步:在cmd窗口运行[sqlplus],

第二步:输入Oracle的用户名和口令连接Oracle数据库,

第三步:执行授权代码,给用户授予DBA权限 [grant dba to 用户名;],

如果还有权限不足问题再执行第四步,

第四步:执行[grant all privileges to 用户名;]

我这里用户名就是system了,执行完了没什么鸟用。

后来想起来了,之前蒙头撞墙的时候改了高级里的角色为sysdba,改回default试一下。

在这里插入图片描述

居然成功了!!!

在这里插入图片描述

就这样吧。洗洗睡吧。真的累了。

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

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

相关文章

JVM学习初整理

JVM 内存结构(运行时数据区):堆(Heap),方法区(Method area),栈(本地方法栈(Native Method Stacks),虚拟机方法栈(Java Virtual Machine Stacks)),程序计数器(The pc Register) 堆:java虚拟机所管理的内存…

空调集中控制器的分类

在日常生活中,人们接触较多的是空调遥控器,空调智能控制器与空调遥控器有较大区别。空调遥控器是一对一管理,空调控制器可以集中管理。一般应用于机房管理、学校教室、图书馆管理、办公室、大型商场、工厂宿舍等地方。 红外空调控制器 红外空…

ACM6753(18V/3A三相无感BLCD无刷直流电机驱动IC)

概述 ACM6753是一款18V/3A三相无感BLCD(无刷直流)电机驱动IC、180˚正弦,集成驱动算法预驱MOS ,内置电流检测。 产品指标和特性 • 供电电压范围:5V-24V • 上侧MOS下侧MOS:250mΩ • 3A 连续旋转电流,4A峰值保护电流 …

图书商城在线销售系统(ssm,layui,mysql)+全套视频教程

今天,我们发布一套【图书商城在线销售系统(ssm,layui,mysql)】,系统使用技术包含JAVA,SSM,LAYUI,MYSQL,这套系统后台框架使用SSM,数据库使用MySql, 这套系统包含完整的源代码和数据库脚本,根据我们提供的开发工具和运行视频教程,拿…

Java进阶——IO流(II)

文章目录三、节点流和处理流3.1、处理流BufferedReader和BufferedWriter3.2、处理流BufferedInputStream和BufferedOutputStream3.3、对象流ObjectInputStream和ObjectOutputStream3.4、标准输入输出流3.5、转换流InputStreamReader和OutputStreamWriter3.6、打印流**PrintStre…

【多目标进化优化】MOPSO 原理与代码实现

🎈💞💞 😇 热烈欢迎您的到来 😇 💘💘🎈——青年有志 🏆初衷: 通俗的语言 dapei 核心的内容 🎉 博主相信: 有足够的积累&#xff0c…

一个简单的WEB网页制作作业——黑色的山河旅行社网站(5个页面)HTML+CSS+JavaScript

👨‍🎓学生HTML静态网页基础水平制作👩‍🎓,页面排版干净简洁。使用HTMLCSS页面布局设计,web大学生网页设计作业源码,这是一个不错的旅游网页制作,画面精明,排版整洁,内容…

2022年各国程序员编程水平排行榜出炉,排名第一的国家没听说过

哪个地方的程序员编程水平最高?相信很多人对这个问题感兴趣,今天就来聊一聊这个话题。 Pentalog 是一个全球数字服务平台,主要帮助企业寻找世界上一流的IT人才,每年都会发布一份全球IT行业报告,今天文章的数据也是来自…

单片机控制马达驱动IC的应用

8位机最常见的应用单片机驱动马达IC工作,马达可支持无级调速(PWM),正转,反转,刹车。该应用简单高效适应于各种应用,节约成本的不二选择。 今天就跟大家分享曾经做过的马达驱动IC的应用。 主电…

类的加载器

文章目录1. 概述1.1 大厂面试题1.2 类加载的分类1.3 类加载器的必要性1.4 命名空间1.5 类加载机制的基本特征2. 类的加载器分类2.1 引导类加载器2.2 扩展类加载器2.3 系统类加载器2.4 用户自定义类加载器3. 测试不同的类的加载器4. ClassLoader源码解析4.1 ClassLoader的主要方…

测量电源纹波-正确测量方法

测量纹波需要注意的点: 1、用弹簧探针; 2、测量位置在输出电容两端; 3、示波器选择‘20M’; 4、示波器选择‘交流耦合’; 5、示波器探头‘X1’,示波器设置‘X1’;(10:1的探头,实际上…

Stable Diffusion V2.1非标准分辨率图像高清渲染

Stable Diffusion V2.1非标准分辨率图像高清渲染 Stable Diffusion V2.1发布,支持非标准分辨率图像高清渲染。 SD2.1在线体验 在线体验地址:Stable Diffusion 模型包括: NovelAI,NovelAI的模型训练使用了数千个网站的数十亿张图片&#xf…

如何给图片加水印?分享怎么给图片加水印的方法

当我们在平台上发布自己精心拍摄的照片,或分享自己总结的知识点时,难免会遇到一些人盗用自己图片的情况。这时候,我们就会给图片添加上水印,从而来防止自己的图片被盗,那要怎么给图片加水印呢?别着急&#…

《自己动手写CPU》学习记录(3)——第4章/Part 1

目录 引言 致谢 平台 ori 指令 流水线结构建立 模型 简单的MIPS五级流水线结构 设计 宏定义 程序计数器 译码 通用寄存器 指令执行 内存访问 指令ROM 顶层文件 处理器顶层 SOPC顶层 功能仿真 TestBench 仿真结果 执行时间 时序细节 引言 本篇学习书本…

Java大型企业进销存系统源码带文字搭建教程

技术架构 技术框架:SpringBoot Spring Data Jpa SpringMvc Shiro安全认证 完整权限系统 easyui 运行环境:jdk8 IntelliJ IDEA maven 宝塔面板 本地搭建教程: 1.下载源码,小皮面板创建一个数据库,导入db_jxc2.…

nodejs模板引擎的使用

前后端不分离的情况(数据都来源于后端,前后端不可以分离使用) npm i express art-template express-art-template --S 先下载模板引擎,模板渲染,还有experss服务器的包 js代码 //导入express服务器第三方的包 const express require("express") //导入模板引擎 con…

Spring Cloud(十六):微服务分布式唯一ID

分布式唯一ID 特点方案 雪花算法 特点开源实现优缺点 替代方案 UUIDMongdbSeata数据库生成Redis 基于美团的 Leaf分布式 ID 微服务 Leaf-segment 数据库方案 双 buffer 优化 — TP999 数据波动大 Leaf 高可用容灾 — DB 可用性Leaf-snowflake 雪花方案 弱依赖 ZooKeeper 解决时…

加减大师-第10届蓝桥杯Scratch选拔赛真题精选

[导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第98讲。 蓝桥杯选拔赛每一届都要举行4~5次,和省赛、国赛相比,题目要简单不少,再加上篇幅有限,因此我精挑细选…

Vue学习笔记--第一章(尚硅谷学习视频总结)

目录 一、第一章 Vue核心 1.1. Vue简介 1.1.1. 官网 1.1.2. 介绍与描述 1.1.3. Vue 的特点 1.1.4. 与其它 JS 框架的关联 1.1.5. Vue 周边库 1.2.初识Vue 1.3. 模板语法 1.4. 数据绑定 1.5 el与data的两种写法 1.6 MVVM模型 1.7 Vue中的数据代理 1.8.事件处理 1.…

从零学习 InfiniBand-network架构(九) —— IB协议中子网本地地址

从零学习 InfiniBand-network架构(九) —— IB协议中子网本地地址 🔈声明: 😃博主主页:王_嘻嘻的CSDN主页 🔑未经作者允许,禁止转载 🚩本专题部分内容源于《InfiniBand-n…