关于oracle数据文件拷贝

Tuesday, February 17th, 2009

前几天要备份几个standby出来,RMAN一时之间不好用,数据文件都是存裸设备的,就用起了dd,当时急于出门,
dd脚本写好后nohup上就走了,半路上才想起来standby根本没有open read only,其上的mrp进程还在做实时恢复,
FNT,晚上回家本来准备重新弄,后来感觉可以先recover,因为我dd的blocksize就是db_block_size,每个IO单元
就是一个block,而数据库写文件的最小粒度也是一个block,并且我每个block的边界也和数据库的一样,这样应
该是不存在fuzzy block的,先用dbv看了下文件,OK,然后结合日志恢复,全部OK
今天就上面的情况做了模拟,发现这么做确实是可以的
测试环境:
Oracle9i Enterprise Edition Release 9.2.0.6.0 - 64bit Production
PL/SQL Release 9.2.0.6.0 - Production
CORE    9.2.0.6.0       Production
TNS for IBM/AIX RISC System/6000: Version 9.2.0.6.0 - Production
NLSRTL Version 9.2.0.6.0 - Production
–100M的表空间
sys@testdb>create tablespace mytest datafile ‘/crmsnap/data/mytest01.dbf’ size 100M;
Tablespace created.
–测试表,大概3行一个block
sys@testdb>create table mytest(id number,txt char(2000)) tablespace mytest;
Table created.
sys@testdb>create index mytest_id_ind on mytest(id) tablespace mytest;
Index created.
sys@testdb>begin
  2  for x in 1..100000000 [...]

DBA