Docker 下备份恢复oracle

1.docker导出容器镜像

##docker save -o 导出后的镜像名称.tar 容器名称|镜像id

docker save -o oracle_11g.tar 3fa112fd3642

2.下载镜像上传镜像略

3.加载镜像

##docker load -i <archive_file>

docker load -i oracle11g11201.tar

4.添加版本号默认是没有版本号的

##docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

docker tag 3116 registry.cn-zhangjiakou.aliyuncs.com/jyzx/oracle_11.2.0.1:v1

5.初始化容器

docker run -itd --name oracle11g -h jyzx_oracle --restart=always --privileged=true -p 1521:1521 -v /Users/xx/dpdump:/u01/app/oracle/admin/ORCL/dpdump/ registry.cn-zhangjiakou.aliyuncs.com/jyzx/oracle_11.2.0.1:v1

6.查看状态

docker ps

7.进入容器

docker exec -it oracle11g bash

#这一步一定要

su - oracle

sqlplus /nolog

conn /as sysdba

剩下的就创建表空间用户了

默认用户名 system/system

1.创建表空间

CREATE TABLESPACE khgl DATAFILE '/opt/oracle/app/oradata/orcl/khgl01.dbf' SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED;

删除表空间:

DROP TABLESPACE khgl INCLUDING CONTENTS AND DATAFILES;

2.创建用户create user khgl identified by sa;

表空间给用户

ALTER USER khgl IDENTIFIED BY sa DEFAULT TABLESPACE khgl TEMPORARY TABLESPACE temp;

ALTER USER khgl QUOTA UNLIMITED ON khgl;

或者创建用户并分配表空间

create user khgl identified by sa default tablespace khgl;

并给用户赋予权限grant connect,resource,dba to khgl;

3.#容器外执行数据库备份和恢复

--1.备份

#docker exec 容器名|ID su oracle -lc "expdp 用户名/密码@127.0.0.1:1521/orcl directory=DATA_PUMP_DIR dumpfile=备份文件名.dmp logfile=备份文件名.log compression=all"

示例

docker exec oracle11g su oracle -lc "expdp khgl/sa@127.0.0.1:1521/orcl directory=DATA_PUMP_DIR dumpfile=khgl_20240806_1800.dmp logfile=khgl_20240806_1800.log compression=all"

结果展示

Dump file set for KHGL.SYS_EXPORT_SCHEMA_03 is:

/opt/oracle/dpdump/khgl_20240806_1800.dmp

Job "KHGL"."SYS_EXPORT_SCHEMA_03" successfully completed at 10:10:44

2.容器外面拷贝 把容器内把文件拷贝出来

##docker cp <container_id>:/path/to/container/file /path/to/host/destination

docker cp oracle11g:/opt/oracle/dpdump/khgl_20240806_1800.dmp /Users/liuyulong/dpdump/

3.恢复

1.把本地文件复制到容器内dump目录 直接在本地目录好像不行

docker cp /Users/liuyulong/dpdump/khgl_20240805_230018.dmp oracle11g:/opt/oracle/dpdump/khgl_20240805_230018.dmp

--恢复

#语法:docker exec oracle11g su oracle -lc "impdp 用户名/密码@127.0.0.1:1521/orcl directory=DATA_PUMP_DIR remap_schema=原用户名:导入后的用户名 REMAP_TABLESPACE=原表空间名:目标表空间名 dumpfile=备份文件名.dmp"

2.导入备份文件到数据库

示例:

docker exec oracle11g su oracle -lc "impdp khgl/sa@127.0.0.1:1521/orcl directory=DATA_PUMP_DIR remap_schema=khgl:khgl REMAP_TABLESPACE=khgl:khgl dumpfile=khgl_20240805_230018.dmp"

相关推荐
希忘auto15 小时前
详解Redis的常用命令
redis·1024程序员节
yaosheng_VALVE1 天前
探究全金属硬密封蝶阀的奥秘-耀圣控制
运维·eclipse·自动化·pyqt·1024程序员节
dami_king1 天前
SSH特性|组成|SSH是什么?
运维·ssh·1024程序员节
一个通信老学姐6 天前
专业125+总分400+南京理工大学818考研经验南理工电子信息与通信工程,真题,大纲,参考书。
考研·信息与通信·信号处理·1024程序员节
sheng12345678rui6 天前
mfc140.dll文件缺失的修复方法分享,全面分析mfc140.dll的几种解决方法
游戏·电脑·dll文件·dll修复工具·1024程序员节
huipeng9267 天前
第十章 类和对象(二)
java·开发语言·学习·1024程序员节
earthzhang20217 天前
《深入浅出HTTPS》读书笔记(19):密钥
开发语言·网络协议·算法·https·1024程序员节
爱吃生蚝的于勒8 天前
计算机基础 原码反码补码问题
经验分享·笔记·计算机网络·其他·1024程序员节
earthzhang20218 天前
《深入浅出HTTPS》读书笔记(20):口令和PEB算法
开发语言·网络协议·算法·https·1024程序员节
一个通信老学姐8 天前
专业140+总分410+浙江大学842信号系统与数字电路考研经验浙大电子信息与通信工程,真题,大纲,参考书。
考研·信息与通信·信号处理·1024程序员节