Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

351

积分

0

好友

8

主题
1#
发表于 2012-4-17 09:31:23 | 查看: 8275| 回复: 8
RMAN> run{
2> allocate CHANNEL c1 type DISK CONNECT [email=]'sys/abc123@db1'[/email];
3> allocate CHANNEL c2 type DISK CONNECT [email=]'sys/abc123t@db2'[/email];
4> DELETE FORCE NOPROMPT ARCHIVELOG ALL;
5> }
为什么这条语句不能从物理上删除另外一个节点的归档日志,v$archived_log的记录状态已经是DELETED了,不过另外一个节点的硬盘上的文件并没有被删除,这是怎么回事?归档日志放在本地目录上。

补充一下,两个节点的归档目录已经设为共享,试过了在一个节点可以访问和删除另外一个节点的文件,所以权限应该也没问题。

[ 本帖最后由 gdpr-dba 于 2012-4-17 09:54 编辑 ]
2#
发表于 2012-4-17 10:53:20
找出该 DELETED archivelog 的sequence 号


尝试 :
crosscheck archivelog sequence #SEQ   thread #THREAD ;   
DELETE  archivelog sequence #SEQ   thread #THREAD ;        


指定 对应instance的 thread 号

回复 只看该作者 道具 举报

3#
发表于 2012-4-17 11:46:17
RMAN> run{
2> allocate CHANNEL c1 type DISK CONNECT [email=]'sys/abc123@db1'[/email];
3> allocate CHANNEL c2 type DISK CONNECT [email=]'sys/abc123@db2'[/email];
4> crosscheck archivelog sequence 1275 thread 2;
5> delete archivelog sequence 1275 thread 2;
6> }

使用目标数据库控制文件替代恢复目录
分配的通道: c1
通道 c1: SID=7 实例=oanet1 设备类型=DISK

分配的通道: c2
通道 c2: SID=82 实例=oanet1 设备类型=DISK

对归档日志的验证成功
归档日志文件名=+FLASHBACK/oanet/archivelog/2012_04_17/thread_2_seq_1275.401.7808
33345 RECID=5107 STAMP=780833348
已交叉检验的 1 对象

对归档日志的验证失败
归档日志文件名=D:\ARCHIVE\ARC0000001275_0771398615.0002 RECID=5108 STAMP=7808333
49
已交叉检验的 1 对象


db_unique_name 为 OANET 的数据库的归档日志副本列表
=====================================================================

关键字     线程序列     S 时间下限
------- ---- ------- - ----------
5108    2    1275    X 17-4月 -12
        名称: D:\ARCHIVE\ARC0000001275_0771398615.0002

5107    2    1275    A 17-4月 -12
        名称: +FLASHBACK/oanet/archivelog/2012_04_17/thread_2_seq_1275.401.78083
3345


是否确定要删除以上对象 (输入 YES 或 NO)? yes
已删除的归档日志
归档日志文件名=+FLASHBACK/oanet/archivelog/2012_04_17/thread_2_seq_1275.401.7808
33345 RECID=5107 STAMP=780833348
1 对象已删除

已删除的归档日志
归档日志文件名=D:\ARCHIVE\ARC0000001275_0771398615.0002 RECID=5108 STAMP=7808333
49
1 对象已删除

释放的通道: c1
释放的通道: c2

提示校验失败了,为什么呢?节点2的硬盘上是有这个文件的。

回复 只看该作者 道具 举报

4#
发表于 2012-4-17 20:37:49
对归档日志的验证失败
归档日志文件名=D:\ARCHIVE\ARC0000001275_0771398615.0002 RECID=5108 STAMP=7808333

”节点2的硬盘上是有这个文件的。“

确认这个  D:\ARCHIVE\ARC0000001275_0771398615.0002  在执行rman的 主机上可访问:

cmd 中输出以下命令:

dir   D:\ARCHIVE\ARC0000001275_0771398615.0002

回复 只看该作者 道具 举报

5#
发表于 2012-4-17 21:11:46
原帖由 maclean 于 2012-4-17 20:37 发表
对归档日志的验证失败
归档日志文件名=D:\ARCHIVE\ARC0000001275_0771398615.0002 RECID=5108 STAMP=7808333

”节点2的硬盘上是有这个文件的。“

确认这个  D:\ARCHIVE\ARC0000001275_0771398615.0002  在执行rman ...

刘大,可能你没理解我的意思,我想在节点1上删除节点1和节点2的归档日志,节点1和节点2的归档日志都放在本地硬盘D:\ARCHIVE上,不过D:\ARCHIVE已经设置了共享,所以两个节点可以互相访问各自的D:\ARCHIVE目录,rman是在节点1上执行的,而D:\ARCHIVE\ARC0000001275_0771398615.0002这个文件是在节点2上的。难道建了通道也不能删除另外一个节点本地硬盘上的归档日志吗?

回复 只看该作者 道具 举报

6#
发表于 2012-4-17 21:20:38
"节点1和节点2的归档日志都放在本地硬盘D:\ARCHIVE上,不过D:\ARCHIVE已经设置了共享"

什么样的共享? 文件夹映射?

”所以两个节点可以互相访问各自的D:\ARCHIVE目录“

对于oracle来说 它只知道 ARC0000001275_0771398615.0002这个是 D:\ARCHIVE 下的文件, 它使用普通的 文件系统 API来访问这个归档文件 , 它 未必知道 如何 来 ”共享“访问这个文件。

回复 只看该作者 道具 举报

7#
发表于 2012-4-17 21:28:39
原帖由 maclean 于 2012-4-17 21:20 发表
"节点1和节点2的归档日志都放在本地硬盘D:\ARCHIVE上,不过D:\ARCHIVE已经设置了共享"

什么样的共享? 文件夹映射?

”所以两个节点可以互相访问各自的D:\ARCHIVE目录“

对于oracle来说 它只知道 ARC0000001275_077139 ...

是的,是普通的文件夹共享,不是NFS。那就是说这个是没办法实现的咯?如果我想通过RMAN定期删除本地硬盘上的归档日志(包括另外一个节点的),现在只是删除本地节点的,另外一个节点的归档目录很快就满了,不知道怎么做比较好?

回复 只看该作者 道具 举报

8#
发表于 2012-4-18 14:23:40
快沉了,自己顶一下!

回复 只看该作者 道具 举报

9#
发表于 2012-4-18 17:09:03
有了新的进展,发现同样的做法在linux下是没问题的,版本是10.2.0.4,之前在windows下的版本是11.2.0.3,不知道是平台问题还是版本问题:

[oracle@rac2 archive]$ rman target /

Recovery Manager: Release 10.2.0.4.0 - Production on Wed Apr 18 16:52:37 2012

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

connected to target database: rac (DBID=xxxxx)

RMAN> run{
2> allocate channel c1 type disk connect 'sys/abc123@rac1';
3> allocate channel c2 type disk connect 'sys/abc123@rac2';
4> crosscheck archivelog sequence 67220 thread 1;
5> }

using target database control file instead of recovery catalog
allocated channel: c1
channel c1: sid=117 instance=rac1 devtype=DISK

allocated channel: c2
channel c2: sid=20 instance=rac2 devtype=DISK

validation succeeded for archived log
archive log filename=/archive/1_67220_715983123.dbf recid=128097 stamp=780944154
validation succeeded for archived log
archive log filename=+ASMARCH/rac/archivelog/2012_04_18/thread_1_seq_67220.9526.780944151 recid=128096 stamp=780944154
Crosschecked 2 objects

released channel: c1
released channel: c2

RMAN> exit


Recovery Manager complete.

[oracle@rac2 archive]$ rman target /

Recovery Manager: Release 10.2.0.4.0 - Production on Wed Apr 18 17:01:26 2012

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

connected to target database: rac (DBID=xxxxx)

RMAN> run{   
2> allocate channel c1 type disk connect 'sys/abc123@rac1';
3> allocate channel c2 type disk connect 'sys/abc123@rac2';
4> delete  archivelog sequence 67220 thread 1;
5> }

using target database control file instead of recovery catalog
allocated channel: c1
channel c1: sid=117 instance=rac1 devtype=DISK

allocated channel: c2
channel c2: sid=37 instance=rac2 devtype=DISK


List of Archived Log Copies
Key     Thrd Seq     S Low Time  Name
------- ---- ------- - --------- ----
128097  1    67220   A 18-APR-12 /archive/1_67220_715983123.dbf
128096  1    67220   A 18-APR-12 +ASMARCH/rac/archivelog/2012_04_18/thread_1_seq_67220.9526.780944151

Do you really want to delete the above objects (enter YES or NO)? yes
deleted archive log
archive log filename=/archive/1_67220_715983123.dbf recid=128097 stamp=780944154
deleted archive log
archive log filename=+ASMARCH/rac/archivelog/2012_04_18/thread_1_seq_67220.9526.780944151 recid=128096 stamp=780944154
Deleted 2 objects

released channel: c1
released channel: c2

RMAN>

命令是在节点2上执行的,执行完后节点1的归档日志被删除,但是同样的做法在之前的windows平台下却不行,实在是诡异~~

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-11-15 11:08 , Processed in 0.047987 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569