Docker安装配置Oracle详细教程(以作持久化处理)

Docker安装Oracle

1,拉取Oracle镜像,拉取成功后查看

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

2,创建容器,实现数据持久化

#启动临时容器获取初始化数据
docker run -d --name test --restart unless-stopped \
-p 1521:1521 registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
mkdir -p /data/oracle/
docker cp test:/home/oracle/app/oracle/oradata/ /data/oracle/
cd /data/oracle/oradata/
#把文件赋权给容器内Oracle用户
chown -R 500.500 helowin 
#启动容器
docker rm -f test
docker run -d --name oracle11g --restart unless-stopped \
-v /data/oracle/oradata/helowin:/home/oracle/app/oracle/oradata/helowin \
-p 1521:1521 registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

3,进入镜像进行配置

#以root用户进入容器
docker exec -it -u root 《自己的容器ID或者名称》 bash

4,切换root用户后修改配置文件,root密码为helowin

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

刷新环境变量

source /etc/profile

5,创建软连接

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

6,切换Oracle用户后,登录sqlplus并修改sys、system用户密码

su - oracle
sqlplus /nolog  
conn /as sysdba  
alter user system identified by system;--修改system用户账号密码;
alter user sys identified by system;--修改sys用户账号密码;
create user test identified by test; -- 创建内部管理员账号密码;
grant connect,resource,dba to test; --将dba权限授权给内部管理员账号和密码;
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; --修改密码规则策略为密码永不过期;(会出现坑,后面讲解)
alter system set processes=1000 scope=spfile; --修改数据库最大连接数据;

如果报错:

Docker安装配置Oracle详细教程(以作持久化处理)

删除新生成的版本控制文件,将数据卷中的版本控制文件复制为新生成的版本控制文件,操作时要保证容器内用户是oracle用户而非root,否则报控制文件出错。

rm -rf /home/oracle/app/oracle/flash_recovery_area/helowin/control02.ctl
cp /home/oracle/app/oracle/oradata/helowin/control01.ctl /home/oracle/app/oracle/flash_recovery_area/helowin/control02.ctl
sqlplus / as sysdba          # 以 dba 身份连接 oracle 数据库
shutdown immediate           # 关闭数据库实例(这里会报错,不用管)
startup    

7,修改以上信息后重启数据库

sqlplus / as sysdba
shutdown immediate; --关闭数据库

# 调整字符集
# 启动数据库mount,
startup mount 
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; 
ALTER SYSTEM SET AQ_TM_PROCESSES=0; 
# 启动数据库
alter database open;
# 修改数据库
ALTER DATABASE CHARACTER SET ZHS16GBK; 
ALTER DATABASE character set INTERNAL_USE ZHS16GBK; 

# 重新启动数据库
shutdown immediate; 
startup; --启动数据库

# 查询字符集
select userenv ('language')  from dual;
exit:退出软链接

8,测试链接

Docker安装配置Oracle详细教程(以作持久化处理)

如果此时监听报错,则进行第九步

9,设置oracle支持外部连接访问

1),一共需要配置两个文件,一个是监听器listener.ora一个是tnsnames.ora
find / | grep /network/admin #查找属于自己的oracle监听配置文件目录
vi /home/oracle/app/oracle/product/11.2.0/dbhome_2/network/admin/tnsnames.ora  #此处应是上一步查询出来的地址
vi /home/oracle/app/oracle/product/11.2.0/dbhome_2/network/admin/listener.ora  #同上

再修改文件之前,输入hostname,回车后会显示当前的主机名

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

注意此处的localhost要用之前查询的hostname替换

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)  
    )
  )
2),每次更改oracle的监听配置文件后都需要重新刷新配置90%的连接异常都是来源于监听配置问题
exit#退出容器
systemctl restart docker.service#重启服务
docker start 《自己的容器id/名》#重启容器
docker exec -it -u root 《自己的容器id/名称》 bash#重新进入容器
su - oracle#切换oracle账户
sqlplus / as sysdba #登入数据库
SQL>alter system register;#强制重新注册实例
SQL>quit#退出数据库
lsnrctl reload#在容器内重启监听
lsnrctl status#查看监听服务状态

Original: https://www.cnblogs.com/blogof-fusu/p/16327293.html
Author: 山有扶苏QWQ
Title: Docker安装配置Oracle详细教程(以作持久化处理)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/598832/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • MYSQL事务篇(高级篇)

    1.事务介绍: 一般是指要做的或所做的事情。 在计算机 术语 中是指访问并可能更新数据库中各种 数据项 的一个程序 执行单元 (unit) 2.数据库事务具有ACID四大特性 。 …

    数据库 2023年5月24日
    084
  • MySQL实战45讲 6,7,8

    06 | 全局锁和表锁 :给表加个字段怎么有这么多阻碍? Connection连接与Session会话 通俗来讲,会话(Session)是通信双⽅从开始通信到通信结束期间的⼀个上下…

    数据库 2023年5月24日
    090
  • Java8-Stream流

    Java8-Stream基础操作 JAVA技术交流群:737698533 在学习Stream之前必须有Lambda,的基础 Stream是Java8的新特性,可以进行对集合进行一些…

    数据库 2023年6月16日
    099
  • 数据结构入门之用链表模拟栈

    1:栈的介绍: LIFO(last in first out)表示就是后进入的元素, 第一个弹出栈空间.往往先把拿出去使用. 其限制是仅允许在表的一端进行插入和删除运算。这一端被称…

    数据库 2023年6月6日
    081
  • SQL语言基础

    SQL语言基础 SQL (Structured Query Language:结构化查询语言) 是用于管理关系数据库管理系统(RDBMS)。 SQL 的范围包括数据插入、查询、更新…

    数据库 2023年5月24日
    085
  • 什么是回表,怎么解决?

    表tbl有a,b,c三个字段,其中a是主键,b上建了索引,然后编写sql语句SELECT * FROM tbl WHERE a=1这样不会产生回表,因为所有的数据在a的索引树中均能…

    数据库 2023年6月16日
    0124
  • 新建Github仓库并上传本地代码

    按照Github的教程 Adding a local repository to GitHub using Git 1. 创建空的Github仓库 创建远程仓库 🔗 ,注意不要勾选…

    数据库 2023年6月14日
    0137
  • Vmware 虚拟机连接外网和设置固定IP

    NAT 模式(地址转换模式) 在NAT模式中,主机网卡直接与虚拟NAT设备相连,然后虚拟NAT设备与虚拟DHCP服务器一起连接在虚拟交换机VMnet8上,虚拟机借助NAT功能,通过…

    数据库 2023年6月14日
    0104
  • [LeetCode]剑指 Offer 17. 打印从1到最大的n位数

    输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。 示例 1: 输入: n = 1输出: [1,2,3…

    数据库 2023年6月9日
    094
  • 第05章 MySQL排序与分页

    第05章 MySQL排序与分页 1. 排序数据 1.1 排序规则 使用 ORDER BY 子句排序 ASC(ascend): 升序 DESC(descend):降序 *ORDER …

    数据库 2023年5月24日
    096
  • 基于 ShardingSphere 的得物数据库中间件平台“彩虹桥”演进之路

    本文系转载于公众号得物技术 前言 随着得物 App 用户开始快速增长,业务线日趋丰富,也对底层数据库带来了较大的压力。各个业务线对于数据分片、读写分离、影子库路由等等的需求成为了刚…

    数据库 2023年6月16日
    0107
  • MYSQL性能优化以及建议

    1、业务代码组合逻辑后进行数据库操作,如根据波次进行库存分配,可以将波次里面的订单所有明细进行分组,然后匹配库存。2、将大字段、不常用字段放置到扩展表中,将经常使用(状态、数量、编…

    数据库 2023年5月24日
    077
  • Yapi安装配置(CentOs)

    环境要求 nodejs(7.6+)mongodb(2.6+)git 准备工作 清除yum命令缓存 sudo yum clean all 卸载低版本nodejs yum remove…

    数据库 2023年6月11日
    077
  • MySQL高可用架构-MMM、MHA、MGR、PXC、分库分表(补总结)

    404. 抱歉,您访问的资源不存在。 可能是URL不正确,或者对应的内容已经被删除,或者处于隐私状态。 [En] It may be that the URL is incorre…

    数据库 2023年5月24日
    0111
  • Mysql数据库基础_复习思维导图

    Mysql复习的一个小总结,用xmind写的。(字数没有都不给我发博客😹) 下面是一些备注 子查询 MySQL子查询称为内部查询,而包含子查询的查询称为外部查询。 子查询可以在使用…

    数据库 2023年5月24日
    076
  • NO.2 Windows桌面图标-间距参数调整

    遇到如下问题: 桌面图标自动排序后间隔过大,且如图二这种指向图标能看到图标之间的间隔虚框,此方法可调整虚框的水平和垂直距离,即调整图标之间的间距。 测试电脑: 华为 mateboo…

    数据库 2023年6月14日
    0103
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球