您的位置:首页 > 数据库

误删除表空间的解决办法(造成ORA-01033:

2013-05-31 14:15 295 查看
oracle 9i误删除表空间的解决办法(造成ORA-01033: ORACLE initialization or shutdown in progress ;ORA-01110: 数据库未打开)

依次执行如下命令:
0.开始--运行-- 输入 services.msc进入服务,在里面开启orcaleServiceORCL

1.开始--运行-- 输入cmd
sqlplus /nolog
SQL>conn system/manage as sysdba;
已连接到空闲例程。

2.SQL>shutdown immediate;

ORA-01109: 数据库未打开

已经卸载数据库。
ORACLE 例程已经关闭。

3.SQL>startup mount;

ORACLE 例程已经启动。

Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。

4.SQL>alter database open;(查看误删除的文件)

alter database open
*
ERROR 位于第 1 行:
ORA-01157: 无法标识/锁定数据文件 11 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 11: 'E:\WB\MYSPACE.ORA'

5.SQL>alter database clear unarchived logfile group 1 unrecoverable datafile; (在文件恢复出错时,使用此命令将文件删除)
数据库已更改

SQL>alter database clear unarchived logfile group 2 unrecoverable datafile;
数据库已更改

SQL>alter database clear unarchived logfile group 3 unrecoverable datafile;
数据库已更改

6.SQL>alter database datafile 'E:\WB\MYSPACE.ORA' offline drop;(将误删除的表空间从数据库中卸载)
数据库已更改

7.SQL>alter database open;
数据库已更改

至此,结束了,再登陆后就成功了!

SQL> alter tablespace 表空间名 online;
*
ERROR 位于第 1 行:
ORA-01157: 无法标识/锁定数据文件 11 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 11: 'E:\WB\MYSPACE.ORA'

可见这是由于C:\ORACLE\ORADATA\ORCL\REDO01.LOG被误删造成的,那么有什么办法可以解决这个问题呢(希望保留用户vm_uer的所有表及其中的数据)?恳请大侠们指点。
---------------------------------------------------------------

首先,执行下面的语句看看group1是不是current日志组
SQL> select group#,sequence#,archived,status from v$log;

如果被删除的日志不是当前日志组的成员,比较简单
SQL> alter database clear logfile group 1;
如果你的库是非归档的,或许要用下面的语句
SQL> alter database clear unarchived logfile group 1;

如果是当前日志组损坏,但是数据库是正常关闭的,上面的办法也可以使用

如果日志组中有活动的事务,那么可能需要利用备份来恢复了,否则只有通过隐含参数强制打开库(不推荐,如果是生产库,最好请求技术支持)

========================================================================================
非归档模式下恢复利用offline drop命令误删除的数据文件
标签: offline drop 非归档 恢复 zhaolinjnu 分类: Oracle 2008-02-16 10:16
众所周知,非归档模式下,联机日志并不归档。可能大多数的网友一直以来都会有这样的模糊认识。数据库作recover时,只能利用归档日志和current redo log联机日志。实际上所有的联机日志都是可以用的。此文介绍在非档模式下,恢复利用offline drop命令误删除的数据文件。offline drop命令相当于把一个数据文件至于离线状态,并且需要恢复或再也不使用此数据文件了。所在,在OS级别并不是删除数据文件的意思。但是要在非档模式下恢复此数据文件的前提是,联机日志中自数据文件创建以来的所有联机日志都没有被覆盖。下面是整个实验过程,并且注意,在整个恢复的过程中注意从视图中获得的数据文件状态的变化:

SQL> archive log list;
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination c:\arc
Oldest online log sequence 7
Current log sequence 9

SQL> set linesize 200
SQL> select * from v$log;

GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ----------
1 1 8 52428800 1 YES INACTIVE 730667 2008:01:15 08:57:55
2 1 9 52428800 1 NO CURRENT 755863 2008:01:15 11:49:53
3 1 7 52428800 1 YES INACTIVE 696036 2008:01:14 12:30:46

SQL>
SQL> alter tablespace users add datafile 'C:\ORADATA\TEST\TEST\users03.dbf' size 5M;

Tablespace altered.

SQL> alter system switch logfile;

System altered.

SQL> select * from v$log;

GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ----------
1 1 8 52428800 1 YES INACTIVE 730667 2008:01:15 08:57:55
2 1 9 52428800 1 NO ACTIVE 755863 2008:01:15 11:49:53
3 1 10 52428800 1 NO CURRENT 768362 2008:01:18 15:19:46

在操作系统层删除6号数据文件后,对6号数据文件作offline drop操作

SQL> alter database datafile 'C:\ORADATA\TEST\TEST\users03.dbf' offline drop;

Database altered.

SQL>

查看数据文件状态,当对数据文件执行offline drop 命令后,数据文件状态变为recover

SQL> select file#,status,name from v$datafile order by 3;

FILE# STATUS NAME
---------- ------- ------------------------------------------------------------------------
3 ONLINE C:\ORADATA\TEST\TEST\SYSAUX01.DBF
1 SYSTEM C:\ORADATA\TEST\TEST\SYSTEM01.DBF
5 ONLINE C:\ORADATA\TEST\TEST\TBS_UNDO_01.DBF
4 ONLINE C:\ORADATA\TEST\TEST\USERS01.DBF
2 ONLINE C:\ORADATA\TEST\TEST\USERS02.DBF
6 RECOVER C:\ORADATA\TEST\TEST\USERS03.DBF
SQL>

根据控制文件中的信息,重新创建6号数据文件
SQL> alter database create datafile 6;

Database altered.

在执行完创建命令后,数据文件状态仍然为recover,此时数据文件中只有非常简单的信息

SQL> select file#,status,name from v$datafile order by 3;

FILE# STATUS NAME
---------- ------- ------------------------------------------------------------------------
3 ONLINE C:\ORADATA\TEST\TEST\SYSAUX01.DBF
1 SYSTEM C:\ORADATA\TEST\TEST\SYSTEM01.DBF
5 ONLINE C:\ORADATA\TEST\TEST\TBS_UNDO_01.DBF
4 ONLINE C:\ORADATA\TEST\TEST\USERS01.DBF
2 ONLINE C:\ORADATA\TEST\TEST\USERS02.DBF
6 RECOVER C:\ORADATA\TEST\TEST\USERS03.DBF

因为联机日志还未被覆盖,尽管处于非归档模式,仍然可以对6号数据文件作恢复

SQL> recover datafile 6;
Media recovery complete.
SQL>

数据文件状态变为offline
SQL> select file#,status,name from v$datafile order by 3;

FILE# STATUS NAME
---------- ------- -------------------------------------------------------
3 ONLINE C:\ORADATA\TEST\TEST\SYSAUX01.DBF
1 SYSTEM C:\ORADATA\TEST\TEST\SYSTEM01.DBF
5 ONLINE C:\ORADATA\TEST\TEST\TBS_UNDO_01.DBF
4 ONLINE C:\ORADATA\TEST\TEST\USERS01.DBF
2 ONLINE C:\ORADATA\TEST\TEST\USERS02.DBF
6 OFFLINE C:\ORADATA\TEST\TEST\USERS03.DBF

在对数据文件作online操作后,数据文件恢复正常
SQL> alter database datafile 6 online;

Database altered.

SQL> select file#,status,name from v$datafile order by 3;

FILE# STATUS NAME
---------- ------- ----------------------------------------------
3 ONLINE C:\ORADATA\TEST\TEST\SYSAUX01.DBF
1 SYSTEM C:\ORADATA\TEST\TEST\SYSTEM01.DBF
5 ONLINE C:\ORADATA\TEST\TEST\TBS_UNDO_01.DBF
4 ONLINE C:\ORADATA\TEST\TEST\USERS01.DBF
2 ONLINE C:\ORADATA\TEST\TEST\USERS02.DBF
6 ONLINE C:\ORADATA\TEST\TEST\USERS03.DBF

从上面恢复的整个过程可以看出,尽管数据库处于非归档模式,只要数据文件创建以来的联机日志还没有被覆盖,数据文件就可以恢复出来。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库 办法 system
相关文章推荐