QUOTE:
最初由 eygle 发布
可以的,注意你的步骤
数据库Open状态下是不能写入数据文件的
以下是个测试步骤:
E:\Oracle\ora92\bin>sqlplus "/ as sysdba"
SQL*Plus: Release 9.2.0.4.0 - Production on 星期一 3月 8 20:27:15 2004
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
连接到:
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.4.0 - Production
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
E:\ORACLE\ORADATA\EYGLE\SYSTEM01.DBF
E:\ORACLE\ORADATA\EYGLE\UNDOTBS01.DBF
E:\ORACLE\ORADATA\EYGLE\EYGLE01.DBF
SQL> create tablespace block
2 datafile 'e:\oracle\oradata\eygle\block.dbf'
3 size 1M
4 extent management local;
表空间已创建。
SQL> alter user eygle default tablespace block;
用户已更改。
SQL> alter user eygle quota unlimited on block;
用户已更改。
SQL> connect eygle/eygle
已连接。
SQL> create table t as select * from dba_users;
表已创建。
SQL> insert into t select * from t;
已创建8行。
SQL> /
已创建16行。
SQL> /
已创建32行。
SQL> /
已创建64行。
SQL> /
已创建128行。
SQL> /
已创建256行。
SQL> /
已创建512行。
SQL> /
已创建1024行。
SQL> /
已创建2048行。
SQL> /
已创建4096行。
SQL> /
insert into t select * from t
*
ERROR 位于第 1 行:
ORA-01653: 表EYGLE.T无法通过8(在表空间BLOCK中)扩展
SQL> commit;
提交完成。
SQL> alter system checkpoint;
系统已更改。
SQL> select count(*) from t;
COUNT(*)
----------
8192
SQL> connect / as sysdba
已连接。
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
关闭数据库后用Ultredit编辑数据文件,随便更改几个字符.
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 101785252 bytes
Fixed Size 454308 bytes
Variable Size 75497472 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
数据库已经打开。
SQL> select count(*) from eygle.t;
select count(*) from eygle.t
*
ERROR 位于第 1 行:
ORA-01578: ORACLE 数据块损坏(文件号4,块号35)
ORA-01110: 数据文件 4: 'E:\ORACLE\ORADATA\EYGLE\BLOCK.DBF'
SQL>
有个内部工具BBED也可以用来编辑数据块的内容
我在SHUTDWON IMMEDIATE后用Ultredit编辑数据文件,但还是可以统计行数,我是9I,结果不小心,在没有关闭数据库的情况下修改了block.dbf出现下列问题:
SQL> shutdown immediate
ORA-01122: 数据库文件 12 验证失败
ORA-01110: 数据文件 12: 'D:\ORACLE\ORA92\ORCL\BLOCK.DBF'
ORA-01251: 文件号12的未知文件标题版本读取
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 105978600 bytes
Fixed Size 453352 bytes
Variable Size 58720256 bytes
Database Buffers 46137344 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
ORA-01122: 数据库文件 12 验证失败
ORA-01110: 数据文件 12: 'D:\ORACLE\ORA92\ORCL\BLOCK.DBF'
ORA-01251: 文件号12的未知文件标题版本读取
现在数据库不能OPEN
我做过表T的备份使用EXP在没有问题的情况下
现在应该怎么处理