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

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

时间:2024-06-02 23:58:16浏览次数:33  
标签:zip 0.1 12.2 oracle docker PDB

基于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文件没有被删除。

(3)cd $ORACLE_HOME/dbs

(4)ls lk*

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

(6)rm 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容器制作和迁移


 

标签:zip,0.1,12.2,oracle,docker,PDB
From: https://blog.csdn.net/xingyuemengjin/article/details/139397083

相关文章

  • Docker的网络管理
    目录一、Docker容器之间的通信1、直接互联(默认Bridge网络)1.1、Docker安装后默认的网络配置1.2、创建容器后的网络配置1.2.1、首先创建一个容器1.2.2、ipa列出网卡变化信息1.2.3、查看新建容器后的桥接状态1.3、容器内安装常见的工具1.4、容器间通信2、容器名称互联2.1、原理2.2......
  • docker学习--docker容器镜像常用命令大全(简)
    文章目录一、镜像命令二、容器管理命令一、镜像命令dockersearch#搜索镜像dockerpull/push#下载/上传镜像dockerimages#查看所有本地主机上的镜像可以使用dockerimagels代替dockertag#源镜像名新镜像名dockerrmi#删除镜像dockerimageprune#移......
  • Docker的安装、启动和配置镜像加速
    前言:        Docker分为CE和EE两大版本。CE即社区版(免费,支持周期7个月),EE即企业版,强调安全,付费使用,支持周期24个月。    而企业部署一般都是采用Linux操作系统,而其中又数CentOS发行版占比最多,因此这里主要展示 DockerCE在CentOS上的安装一、......
  • 使用 docker-compose 部署 zookeeper(单机和集群)
    我之前编写了一些zookeeper的博客,当时是在windows系统上部署的单机版,在实际应用中绝大多数情况下都是部署在Linux系统上,因此很有必要介绍一下如何在CentOS7上快速部署zookeeper的单机版和集群版。这里就不详细介绍zookeeper了,网上资料很多,也可以查看官网或者我之前的......
  • 成为MySQL DBA后,再看ORACLE数据库(五、内存管理)
    一、前言在数据库的体系结构中,内存区是非常关键的一部分,一般而言数据库实例也是由内存+后台进程组成。不同于MySQL的单进程多线程架构,ORACLE是多进程架构,所以在内存管理上也更加复杂。ORACLE的内存管理一般分两部分:PGA(ProgramGlobalArea)和SGA(SystemGlobalArea)。翻开当年学习O......
  • Ubuntu18.04利用docker成功安装Autoware的一次记录
    整整安装了两周的autoware终于安装好了,中途遇上了太多问题,踩了太多坑。所以我决定记录这次成功的过程,让像我一样的小白能少走弯路。技术小白的成长之路--嘎嘎嘎先放几个介绍非常清楚的其他博主的教程:【Ubuntu18.04】Autoware安装_ubuntu18.04安装autoware-CSDN博客ubuntu18.......
  • Docker环境下部署Tomcat、Nginx
    docker部署常见应用-Tomcat&Nginx为了简便先禁用防火墙systemctlstopfirewalld部署基本流程搜索镜像——拉取镜像——创建专用目录——运行容器——测试部署Tomcat1.搜索镜像dockersearchtomcat2.拉取镜像dockerpulltomcat3.创建tomcat专用目录#我......
  • oracle数据库文件
    oracle数据库重要的文件包括参数文件,控制文件,数据文件,临时文件,重做日志文件。1参数文件oracle的参数文件可以设置数据库的名称,SGA和PGA的大小,控制文件的路径等系统参数。这些参数可以通过V$PARAMETER视图进行查询。oracle有两类参数文件,分别为pfile参数文件和spfile参数文件。o......
  • Docker 部署 Python 服务
    app.pyfromflaskimportFlaskfromredisimportRedis,RedisErrorimportosimportsocket#ConnecttoRedisredis=Redis(host="redis",db=0,socket_connect_timeout=2,socket_timeout=2)app=Flask(__name__)@app.route("/")defhe......
  • Docker 部署 mysql 服务
    linux用法Container(容器)集合成Services(服务)交互集合成Stack(堆栈)卸载可能存在的旧版本sudoapt-getupdate使apt可以通过HTTPS使用存储库(repository)sudoapt-getinstall-yapt-transport-httpsca-certificatescurlsoftware-properties-common添加Docker官方的......