基于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 unzip

cd /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.repo

    

sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo



yum makecache fast

(2)安装docker

sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin



# 安装docker

yum 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/oracle

DEDICATED_THROUGH_BROKER_LISTENER=ON

DIAG_ADR_ENABLED = off

(2)、tnsnames.ora文件
XE=localhost:1521/XE

ORCLPDB1=

  (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 reload

lsnrctl start

lsnrctl 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 --permanent

firewall-cmd –reload

十、Navicate连接

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

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

Sqlplus / as sysdba

alter 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@JTG

select 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容器制作和迁移


 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

曹操出行巨亏70亿: 市场份额承压,上百次行政处罚与数千条投诉

《港湾商业观察》黄懿 4月29日&#xff0c;CaoCao Inc. (曹操出行有限公司&#xff0c;下称“曹操出行”&#xff09;向港交所主板递交上市申请&#xff0c;其国内运营主体为杭州优行科技有限公司&#xff08;下称“杭州优行”&#xff09;。 这是继嘀嗒出行、如祺出行、小马…

Redis数据类型(下篇)

5.Redis有序集合zset(sorted set) 本质就是在set的基础上&#xff0c;每个val值前面加了一个score分数值。 &#xff08;1&#xff09;向有序集合中添加多个&#xff08;或者一个&#xff09;元素和其对应的分数 127.0.0.1:6379> zadd zset1 100 a 90 b 80 c 70 d 60 e (…

MySQl基础入门⑬.5

创建多表连接查询 表准备 CREATE TABLE 员工信息 (员工号 INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,姓名 VARCHAR(50) NOT NULL,性别 ENUM(男, 女) NOT NULL,出生日期 DATE NOT NULL,部门 VARCHAR(50) NOT NULL,手机号码 VARCHAR(20) NOT NULL,-- 根据数据库不同&#x…

怎么做好企业短信服务呢?(文字短信XML接口示例)

企业短信服务已经成为各行各业都信赖的行业推广方式之一&#xff0c;并且短信行业也与时俱进的发展着&#xff0c;随之而来的就是市场上短信平台的数量也随之增多。那么怎么在鱼龙混杂的短信行业中选择适合自己的企业短信服务平台呢&#xff1f;企业短信服务平台又适用于哪些应…

合并两个有序链表和合并 K 个升序链表

21. 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4]示例 2&#xff1a; 输入&#xff1a;l1 [], l2 […

【C语言】字符串左旋(三种方法)

&#xff08;方法3只给出思路参考&#xff09; 问题 描述&#xff1a; 实现一个函数&#xff0c;可以左旋字符串中的k个字符。 例如&#xff1a; ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB 分析 我们先来理解一下&#xff0c;什么叫“左旋”&#xff1f;其实是这…

html+CSS+js部分基础运用12

一、显示列表项的内容 编写javaScript代码实现用户登录时数据合法性校验功能&#xff0c;界面如图教材P338 第2题&#xff0c;效果如下图所示&#xff1a; 图1 显示列表项内容 二、日期的处理 实时显示当前时间及累计登录时间&#xff0c;如下图2所示。[提示window.setInt…

两款 IntelliJ IDEA 的 AI 编程插件

介绍两款 IntelliJ IDEA 的 AI 编程插件&#xff1a;通义灵码和 CodeGeeX。 通义灵码 这是由阿里推出的一个基于通义大模型的 AI 编码助手。 它提供了代码智能生成、研发智能问答等功能。通义灵码经过海量优秀开源代码数据训练&#xff0c;可以根据当前代码文件及跨文件的上下…

【Moveit】step或stl文件转urdf,并添加到机械臂上

【Moveit】step或stl文件转urdf&#xff0c;并添加到机械臂上 文章目录 【Moveit】step或stl文件转urdf&#xff0c;并添加到机械臂上1. 安装sw_urdf_exporter插件2. 导出urdf3. 将夹爪连接到机械臂上4. 使用moveit_setup_assistant配置功能包Reference ROS专门提供了一种机器人…

clion配置ssh隧道转发 实现远程主机功能

clion配置ssh隧道转发 clion自带的ssh配置只能配置主机和用户名的格式来实现ssh&#xff0c;因此如果需要通过中间设备来访问调试主机的话就无法使用了。 配置ssh隧道的方式有两种&#xff0c;一种是直接配置 ~/.ssh/config 配置文件&#xff0c;一种是使用跳板机工具。clion…

Java邮件客户端设计实现:使用JavaMail向QQ邮箱发邮件

目录 JavaMail 用JavaMail向qq邮箱发消息 ▐ 授权码的获取 JavaMail JavaMail 是一个用于发送和接收电子邮件的 Java API。它提供了一个平台无关和协议无关的框架&#xff0c;允许开发人员通过标准电子邮件协议&#xff08;如 SMTP、POP3 和 IMAP&#xff09;来创建、发送…

【TB作品】MSP430 G2553 单片机口袋板,电风扇模拟控制系统设计

功能 电风扇模拟控制系统设计 基本要求: 用LED/LCD 显示电风扇的工作状态 (1,2,3,4 四档风力), 显示风类:“自然风”、“常风”和“睡眠风”。 设计 “自然风”“常风”和“睡眠风” 三个风类键用于设置风类 设计一个“摇头”键用于控制电机摇头。 设计一个“定时”键&#x…

如何快速理解并掌握Java泛型的概念和使用方法

Java泛型&#xff08;Generics&#xff09;是Java SE 5引入的一种语言特性&#xff0c;旨在增强类型安全性和代码的重用性。泛型允许类、接口和方法操作对象的特定类型&#xff0c;同时在编译时进行类型检查。通过使用泛型&#xff0c;我们可以编写更通用、更灵活的代码&#x…

Linux用docker安装ElasticsearchSpringBoot整合ES

一. 部署Elasticsearch 1. docker查询docker容器中的es docker search elasticsearch 2. 安装&#xff08;PS&#xff1a;查看自己的springBoot的版本号 对应的es版本安装&#xff09; docker pull elasticsearch:7.6.23. 查看已安装的docker镜像 docker images4. 创建挂…

再论Web应用在医学研究中构建数据收集问卷(stremlit_survey包体验)

再论Web应用在医学研究中构建数据收集问卷&#xff08;Streamlit_survey包体验&#xff09; 概述 医学队列研究是临床研究的重要形式&#xff0c;这种研究通过收集临床诊疗过程中产生的数据而阐述疾病相关的因素。在临床数据收集过程中&#xff0c;Web APP体现出了一定的优势…

SpringBoot项目本地运行正常,jar包运行时前端报错403:No mapping for......

SpringBoot项目本地运行正常&#xff0c;jar包运行时前端报错403&#xff1a;No mapping for… 提示&#xff1a;在部署jar包到云服务器上之前&#xff0c;一定要在本地运行jar包&#xff0c;查看前端代码是否运行正常&#xff0c;若报错的话可以节省很多时间 方式&#xff1a;…

Linux命令篇(六):vi/vim专项

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝您生活愉快&#xff01; 文章目录 一、什么是vim二…

弘君资本:如何看待股价波动?

在股票商场上股价的动摇无疑是投资者最为关怀的话题之一&#xff0c;面临股价的起伏不定投资者往往会感到迷茫和焦虑。对于怎么看待股价动摇&#xff0c;弘君资本下面就为我们具体介绍一下。 股价动摇是股市运转的常态&#xff0c;股市是国民经济的晴雨表&#xff0c;股票价格…

关于大模型是否开源的分析

引言 随着科技的迅速发展&#xff0c;大模型技术成为推动人工智能前沿的引擎&#xff0c;而开源与闭源之争成为这场技术风暴中的一道独特风景。特斯拉CEO马斯克的言论将开源的旗帜高高举起&#xff0c;宣示着技术的共享和合作的时代已经来临。然而&#xff0c;在数字化时代&am…

机器视觉检测--光源

一&#xff0c;环形光源 较为常见的LED光源之一&#xff0c;提供基本的照明作用。 随着光源距离产品的工作距离LWD变化而产生的亮度分布&#xff0c;如下图暖色表示亮&#xff1b;冷色表示暗。 同时该图示是针对特定一款大小的环形光源的数据&#xff08;下同&#xff09;。 二…