Oracle中模拟及修复数据块损坏,itpub link:
http://www.itpub.net/showthread.php?threadid=201766
Oracle中模拟及修复数据块损坏
itpub link:
http://www.itpub.net/showthread.php?threadid=201766
1.插入数据
E:Oracleora92bin>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;
IXDBA.NET社区论坛
NAME
--------------------------------------------------------------------------------
E:ORACLEORADATAEYGLESYSTEM01.DBF
E:ORACLEORADATAEYGLEUNDOTBS01.DBF
E:ORACLEORADATAEYGLEEYGLE01.DBF
SQL> create tablespace block
2 datafile 'e:oracleoradataeygleblock.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 例程已经关闭。
2.损坏数据文件
关闭数据库后用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: