oracleasmdd所出要的块-创新互联

前一篇写了asm里dd出文件,这篇里只dd出块,主要是针对文件大的情况。

创新互联长期为上千多家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为桥西企业提供专业的成都网站建设、网站制作,桥西网站改版等技术服务。拥有10年丰富建站经验和众多成功案例,为您定制开发。

以scott模式为例:

修改前的表信息

SQL>select * from emp where mgr=7566 and empno=7788 7788 SCOTT     ANALYST    7566 1987/4/19     3000.00               20

1 AU计算

SQL> selectextent_Id,block_id,blocks,file_id   2  fromdba_extents where segment_name='EMP' SQL> /  EXTENT_ID  BLOCK_ID     BLOCKS    FILE_ID -------------------- ---------- ----------          0        144          8          5SQL> selectname from v$datafile where file#=5; NAME -------------------------------------------------------------- +DATA/db/datafile/users.276.899048797 SQL> selectname,group_number,file_number from v$asm_alias where name like '%USERS%' andfile_number=276; NAME               GROUP_NUMBER FILE_NUMBER ---------------------------------------------------------------------------------- ----------- USERS.276.899048797          1        276 SQL> selectdisk_kffxp,au_kffxp,xnum_kffxp from x$kffxp where group_kffxp=1 andnumber_kffxp=276; DISK_KFFXP  AU_KFFXP XNUM_KFFXP ---------- ---------- ----------         1        426          0         0        289          1

这里计算一下,其block_id为144,块大小为8KB,那么其位置为144*8/1024=1.125M,加上块头8*8/1024=0.0625M,一共不超过4M;应当在第一个AU上(AU大小为4M),第二块盘的第426个AU上,取第二个盘路径:

SQL> selectdisk_number,path from v$asm_disk where disk_number=1; DISK_NUMBERPATH -------------------------------------------------------------------------------------------           1 /dev/raw/raw2

取出该表的大和最小data_object_id,然后dd.

SQL>  select dbms_rowid.rowid_relative_fno(rowid)rel_fno,  max(dbms_rowid.rowid_block_number(rowid))max_block,  min(dbms_rowid.rowid_block_number(rowid))min_block  from emp  group by dbms_rowid.rowid_relative_fno(rowid);      REL_FNO MAX_BLOCK  MIN_BLOCK -------------------- ----------          5        149       149 [oracle@mysql-1]$ddif=/dev/raw/raw2 bs=1024 count=8 skip=1746088 of=emp.dd

说明一下:skip=426*4*1024+149*8

检查一下:

[oracle@mysql-1~]$ strings emp.dd MILLER CLERK FORD ANALYST JAMES CLERK ADAMS CLERK TURNER SALESMAN KING    PRESIDENT SCOTT ANALYST SMITH CLERK

从上可以看出,是emp的内容。

 2 bbed修改内容

11g里首先要安装bbed,安装过程记录一下:

copy oracle 10g的sbbdpt.o,ssbbded.o到$ORACLE_HOME/rdbms/lib下 copybbedus.msb 到$ORACLE_HOME/mesg下 cd$ORACLE_HOME/rdbms/lib make -fins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed cp bbed$ORACLE_HOME/bin[oracle@mysql-1~]$ bbed BBED> set filename'/home/oracle/emp.dd';        FILENAME        /home/oracle/emp.dd#用bbed校验下块。 BBED> verify DBVERIFY - Verification starting FILE = /home/oracle/emp.dd BLOCK = 0 Block 0 is corrupt Corrupt block relative dba: 0x01400000(file 0, block 0) Bad header found during verification Data in bad block:  type: 6 format: 2 rdba: 0x01400095  lastchange scn: 0x0000.0004dec0 seq: 0x1 flg: 0x06  spare1: 0x0 spare2: 0x0 spare3: 0x0  consistency value in tail: 0x00000000  check value in block header: 0x89af  computed block checksum: 0xd6b   DBVERIFY - Verification complete Total Blocks Examined         : 1 Total Blocks Processed (Data) : 0 Total Blocks Failing   (Data) : 0 Total Blocks Processed (Index): 0 Total Blocks Failing   (Index): 0 Total Blocks Empty            : 0 Total Blocks Marked Corrupt   : 1 Total Blocks Influx           : 0 Message 531 not found;  product=RDBMS; facility=BBED

用bbed查看dd出文件内容

BBED> set blocksize 8192         BLOCKSIZE       8192 BBED> p kdbr BBED> find /c SCOTT  File: /home/oracle/emp.dd (0)  Block: 1                Offsets: 7864 to 8191           Dba:0x00000000 ------------------------------------------------------------------------  53434f54 5407414e 414c5953 5403c24c 430777bb04130101 0102c21f ff02c115 BBED> dump /v  File: /home/oracle/emp.dd (0)  Block: 1      Offsets: 7864 to 8191  Dba:0x00000000 -------------------------------------------------------  53434f54 5407414e 414c5953 5403c24c lSCOTT.ANALYST..L  430777bb 04130101 0102c21f ff02c115 lC.w.............  2c010803 c24e5305 434c4152 4b074d41 l,....NS.CLARK.MA  4e414745 5203c24f 280777b5 06090101 lNAGER..O(.w.....  0103c219 33ff02c1 0b2c0108 03c24d63 l....3....,....Mc

用bbed修改:

set mode edit set blocksize 8192 find /c SCOTT m /c SNOWH BBED> dump /v  File: /home/oracle/emp.dd (0)  Block: 1      Offsets: 7864 to 8191 Dba:0x00000000 -------------------------------------------------------  534e4f57 4807414e 414c5953 5403c24c lSNOWH.ANALYST..L BBED> sum Check value for File 0, Block 1: current = 0x89af, required = 0x87b3   BBED> sum apply Check value for File 0, Block 1: current = 0x87b3, required = 0x87b3

关库,导入修改后数据:

[oracle@mysql-1~]$ srvctl stop database -d db [oracle@mysql-1~]$dd of=/dev/raw/raw2 bs=1024 count=8 seek=1746088 if=emp.dd 8+0 records in 8+0 records out 8192 bytes (8.2 kB) copied, 0.00208818 s,3.9 MB/s

查询表信息:

[oracle@mysql-1~]$ srvctl start database -d dbSQL> select* from emp where mgr=7566 and empno=7788 2  ; EMPNOENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO --------------- --------- ----- ----------- --------- --------- ------  7788 SNOWH     ANALYST    7566 1987/4/19     3000.00               20

OVER

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


新闻名称:oracleasmdd所出要的块-创新互联
文章地址:http://myzitong.com/article/ceceeg.html