程序员的公众号:源1024,获取更多资料,无加密无套路!
最近整理了一波电子书籍资料,包含《Effective Java中文版 第2版》《深入JAVA虚拟机》,《重构改善既有代码设计》,《MySQL高性能-第3版》,《Java并发编程实战》等等
获取方式: 关注公众号并回复 电子书 领取,更多内容持续奉上
这几天项目上用到Oracle数据库,于是,就用Docker安装了Oracle数据库,想持久化数据,就配置了挂载卷,一路踩坑啊,踩的我脚有点疼。。。
找遍各大网站,搜索了一圈,都是工工整整的流程,没有半点坎坷的,就纳闷了,难道就我安装会出现这么多问题吗?难道是我的环境问题吗?
踩坑了总得填坑吧,于是乎就写了这篇填坑笔记,分享给大伙儿,如果你也遇到了,巧了,这是缘分!如果真没有坎坷,那么恭喜你!
不禁想起了一首歌——《坦途》
走过人生所有的弯路从此人生尽是坦途!
我们先看看正常安装流程
1、拉取镜像
docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
2、安装
docker run --name oracle11g -d -p 1521:1521 registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g:latest
3、拷贝目录
docker cp oracle11g:/home/oracle/app/oracle /home/oracle
4、授权目录
chmod -R 777 /home/oracle/
5、重新配置挂载启动镜像
docker stop oracle11g
docker rm oracle11g
//-v 挂载系统目录到容器中
docker run --name oracle11g -v /home/oracle:/home/oracle/app/oracle -d -p 1521:1521 --restart=always registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g:latest
6、进入容器
docker exec -it oracle11g bash
7、切换root用户,密码helowin
su root
8、配置环境变量
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
9、生效
source /etc/profile
10、配置软连接
ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
11、登录sqlplus,修改sys、system用户密码,创建用户
登录
sqlplus /nolog
连接
conn /as sysdba
12、修改用户密码
修改密码
alter user system identified by system;
alter user sys identified by sys;
13、创建用户并授权
创建用户
create user test identified by test123;
赋予权限
grant connect,resource,dba to test;
这应该是正常流程,然后用navicat连接数据库测试。
那么,坑出现在哪一步了呢?出现在第12步,修改密码时报错了
于是就执行了
alter database open;
报错如下
根据提示,又执行
alter database mount;
结果是这样,报错信息提示控制文件版本不一致
于是退出SQL到oracle层,就试着复制配置文件
cp /home/oracle/app/oracle/flash_recovery_area/helowin/control02.ctl /home/oracle/app/oracle/flash_recovery_area/helowin/control02_bak.ctl
cp /home/oracle/app/oracle/oradata/helowin/control01.ctl /home/oracle/app/oracle/flash_recovery_area/helowin/control02.ctl
然后再连接SQL
再执行下面命令
alter database mount;
alter database open;
终于OK了!
那接下来修改用户密码
创建用户、授权
也OK,用navicat测试连接数据库
大功告成!
踩坑成功!
难道是这个镜像的bug吗,查了好多帖子都是使用这个镜像搭建的Oracle,镜像确实也挺久了,8年前的,有时间验证一下,今天就分享到这里吧,如果你也遇到这种问题,欢迎评论留言交流!
系列文章索引
MyBatis的插件能在哪些地方进行拦截?
了解MyBatis的缓存机制吗
面试官:谈谈对volatile的理解
Spring中用到了哪些设计模式
面试官:说一下SQL的执行过程
线程池的工作原理