暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

20211101_xbbed一键读取ASM block到文件系统

XAOUG 2021-11-02
293

1. 目标说明

    xbbed主要实现一键读取asm数据块到文件系统或更新文件系统数据块到asm。
下载地址:https://www.modb.pro/download/221215

2. Oracle sudo权限设置

--root用户执行
grep 'oracle' /etc/sudoers
echo "oracle ALL=(ALL) NOPASSWD: ALL" >>/etc/sudoers
grep 'oracle' /etc/sudoers
su - oracle
sudo su - grid -c pwd

3. 测试表创建

drop table hsql.t1 purge;
create table hsql.t1(c1 char(10));
insert into hsql.t1 values('enmo');
commit;
alter system flush buffer_cache;
select dbms_rowid.rowid_object(rowid) object_id,
dbms_rowid.rowid_relative_fno(rowid) file_id,
dbms_rowid.rowid_block_number(rowid) block_id,
dbms_rowid.rowid_row_number(rowid) row_number,* from hsql.t1;


OBJECT_ID FILE_ID BLOCK_ID ROW_NUMBER C1
---------- ---------- ---------- ---------- ------------------------------
87925 4 182 0 enmo

4. cp asm block to os

[oracle@snyxdb1 x_recovery]$ sh x_reco.sh 
--------------------------------------------------------------------------------
|**********************WELCOME: x_rec for Oracle*******************************|
|1). install_bbed: bbed install one key |
|2). xbbed: cp asm block to os block or reverse. |
|3). exit: quit the x_rec |
|*****************if you need any help contact my wechat: xidoublestar*********|
--------------------------------------------------------------------------------
pls,input operation name:xbbed

********************************WELCOM XBBED********************************
|method: |
|1) get dba a,b <-- cp file#: a,blk#: b from asm to tmp/xbbed/a_b.dd |
|2) save dba a,b <-- cp tmp/xbbed/a_b.dd to asm |
|3) exit |
****************************************************************************

xbbed>get dba 4,182
**********get dba 4,182**********
block_id_in_datafile: 182
file_number: 4
filesystem_filename: /tmp/xbbed/4_182.dd
asm_datafile_name: +OCR_VOTE/epmsn/datafile/users.259.1076411313

PL/SQL procedure successfully completed.

xbbed>

5. 使用bbed修改数据内容

[oracle@snyxdb1 bbed]$ cat listfile.txt 
1 /tmp/xbbed/4_182.dd
[oracle@snyxdb1 bbed]$ sh l_bbed.sh

BBED: Release 2.0.0.0.0 - Limited Production on Mon Nov 1 10:27:13 2021

Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.

************* !!! For Oracle Internal Use only !!! ***************

BBED> set dba 1,1
DBA 0x00400001 (4194305 1,1)

BBED>

BBED> p *kdbr[0]
rowdata[0]
----------
ub1 rowdata[0] @8174 0x2c

BBED> x /rccc
rowdata[0] @8174
----------
flag@8174: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8175: 0x01
cols@8176: 1

col 0[10] @8177: enmo


BBED> d offset 8177 count 16
File: /tmp/xbbed/4_182.dd (1)
Block: 1 Offsets: 8177 to 8191 Dba:0x00400001
------------------------------------------------------------------------
0a656e6d 6f202020 20202001 065139

<32 bytes per line>

BBED> m /x 65 offset 8182
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y
File: /tmp/xbbed/4_182.dd (1)
Block: 1 Offsets: 8182 to 8191 Dba:0x00400001
------------------------------------------------------------------------
65202020 20200106 5139

<32 bytes per line>

BBED> sum apply
Check value for File 1, Block 1:
current = 0x233d, required = 0x233d

BBED> d offset 8177 count 16
File: /tmp/xbbed/4_182.dd (1)
Block: 1 Offsets: 8177 to 8191 Dba:0x00400001
------------------------------------------------------------------------
0a656e6d 6f652020 20202001 065139

<32 bytes per line>

BBED> p *kdbr[0]
rowdata[0]
----------
ub1 rowdata[0] @8174 0x2c

BBED> x /rccc
rowdata[0] @8174
----------
flag@8174: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8175: 0x01
cols@8176: 1

col 0[10] @8177: enmoe


BBED>

5. cp os block to asm

xbbed>save dba 4,182
**********save dba 4,182**********
file_with_patched_block: /tmp/xbbed/4_182.dd
file_to_patch_in_ASM: +OCR_VOTE/epmsn/datafile/users.259.1076411313
v_offstart: 182

PL/SQL procedure successfully completed.

xbbed>

6. 结果检查

[oracle@snyxdb1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Mon Nov 1 10:29:17 2021

Copyright (c) 1982, 2013, Oracle. All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options

SQL> alter system flush buffer_cache;

System altered.

SQL> select * from hsql.t1;

C1
------------------------------
enmoe

SQL>

7. 重置Oracle sudo权限设置

grep 'oracle' /etc/sudoers
sed -ri 's/^oracle/#oracle/' /etc/sudoers
grep 'oracle' /etc/sudoers
su - oracle
sudo su - grid -c pwd


文章转载自XAOUG,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论