首页 » ORACLE 9i-23ai » 计算controlfile size,dd 迁移raw device中的controlfile
计算controlfile size,dd 迁移raw device中的controlfile
dd 转移RAW(裸设备)上的控制文件时如果不加count默认是if (input file)全部大小,如果RAW分配很大,比如当AIX 转到文件系统或其它操作系统下时,要设bs=4k,调过aix在RAW头保留的4k大小,复制
全部大小就会让费很长时间,当然可以计算出controlfile大小就可以增加count参数指定块数
先看下文件系统下的大小 [oracle@rac1 controlfile]$ ll -rw-r----- 1 oracle asmadmin 9748480 Sep 11 00:42 anbob01.ctl -rw-r----- 1 oracle asmadmin 9748480 Sep 11 00:42 anbob02.ctl [oracle@rac1 controlfile]$ dd if=anbob01.ctl of=ctl.bak bs=4k 2380+0 records in 2380+0 records out 9748480 bytes (9.7 MB) copied, 0.394434 seconds, 24.7 MB/s [oracle@rac1 controlfile]$ ll total 28620 -rw-r----- 1 oracle asmadmin 9748480 Sep 11 00:42 anbob01.ctl -rw-r----- 1 oracle asmadmin 9748480 Sep 11 00:42 anbob02.ctl -rw-r--r-- 1 oracle oinstall 9748480 Sep 11 00:42 ctl.bak --默认是全部大小 [oracle@rac1 controlfile]$ dbfsize /u01/app/oracle/admin/anbob/controlfile/anbob01.ctl Database file: /u01/app/oracle/admin/anbob/controlfile/anbob01.ctl Database file type: file system Database file size: 594 16384 byte blocks --用oracle的工具dbfsize 查看 (594+1)*16384 [oracle@rac1 controlfile]$ bc bc 1.06 Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. 595*16384 9748480 --和上面查看的文件大小一样,595个16k大小的block ,也可以用event转储生成trace SQL> ALTER SESSION SET EVENTS 'IMMEDIATE TRACE NAME CONTROLF LEVEL 10'; Session altered. SQL> oradebug setmypid; Statement processed. SQL> oradebug tracefile_name /u01/app/oracle/diag/rdbms/anbob/anbob/trace/anbob_ora_32204.trc [oracle@rac1 controlfile]$ vi /u01/app/oracle/diag/rdbms/anbob/anbob/trace/anbob_ora_32204.trc DUMP OF CONTROL FILES, Seq # 53995 = 0xd2eb V10 STYLE FILE HEADER: Compatibility Vsn = 186646528=0xb200000 Db ID=1158650278=0x450f99a6, Db Name='ANBOB' Activation ID=0=0x0 Control Seq=53995=0xd2eb, File size=594=0x252 File Number=0, Blksiz=16384, File Type=1 CONTROL Logical block number 1 (header block) Dump of memory from 0x00F0AE00 to 0x00F0EE00 F0AE00 0000C215 00000001 00000000 04010000 [................] F0AE10 00008EF4 00000000 0B200000 450F99A6 [.......... ....E]
–File size=594=0x252 Blksiz=16384,也能对上
最简单的在v$controlfile视图(x$kcccf)也有字段可以直接查询
如果dd 后database open的时候遇到ORA-00202,ORA-27047,ORA-205 ,是在AIX上操作系统没有改变,只改存储的情况,这样的情况确实有发生
老杨有遇到过, ,最后是改用了rman, 其实rman 是可以,不过restore controlfile后,要resetlogs选项打开数据库,还要记的立马做个full database backup,如果数据库海量那就有点惨。
今天一网友也遇到了这个问题,环境几乎一样,我看现共性是都是dd if= of= 而未限制大小count,怀疑是前后RAW大小不一样或其它未知原因,最后建议使用如下脚本
dd if=xx of=xxx bs=4k skip=1 seek=1 count=10000
(仅限AIX)结果网友反馈DATABASE成功OPEN!
对不起,这篇文章暂时关闭评论。