ITPub博客

首页 > 数据库 > Oracle > [20210401]使用bbed读取数据块恢复注意6.txt

[20210401]使用bbed读取数据块恢复注意6.txt

原创 Oracle 作者:lfree 时间:2021-04-01 09:35:47 0 删除 编辑

[20210401]使用bbed读取数据块恢复注意6.txt

--//昨天下午QQ竟然收到信息,问一下bbed读取数据块恢复问题,我实际上那个脚本意义不大,不实用,在实际的恢复过程中会遇到各种
--//无法预知的情况。比如行链接以及表中有lob类型等问题,不过在简单指导下对方回复竟然读取恢复成功了。

--//除了上面提到的问题外,还可能遇到的问题。

1.中文字符集问题。

--//一般数据块字符集ZHS16GBK,估计现在可能有一些使用UTF8之类的字符。bbed读取转换为中文。要设置:
--//export NLS_LANG=AMERICAN_AMERICA.US7ASCII

$ echo $NLS_LANG
AMERICAN_AMERICA.ZHS16GBK

SCOTT@book> create table tx (id number ,vc varchar2(30),vx varchar2(400));
Table created.

SCOTT@book> insert into tx values (1,'为你文化','aaa');
1 row created.

SCOTT@book> commit ;
Commit complete.

SCOTT@book> select rowid from tx ;
ROWID
------------------
AAAWWsAAEAAAALXAAA

SCOTT@book> @ rowid AAAWWsAAEAAAALXAAA
    OBJECT       FILE      BLOCK        ROW ROWID_DBA            DBA                  TEXT
---------- ---------- ---------- ---------- -------------------- -------------------- ----------------------------------------
     91564          4        727          0  0x10002D7           4,727                alter system dump datafile 4 block 727 ;

$ export NLS_LANG=AMERICAN_AMERICA.US7ASCII
$ . fff.sh 4 727 727 91564 ncc
1|为你文化|aaa

--//注完成后给修改回来。不要其它连接工具会显示乱码。
$ export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

2.显示宽度问题。
--//bbed最大显示宽度是300,我测试最大275.
BBED> set width 300
        WIDTH           300

BBED> set width 301
BBED-00208: out of range WIDTH (301)

SCOTT@book> insert into tx values (2,'测试',lpad('x',310,'Y'));
1 row created.

SCOTT@book> commit ;
Commit complete.

SCOTT@book> alter system checkpoint ;
System altered.

BBED> x /rncc dba 4,727  *kdbr[1]
rowdata[0]                                  @7845
----------
flag@7845: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@7846: 0x02
cols@7847:    3

col    0[2] @7848: 2
col    1[4] @7851: 测试
col  2[310] @7856: YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYx

$ . fff.sh 4 727 727 91564 ncc
1|为你文化|aaa
2|测试|YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY

--//而我的脚本就截断了输出。实际上仅仅显示最大长度275.要解决这个问题脚本还要修改完善。

3.半个汉字的问题:
--//即使解决了显示宽度问题,还可能遇到半个汉字的问题,这个也是很麻烦的情况。
SCOTT@book> insert into tx values (3,'测试x',lpad('测试',310,'文'));
1 row created.

SCOTT@book> commit ;
Commit complete.

SCOTT@book> alter system checkpoint ;
System altered.

BBED> x /rncc dba 4,727  *kdbr[2]
rowdata[0]                                  @7520
----------
flag@7520: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@7521: 0x01
cols@7522:    3

col    0[2] @7523: 3
col    1[5] @7526: 测试x
col  2[310] @7532: 文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文?
奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈牟馐?

4.分割符号问题,我脚本使用|作为分隔符,可能会遇到冲突的问题,建议使用ascii(6)或者ascii(7)代替。
--//在linux下vim的输入模式,使用如下方法输入,windows下使用ctrl+q代替ctrl+v
ascii(7) 使用ctrl+v ctrl+g 输入。
ascii(6) 使用ctrl+v ctrl+f 输入。

5.最好做好备份才是最最重要的事情,备份大于一切。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-2766050/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    4006
  • 访问量
    7969578