基于docker的oracle12.2.0.1部署及oracle使用与docker镜像容器制作迁移方法

基于docker的oracle12.2.0.1部署及oracle使用与docker镜像容器制作迁移方法

本文介绍了基于docker的oracle12.2.0.1部署,包含了oracle基本配置、监听器和实例启动方法、PDB和CDB操作方法、表空间建立和用户数据库建立、常见启动问题解决等,并介绍了镜像制作、镜像打包、镜像迁移、容器打包和容器迁移方法等。

主要参考网站:

https://www.cnblogs.com/atuotuo/p/6999833.html

在MAC上安装docker并部署oracle12.2_docker 部署oracle 12.2.0.1-CSDN博客

一、下载镜像构建文件(docker-images-main.zip)

docker-images/OracleDatabase/SingleInstance/dockerfiles at main · oracle/docker-images · GitHub

附:如果不能直接打开,可先至:

进入OracleDatabase/SingleInstance/dockerfiles目录

二、下载oracle安装介质(V839960-01.zip)

1、下载oracle安装介质(V839960-01.zip)

Database Software Downloads | Oracle

登录oracle账号后,进入

https://edelivery.oracle.com/osdc/faces/SoftwareDelivery

点击continue, 同意协议后点击download下载:Oracle_SSN_DLM_05281401.exe

运行Oracle_SSN_DLM_05281401.exe,下载需要的安装介质V839960-01.zip


2、将下载的镜像构建文件和oracle安装介质上传到服务器

mkdir /data/oracle12c-docker

上传文件V839960-01.zip和docker-images-main.zip到/data/oracle12c-docker下

如果服务器容易上传中断,可以采用FTP服务上传

3、解压镜像构建文件,并将oracle安装介质移动到./docker-images-main/OracleDatabase/SingleInstance/dockerfiles/12.2.0.1

解压镜像构建文件docker-images-main.zip

sudo yum install unzipcd /data/oracle12c-docker/unzip docker-images-main.zip

4、将oracle安装介质V839960-01.zip移动到 镜像构建文件对应版本下,并修改文件名为linuxx64_12201_database.zip

 mv /data/oracle12c-docker/V839960-01.zip /data/oracle12c-docker/docker-images-main/OracleDatabase/SingleInstance/dockerfiles/12.2.0.1/mv V839960-01.zip linuxx64_12201_database.zip


三、制作oracle12.2.0.1ee镜像

1、安装docker

(1)设置docker镜像源

yum-config-manager \--add-repo \https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.reposed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repoyum makecache fast

(2)安装docker

sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin# 安装dockeryum install -y docker-ce

# (3)启动docker

sudo systemctl start docker
【附:docker相关命令】【systemctl status docker启动命令:systemctl start docker停止命令:systemctl stop docker设置开机启动:systemctl enable docker】

2、构建oracle12.2.0.1.0镜像

(1)构建镜像

cd /data/oracle12c-docker/docker-images-main/OracleDatabase/SingleInstance/dockerfiles/sh buildContainerImage.sh -v 12.2.0.1 -e

(2)验证是否成功

docker images

附:

(1)报错linuxx64_12201_database.zip: FAILED open or read如下,则说明未更改文件名

cd /data/oracle12c-docker/docker-images-main/OracleDatabase/SingleInstance/dockerfiles/12.2.0.1/mv V839960-01.zip linuxx64_12201_database.zip

(2)命令参数

四、构建oracle容器

1、创建持久化目录

 chmod 777 /data/oracle12c-docker/oradata/

2、容器构建

docker run -d --name oracle-12cr2 \-p 1523:1523 -p 5500:5500 \-e ORACLE_SID=JTG  \-e ORACLE_PWD=YXY123 \-e ORACLE_BASE=/opt/oracle \-e ORACLE_HOME=/opt/oracle/product/12.2.0.1/dbhome_1 \-e PATH=/opt/oracle/product/12.2.0.1/dbhome_1/bin:/opt/oracle/product/12.2.0.1/dbhome_1/OPatch/:/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \-v /data/oracle12c-docker/oradata/:/opt/oracle/oradata \oracle/database:12.2.0.1-ee

五、修改oracle配置文件

1、进入容器,修改配置文件

(1)、Listener.ora文件
LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1523))))SID_LIST_LISTENER =  (SID_LIST =  (SID_DESC =  (GLOBAL_DBNAME = xe)(SID_NAME = xe)(ORACLE_HOME = /opt/oracle/product/12.2.0.1/dbhome_1)))ADR_BASE_LISTENER = /opt/oracleDEDICATED_THROUGH_BROKER_LISTENER=ONDIAG_ADR_ENABLED = off

(2)、tnsnames.ora文件
XE=localhost:1521/XEORCLPDB1=(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1523))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = ORCLPDB1)))xe =  (DESCRIPTION =  (ADDRESS_LIST =  (ADDRESS = (PROTOCOL = TCP)(HOST = master)(PORT = 1523))  )  (CONNECT_DATA =  (SID = xe)  )  )JTG =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1523)))(CONNECT_DATA =(SERVICE_NAME = JTG)))

六、监听器启动及数据库实例创建

1、Oracle的启动命令

(1)启动oracle

sqlplus / as sysdba

(2)创建oracle实例

startup nomount pfile=’init.ora’

(3)测试是否创建成功

select status from v$instance

(3)启动oracle监听器

lsnrctl start

(4)配置文件修改后操作

lsnrctl reloadlsnrctl startlsnrctl status

数据库启动问题常见解决:见附录

七、创建CDB和PDB

      12.2.0.1版本的数据库有CDB和PDB概念,多个PDB可插拔在CDB。创建用户即是创建数据库,用户名即为数据库名称。CDB用户名称以“C##”开头,PDB为本地用户。

        我们创建一个CDB后,进入该CBD,创建PDB用户使用.

Sqlplus / as sysdba

1、创建CDB用户

alter pluggable database CDB$ROOT open;create user c##jtg identified by Inspur123;grant connect,resource,sysdba to c##jtg;

2、查看已有PDB

select con_id,dbid,NAME,OPEN_MODE from v$pdbs;


3、创建PDB

CREATE PLUGGABLE DATABASE JTG ADMIN USER jtg IDENTIFIED BY "jtg";

4、打开创建的PDB数据库

alter pluggable database JTG open;alter session set container=JTG;
  • 八、PDB表空间和用户创建,用户绑定表空间

1、创建表空间

  • create tablespace USERS
    logging
    datafile '/oraDataJtg/XE/10DFE005CF4A2D21E063020011AC8573/datafile/myjtg.dbf'
    size 2G
    autoextend on
    next 1G maxsize unlimited
    extent management local;
    -- 查询表空间select name from v$datafile;

2、创建用户

进入PDB,创建用户,用户名即为数据库名

alter pluggable database JTG open;alter session set container=JTG;
CREATE USER jtg IDENTIFIED BY jtg DEFAULT TABLESPACE USERS;​​​​​​​grant create session to jtg;grant connect,resource,sysdba to jtg;grant resource to jtg;grant sysdba to jtg;commit;

3、用户绑定表空间

alter user JTG default tablespace USERS ;select name from v$datafile;

九、开放端口

#开放端口firewall-cmd --zone=public --add-port=1503/tcp --permanentfirewall-cmd –reload

十、Navicate连接

十一、服务器登录数据库操作

由于涉及到CDB和PDB,登录时先执行

Sqlplus / as sysdbaalter pluggable database JTG open;alter session set container=JTG;

十二、常用指令

1、日常登录:

切换会话到指定PDB及数据库 

alter session set container=cdb$root; --切换会话到CDB alter session set container=ORCLPDB; --切换会话到PDB

2、Docker镜像迁移

docker save oracle/database:12.2.0.1-ee > /data/oracle12c-docker/oracle12-2-0-1-ee_image.tar

上传打包后的镜像到另外一台服务器, 执行语句:

docker load < /data/oracle12c-docker/oracle12-2-0-1-ee_image.tar

3、Docker容器迁移

docker export -o /data/oracle12-2-0-1ee-container.tar ora12c-r2

上传打包后的容器到另外一台服务器, 执行语句:

docker import oracle12-2-0-1ee-container.tar oracle-container:v12.2.0.1

十三、附录:数据库启动问题常见解决

1、ORA-01102: cannot mount database in EXCLUSIVE mode

(1)查询共享内存段

 ipcs -s

Ipcrm -s <semid>

2用于锁内存的文件lk和sgadef.dbf文件没有被删除。

3cd $ORACLE_HOME/dbs

4ls lk*

5lksid文件没有被删除。将它删除掉

6rm lk*

2、ORA-01172、ORA-01151   oracle 资源正忙,Oracle解锁,解决“ORA-00054:资源正忙”错误

查询被锁的会话:

conn jtg/jtg@JTGselect session_id from v$locked_object;

会话详细信息

SELECT sid, serial#, username, osuser FROM v$session where sid =ALTER SYSTEM KILL SESSION 'sid, serial';ALTER SYSTEM KILL SESSION '263,20112';ALTER SYSTEM KILL SESSION ‘10,22317’;ALTER SYSTEM KILL SESSION '748,46995';ALTER SYSTEM KILL SESSION '137,1194';ALTER SYSTEM KILL SESSION '384,27872';

3、创建实例提示找不到pfile,实例对应文件夹下有spfile和pfile,可以根据spfile创建pfile。

create pfile='/opt/oracle/product/12.2.0.1/dbhome_1/dbs/initjtg.ora' from spfile='/opt/oracle/product/12.2.0.1/dbhome_1/dbs/spfileJTG.ora';startup pfile='/u01/***/*****/*****/dbs/initjtg.ora'show parameter dump;

十四、主要总结:

1、Oracle配置:

tnsnames.ora   Listener.ora

2、监听器启动方法及数据库实例启动方法

3、PDB/CDB的常见应用

4、Docker镜像制作和迁移

5、Docker容器制作和迁移


 

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

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

相关文章

二、go微服务项目“商城项目实战开发”第二步grpc和gin的直连调用

文章目录 商城项目实战开发-GRPC和GIN的直连调用01、本次课程微服务的技术栈02、用户服务接口定义和实现登录1、密码问题01、MD5的方式02、加盐的方式03、动态盐04、使用加盐框架passwordEncoder2、用户服务接口的暴露3、Grpc的实现步骤1.定义暴露接口2.编写user的调用文件3.编…

YOLOv8_obb预测流程-原理解析[旋转目标检测理论篇]

YOLOv8_obb的预测流程,主要分预处理模块、推理模块和后处理模块。这里面有很多内容是和目标检测预测流程是重合的,主要区别在于Angle分支、NMS后处理以及regularize_rboxes部分。本文也主要介绍一下这三个模块,其他模块可以结合YOLOv8预测流程-原理解析[目标检测理论篇]一起…

免费SSL证书的安全性与获取指南

SSL证书是一种数字凭证&#xff0c;用于加密用户与网站之间的信息交换&#xff0c;以确保传输的数据不被第三方窃取。它像是一个数字版的密封印章&#xff0c;为数据的传输过程提供了一层保护膜。 免费的SSL证书通常由CA机构提供&#xff0c;它们同样可以提供基础数据的加密服…

16.Redis之Redis事务

1.MySQL 事务 原子性: 把多个操作,打包成一个整体了 一致性: 事务执行之前,和之后,数据都不能离谱~ 持久性: 事务中做出的修改都会存硬盘 隔离性: 事务并发执行,涉及到的一些问题~~ 2.Redis事务 2.1 认识Redis事务 • 弱化的原⼦性: redis 没有 "回滚机制". …

.NET最新漏洞 | 某SLMS系统存在SQL注入

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…

翻译《The Old New Thing》- How do I force the ECHO command to echo?

How do I force the ECHO command to echo? - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20080403-00/?p22883 Raymond Chen 2008年04月03日 如何强制执行ECHO命令以进行回显&#xff1f; 简要 ECHO命令用于在命令行打印文本&#xff0…

统一预订,YonSuite商旅费控助力成长型企业“消灭报销”

在成长型企业快速发展的道路上&#xff0c;商旅管理作为连接企业内外的重要纽带&#xff0c;其效率与成本直接影响着企业的整体运营。面对日益增长的商旅需求&#xff0c;如何简化预订流程、降低管理成本、提高运营效率成为了成长型企业亟待解决的问题。用友YonSuite商旅费控以…

【权威出版】2024年新媒体、网络与电子商务国际会议(NMNE 2024)

2024年新媒体、网络与电子商务国际会议 2024 International Conference on New Media, Networking, and E-commerce 【1】会议简介 2024年新媒体、网络与电子商务国际会议即将召开&#xff0c;这是一次集结全球新媒体、网络与电子商务领域精英的学术盛会。 本次会议将深…

DPDK基础组件一(mbuf、ring、pktmbuf_pool)

一、rte_mbuf 此部分转自:https://zhuanlan.zhihu.com/p/616314276 1.mbuf结构 mbuf是报文中的描素的结构体,是整个转发过程中最核心的数据结构之一。主要针对于mbuf的常用API与基本原理做一个简单的介绍。 mbuf:报文内存存储结构,存储在mempool中mempool:使用环形缓冲…

Web安全:软件开发的安全问题与解决方案

「作者简介」&#xff1a;2022年北京冬奥会网络安全中国代表队&#xff0c;CSDN Top100&#xff0c;就职奇安信多年&#xff0c;以实战工作为基础对安全知识体系进行总结与归纳&#xff0c;著作适用于快速入门的 《网络安全自学教程》&#xff0c;内容涵盖系统安全、信息收集等…

jni调用so或dll区别

在Java中通过JNI&#xff08;Java Native Interface&#xff09;调用本地代码时&#xff0c;所使用的动态库文件扩展名&#xff08;如 .dll 对于Windows或 .so 对于Unix-like系统&#xff09;取决于你的操作系统和目标平台。 DLL&#xff08;Dynamic Link Library&#xff09;…

python数据预处理

PYTHON 最流行库&#xff1a;Numpy、Matplotlib 和 Pandas。Numpy 是满足所有数学运算所需要的库&#xff0c;由于代码是基于数学公式运行的&#xff0c;因此就会使用到它。Maplotlib&#xff08;具体而言&#xff0c;Matplotlib.pyplot&#xff09;则是满足绘图所需要的库。Pa…

小米员工自爆:35岁被裁后,投百份简历无人问津,一气之下把薪资由2W调为3W,简历改成英文,结果出乎意料

“35岁”&#xff0c;就像职场里一道无形的门槛&#xff0c;压得人喘不过气。一旦迈过这道坎&#xff0c;焦虑、迷茫、恐慌&#xff0c;接踵而至。 最近&#xff0c;我的朋友老张&#xff0c;就真切地体会到了这种“中年危机”。刚过36岁生日&#xff0c;他就收到了来自小米的裁…

从0到1写一个vue2项目,按需引入element-ui的引入,npm下载路由,配置路由,路由嵌套

从0到1写一个vue2项目&#xff0c;此篇内容有element-ui的按需引入&#xff0c;npm下载路由&#xff0c;配置路由&#xff0c;路由嵌套 项目是b站上找的项目链接在此https://www.bilibili.com/video/BV1QU4y1E7qo/?p8&spm_id_frompageDriver&vd_source2c599bf1d75e3f9…

Hive之聚合类开窗函数 + 滑动求和

为什么要写这样子一个主题文章呢&#xff0c;开窗函数毫无疑问&#xff0c;超级重要&#xff0c;但是很多人可能不会遇到一些稍微小众的业务需求&#xff0c;比如说滑动求和。这里带着业务&#xff0c;一并让大家熟悉一些&#xff0c;高阶函数的应用。 0&#xff0c;开窗函数和…

【JAVA SE】抽象类和接口

✨✨欢迎大家来到Celia的博客✨✨ &#x1f389;&#x1f389;创作不易&#xff0c;请点赞关注&#xff0c;多多支持哦&#x1f389;&#x1f389; 所属专栏&#xff1a;JAVA 个人主页&#xff1a;Celias blog~ 目录 引言 一、抽象类 1.1 抽象类的定义 1.2 抽象方法 1.3 抽象…

大厂边缘组VS小厂核心组,要怎么选?

有问必答 最近有粉丝提问&#xff1a;大厂边缘组VS小厂核心组&#xff0c;怎么选&#xff1f; 这确实是个好问题&#xff0c;读者老爷们可以先问下自己&#xff1a;如果有一份月薪2W在大厂边缘组打螺丝的Offer且不加班&#xff0c;另外还有一份月薪2W5&#xff0c;在小厂核心…

华为坤灵管理型交换机S300,S500,S310,S210,S220,S200 web端开局配置

一. 准备线缆 笔记本或没有COM口的电脑,需准备转接线,并安装好随线光盘的驱动,检查设备管理器中COM口是否正常 2.连接电脑与交换机的CONSOLE口 二&#xff0c;准备软件putty。 Download PuTTY: latest release (0.81) 配置步骤如下&#xff1a; 开启HTTP服务。设置https://1…

【conda】解决conda activate无效的问题

conda activate 虚拟环境名字执行上述命令失效&#xff0c;提示如下信息&#xff1a; 经查询&#xff0c;原因是新版的 conda 不再使用 activate 来激活虚拟环境&#xff0c;而是改用&#xff1a; source activate 虚拟环境名退出虚拟环境还是&#xff1a; conda deactivate…

sqlite基本操作

简介 文章目录 简介1.数据库的安装2.数据库命令&#xff1a;API&#xff0c;创建表单代码 csprintf&#xff08;&#xff09;getchar和scanf&#xff08;&#xff09; 1.数据库的安装 sudo dpkg -i *.deb这个报错表明出现依赖问题 用这个命令后再试试sudo apt --fix-broken in…