全网最全的linux上docker安装oracle的详细文档,遇到了n个问题,查了几十篇文章,最终汇总版,再有解决不了的,私聊我,我帮你解决
- 全网最全的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用户密码并刷新权限
- 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试一下。
居然成功了!!!
就这样吧。洗洗睡吧。真的累了。
全网最全的linux上docker安装oracle的详细文档,遇到了n个问题,查了几十篇文章,最终汇总版,再有解决不了的,私聊我,我帮你解决的更多相关文章
- Linux上centOs6+安装mysql5.7详细教程 - 前端小鱼塘
https://coyhom.github.io/ 人类的本质是复读机,作为一个非linux专业人员学习linux最好的办法是重复 环境centos6.5 版本5.7 1: 检测系统是否自带安装mys ...
- linux上Docker安装gogs私服亲测(详解)
一.前言 有网友问我为什么要使用私服,可能大部分人都不是太懂,网上那么多存储仓库而且好用方便,但是你想过没有如果企业中的项目,放在人家的仓库上这个安全性不是太好,所以说一般企业都会有自己的私服.本章教 ...
- linux上Docker安装gogs私服
一.背景介绍 Gogs 是一款类似GitHub的开源文件/代码管理系统(基于Git),Gogs 的目标是打造一个最简单.最快速和最轻松的方式搭建自助 Git 服务.使用 Go 语言开发使得 Gogs ...
- linux上docker安装centos7.2
1.安装 docker pull centos:7.2.1511 2.启动镜像 docker run -d -i -t <IMAGE ID> /bin/bash 3.进入容器 docker ...
- Linux通过docker安装运行酷Q--用QQ骰子君进行跑团
Linux通过docker安装运行酷Q 文:铁乐与猫 需求:和小伙伴周末进行愉快的TRPG跑团,需要在QQ讨论组上加了qq小号后,将qq小号用酷Q配合投骰的应用变成骰子君. 限制:我个人的云计算服务器 ...
- 史上最详细最全的Linux上安装Oracle的教程-centos7
一.安装Oracle前准备 1.创建运行oracle数据库的系统用户和用户组 [humf@localhost ~]$ su root #切换到root Password: [root@localhos ...
- 【数据库】Mean web开发 04-MongoDB在Linux上的安装及遇到的问题
简介 Mean是JavaScript的全栈开发框架.更多介绍 用MongoDB实现持久数据的存储是Mean Web全栈开发中的一部分. MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非 ...
- jemalloc在linux上从安装到使用
jemalloc在linux上从安装到使用 上次在引导大家安装Redis时提到可能会报错: 发现了redis有用到jemalloc. 首先,jemalloc是干什么的? 我们看看作者自己的介绍: j ...
- 分布式缓存技术redis学习系列(一)——redis简介以及linux上的安装
redis简介 redis是NoSQL(No Only SQL,非关系型数据库)的一种,NoSQL是以Key-Value的形式存储数据.当前主流的分布式缓存技术有redis,memcached,ssd ...
- GIT在Linux上的安装和使用简介
GIT最初是由Linus Benedict Torvalds为了更有效地管理Linux内核开发而创立的分布式版本控制软件,与常用的版本控制工具如CVS.Subversion不同,它不必服务器端软件支持 ...
随机推荐
- Elasticsearch:如何对PDF文件进行搜索
Elasticsearch 通常用于字符串,数字,日期等数据类型的检索,但是在 HCM.ERP 和电子商务等应用程序中经常存在对办公文档进行搜索的需求.今天的这篇文章中我们来讲一下如何实现 PDF.D ...
- Ingress
一.需求背景 固定对外提供服务采用了NodePort方式映射并固定了30001端口,但是,该端口默认范围是30000~32767,并且我们的web服务一般都是80.443端口对外,因此我们产生了如下几 ...
- python动态参数
Python的动态参数有两种,分别是*args和**kwargs,这里面的关键是一个和两个星号的区别,而不是args和kwargs在名字上的区别,实际上你可以使用*any或**whatever的方式. ...
- echarts中setOption没有重新渲染表格
setOption是merge,而非赋值,所以第二次setOption后,实际是更新了option setOption支持notMerge为true的方案,但是需要全量更新option(性能不好): ...
- [题解] Atcoder AGC 005 F Many Easy Problems NTT,组合数学
题目 观察当k固定时答案是什么.先假设每个节点对答案的贡献都是\(\binom{n}{k}\),然后再减掉某个点没有贡献的选点方案数.对于一个节点i,它没有贡献的方案数显然就是所有k个节点都选在i连出 ...
- Python 实现Tracert追踪TTL值
Tracert 命令跟踪路由原理是IP路由每经过一个路由节点TTL值会减一,假设TTL值=0时数据包还没有到达目标主机,那么该路由则会回复给目标主机一个数据包不可达,由此我们就可以获取到目标主机的IP ...
- NOIP 2013 洛谷P1966 火柴排队 (树状数组求逆序对)
对于a[],b[]两个数组,我们应选取其中一个为基准,再运用树状数组求逆序对的方法就行了. 大佬博客:https://www.cnblogs.com/luckyblock/p/11482130.htm ...
- python今日分享(内置方法)
目录 一.习题详解 二.数据类型的内置方法理论 三.整型相关操作 四.浮点型相关操作 五.字符串相关操作 六.列表相关操作 今日详解 一.习题详解 1.计算1-100所有数据之和 all_num = ...
- mybatis-plugin插件执行原理
mybatis-plugin插件执行原理 今天主要是在看mybatis的主流程源码,其中比较感兴趣的是mybatis的plugin功能,这里主要记录下mybatis-plugin的插件功能原理. pl ...
- 【第1篇】人工智能(AI)语音测试原理和实践---宣传
前言 本文主要介绍作者关于人工智能(AI)语音测试的各方面知识点和实战技术. 本书共分为9章,第1.2章详细介绍人工智能(AI)语音测试各种知识点和人工智能(AI)语音交互原理:第3.4章介绍人工智 ...