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

news2024/11/15 8:43:56

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


 

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

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

相关文章

resultType的类型错误

resultType的类型错误&#xff0c;不能是List而应该是对应的返回Bean对象的类型&#xff0c;VO 这里是引用 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: Error querying database. Cause: java.lang…

【Python】【PVE】使用PVE-API对虚拟机进行远程关机

源代码 import requests import urllib3 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)address "填写PVE的域名/IP:端口" path "/api2/json/nodes/填写节点名称/qemu/填写虚拟机VMID/status/shutdown" url "https://&quo…

vs - vs2013中编译sqlite3.44.2

文章目录 vs - vs2013中编译sqlite3.44.2概述笔记工程输出归档END vs - vs2013中编译sqlite3.44.2 概述 以前在vs2019下编译了sqlite3.44.2, 好使。做了笔记(sqlite3.44.2的编译) 现在准备将手头的vs2019工程改为vs2013的&#xff0c;自然要将sqlite也编译为vs2013版本的。 按…

Python for循环 使用两个变量

https://geek-docs.com/python/python-ask-answer/336_python_for_loop_with_two_variables.html 一、使用zip()函数进行迭代 zip()函数可以将两个或多个可迭代对象打包成一个元组序列。 fruits [apple, banana, orange] prices [0.5, 0.3, 0.4]for fruit, price in zip(f…

【C++】C++提供类型转换的机制

目录 前言&#xff1a; 一&#xff0c;static_cast 二&#xff0c;reinterpret_cast 三&#xff0c;const_cast 四&#xff0c;dynamic_cast 前言&#xff1a; 传统的不同类型转换有隐式类型转换&#xff08;类型不匹配时编译器自动进行的转换&#xff0c;如&#xff1a;i…

记一次安卓.apk加固,加固后安装失败,重新签名也安装失败问题

1、AndroidStudio打包生成.apk文件 2、使用360加固apk&#xff08;或其他平台&#xff09; 注意&#xff1a;加固后的apk必须进行重新签名才能安装&#xff0c;否则安装失败。apk签名可以使用jarsigner 和 apksigner&#xff0c;jarsigner 只能进行v1签名&#xff1b;apksigner…

Linux ip命令常用操作

ip 命令来自 iproute2 软件包&#xff0c;在 CentOS 7 中默认已安装&#xff08;yum install -y iproute&#xff09;。 iproute2 软件包提供了很多命令&#xff08;rpm -ql iproute |grep bin&#xff09;&#xff0c;如 ss 命令、bridge&#xff0c;这些命令可以完全替代 if…

【CMake系列】06-项目结构与输出路径管理

为了对大型项目实现更好的管理【模块化协作开发等等】&#xff0c;cmake 提供了很多指令&#xff0c;可以对项目的结构进行调整、管理&#xff0c;便于项目的合理规划。本文我们要学习的就是 项目结构的设置&#xff0c;以及 构建程序等 输出路径的设置 本专栏的实践代码全部放…

【MySQL】Linux安装MySQL

一、center OS环境准备 为了在Linux系统中查看MySQL5.8与8.0版本的区别 我们要准备两个虚拟机&#xff0c;需要的软件&#xff1a;VMware和CentOS7 因为博主之前在学习redis的时候已经安装过一个虚拟机了&#xff0c;所以我就直接克隆了一个CentOS2.0 修改mac地址&#xff0…

mysql8.0中的mysql.ibd

mysql8.0版本中多了一个mysql.ibd的文件。5.7版本则没有这个文件。 MySQL5.7: .frm文件 存放表结构信息 .opt文件&#xff0c;记录了每个库的一些基本 信息&#xff0c;包括库的字符集等信息 .TRN&#xff0c;.TRG文件用于存放触发器的信 息内容。 在MySQL 8.0之前&#xff0…

Windows10系统中安装与配置PyTorch(无GPU版本)

文章目录 1. 什么是PyTorch2. PyTorch的安装与配置&#xff08;无GPU&#xff09;2.1 创建环境2.2 安装pytorch库&#xff08;无GPU&#xff09;2.3 验证安装结果 1. 什么是PyTorch PyTorch 是一种用于构建深度学习模型且功能完备的开源框架&#xff0c;通常用于处理图像识别和…

计算机网络学习实践:模拟RIP动态路由

计算机网络学习实践&#xff1a;模拟RIP动态路由 模拟动态路由RIP协议 1.实验准备 实验环境&#xff1a;华为模拟器ENSP 实验设备&#xff1a; 3个路由器&#xff0c;3个二层交换机&#xff08;不是三层的&#xff09;&#xff0c;3个PC机 5个网段 192.168.1.0 255.255.…

【C++】STL:栈和队列模拟实现

&#x1f49e;&#x1f49e; 前言 hello hello~ &#xff0c;这里是大耳朵土土垚~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#x…

spring boot sso

代码&#xff1a;https://gitee.com/forgot940629/ssov2 授权服务 登录成功后&#xff0c;session中会存储UsernamePasswordAuthenticationToken&#xff0c;之后每次请求code时都会用UsernamePasswordAuthenticationToken生成OAuth2Authentication&#xff0c;并将OAuth2Aut…

【远程连接服务器】—— Workbench和Xshell远程连接阿里云服务器失败和运行Xshell报错找不到 MSVCP110.d的问题分析及解决

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、远程连接不上服务器1. Workbench远程连接失败2.Xshell也连接不上3.解决方法(1)问题描述&#xff1a;(2)解决&#xff1a; 4.再次连接服务器 二、运行Xshell…

SpringBoot 基于jedis实现Codis高可用访问

codis与redis的关系 codis与redis之间关系就是codis是基于多个redis实例做了一层路由层来进行数据的路由&#xff0c;每个redis实例承担一定的数据分片。 codis作为开源产品&#xff0c;可以很直观的展示出codis运维成本低&#xff0c;扩容平滑最核心的优势. 其中&#xff0…

算法第三天力扣第69题:X的平方根

69. x 的平方根 (可点击下面链接或复制网址进行做题) https://leetcode.cn/problems/sqrtx/https://leetcode.cn/problems/sqrtx/ 给你一个非负整数 x &#xff0c;计算并返回 x 的 算术平方根 。 由于返回类型是整数&#xff0c;结果只保留 整数部分 &#xff0c;小数部分将被…

【实战JVM】-实战篇-06-GC调优

文章目录 1 GC调优概述1.1 调优指标1.1.1 吞吐量1.1.2 延迟1.1.3 内存使用量 2 GC调优方法2.1 发现问题2.1.1 jstat工具2.1.2 visualvm插件2.1.3 PrometheusGrafana2.1.4 GC Viewer2.1.5 GCeasy 2.2 常见GC模式2.2.1 正常情况2.2.2 缓存对象过多2.2.3 内存泄漏2.2.4 持续FullGC…

GAT1399协议分析(六)--校时

一、官方消息定义 DeviceIDType &#xff1a;GA/T1400.1,采集设备、 卡口点位、 采集系统、分析系统、视图库、应用平台等设备编码规则 TimeCorrectModeType&#xff1a; dateTime时间格式&#xff1a; TimeZone&#xff1a;时区&#xff0c;GAT1400里面没有找到具体内容&…

大家都在用的4款超实用视频剪辑软件,快来码住自用吧!

随着自媒体行业的不断发展&#xff0c;不少小伙伴也逐渐步入了短视频的热潮。对于短视频制作来说&#xff0c;视频剪辑软件的选择非常重要。 如果剪辑软件不够好&#xff0c;整个视频就基本垮掉了。今天就给大家推荐4款好用的视频剪辑软件。 1.牛学长视频剪辑 推荐剪辑新手入门…