背景
在上篇文章:http://blog.itpub.net/9240380/viewspace-1816241/,发现如果变更记录的列宽度变宽,会导致ora-01578错误,导致数据坏块。
结论
1,如果用bbed修改列宽度加大,会导致坏块出现
2,不知为何加大列宽度,会导致坏块出现,唉,还是对于数据块结构理解不深
3,在bbed中,可以用revert回退数据块的操作
测试
SQL> select * from t_bbed_modify_row;
A
--------------------
newly
SQL> select DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID),DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID),dbms_rowid.rowid_row_number(rowid) from t_bbed_modify_row;
DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID) DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID) DBMS_ROWID.ROWID_ROW_NUMBER(ROWID)
------------------------------------ ------------------------------------ ----------------------------------
4 99003 0
BBED> set file 4
FILE# 4
BBED> set block 99003
BLOCK# 99003
BBED> find /c newly
File: /oracle/oradata/guowang/users01.dbf (4)
Block: 99003 Offsets: 8183 to 8186 Dba:0x010182bb
------------------------------------------------------------------------
6e65776c
<32 bytes per line>
可见不加count选项,默认仅显示列的前4位内容
BBED> dump /v dba 4,99003
File: /oracle/oradata/guowang/users01.dbf (4)
Block: 99003 Offsets: 8183 to 8186 Dba:0x010182bb
-------------------------------------------------------
6e65776c l newl
<16 bytes per line>
BBED> dump /v dba 4,99003 count 10
File: /oracle/oradata/guowang/users01.dbf (4)
Block: 99003 Offsets: 8183 to 8191 Dba:0x010182bb
-------------------------------------------------------
6e65776c 79020665 fd l newly..e.
<16 bytes per line>
加上count则可以显示列的全部内容
BBED> dump /v dba 4,99003 count 5
File: /oracle/oradata/guowang/users01.dbf (4)
Block: 99003 Offsets: 8183 to 8187 Dba:0x010182bb
-------------------------------------------------------
6e65776c 79 l newly
<16 bytes per line>
修改列内容由newly奕成newlya
BBED> modify /c 'newlya' dba 4,99003 offset 8183
File: /oracle/oradata/guowang/users01.dbf (4)
Block: 99003 Offsets: 8183 to 8187 Dba:0x010182bb
------------------------------------------------------------------------
6e65776c 79
<32 bytes per line>
BBED> dump /v dba 4,99003 count 6
File: /oracle/oradata/guowang/users01.dbf (4)
Block: 99003 Offsets: 8183 to 8188 Dba:0x010182bb
-------------------------------------------------------
6e65776c 7961 l newlya
<16 bytes per line>
一验证就出现坏块了
BBED> verify
Message 500 not found; No message file for product=RDBMS, facility=BBED
Message 501 not found; No message file for product=RDBMS, facility=BBED
Message 520 not found; No message file for product=RDBMS, facility=BBED
Corrupt block relative dba: 0x010182bb (file 0, block 99003)
Fractured block found during verification
Data in bad block:
type: 6 format: 2 rdba: 0x010182bb
last change scn: 0x0000.023bfd65 seq: 0x2 flg: 0x04
spare1: 0x0 spare2: 0x0 spare3: 0x0
consistency value in tail: 0xfd650661
check value in block header: 0x4d80
computed block checksum: 0x63
回退对于数据块的修改
BBED> revert
All changes made in this session will be rolled back. Proceed? (Y/N) y
Reverted file '/oracle/oradata/guowang/users01.dbf', block 99004
Reverted file '/oracle/oradata/guowang/users01.dbf', block 99003
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y
确认数据没有损坏
SQL> select * from t_bbed_modify_row;
A
--------------------
newly
SQL> alter system flush buffer_cache;
System altered.
SQL> select * from t_bbed_modify_row;
A
--------------------
newly
个人简介:
8年oracle从业经验,具备丰富的oracle技能,目前在国内北京某专业oracle服务公司从事高级技术顾问。
服务过的客户:
中国电信
中国移动
中国联通
中国电通
国家电网
四川达州商业银行
湖南老百姓大药房
山西省公安厅
中国邮政
北京302医院
河北廊坊新奥集团公司
项目经验:
中国电信3G项目AAA系统数据库部署及优化
中国联通CRM数据库性能优化
中国移动10086电商平台数据库部署及优化
湖南老百姓大药房ERR数据库sql优化项目
四川达州商业银行TCBS核心业务系统数据库模型设计和RAC部署及优化
四川达州商业银行TCBS核心业务系统后端批处理存储过程功能模块编写及优化
北京高铁信号监控系统RAC数据库部署及优化
河南宇通客车数据库性能优化
中国电信电商平台核心采购模块表模型设计及优化
中国邮政储蓄系统数据库性能优化及sql优化
北京302医院数据库迁移实施
河北廊坊新奥data guard部署及优化
山西公安厅身份证审计数据库系统故障评估
联系方式:
手机:18201115468
qq : 305076427
qq微博: wisdomone1
新浪微博:wisdomone9
qq群:275813900
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9240380/viewspace-1816245/
,如需转载,请注明出处,否则将追究法律责任。