<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>惜分飞 &#187; tape 备份 disk通道还原</title>
	<atom:link href="https://www.xifenfei.com/tag/tape-%e5%a4%87%e4%bb%bd-disk%e9%80%9a%e9%81%93%e8%bf%98%e5%8e%9f/feed" rel="self" type="application/rss+xml" />
	<link>https://www.xifenfei.com</link>
	<description>提供7*24专业数据库(Oracle,SQL Server,MySQL,PostgreSQL等)恢复和技术支持@Tel:17813235971</description>
	<lastBuildDate>Wed, 04 Nov 2026 15:33:30 +0000</lastBuildDate>
	<language>zh-CN</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	
	<item>
		<title>RMAN SBT_TAPE备份通过小程序修改实现直接DISK通道还原</title>
		<link>https://www.xifenfei.com/2025/09/rman-sbt_tape-backup-disk-restore.html</link>
		<comments>https://www.xifenfei.com/2025/09/rman-sbt_tape-backup-disk-restore.html#comments</comments>
		<pubDate>Wed, 03 Sep 2025 10:28:35 +0000</pubDate>
		<dc:creator><![CDATA[惜分飞]]></dc:creator>
				<category><![CDATA[rman备份/恢复]]></category>
		<category><![CDATA[tape 备份 disk通道还原]]></category>

		<guid isPermaLink="false">https://www.xifenfei.com/?p=11626</guid>
		<description><![CDATA[联系：手机/微信(+86 17813235971) QQ(107644445)  &#8230; <a href="https://www.xifenfei.com/2025/09/rman-sbt_tape-backup-disk-restore.html">继续阅读 <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<div id="xifenfeicopyright">
<p>联系：<a href="https://www.xifenfei.com/about_xifenfei" target="_blank">手机/微信(+86 17813235971)   QQ(107644445)</a><a target="_blank" href="http://wpa.qq.com/msgrd?v=3&#038;uin=107644445&#038;site=qq&#038;menu=yes"><img src="https://www.xifenfei.com/wp-content/themes/img/site_qq.jpg" alt="QQ咨询惜分飞" title="QQ咨询惜分飞"/></a></p>
<p>标题：<a href="https://www.xifenfei.com/2025/09/rman-sbt_tape-backup-disk-restore.html" target="_blank">RMAN SBT_TAPE备份通过小程序修改实现直接DISK通道还原</a></p>
<p>作者：<a href="https://www.xifenfei.com" target="_blank">惜分飞</a>©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]</p>
</div>
<p>有朋友把oracle rman备份从cv带库里拷贝到文件系统,然后希望把他还原到数据库中.通过尝试发现直接带库的文件无法直接在文件系统中被rman调用还原</p>
<pre class="brush: bash; title: ; notranslate">
C:\Users\XFF&gt;sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on 星期三 9月 3 18:07:58 2025

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

已连接到空闲例程。

SQL&gt; startup nomount pfile='d:/pfile.txt'
ORACLE 例程已经启动。

Total System Global Area 4275781632 bytes
Fixed Size                  2288080 bytes
Variable Size             939525680 bytes
Database Buffers         3321888768 bytes
Redo Buffers               12079104 bytes
SQL&gt; exit
从 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options 断开

C:\Users\XFF&gt;
C:\Users\XFF&gt;
C:\Users\XFF&gt;
C:\Users\XFF&gt;rman target /

恢复管理器: Release 11.2.0.4.0 - Production on 星期三 9月 3 18:08:38 2025

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

已连接到目标数据库: ORCL (未装载)

RMAN&gt; restore controlfile from 'H:\TEMP\Oracle_Restore\405\c-1737595250-20250822-00';

启动 restore 于 03-9月 -25
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=28 设备类型=DISK

通道 ORA_DISK_1: 正在还原控制文件
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: restore 命令 (在 09/03/2025 18:08:54 上) 失败
ORA-19870: 还原备份片段 H:\TEMP\ORACLE_RESTORE\405\C-1737595250-20250822-00 时出错
ORA-19505: 无法识别文件&quot;H:\TEMP\ORACLE_RESTORE\405\C-1737595250-20250822-00&quot;
ORA-27046: 文件大小不是逻辑块大小的倍数
OSD-04000: 逻辑块大小不匹配 (OS 512)
</pre>
<p>以前也写过相关的文章,由于tape的备份和disk通道备份的文件头本身格式都不一样,具体参考:<a href="https://www.xifenfei.com/2024/07/rman-sbt_tape-backup-cannot-be-recognized-by-disk-channel.html" title="RMAN SBT_TAPE备份无法被DISK通道识别" rel="noopener" target="_blank">RMAN SBT_TAPE备份无法被DISK通道识别</a><br />
尝试使用dbms_backup_restore还原依旧失败</p>
<pre class="brush: sql; title: ; notranslate">C:\Users\XFF&gt;sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on 星期三 9月 3 18:19:23 2025

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL&gt; DECLARE
  2   devtype varchar2(256);
  3   done boolean;
  4   BEGIN
  5   devtype:=sys.dbms_backup_restore.deviceAllocate (type=&gt;'',ident=&gt;'t1');
  6   sys.dbms_backup_restore.restoreSetDatafile;
  7   sys.dbms_backup_restore.restoreControlfileTo(cfname=&gt;'H:\CONTROL01.CTL');
  8   sys.dbms_backup_restore.restoreBackupPiece(done=&gt;done,
  9     handle=&gt;'H:\TEMP\Oracle_Restore\405\c-1737595250-20250822-00', params=&gt;null);
 10  sys.dbms_backup_restore.deviceDeallocate;
 11  END;
 12  /
DECLARE
*
第 1 行出现错误:
ORA-19624: 操作失败, 如果可能请重试
ORA-19870: 还原备份片段 H:\TEMP\ORACLE_RESTORE\405\C-1737595250-20250822-00
时出错
ORA-19505: 无法识别文件&quot;H:\TEMP\ORACLE_RESTORE\405\C-1737595250-20250822-00&quot;
ORA-27046: 文件大小不是逻辑块大小的倍数
OSD-04000: 逻辑块大小不匹配 (OS 512)
ORA-06512: 在 &quot;SYS.X$DBMS_BACKUP_RESTORE&quot;, line 5940
ORA-06512: 在 line 8
</pre>
<p>对于这种情况,我尝试自己开发一个小程序,来模拟disk通道备份集,欺骗数据库来实现还原操作.<br />
<a href="https://www.xifenfei.com/wp-content/uploads/2025/09/QQ20250903-182124.png"><img src="https://www.xifenfei.com/wp-content/uploads/2025/09/QQ20250903-182124.png" alt="QQ20250903-182124" width="405" height="79" class="alignleft size-full wp-image-11627" /></a><br />
<hr />
通过程序模拟出来的disk通道的文件,每个后缀加上了disk<br />
<a href="https://www.xifenfei.com/wp-content/uploads/2025/09/QQ20250903-182136.png"><img src="https://www.xifenfei.com/wp-content/uploads/2025/09/QQ20250903-182136.png" alt="QQ20250903-182136" width="660" height="287" class="alignleft size-full wp-image-11628" /></a><br />
<hr />
再次通过尝试通过disk通道还原操作</p>
<pre class="brush: bash; title: ; notranslate">
C:\Users\XFF&gt;rman target /

恢复管理器: Release 11.2.0.4.0 - Production on 星期三 9月 3 18:23:14 2025

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

已连接到目标数据库: ORCL (未装载)

RMAN&gt; restore controlfile from 'H:\TEMP\Oracle_Restore\405\c-1737595250-20250822-00.disk';

启动 restore 于 03-9月 -25
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=28 设备类型=DISK

通道 ORA_DISK_1: 正在还原控制文件
通道 ORA_DISK_1: 还原完成, 用时: 00:00:01
输出文件名=H:\CONTROL01.CTL
完成 restore 于 03-9月 -25

RMAN&gt; alter database mount;

数据库已装载
释放的通道: ORA_DISK_1

RMAN&gt; catalog start with 'H:\TEMP\Oracle_Restore\405\*.disk';

搜索与样式 H:\TEMP\Oracle_Restore\405\*.disk 匹配的所有文件

数据库未知文件的列表
=====================================
文件名: H:\TEMP\ORACLE_RESTORE\405\322_ORCL_0141onds_1_1.disk
文件名: H:\TEMP\ORACLE_RESTORE\405\322_ORCL_0241onec_1_1.disk
文件名: H:\TEMP\ORACLE_RESTORE\405\322_ORCL_0441onev_1_1.disk
文件名: H:\TEMP\ORACLE_RESTORE\405\c-1737595250-20250822-00.disk
文件名: H:\TEMP\ORACLE_RESTORE\405\c-1737595250-20250822-01.disk

是否确实要将上述文件列入目录 (输入 YES 或 NO)? yes
正在编制文件目录...
目录编制完毕

已列入目录的文件的列表
=======================
文件名: H:\TEMP\ORACLE_RESTORE\405\322_ORCL_0141onds_1_1.disk
文件名: H:\TEMP\ORACLE_RESTORE\405\322_ORCL_0241onec_1_1.disk
文件名: H:\TEMP\ORACLE_RESTORE\405\322_ORCL_0441onev_1_1.disk
文件名: H:\TEMP\ORACLE_RESTORE\405\c-1737595250-20250822-00.disk
文件名: H:\TEMP\ORACLE_RESTORE\405\c-1737595250-20250822-01.disk

RMAN&gt;
</pre>
<pre class="brush: bash; title: ; notranslate">
RMAN&gt; report schema;

RMAN-06139: 警告: 控制文件对于 REPORT SCHEMA 不是最新
db_unique_name 为 ORCL 的数据库的数据库方案报表

永久数据文件列表
===========================
文件大小 (MB) 表空间           回退段数据文件名称
---- -------- -------------------- ------- ------------------------
1    0        SYSTEM               ***     /data/oracle/oradata/orcl/system01.dbf
2    0        SYSAUX               ***     /data/oracle/oradata/orcl/sysaux01.dbf
3    0        UNDOTBS1             ***     /data/oracle/oradata/orcl/undotbs01.dbf
4    0        USERS                ***     /data/oracle/oradata/orcl/users01.dbf
5    0        EXAMPLE              ***     /data/oracle/oradata/orcl/example01.dbf

临时文件列表
=======================
文件大小 (MB) 表空间           最大大小 (MB) 临时文件名称
---- -------- -------------------- ----------- --------------------
1    20       TEMP                 32767       /data/oracle/oradata/orcl/temp01.dbf

RMAN&gt; run
2&gt; {
3&gt; set newname for datafile 1 to 'h:\system01.dbf';
4&gt; set newname for datafile 2 to 'h:\sysaux01.dbf';
5&gt; set newname for datafile 3 to 'h:\undotbs01.dbf';
6&gt; set newname for datafile 4 to 'h:\users01.dbf';
7&gt; set newname for datafile 5 to 'h:\example01.dbf';
8&gt; restore database;
9&gt; switch datafile all;
10&gt; }

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

启动 restore 于 03-9月 -25
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=28 设备类型=DISK

通道 ORA_DISK_1: 正在开始还原数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集还原的数据文件
通道 ORA_DISK_1: 将数据文件 00001 还原到 h:\system01.dbf
通道 ORA_DISK_1: 将数据文件 00002 还原到 h:\sysaux01.dbf
通道 ORA_DISK_1: 将数据文件 00003 还原到 h:\undotbs01.dbf
通道 ORA_DISK_1: 将数据文件 00004 还原到 h:\users01.dbf
通道 ORA_DISK_1: 将数据文件 00005 还原到 h:\example01.dbf
通道 ORA_DISK_1: 正在读取备份片段 H:\TEMP\ORACLE_RESTORE\405\322_ORCL_0141ONDS_1_1.DISK
通道 ORA_DISK_1: 段句柄 = H:\TEMP\ORACLE_RESTORE\405\322_ORCL_0141ONDS_1_1.DISK 标记 = TAG20250822T124236
通道 ORA_DISK_1: 已还原备份片段 1
通道 ORA_DISK_1: 还原完成, 用时: 00:00:01
完成 restore 于 03-9月 -25

数据文件 1 已转换成数据文件副本
输入数据文件副本 RECID=7 STAMP=1210875892 文件名=H:\SYSTEM01.DBF
数据文件 2 已转换成数据文件副本
输入数据文件副本 RECID=8 STAMP=1210875892 文件名=H:\SYSAUX01.DBF
数据文件 3 已转换成数据文件副本
输入数据文件副本 RECID=9 STAMP=1210875892 文件名=H:\UNDOTBS01.DBF
数据文件 4 已转换成数据文件副本
输入数据文件副本 RECID=10 STAMP=1210875892 文件名=H:\USERS01.DBF
数据文件 5 已转换成数据文件副本
输入数据文件副本 RECID=11 STAMP=1210875892 文件名=H:\EXAMPLE01.DBF

RMAN&gt;
</pre>
<pre class="brush: bash; title: ; notranslate">
RMAN&gt; run
2&gt; {
3&gt; set archivelog destination to 'h:/';
4&gt; restore archivelog all;
5&gt; }

正在执行命令: SET ARCHIVELOG DESTINATION

启动 restore 于 03-9月 -25
使用通道 ORA_DISK_1

通道 ORA_DISK_1: 正在开始将归档日志还原到用户指定的目标
归档日志目标=h:/
通道 ORA_DISK_1: 正在还原归档日志
归档日志线程=1 序列=6
通道 ORA_DISK_1: 正在还原归档日志
归档日志线程=1 序列=7
通道 ORA_DISK_1: 正在读取备份片段 H:\TEMP\ORACLE_RESTORE\405\322_ORCL_0441ONEV_1_1.DISK
通道 ORA_DISK_1: 段句柄 = H:\TEMP\ORACLE_RESTORE\405\322_ORCL_0441ONEV_1_1.DISK 标记 = TAG20250822T124311
通道 ORA_DISK_1: 已还原备份片段 1
通道 ORA_DISK_1: 还原完成, 用时: 00:00:01
完成 restore 于 03-9月 -25
</pre>
<p>通过上述操作,证明写的小程序oracle rman 备份集从tape通道备份方式修改为直接走disk 通道还原完整没有问题.</p>
<div id="crp_related"><ul><li style="list-style-type:decimal;font-size:11px;" ><a href="https://www.xifenfei.com/2025/10/nbu-img-rman.html" rel="bookmark" class="crp_title">nbu备份文件img格式直接rman恢复</a></li><li style="list-style-type:decimal;font-size:11px;" ><a href="https://www.xifenfei.com/2011/11/ora-19693-backup-piece-s-already-included.html" rel="bookmark" class="crp_title">ORA-19693: backup piece %s already included</a></li><li style="list-style-type:decimal;font-size:11px;" ><a href="https://www.xifenfei.com/2013/08/%e6%9f%90%e4%b8%aapdb%e5%8f%af%e4%bb%a5%e5%9c%a8root-pdb-open%e7%8a%b6%e6%80%81%e4%b8%8b%e8%bf%9b%e8%a1%8c.html" rel="bookmark" class="crp_title">某个pdb可以在root pdb open状态下进行恢复</a></li><li style="list-style-type:decimal;font-size:11px;" ><a href="https://www.xifenfei.com/2011/08/%e6%99%ae%e9%80%9a%e5%ba%93%e8%bf%81%e7%a7%bb%e8%87%b3asm%e5%ad%98%e5%82%a8.html" rel="bookmark" class="crp_title">普通库迁移至ASM存储</a></li><li style="list-style-type:decimal;font-size:11px;" ><a href="https://www.xifenfei.com/2011/08/asm%e8%bf%81%e7%a7%bb%e8%87%b3%e6%96%87%e4%bb%b6%e7%b3%bb%e7%bb%9f.html" rel="bookmark" class="crp_title">ASM迁移至文件系统</a></li><li style="list-style-type:decimal;font-size:11px;" ><a href="https://www.xifenfei.com/2011/08/asm%e4%b8%ad%e6%95%b0%e6%8d%ae%e6%96%87%e4%bb%b6%e4%bb%8ediskgroup-to-new-diskgroup.html" rel="bookmark" class="crp_title">asm数据文件迁移(asm&#8211;>asm)</a></li><li style="list-style-type:decimal;font-size:11px;" ><a href="https://www.xifenfei.com/2023/06/rman-06214.html" rel="bookmark" class="crp_title">RMAN-06214: Archivelog错误</a></li><li style="list-style-type:decimal;font-size:11px;" ><a href="https://www.xifenfei.com/2015/01/%e7%bb%99%e4%bd%a0%e7%9a%84rman%e5%a4%87%e4%bb%bd%e9%9b%86%e5%8a%a0%e4%b8%8a%e5%af%86%e7%a0%81%e9%94%81.html" rel="bookmark" class="crp_title">给你的rman备份集加上密码锁</a></li><li style="list-style-type:decimal;font-size:11px;" ><a href="https://www.xifenfei.com/2011/11/rman%e4%bb%8e%e5%a4%9a%e4%bb%bd%e5%a4%87%e4%bb%bd%e4%b8%ad%e8%bf%98%e5%8e%9f%e6%93%8d%e4%bd%9c.html" rel="bookmark" class="crp_title">rman从多份备份中还原操作</a></li><li style="list-style-type:decimal;font-size:11px;" ><a href="https://www.xifenfei.com/2012/06/rman%e9%80%9a%e8%bf%87nfs%e5%a4%87%e4%bb%bd.html" rel="bookmark" class="crp_title">rman通过nfs备份</a></li><li style="list-style-type:decimal;font-size:11px;" ><a href="https://www.xifenfei.com/2015/06/ora-00230-operation-disallowed-snapshot-control-file-enqueue-unavailable.html" rel="bookmark" class="crp_title">ORA-00230: operation disallowed: snapshot control file enqueue unavailable</a></li><li style="list-style-type:decimal;font-size:11px;" ><a href="https://www.xifenfei.com/2011/08/%e9%9d%9easm%e6%95%b0%e6%8d%ae%e6%96%87%e4%bb%b6%e7%a7%bb%e6%a4%8d%e5%88%b0asm.html" rel="bookmark" class="crp_title">asm数据文件迁移(os&#8211;>asm)</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>https://www.xifenfei.com/2025/09/rman-sbt_tape-backup-disk-restore.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
