【BBED】使用bbed修改数字类型数据

bbed的使用(一)  介绍了BBED的编译安装

bbed的使用(二)  介绍了bbed的语法规则和常用命令的使用。

bbed的使用(三)  介绍了bbed的命令。

如何修改字符类型的数据,使用bbed修改数据表中字符类型的数据

下面介绍使用bbed修改数字类型数据

yangobj表是有scott下的emp经过CTAS创建。

修改前:

SQL> select * from yangobj;

     EMPNO ENAME                          JOB               MGR HIREDATE                  SAL       COMM     DEPTNO

---------- ------------------------------ ---------- ---------- ------------------ ---------- ---------- ----------

      7369 SMITH                          CLERK            7902 17-DEC-80                 800                    20

      7499 ALLEN                          SALESMAN         7698 20-FEB-81                1600        300         30

      7521 WARD                           SALESMAN         7698 22-FEB-81                1250        500         30

计划对WARD的comm值500修改为800.

因为使用bbed修改数据时最好关闭数据库。所以从另外的数据库中查询800,500在数据库中的存储。

yang@rac1>select dump(800,1016) FROM DUAL;

DUMP(800,1016)

-----------------

Typ=2 Len=2: c2,9

yang@rac1>select dump(500,1016) FROM DUAL;

DUMP(500,1016)

-----------------

Typ=2 Len=2: c2,6

使用bbed对数据 

使用p 命令查看杭记录 

BBED> p kdbr

sb2 kdbr[0]                                 @142      8026

sb2 kdbr[1]                                 @144      7983

sb2 kdbr[2]                                 @146      7940

sb2 kdbr[3]                                 @148      7899

sb2 kdbr[4]                                 @150      7854

sb2 kdbr[5]                                 @152      7813

sb2 kdbr[6]                                 @154      7772

sb2 kdbr[7]                                 @156      7732

sb2 kdbr[8]                                 @158      7694

sb2 kdbr[9]                                 @160      7651

sb2 kdbr[10]                                @162      7613

sb2 kdbr[11]                                @164      7575

sb2 kdbr[12]                                @166      7536

sb2 kdbr[13]                                @168      7497

查看第三行WARD的数据。

BBED> p *kdbr[2]

rowdata[443]

------------

ub1 rowdata[443]                            @8064     0x2c

BBED> x /rnccntnnn

rowdata[443]                                @8064    

------------

flag@8064: 0x2c (KDRHFL, KDRHFF, KDRHFH)

lock@8065: 0x00

cols@8066:    8

col    0[3] @8067: 7521 

col    1[4] @8071: WARD

col    2[8] @8076: SALESMAN

col    3[3] @8085: 7698 

col    4[7] @8089: 22-FEB-81 

col    5[3] @8097: 1250 

col    6[2] @8101: 500 

col    7[2] @8104: 30 

显示数据库中存储的数据格式。

BBED> x /r        

rowdata[443]                                @8064    

------------

flag@8064: 0x2c (KDRHFL, KDRHFF, KDRHFH)

lock@8065: 0x00

cols@8066:    8

col    0[3] @8067:  0xc2  0x4c  0x16 

col    1[4] @8071:  0x57  0x41  0x52  0x44 

col    2[8] @8076:  0x53  0x41  0x4c  0x45  0x53  0x4d  0x41  0x4e 

col    3[3] @8085:  0xc2  0x4d  0x63 

col    4[7] @8089:  0x77  0xb5  0x02  0x16  0x01  0x01  0x01 

col    5[3] @8097:  0xc2  0x0d  0x33 

col    6[2] @8101:  0xc2  0x06 

col    7[2] @8104:  0xc1  0x1f 

BBED> set offset 8101

        OFFSET          8101

BBED> dump /v offset 8101

 File: /opt/oracle/oradata/orcl/users01.dbf (4)

 Block: 396     Offsets: 8101 to 8191  Dba:0x0100018c

-------------------------------------------------------

 02c20602 c11f2c00 0803c24b 6405414c l ......,....Kd.AL

 4c454e08 53414c45 534d414e 03c24d63 l LEN.SALESMAN..Mc

 0777b502 14010101 02c21102 c20402c1 l .w..............

 1f2c0008 03c24a46 05534d49 54480543 l .,....JF.SMITH.C

 4c45524b 03c25003 0777b40c 11010101 l LERK..P..w......

 02c209ff 02c11502 06250c            l .........%.

 <16 bytes per line>

02 为列与列的间隔,所以再偏移一位(8bit)

BBED> dump /v offset 8102 

 File: /opt/oracle/oradata/orcl/users01.dbf (4)

 Block: 396     Offsets: 8102 to 8191  Dba:0x0100018c

-------------------------------------------------------

 c20602c1 1f2c0008 03c24b64 05414c4c l .....,....Kd.ALL

 454e0853 414c4553 4d414e03 c24d6307 l EN.SALESMAN..Mc.

 77b50214 01010102 c21102c2 0402c11f l w...............

 2c000803 c24a4605 534d4954 4805434c l ,....JF.SMITH.CL

 45524b03 c2500307 77b40c11 01010102 l ERK..P..w.......

 c209ff02 c1150206 250c              l ........%.

 <16 bytes per line>

修改 c206-->c209

BBED> modify /x 0xc209

Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y

 File: /opt/oracle/oradata/orcl/users01.dbf (4)

 Block: 396              Offsets: 8102 to 8191           Dba:0x0100018c

------------------------------------------------------------------------

 c20902c1 1f2c0008 03c24b64 05414c4c 454e0853 414c4553 4d414e03 c24d6307 

 77b50214 01010102 c21102c2 0402c11f 2c000803 c24a4605 534d4954 4805434c 

 45524b03 c2500307 77b40c11 01010102 c209ff02 c1150206 250c 

 <32 bytes per line>

校验并应用。

BBED> sum dba 4,396

Check value for File 4, Block 396:

current = 0x27cd, required = 0x28cd

BBED> sum dba 4,396 apply

Check value for File 4, Block 396:

current = 0x28cd, required = 0x28cd

重新显示,500-->800

BBED> x /rnccntnnn

rowdata[443]                                @8064    

------------

flag@8064: 0x2c (KDRHFL, KDRHFF, KDRHFH)

lock@8065: 0x00

cols@8066:    8

col    0[3] @8067: 7521 

col    1[4] @8071: WARD

col    2[8] @8076: SALESMAN

col    3[3] @8085: 7698 

col    4[7] @8089: 22-FEB-81 

col    5[3] @8097: 1250 

col    6[2] @8101: 800 

col    7[2] @8104: 30 

修改后,重新启动数据库查看结果:

SQL> set linesize 120

SQL> select * from yangobj;

     EMPNO ENAME           JOB               MGR HIREDATE                  SAL       COMM     DEPTNO

---------- --------------- ---------- ---------- ------------------ ---------- ---------- ----------

      7369 SMITH           CLERK            7902 17-DEC-80                 800                    20

      7499 ALLEN           SALESMAN         7698 20-FEB-81                1600        300         30

      7521 WARD            SALESMAN         7698 22-FEB-81                1250        800         30

      7566 JONES           MANAGER          7839 02-APR-81                2975                    20

      7654 MARTIN          SALESMAN         7698 28-SEP-81                1250       1400         30

      7698 BLAKE           MANAGER          7839 01-MAY-81                2850                    30

      7782 CLARK           MANAGER          7839 09-JUN-81                2450                    10

      7788 SCOTT           ANALYST          7566 19-APR-87                3000                    20

      7839 KING            PRESIDENT             17-NOV-81                5000                    10

      7844 TURNER          SALESMAN         7698 08-SEP-81                1500          0         30

      7876 ADAMS           CLERK            7788 23-MAY-87                1100                    20

14 rows selected.

注意:这里500 和800都是占有2byte,如果修改为888

yang@rac1>select dump(888,1016) FROM DUAL;

DUMP(888,1016)

--------------------

Typ=2 Len=3: c2,9,59

则占用3个byte,查询数据时会出现乱码,
如何修改字符类型的数据中有提到。

时间: 2024-08-15 04:05:55

【BBED】使用bbed修改数字类型数据的相关文章

【BBED】使用bbed修改字符类型数据

前面几篇文章介绍了bbed的使用语法规则,这篇介绍如何更改字符类型的数据. yangobj表是由scott.emp经过CTAS 创建的表. SQL> select * from yangobj;      EMPNO ENAME                          JOB               MGR HIREDATE                  SAL       COMM     DEPTNO ---------- -------------------------

导出Excel时,数字类型数据被转换为字符类型,导致Excel公式无法计算

问题描述 开发平台:VS2005开发语言:C#问题:使用客户提供模板,对Excel文件进行数据填充时,数字类型的数据被转换为字符类型(单元格左上方有绿色的三角),导致Excel公式无法进行计算. 解决方案 解决方案二:你可以修改模板的列,设置格式为数字而非常规.然后导出就是数字了.解决方案三:在模板上强制设置格式为数字

【BBED】使用bbed恢复已经删除的行数据

 在oracle中,当数据行被删除时,实际上并未真正的删除.这一行仅仅是被标记为删除,并且可利用空间计数器和指针会相应的调整. 行的状态信息存储在占用每一行的前几个字节的Row Header.  Row Header 包含: 1 Row Flag 判断这行是不是行首,第一列,最后一列在不在其中,是否有行迁移和行链接.是一个标志位. 2 Lock Byte(ITL entry)和列数. 3 column count Row Flag 是一个单byte的标志掩码:标识了row的状态.标志掩码的译码如

更新-thinkphp修改bit类型表数据,只能从0修改成1,不能从1修改成0

问题描述 thinkphp修改bit类型表数据,只能从0修改成1,不能从1修改成0 如题,tp3.2.2版本,用tp修改User表数据时,sex字段用bit类型,0代表女,1代表男,页面用radio类型单选框,在修改页面能够获取数据库中的数据并显示,但在修改时,只能从女修改成男,不能从男修改成女.前者提示修改成功,数据库中数据也更新,后者提示失败,数据库中数据不更新 解决方案 $sex='0'; $data['sex']=(bool)$sex; $M->save($data); 解决方案二: $

【BBED】bbed的使用(三)

bbed的使用(一)  介绍了BBED的编译安装. bbed的使用(二) 介绍了bbed的语法规则和常用命令的使用. 本文继续介绍bbed常用命令的使用. 17 DUMP[/v] [ DBA | FILENAME | FILE | BLOCK | OFFSET | COUNT ]    dump 命令可以转储数据块的内容. 使用/v 选项可以输出详细的内容.有上面的提示可以看出,dump命令可以指定DBA,FILENAME,FILE,BLOCK,OFFSET,COUNT参数.    如果没有指定

【BBED】bbed常用命令

[BBED]bbed常用命令 有关bbed的历史文章: BBED [推荐] [BBED] SYSTEM文件头损坏的恢复(4) http://blog.itpub.net/26736162/viewspace-2084329/ [推荐] [BBED] sys.bootstrap$ 对象的恢复 http://blog.itpub.net/26736162/viewspace-2083621/ [推荐] [BBED]丢失归档文件情况下的恢复 http://blog.itpub.net/26736162

【BBED】BBED模拟并修复ORA-08102错误

[BBED]BBED模拟并修复ORA-08102错误   1.1  BLOG文档结构图     1.2  前言部分 1.2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① 使用BBED修复ORA-08102错误(重点) ② BBED的使用 ③ 数据块格式的dump文件解释 ④ ORA-08102错误的trace文件解释 ⑤ 从rdba获取ROWID信息 ⑥ 其它实用技能   Tips: ① 本文在itpub(h

【BBED】bbed的使用(一)

BBED这是Oracle一款内部工具,可以直接修改Oracle数据文件块的内容,在一些极端恢复场景下比较有用.使用起来也很方便,当然该工具不受Oracle支持,所以默认是没有生成可执行文件的,在使用前需要重新连接. 在9i/10g中连接生成bbed: cd $ORACLE_HOME/rdbms/lib make -f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed 具体操作步骤如下: oracle@localhost.localdomain:/opt/oracl

《卸甲笔记》-PostgreSQL和Oracle的数据类型的对比系列二:数字类型

PostgreSQL是世界上功能最强大的开源数据库,在国内得到了越来越多机构和开发者的青睐和应用.随着PostgreSQL的应用越来越广泛,Oracle向PostgreSQL数据库的数据迁移需求也越来越多.数据库之间数据迁移的时候,首先遇到的,并且也是最重要的,就是数据类型之间的转换.下面根据自己的理解和测试,写了一些数据类型之间的差异以及迁移时的注意事项的文章,不足之处,尚请多多指教. 数字类型 Oracle内建的数字类型有四种,分别是number,float,binary_float,bin