ITPub博客

首页 > > > Oracle 文件损坏~修复

Oracle 文件损坏~修复

作者:格伯纳 时间:2023-02-23 13:56:04 0 删除 编辑

概述,

最近在学习Oracle,环境中创建的数据文件放在了 /tmp文件中,10天之后,之前创建的数据文件被操作系统自动删除了,在启动Oracle数据库的时候,发生了错误,大致意思就是:文件坏了~数据库不能正常启动。现进行修复该问题,做个笔记。


1、登录服务器,切换值oracle账号,登录数据库

[root@localhost ~]# su - oracle
[oracle@localhost ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Tue Jul 6 00:59:21 2021

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> 
SQL> 

2、从控制台输出的日志中`Connected to an idle instance.`可以看出:实例没有被连接。现进行启动数据库

SQL> startup
ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
ORACLE instance started.

Total System Global Area 4275781632 bytes
Fixed Size                  2260088 bytes
Variable Size            1560281992 bytes
Database Buffers         2701131776 bytes
Redo Buffers               12107776 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 12 - see DBWR trace file
ORA-01110: data file 12: '/tmp/abs.dbf'

SQL> 

在启动的过程中,中途发生了报错了,注意:此时的文件是数据文件。

修改过程:

查看了一下当前的数据库状态(结果是:mount):

SQL> select status from v$instance;

STATUS
------------
MOUNTED

尝试了一下 alter database open; 结果还是报错。。。

SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01157: cannot identify/lock data file 12 - see DBWR trace file
ORA-01110: data file 12: '/tmp/abs.dbf'

虽然报错了、我不知道咋处理,,,但我依旧不慌张。。。


就是辣么淡定、就是辣么自信、、、是什么支撑了我????

度娘。。。

我在度娘里,扒拉到了这么一个帖子:临时表空间损坏的修复_ITPUB博客

然后,尝试修复:

SQL> alter database datafile '/tmp/abs.dbf' offline drop;
Database altered.

哦吼~删除成功!!! 然后在打开数据库:

SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01157: cannot identify/lock data file 14 - see DBWR trace file
ORA-01110: data file 14: '/tmp/abs_index.dbf'

又报错了~ 你会慌嘛???

肯定不会,接着删就完事了!!!(从此划船不用桨,全靠浪,舒服的一匹~)

可快乐的幸福总是那么短暂~

直到我遇到了这么一个报错:

SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01157: cannot identify/lock data file 16 - see DBWR trace file
ORA-01110: data file 16: '/tmp/undo1.dbf
'

这是嘛子???

这是undo表空间。。。

删不了哇~~~

删不了哇~~~

删不了哇~~~

SQL> alter database datafile '/tmp/undo1.dbf' offline drop;
alter database datafile '/tmp/undo1.dbf' offline drop
*
ERROR at line 1:
ORA-01516: nonexistent log file, data file, or temporary file "/tmp/undo1.dbf"

我尝试过各种度娘、也尝试过问问小伙伴。。。

结果。。。

就在渺茫之际~~~突然,电闪雷鸣,风云交加,我知道:这天....要下雨了~~

后又突发奇想:要不把路径换成数字试试~

(其实,我是看到了一个博客人家是用的数字,没有用路径。。。)

SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01157: cannot identify/lock data file 16 - see DBWR trace file
ORA-01110: data file 16: '/tmp/undo1.dbf
'
### 把 路径'/tmp/undo1.dbf'换成了数字:16,竟然可以了。。。
SQL> alter database datafile 16 offline drop;
Database altered.

SQL> 

把 路径'/tmp/undo1.dbf'换成了数字:16,竟然可以了。。。

此时,久违的笑容又回来了

一鼓作气~

SQL> recover database;
Media recovery complete.
SQL> 
SQL> alter database open;
Database altered.

SQL> 

数据库最终启动成功~~~

一本正经的扯个犊子:
   为啥写文件路径删除不行?一定写数字,才可以正常删除。

   我也不知道~~~

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31509949/viewspace-3141763/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: Oracle 表空间管理
请登录后发表评论 登录
全部评论
管理员

注册时间:2018-03-30

  • 博文量
    2383
  • 访问量
    984257