裸设备的备份与文件系统的备份的区别主要在于使用的操作系统命令不同。在unix环境下,普通文件系统的备份使用cp命令,而裸设备需要使用dd命令。
对于Unix下的裸设备的备份,唯一需要注意就是dd的使用。其中比较麻烦的是确定裸设备的OFFSET,在dd的时候应该使用skip或seek参数跳过这个值。
剩下需要注意的就是Oracle会将文件增加一个block的大小,用来存放数据库的控制信息。在计算dd的count参数时,应该加上这个block。
SQL> SHOW PARAMETER DB_BLOCK_SIZE
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_block_size integer 8192
SQL> SELECT FILE_NAME, BYTES/8192 + 1 "8K" FROM DBA_DATA_FILES WHERE TABLESPACE_NAME = 'TEST';
FILE_NAME 8K
-------------------------------------------------- ----------
/dev/vx/rdsk/maindbdg/lv_main124 262017
SQL> ALTER TABLESPACE TEST BEGIN BACKUP;
Tablespace altered.
SQL> HOST dd if=/dev/vx/rdsk/maindbdg/lv_main124 of=/export/home/oracle/backup/test.dbf bs=8k count=262017
262017+0 记录进入
262017+0 记录调出
SQL> ALTER TABLESPACE TEST END BACKUP;
Tablespace altered.
SQL> HOST dbv file=/export/home/oracle/backup/test.dbf blocksize=8192
DBVERIFY: Release 9.2.0.4.0 - Production on Mon Feb 6 16:45:16 2006
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
DBVERIFY - Verification starting : FILE = /export/home/oracle/backup/test.dbf
DBVERIFY - Verification complete
Total Pages Examined : 262016
Total Pages Processed (Data) : 44480
Total Pages Failing (Data) : 0
Total Pages Processed (Index): 17058
Total Pages Failing (Index): 0
Total Pages Processed (Other): 7906
Total Pages Processed (Seg) : 0
Total Pages Failing (Seg) : 0
Total Pages Empty : 192572
Total Pages Marked Corrupt : 0
Total Pages Influx : 0
上面例子所使用的环境,裸设备的OFFSET为0,因此不需要这个使用skip参数。