ORA-01157错误,丢失undo tablespace中数据文件的解决方法
2016-11-18 16:40
567 查看
我们先来看一下这个现象:
[oracle@djp ora12]$ pwd
/u01/app/oracle/oradata/ora12
[oracle@djp ora12]$ mv undotbs01.dbf undotbs01.dbfbak
这里,我们把unto表空间对应的数据文件作了一个更改,表面该文件已经丢失。
下面,我们使用SQL*Plus,进行对数据库的启动:
idle> conn / as sysdba
Connected to an idle instance.
idle> startup mount;
ORACLE instance started.
Total System Global Area 835104768 bytes
Fixed Size 2293880 bytes
Variable Size 469766024 bytes
Database Buffers 356515840 bytes
Redo Buffers 6529024 bytes
Database mounted.
idle> alter database open;
alter database open
*
ERROR at line 1:
ORA-01157: cannot identify/lock data file 3 - see DBWR trace file
ORA-01110: data file 3: '/u01/app/oracle/oradata/ora12/undotbs01.dbf'
idle>
这时,发现启动失败。对于该现象, 我们可以进行如下的处理:
(1)设置undo_management为auto,由自动(auto)设置为手动(manual)。这因为,当设置为auto时,系统采用undo表空间管理回滚段,当设置manual时,系统使用回滚段。这里,相当于是禁用undo tablespace。
idle> alter system set undo_management = manual scope=spfile;
System altered.
idle>
(2)再次启动数据库,使用其生效
idle> shutdown immediate;
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
idle> startup;
ORACLE instance started.
Total System Global Area 835104768 bytes
Fixed Size 2293880 bytes
Variable Size 444600200 bytes
Database Buffers 381681664 bytes
Redo Buffers 6529024 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 3 - see DBWR trace file
ORA-01110: data file 3: '/u01/app/oracle/oradata/ora12/undotbs01.dbf'
idle>
(3)对丢失的数据库文件进行一个离线删除,如下:
idle> alter database datafile '/u01/app/oracle/oradata/ora12/undotbs01.dbf'
2 offline drop
3 /
Database altered.
idle>
(4)打开数据库,并对undo tablespace重新创建。
idle> alter database open;
Database altered.
idle> drop tablespace undotbs
2 /
Tablespace dropped.
idle> create undo tablespace undotbs
2 datafile '/u01/app/oracle/oradata/ora12/undotbs01.dbf'
3 size 100M
4 autoextend on
5 next 50M
6 maxsize unlimited
7 /
Tablespace created.
idle>
(5)再次设置undo_management为auto,并重启数据库:
idle> alter system set undo_management = auto scope=spfile
2 /
System altered.
idle> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
idle> startup;
ORACLE instance started.
Total System Global Area 835104768 bytes
Fixed Size 2293880 bytes
Variable Size 469766024 bytes
Database Buffers 356515840 bytes
Redo Buffers 6529024 bytes
Database mounted.
Database opened.
idle> desc dba_objects;
Name Null? Type
----------------------------------------- -------- ----------------------------
OWNER VARCHAR2(128)
OBJECT_NAME VARCHAR2(128)
SUBOBJECT_NAME VARCHAR2(128)
OBJECT_ID NUMBER
DATA_OBJECT_ID NUMBER
OBJECT_TYPE VARCHAR2(23)
CREATED DATE
LAST_DDL_TIME DATE
TIMESTAMP VARCHAR2(19)
STATUS VARCHAR2(7)
TEMPORARY VARCHAR2(1)
GENERATED VARCHAR2(1)
SECONDARY VARCHAR2(1)
NAMESPACE NUMBER
EDITION_NAME VARCHAR2(128)
SHARING VARCHAR2(13)
EDITIONABLE VARCHAR2(1)
ORACLE_MAINTAINED VARCHAR2(1)
idle>
到此,该问题成功解决。
[oracle@djp ora12]$ pwd
/u01/app/oracle/oradata/ora12
[oracle@djp ora12]$ mv undotbs01.dbf undotbs01.dbfbak
这里,我们把unto表空间对应的数据文件作了一个更改,表面该文件已经丢失。
下面,我们使用SQL*Plus,进行对数据库的启动:
idle> conn / as sysdba
Connected to an idle instance.
idle> startup mount;
ORACLE instance started.
Total System Global Area 835104768 bytes
Fixed Size 2293880 bytes
Variable Size 469766024 bytes
Database Buffers 356515840 bytes
Redo Buffers 6529024 bytes
Database mounted.
idle> alter database open;
alter database open
*
ERROR at line 1:
ORA-01157: cannot identify/lock data file 3 - see DBWR trace file
ORA-01110: data file 3: '/u01/app/oracle/oradata/ora12/undotbs01.dbf'
idle>
这时,发现启动失败。对于该现象, 我们可以进行如下的处理:
(1)设置undo_management为auto,由自动(auto)设置为手动(manual)。这因为,当设置为auto时,系统采用undo表空间管理回滚段,当设置manual时,系统使用回滚段。这里,相当于是禁用undo tablespace。
idle> alter system set undo_management = manual scope=spfile;
System altered.
idle>
(2)再次启动数据库,使用其生效
idle> shutdown immediate;
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
idle> startup;
ORACLE instance started.
Total System Global Area 835104768 bytes
Fixed Size 2293880 bytes
Variable Size 444600200 bytes
Database Buffers 381681664 bytes
Redo Buffers 6529024 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 3 - see DBWR trace file
ORA-01110: data file 3: '/u01/app/oracle/oradata/ora12/undotbs01.dbf'
idle>
(3)对丢失的数据库文件进行一个离线删除,如下:
idle> alter database datafile '/u01/app/oracle/oradata/ora12/undotbs01.dbf'
2 offline drop
3 /
Database altered.
idle>
(4)打开数据库,并对undo tablespace重新创建。
idle> alter database open;
Database altered.
idle> drop tablespace undotbs
2 /
Tablespace dropped.
idle> create undo tablespace undotbs
2 datafile '/u01/app/oracle/oradata/ora12/undotbs01.dbf'
3 size 100M
4 autoextend on
5 next 50M
6 maxsize unlimited
7 /
Tablespace created.
idle>
(5)再次设置undo_management为auto,并重启数据库:
idle> alter system set undo_management = auto scope=spfile
2 /
System altered.
idle> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
idle> startup;
ORACLE instance started.
Total System Global Area 835104768 bytes
Fixed Size 2293880 bytes
Variable Size 469766024 bytes
Database Buffers 356515840 bytes
Redo Buffers 6529024 bytes
Database mounted.
Database opened.
idle> desc dba_objects;
Name Null? Type
----------------------------------------- -------- ----------------------------
OWNER VARCHAR2(128)
OBJECT_NAME VARCHAR2(128)
SUBOBJECT_NAME VARCHAR2(128)
OBJECT_ID NUMBER
DATA_OBJECT_ID NUMBER
OBJECT_TYPE VARCHAR2(23)
CREATED DATE
LAST_DDL_TIME DATE
TIMESTAMP VARCHAR2(19)
STATUS VARCHAR2(7)
TEMPORARY VARCHAR2(1)
GENERATED VARCHAR2(1)
SECONDARY VARCHAR2(1)
NAMESPACE NUMBER
EDITION_NAME VARCHAR2(128)
SHARING VARCHAR2(13)
EDITIONABLE VARCHAR2(1)
ORACLE_MAINTAINED VARCHAR2(1)
idle>
到此,该问题成功解决。
相关文章推荐
- 手工建库后表空间数据文件非自动扩展引起的错误:ORA-01653: unable to extend* in tablespace*
- ORA-01157:无法标识/锁定数据文件,ORA-01110:表空间丢失错误
- ArcSDE复制数据时出现ORA-00955名称已由现有对象使用错误的解决方法
- 未启用归档数据库非数据文件(spfile,control,redo,undo,temp)全丢失的恢复方法
- ORA-25153: Temporary Tablespace is Empty 解决方法
- MySQL下PID文件丢失的相关错误的解决方法
- 意外删除Oracle数据文件(dbf),恢复oralce库的解决办法--Oracle错误代码:ORA-01033
- 【转】ArcSDE复制数据时出现ORA-00955名称已由现有对象使用错误的解决方法
- 未启用归档数据库非数据文件(spfile,control,redo,undo,temp)全丢失的恢复方法
- oralce日志文件无法归档错误ORA-16038解决方法
- 在没备份undo的情况下,undo丢失,重启数据库报ORA-01157错误
- APACHE FTP 文件上传丢失数据的解决方法
- ora-02437错误解决方法总结--表数据去重
- 未启用归档数据库非数据文件(spfile,control,redo,undo,temp)全丢失的恢复方法
- 【android日常错误】Android R.java文件丢失,解决方法
- ORA-01157与ORA-01110错误以及删除数据文件后数据字典中仍然存在问题
- 物理删除oracle数据文件(DBF文件)导致数据库ORA-01033的解决方法
- 断电造成数据库文件损坏的解决方法,适用于ora-01122,ora-01110,ora-01207等错误
- windows xp系统启动时,出现“windows/system32/hal.dll文件丢失”的错误提示,最佳解决方法.
- 关于EXP-00056: 遇到 ORACLE 错误 1455 ORA-01455: 转换列溢出整数数据类型 EXP-00000: 导出终止失败 的问题解决方法整理