|
AIX$ dd if=/oradata/test.dbf of=/dev/rlv_data bs=4k seek=1
1026+0 records in
1026+0 records out
Tru64$ dd if=/oradata/test.dbf of=/dev/rlv_data bs=64k seek=1
64+1 records in
64+1 records out
Other$ dd if=/oradata/test.dbf of=/dev/rlv_data bs=1024k
4+1 records in
4+1 records out
2.2.2 从裸设备到文件系统
a. 确定数据文件实际大小file_size,用于下一步计算dd的参数count。如果count计算不对,拷贝出的数据文件无效,数据库无法打开。
SQL> SELECT bytes, blocks, bytes/blocks db_block_size, bytes+bytes/blocks file_size
FROM dba_data_files WHERE file_name='/dev/rlv_data';
BYTESBLOCKSDB_BLOCK_SIZEFILE_SIZE
---------- -------- ------------- ---------
419430451281924202496
b. 按下表公式确定dd的参数,min表示二者之中取较小的
c. 在数据库没有OPEN的状态下,用dd进行拷贝,下面给出命令及输出
AIX$ dd if=/dev/rlv_data of=/oradata/test2.dbf bs=4k skip=1 count=1026
1026+0 records in
1026+0 records out
Tru64$ dd if=/dev/rlv_data of=/oradata/test2.dbf bs=8k skip=8 count=513
513+0 records in
513+0 records out
Other$ dd if=/dev/rlv_data of=/oradata/test2.dbf bs=8k count=513
513+0 records in
513+0 records out
2.2.3 无论从FILE SYSTEM拷贝到RAW DEVICE还是反之,想让ORACLE以新的数据文件打开数据库,必须进行RENAME操作
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE RENAME FILE 'oldfilename' TO 'newfilename';
SQL> ALTER DATABASE OPEN;
三、移动联机重作日志(ONLINE REDO LOG)
3.1 在裸设备上建ONLINE REDO LOG
用以下命令增加一组ONLINE REDO LOG:
SQL> ALTER DATABASE ADD LOGFILE GROUP 4 '/dev/rlv_redo' SIZE xxxxk;
在裸设备上建REDO LOG时也要计算SIZE子句可使用的最大值,方法类似于在2.1中建DATAFILE时的计算方法,唯一不同的是要把公式中的DB_BLOCK_SIZE换成REDO_BLOCK_SIZE(即REDO LOG的逻辑块大小)。这个REDO_BLOCK_SIZE在不同操作系统上取值不同,用以下两种方法均可得到这个值,同时还可计算出REDO LOG的实际文件大小file_size):
方法1:dump现有的REDO LOG FILE
SQL> ALTER SYSTEM DUMP LOGFILE '/oradata/redo01.log';
SQL> SHOW PARAMETER user_dump_dest
查看user_dump_dest目录下刚产生的trc文件:
FILE HEADER:
Software vsn=135294976=0x8107000, Compatibility Vsn=135290880=0x8106000
Db Id=3227187598=0xc05af98e, Db Name='V817'
Control Seq=12474=0x30ba, File size=8192=0x2000
File Number=5, Blksiz=512, File Type=2 LOG
方法2:用ORACLE提供的工具dbfsize,对文件系统和RAW DEVICE上的文件都适用
$ dbfsize /oradata/redo01.log
Database file: /oradata/redo01.log
Database file type: file system
Database file size: 8192 512 byte blocks
从以上两个输出都可得知REDO_BLOCK_SIZE=512,blocks=8192
file_size=(blocks + 1) * REDO_BLOCK_SIZE = (8192+1)*512=4194816
如果已知所在平台的REDO_BLOCK_SIZE,也可以通过查询数据字典来计算file_size:
SQL> SELECT b.member, b.bytes, b.bytes+512 file_size FROM v$logfile a, v$log b
WHERE a.group#=b.group# and a.member='/oradata/redo01.log ';
MEMBERBYTES FILE_SIZE
-------------------------------------
阅读更多内容:<<上一页 · 1 · 2 · 3 · 下一页>>
|