oracle恢复分片和非分片备份?

news2025/1/16 13:45:01

分片备份命令参考:适合大数据库并行备份提高备份速度

对于超大数据库,混合有小文件和大文件表空间,section size 表示分片,大小一般大于32G,可结合通道数量设置最佳值。

run {
allocate channel t1 type disk;
allocate channel t2 type disk;
allocate channel t3 type disk;
allocate channel t4 type disk;
backup section size 32768m as backupset incremental level=0 tablespace DATA,USERS,JYC_BIG,JYC_BIG2 format '/bak/jycdb0_%U' tag=jycdb0;
release channel t1;
release channel t2;
release channel t3;
release channel t4;
}

非分片的恢复:可以多个数据文件一次性恢复

set serveroutput on size 1000000
DECLARE
v_dev varchar2(50);
v_done boolean:=FALSE;
type t_fileTable is table of varchar2(255) index by binary_integer;
v_fileTable t_fileTable;
type t_dataTable is table of varchar2(4000) index by binary_integer;
v_dataTable t_dataTable;

v_maxPieces number:=1;
v_maxFiles number:=1;
v_restore_from varchar2(4);
v_file_no number:=0;
v_file_name varchar2(513);
v_debug boolean:=FALSE; -- Optional Change to TRUE to Debug PL/SQL.
v_msr boolean;

BEGIN
-- CHANGE 1.
-- Populate the file table below with datafiles to be restored.
-- This matches the output from logs.

v_dataTable(1):='fno=4 name=/home/db/oracle/oradata/hisdb/users01.dbf';
v_dataTable(2):='fno=9 name=/home/db/oracle/oradata/hisdb/data03.dbf';
v_dataTable(3):='fno=7 name=/home/db/oracle/oradata/hisdb/data01.dbf';
v_dataTable(4):='fno=8 name=/home/db/oracle/oradata/hisdb/data02.dbf';
v_dataTable(5):='fno=5 name=/home/db/oracle/oradata/hisdb/users02.dbf';
v_dataTable(6):='fno=10 name=/home/db/oracle/oradata/hisdb/data04.dbf';
v_dataTable(7):='fno=6 name=/home/db/oracle/oradata/hisdb/users03.dbf';

--
-- CHANGE 2.
-- Set the below to the max number of files to be restored from above table.

v_maxFiles := 7;

-- CHANGE 3.
-- Set the Below To the name of the backup pieces you wish to reference.
-- Use backup.log if available to locate all backup pieces for a backup.
-- If backup is on Disk ensure you have directories as well,
-- If tape then just use the backup piece name.

v_fileTable(1):='/bak/hisdb0_1b2eh346_1_1';
v_fileTable(2):='/bak/hisdb0_172eh345_1_1';
v_fileTable(3):='/bak/hisdb0_162eh345_1_1';
v_fileTable(4):='/bak/hisdb0_152eh345_1_1';


-- CHANGE 4.
-- Set the below to the total number of backup pieces in Backup to restore.
--

v_maxPieces:=4;

-- CHANGE 5. (Optional If Tape)
-- Set the below to TAPE if RESTORE FROM TAPE.
--
v_restore_from := 'DISK';

-- CHANGE 6 - change this to TRUE for multi-section backup
--v_msr := TRUE;
v_msr := FALSE;
IF (v_msr) THEN
v_maxFiles := 8;
END IF;

dbms_output.put_line('Restoring All Data Files :');
dbms_output.put_line('-----------------');

For i IN 1..v_maxFiles LOOP
v_file_no := substr(v_dataTable(i),5,instr(v_dataTable(i),' ',1,1)-5);
v_file_name :=substr(v_dataTable(i),instr(v_dataTable(i),'=',1,2)+1);

dbms_output.put_line('Attempting To Restore :'||v_file_name);

FOR i IN 1..v_maxPieces LOOP
BEGIN
IF v_restore_from = 'DISK' THEN
v_dev:=sys.dbms_backup_restore.deviceAllocate(type=>null,ident=>'D1');
ELSE
-- CHANGE 7. (Optional Tape Only).
-- Remember to set Params correctly for tape media.
-- If not required then remove parameter.
--
v_dev:=sys.dbms_backup_restore.deviceAllocate(type=>'sbt_tape',ident=>'T1',params=>'SBT_LIBRARY=oracle.
disksbt,ENV=(BACKUP_DIR=/u003/backup/ORA1020/)');
END IF;

sys.dbms_backup_restore.restoreSetDatafile;
sys.dbms_backup_restore.restoreDataFileTo(dfnumber=>v_file_no,toname=>v_file_name);

IF (i = 1 AND v_msr) THEN
sys.dbms_backup_restore.initMSR(dfnumber=>v_file_no,fname=>v_file_name);
END IF;

dbms_output.put_line('----------------');
dbms_output.put_line('Trying : '||v_fileTable(i)||' From : '||v_restore_from);

sys.dbms_backup_restore.restoreBackupPiece(done=>v_done,handle=>v_fileTable(i),params=>null);
EXCEPTION
WHEN OTHERS THEN
IF v_debug THEN
dbms_output.put_line(SQLERRM);
ELSE
dbms_output.put_line('Data File: Not Found');
END IF;
sys.dbms_backup_restore.deviceDeallocate;
sys.dbms_backup_restore.restoreCancel;
END;

IF v_done THEN
dbms_output.put_line('Data File : Found');
dbms_output.put_line('----------------');
dbms_output.put_line('RESTORED Data File To: '||v_file_name);
sys.dbms_backup_restore.deviceDeallocate;
sys.dbms_backup_restore.restoreCancel;
v_done:=FALSE;
exit WHEN NOT v_msr;
END IF;
END LOOP;
 
IF (v_msr) THEN
sys.dbms_backup_restore.setParms(p0 => 5, p1 => v_file_no, p5 => v_file_name);
END IF;
END LOOP;
END;
/

分片的恢复:v_maxFiles只能是1,也就是说只能恢复一个数据文件的分片恢复,不能同时多个数据文件同时恢复分片。

image.png

set serveroutput on size 1000000
DECLARE
v_dev varchar2(50);
v_done boolean:=FALSE;
type t_fileTable is table of varchar2(255) index by binary_integer;
v_fileTable t_fileTable;
type t_dataTable is table of varchar2(4000) index by binary_integer;
v_dataTable t_dataTable;

v_maxPieces number:=1;
v_maxFiles number:=1;
v_restore_from varchar2(4);
v_file_no number:=0;
v_file_name varchar2(513);
v_debug boolean:=FALSE; -- Optional Change to TRUE to Debug PL/SQL.
v_msr boolean;

BEGIN
-- CHANGE 1.
-- Populate the file table below with datafiles to be restored.
-- This matches the output from logs.
v_dataTable(1):='fno=4 name=/home/db/oracle/oradata/hisdb/users01.dbf';

--
-- CHANGE 2.
-- Set the below to the max number of files to be restored from above table.

v_maxFiles := 1;

-- CHANGE 3.
-- Set the Below To the name of the backup pieces you wish to reference.
-- Use backup.log if available to locate all backup pieces for a backup.
-- If backup is on Disk ensure you have directories as well,
-- If tape then just use the backup piece name.

v_fileTable(1):='/bak/hisdb0_1o2em1lf_2_1';
v_fileTable(2):='/bak/hisdb0_1o2em1lf_1_1';

-- CHANGE 4.
-- Set the below to the total number of backup pieces in Backup to restore.
--

v_maxPieces:=2;

-- CHANGE 5. (Optional If Tape)
-- Set the below to TAPE if RESTORE FROM TAPE.
--
v_restore_from := 'DISK';

-- CHANGE 6 - change this to TRUE for multi-section backup
v_msr := TRUE;
--v_msr := FALSE;
IF (v_msr) THEN
v_maxFiles := 1;
END IF;

dbms_output.put_line('Restoring All Data Files :');
dbms_output.put_line('-----------------');

For i IN 1..v_maxFiles LOOP
v_file_no := substr(v_dataTable(i),5,instr(v_dataTable(i),' ',1,1)-5);
v_file_name :=substr(v_dataTable(i),instr(v_dataTable(i),'=',1,2)+1);

dbms_output.put_line('Attempting To Restore :'||v_file_name||'|'||v_file_no);

FOR i IN 1..v_maxPieces LOOP
BEGIN
IF v_restore_from = 'DISK' THEN
v_dev:=sys.dbms_backup_restore.deviceAllocate(type=>null,ident=>'D1');
ELSE
-- CHANGE 7. (Optional Tape Only).
-- Remember to set Params correctly for tape media.
-- If not required then remove parameter.
--
v_dev:=sys.dbms_backup_restore.deviceAllocate(type=>'sbt_tape',ident=>'T1',params=>'SBT_LIBRARY=oracle.
disksbt,ENV=(BACKUP_DIR=/u003/backup/ORA1020/)');
END IF;

sys.dbms_backup_restore.restoreSetDatafile;
sys.dbms_backup_restore.restoreDataFileTo(dfnumber=>v_file_no,toname=>v_file_name);

IF (i = 1 AND v_msr) THEN
sys.dbms_backup_restore.initMSR(dfnumber=>v_file_no,fname=>v_file_name);
dbms_output.put_line('sys.dbms_backup_restore.initMSR(dfnumber=>'||v_file_no||',fname=>'||v_file_name);
END IF;


dbms_output.put_line('----------------');
dbms_output.put_line('Trying : '||v_fileTable(i)||' From : '||v_restore_from);

sys.dbms_backup_restore.restoreBackupPiece(done=>v_done,handle=>v_fileTable(i),params=>null);
dbms_output.put_line('sys.dbms_backup_restore.restoreBackupPiece(done=>v_done,handle=>'||v_fileTable(i)
||',params=>null');
EXCEPTION
WHEN OTHERS THEN
IF v_debug THEN
dbms_output.put_line(SQLERRM);
ELSE
dbms_output.put_line('Data File: Not Found');
END IF;
sys.dbms_backup_restore.deviceDeallocate;
sys.dbms_backup_restore.restoreCancel;
END;

IF v_done THEN
dbms_output.put_line('Data File : Found');
dbms_output.put_line('----------------');
dbms_output.put_line('RESTORED Data File To: '||v_file_name);
sys.dbms_backup_restore.deviceDeallocate;
sys.dbms_backup_restore.restoreCancel;
v_done:=FALSE;
exit WHEN NOT v_msr;
END IF;
END LOOP;
 
IF (v_msr) THEN
sys.dbms_backup_restore.setParms(p0 => 5, p1 => v_file_no, p5 => v_file_name);
END IF;
END LOOP;
END;
/

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

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

相关文章

PostGreSQL:货币类型

货币类型:money money类型存储固定小数精度的货币数字,小数的精度由数据库的lc_monetary设置决定。windows系统下,该配置项位于/data/postgresql.conf文件中,默认配置如下, lc_monetary Chinese (Simplified)_Chi…

redis基本用法学习(C#调用CSRedisCore操作redis)

除了NRedisStack包,csredis也是常用的redis操作模块(从EasyCaching提供的常用redis操作包来看,CSRedis、freeredis、StackExchange.Redis应该都属于常用redis操作模块),本文学习使用C#调用CSRedis包操作redis的基本方式…

【Spring Security】打造安全无忧的Web应用--使用篇

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于Spring Security的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.Spring Security中的授权是…

阿贝云云服务器

最近,我有幸获得了阿贝云提供的免费云服务器,阿贝云_免费云服务器、高防服务器、虚拟主机、免费空间、免费vps主机服务商!并在使用过程中有了一些深刻的体验和感受。在这篇博客中,我将分享我对阿贝云免费云服务器的使用感受和评价。 首先&am…

【iOS】UICollectionView

文章目录 前言一、实现简单九宫格布局二、UICollectionView中的常用方法和属性1.UICollectionViewFlowLayout相关属性2.UICollectionView相关属性 三、协议和代理方法:四、九宫格式的布局进行升级五、实现瀑布流布局实现思路实现原理代码调用顺序实现步骤实现效果 总…

需求分析工程师岗位的职责描述(合集)

需求分析工程师岗位的职责描述1 职责: 1,负责需求调研,对需求进行分析,编写解决方案、需求规格说明书等 2,根据需求制作原型,并负责原型展示以及客户沟通等工作 3,负责向技术团队精确地传达业务…

排序算法——桶排序

把数据放进若干个桶,然后在桶里用其他排序,近乎分治思想。从数值的低位到高位依次排序,有几位就排序几次。例如二位数就排两次,三位数就排三次,依次按照个十百...的顺序来排序。 第一次排序:50 12 …

Unity手机移动设备重力感应

Unity手机移动设备重力感应 一、引入二、介绍三、测试成果X Y轴Z轴横屏的手机,如下图竖屏的手机,如下图 一、引入 大家对重力感应应该都不陌生,之前玩过的王者荣耀的资源更新界面就是使用了重力感应的概念,根据手机的晃动来给实体…

EPROM 作为存储器的 8 位单片机

一、基本概述 TX-P01I83 是以 EPROM 作为存储器的 8 位单片机,专为多 IO 产品的应用而设计,例如遥控器、风扇/灯光控制或是 玩具周边等等。采用 CMOS 制程并同时提供客户低成本、高性能等显着优势。TX-P01I83 核心建立在 RISC 精简指 令集架构可以很容易…

SQL优化-深入了解SQL处理流程原理(Server层与存储引擎交互、数据管理结构)

做SQL优化的前提就必须要清楚当一个SQL被发送到Mysql时,它的处理流程。下面通过一个SQL优化分析过程来详细了解Mysql对SQL执行流程原理。 1、Mysql架构 在上篇文章中已经做了简单架构介绍,Mysql架构分为两个大的组件:Server层、存储层 Mysq…

vue3项目 - Eslint 配置代码风格

Eslint 自定义配置 总结: Prettier (代码规范的插件,格式化 )---> 美观 Eslint (规范、纠错、检验错误 )-----> 纠错 首先,禁用 Prettier 插件,安装 ESLint 插件&#x…

【量化金融】证券投资学

韭菜的自我修养 第一章: 基本框架和概念1.1 大盘底部形成的技术条件1.2 牛市与熊市1.3 交易系统1.3.1 树懒型交易系统1.3.2 止损止损的4个技术 第二章:证券家族4兄弟2.1 债券(1)债券,是伟大的创新(2&#x…

案例147:基于微信小程序的酒店管理系统

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

重构云计算,打造 AI 原生时代的云计算产品与技术体系,实现 AI 零距离

概述 自 ChatGPT 大模型横空出世以来,文心一言、通义千问等诸多大模型接踵而来,感觉这个世界每天都在发生着翻天覆地的变化。 今年很有幸,参与了云栖的盛宴,当时被震惊到瞠目结舌,12 月 20 日百度云智能云智算大会&a…

使用Python自己写了一个Renpy 汉化插件

之前看了很多教程都是Renpy怎么解包、怎么创建翻译文件,对翻译过程没有过多讲解,就根据翻译文件写了一个小程序,如果需要的可以自行下载使用。 使用方法: 1.按照正常unrpa的解包方式renpy进行解包; 2.使用renpy-sdk…

Bloom过滤器

Bloom过滤器 一、概述二、原理三、优缺点1. 优点2.缺点 四、Bloom过滤器在比特币中的应用五、项目应用步骤1. pom.xml引入依赖2. 样例代码 六、Java版简易实现 一、概述 Bloom过滤器是一个允许用户描述特定的关键词组合而不必精确表述的基于概率的过滤方法。它能让用户在有效搜…

新型智慧城市解决方案:PPT全文56页,附下载

关键词:智慧城市解决方案,智慧城市管理技术,智慧城市建设,数字城市建设 一、智慧城市宏观形势 1、政策支持:出台了一系列政策,鼓励和支持智慧城市的发展。这些政策为智慧城市的建设提供了政策保障和资金支…

Confluent 与阿里云将携手拓展亚太市场,提供消息流平台服务

10 月 31 日,杭州云栖大会上,阿里云云原生应用平台负责人丁宇宣布,Confluent 成为阿里云技术合作伙伴,合作全新升级,一起拓展和服务亚太市场。 本次合作伙伴签约,阿里云与消息流开创领导者 Confluent 将进一…

Zabbix6 使用Agent2实现证书监控的详细步骤

目标 我们的目标是通过获取网站的证书信息来实现网站证书监控。 使用agent2的key 只需使用其中的key,就能实现我们的目标功能。然而,由于它返回的是json格式的数据,我们需要根据数据来配置监控项目(item)和触发器&am…

Jenkins自动化部署之后端

准备工作参考本人另外几篇Jenkins相关的文章 新建任务 添加参数配置 字符串参数:分支名称 多选框:项目名称(Extended Choice Parameter插件必备,插件安装参考我另外的文章) 这个分割规则自定义。只要根据Jenkins…