事故原因如下:
今天早上查看表空间利用率时发现一oracle8i数据库宕机了操作完後过段时间導致數據庫當機。查询警告日志发现大量的关于数据文件的临时读取错误。

原来一同事因磁盘空间达到95%,去清理临时数据和log时,错误的执行了如下命令,清空了临时数据文件。

cat /dev/null > /opt/oracle/oradata/openview/OPC_TEMP_1.dbf
cat /dev/null > /opt/oracle/oradata/openview/OPC_TEMP_1.dbf
cat /dev/null > /opt/oracle/oradata/openview/OPC_TEMP_1.dbf

之后我在启动数据库的时候报错如下:

Starting ORACLE instance (normal)
LICENSE_MAX_SESSION = 0
LICENSE_SESSIONS_WARNING = 0
LICENSE_MAX_USERS = 0
Starting up ORACLE RDBMS Version: 8.1.7.0.0.
System parameters with non-default values:
  processes                = 50
  shared_pool_size         = 120000000
  control_files            = /opt/oracle/oradata/openview/control01.ctl, /opt/oracle/oradata/openview/control02.ctl, /opt/oracle/oradata/openview/control03.ctl
  db_block_buffers         = 550
  db_block_size            = 8192
  compatible               = 8.1.7.0.0
  log_archive_start        = FALSE
  log_archive_dest         = /opt/oracle/admin/openview/arch
  log_archive_format       = T%TS%S.ARC
  log_buffer               = 65536
  log_checkpoint_interval  = 99999
  db_files                 = 50
  db_file_multiblock_read_count= 8
  dml_locks                = 100
  rollback_segments        = r01, r02, r03, r04
  remote_os_authent        = TRUE
  db_name                  = openview
  open_cursors             = 500
  os_authent_prefix        =
  background_dump_dest     = /opt/oracle/admin/openview/bdump
  user_dump_dest           = /opt/oracle/admin/openview/udump
  max_dump_file_size       = 10240
  core_dump_dest           = /opt/oracle/admin/openview/cdump
PMON started with pid=2
DBW0 started with pid=3
LGWR started with pid=4
CKPT started with pid=5
SMON started with pid=6
RECO started with pid=7
Fri Jun 21 08:18:51 2013
ALTER DATABASE   MOUNT
Fri Jun 21 08:18:55 2013
Successful mount of redo thread 1, with mount id 2788845359.
Fri Jun 21 08:18:55 2013
Database mounted in Exclusive Mode.
Completed: ALTER DATABASE   MOUNT
Fri Jun 21 08:18:55 2013
ALTER DATABASE OPEN
Fri Jun 21 08:18:55 2013
Errors in file /opt/oracle/admin/openview/udump/ora_10395_openview.trc:
ORA-01110: data file 5: '/opt/oracle/oradata/openview/OPC_TEMP_1.dbf'
ORA-01115: IO error reading block from file 5 (block # 1)
ORA-27069: skgfdisp: attempt to do I/O beyond the range of the file
Additional information: 1
Additional information: 1
ORA-01110: data file 2: '/opt/oracle/oradata/openview/temp_1.dbf'
ORA-01115: IO error reading block from file 2 (block # 1)
ORA-27069: skgfdisp: attempt to do I/O beyond the range of the file
Additional information: 1
Additional information: 1
Fri Jun 21 08:18:55 2013
Errors in file /opt/oracle/admin/openview/udump/ora_10395_openview.trc:
ORA-01110: data file 21: '/opt/oracle/oradata/openview/OPC_TEMP_2.dbf'
ORA-01115: IO error reading block from file 21 (block # 1)
ORA-27069: skgfdisp: attempt to do I/O beyond the range of the file
Additional information: 1
Additional information: 1
ORA-01110: data file 2: '/opt/oracle/oradata/openview/temp_1.dbf'
ORA-01115: IO error reading block from file 2 (block # 1)
ORA-27069: skgfdisp: attempt to do I/O beyond the range of the file
Additional information: 1
Additional information: 1
ORA-1110 signalled during: ALTER DATABASE OPEN...
Fri Jun 21 08:20:09 2013
重新执行:
alter database open
Fri Jun 21 08:20:31 2013
Errors in file /opt/oracle/admin/openview/udump/ora_10401_openview.trc:
ORA-01110: data file 5: '/opt/oracle/oradata/openview/OPC_TEMP_1.dbf'
ORA-01115: IO error reading block from file 5 (block # 1)
ORA-27069: skgfdisp: attempt to do I/O beyond the range of the file
Additional information: 1
Additional information: 1
ORA-01110: data file 2: '/opt/oracle/oradata/openview/temp_1.dbf'
ORA-01115: IO error reading block from file 2 (block # 1)
ORA-27069: skgfdisp: attempt to do I/O beyond the range of the file
Additional information: 1
Additional information: 1
Fri Jun 21 08:20:31 2013
Errors in file /opt/oracle/admin/openview/udump/ora_10401_openview.trc:
ORA-01110: data file 21: '/opt/oracle/oradata/openview/OPC_TEMP_2.dbf'
ORA-01115: IO error reading block from file 21 (block # 1)
ORA-27069: skgfdisp: attempt to do I/O beyond the range of the file
Additional information: 1
Additional information: 1
ORA-01110: data file 2: '/opt/oracle/oradata/openview/temp_1.dbf'
ORA-01115: IO error reading block from file 2 (block # 1)
ORA-27069: skgfdisp: attempt to do I/O beyond the range of the file
Additional information: 1
Additional information: 1
ORA-1110 signalled during: alter database open
...
select status,instance_name from v$instance;
发现数据库在mounted状态下,仍然无法正常启动。
recover database;也不行。

最后确定清空的数据文件及所在表空间后做如下操作:

alter database datafile '/opt/oracle/oradata/openview/temp_1.dbf' offline drop
Fri Jun 21 08:56:45 2013
Completed: alter database datafile '/opt/oracle/oradata/openv
Fri Jun 21 08:57:02 2013
alter database open
Fri Jun 21 08:57:02 2013
Errors in file /opt/oracle/admin/openview/udump/ora_19584_openview.trc:
ORA-01110: data file 21: '/opt/oracle/oradata/openview/OPC_TEMP_2.dbf'
ORA-01115: IO error reading block from file 21 (block # 1)
ORA-27069: skgfdisp: attempt to do I/O beyond the range of the file
Additional information: 1
Additional information: 1
ORA-01110: data file 5: '/opt/oracle/oradata/openview/OPC_TEMP_1.dbf'
ORA-01115: IO error reading block from file 5 (block # 1)
ORA-27069: skgfdisp: attempt to do I/O beyond the range of the file
Additional information: 1
Additional information: 1
Fri Jun 21 08:57:02 2013
ORA-1110 signalled during: alter database open
...
Fri Jun 21 08:57:50 2013
alter database datafile '/opt/oracle/oradata/openview/OPC_TEMP_1.dbf' offline drop
Fri Jun 21 08:57:50 2013
Completed: alter database datafile '/opt/oracle/oradata/openv
Fri Jun 21 08:58:00 2013
alter database open
ORA-1110 signalled during: alter database open
...
Fri Jun 21 08:58:24 2013
alter database datafile '/opt/oracle/oradata/openview/OPC_TEMP_2.dbf' offline drop
Fri Jun 21 08:58:24 2013
Completed: alter database datafile '/opt/oracle/oradata/openv
Fri Jun 21 08:58:33 2013
alter database open
Beginning crash recovery of 1 threads
Fri Jun 21 08:58:33 2013
Thread recovery: start rolling forward thread 1
Recovery of Online Redo Log: Thread 1 Group 1 Seq 93032 Reading mem 0
  Mem# 0 errs 0: /opt/oracle/oradata/openview/redo01.log
Recovery of Online Redo Log: Thread 1 Group 2 Seq 93033 Reading mem 0
  Mem# 0 errs 0: /opt/oracle/oradata/openview/redo02.log
Fri Jun 21 08:58:34 2013
Thread recovery: finish rolling forward thread 1
Thread recovery: 551 data blocks read, 249 data blocks written, 1508 redo blocks read
Crash recovery completed successfully
Fri Jun 21 08:58:34 2013
Thread 1 advanced to log sequence 93034
Thread 1 opened at log sequence 93034
  Current log# 3 seq# 93034 mem# 0: /opt/oracle/oradata/openview/redo03.log
Successful open of redo thread 1.
Fri Jun 21 08:58:34 2013
SMON: enabling cache recovery
SMON: enabling tx recovery
Fri Jun 21 08:58:35 2013
Completed: alter database open

最終數據庫打開ok;接著開始重建臨時數據文件及表空:
alter tablespace opc_temp add tempfile '/opt/oracle/oradata/openview/OPC_TEMP_3.dbf' SIZE 100M
Fri Jun 21 09:13:42 2013
ORA-3217 signalled during: alter tablespace opc_temp add tempfile '/opt/oracl...
Fri Jun 21 09:15:16 2013
DROP TABLESPACE TEMP
Fri Jun 21 09:15:16 2013
Completed: DROP TABLESPACE TEMP
Fri Jun 21 09:26:12 2013
create temporary tablespace temp tempfile '/opt/oracle/oradata/openview/temp_1.dbf[D[D[D[2[C[C[C[C' size 100M
Fri Jun 21 09:26:40 2013
Completed: create temporary tablespace temp tempfile '/opt/or

alter tablespace opc_temp add tempfile '/opt/oracle/oradata/openview/OPC_TEMP_1.dbf' size 200M
Fri Jun 21 09:32:46 2013
ORA-3217 signalled during: alter tablespace opc_temp add tempfile '/opt/oracl...

drop tablespace opc_temp
Fri Jun 21 09:38:57 2013
Completed: drop tablespace opc_temp
Fri Jun 21 09:41:21 2013
create temporary tablespace opc_temp tempfile '/opt/oracle/oradata/openview/OPC_TEMP_1.dbf' size 200M
Fri Jun 21 09:41:21 2013
Completed: create temporary tablespace opc_temp tempfile '/op

总结测试:此问题后在oracle10g,11g中测试如上操作清空临时数据文件后,然而并不会导致数据库宕机问题。只需要重建临时表空间及数据文件即可。此文件在oracle管理机制中不同于其他数据文件的管理。

临时数据文件简介:

Oracle中的临时数据文件是一个特殊的数据文件类型。当内存不足以在RAM中保存一个大规模排序操作的中间结果或结果集时,Oracle将使用临时文件来存储它们。永久数据对象,如表或一个索引,是不会存储到临时文件中的,但临时表或临时索引的内容则可能存储到临时文件中。所以,不能在临时文件中创建自己的应用程序表,但可以使用临时表存储临时数据。临时文件从不生成重做日志,但生成撤销日志,当用于全局临时表时,如果准备回滚一些事务,就可以在自己的会话中完成。

本地管理的(locally managed)临时表空间(temporary tablespace)使用临时的数据文件(datafile)(临时文件),这样的文件与普通数据文件类似,用于磁盘上的分类和临时的存储。

但有以下区别:
● 临时文件总是被设置为 NOLOGGING 模式。
● 用户不能将临时文件设为之读
● 用户不能使用 ALTER DATABASE 语句创建临时文件
● 介质恢复(media recovery)不能识别临时文件:
● BACKUP CONTROLFILE 不会产生与临时文件有关的信息
● CREATE CONTROLFILE 不能设定与临时文件有关的信息
● 当用户创建临时文件或改变其容量时,Oracle并不保证按照用户指定的文件容量为其分配磁盘空间。在某些文件系统(file systems)中(例如UNIX)磁盘块(disk block)并不会在文件创建或改变容量时分配,而是在其被使用之前 才分配。

值得注意的是:

临时文件(tempfile)创建与改变容量操作执行的更快。但是随着临时文件的使用可能会导致磁盘空间不足。

● 临时文件(tempfile)信息可以从 DBA_TEMP_FILES 数据字典表及 V$TEMPFILE 动态性能视图(dynamic performance view)中查询,但是不存在于 DBA_DATA_FILES 或 V$DATAFILE 视图中。

参考资料:

http://www.2cto.com/database/201305/214024.html

http://www.sogou.com/websnapshot?ie=utf8&url=http%3A%2F%2Fblog.csdn.net%2Ffufeihappy%2Farchive%2F2010%2F12%2F07%2F6061031.aspx&did=5e937446bd287857-1a05c43acea40f30-3fb7963f295d97f5a566a9882f02535a&k=5facfb3c3bf028dd01d7539f93452a85&encodedQuery=%E5%85%B3%E4%BA%8Eoracle%E7%9A%84%E4%B8%B4%E6%97%B6%E6%95%B0%E6%8D%AE%E6%96%87%E4%BB%B6&query=%E5%85%B3%E4%BA%8Eoracle%E7%9A%84%E4%B8%B4%E6%97%B6%E6%95%B0%E6%8D%AE%E6%96%87%E4%BB%B6&&pid=Af52148&duppid=1&p=50040111&dp=1&w=01020400&m=0&st=0

扩展内容,临时数据文件及表空间的修改要用如下语句:

alter database tempfile 'file_path/file_name' resize;即可同时也可通过alter tablespace temp_tbs add tempfile 添加数据文件。

undo表空间及数据文件的修改:

undo 数据文件可直接alter database datafile修改,同时undo表空间也可通过alter tablespace undo_tbs add datafie 添加数据文件。

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

转载于:http://blog.itpub.net/28612416/viewspace-764491/

oracle8i误删除临时表空间后的恢复相关推荐

  1. oracle发现表被锁后又没了,Oracle的表被锁后的恢复

    运行下列SQL,找出数据库的serial#,执行结果如下图所示 SELECT T2.USERNAME, T2.SID, T2.SERIAL#, T2.LOGON_TIME   FROM V$LOCKE ...

  2. oracle删除临时表空间一直处于等待状态

    现象: 新建一个临时表空间mytemp 然后将其改为默认临时表空间后,执行一条带order by的查询语句,查询出结构后, 修改默认临时表空间为原来的temp,然后执行 drop tablespace ...

  3. sql 临时表_深度分析 | JDBC与MySQL临时表空间的分析

    原创作者:爱可生开源社区 背景 应用 JDBC 连接参数采用 useCursorFetch=true,查询结果集存放在 mysqld 临时表空间中,导致ibtmp1 文件大小暴增到90多G,耗尽服务器 ...

  4. oracle如何查询临时表空间,Oracle查询临时表空间的占用

    可以使用以下语句查询是哪个session number的哪个sql占用了较大的临时表空间 select inst_id,username,session_num,sql_id,tablespace,s ...

  5. oracle 误删除表数据,Oracle误删除表数据后的数据恢复详解

    Oracle误删除表数据后的恢复详解 测试环境: SYSTEM:IBM AIX 5L                         Oracle Version:10gR2 1. undo_rete ...

  6. Oracle 11g 数据恢复 数据误删除后的恢复 0、执行 select log_mode from v$database;查看是否为归档模式 1、确定删除时间和被删除的表 04-23,GR

    Oracle 11g 数据恢复 数据误删除后的恢复 0.执行 select log_mode  from v$database;查看是否为归档模式 1.确定删除时间和被删除的表 04-23,GRDA0 ...

  7. 达梦误删除表空间文件恢复

    误删除表空间文件恢复 此方法可以恢复误删除表空间文件后通过系统保留的副本文件进行恢复(目前只支持Linux系统).因此只能在数据库服务还在的情况和操作系统保留时间内才能进行恢复,如果数据库重启或者操作 ...

  8. Oracle误删除表空间的恢复

    对于误删除表空间的恢复,本文通过基于数据库的时间点恢复和基于表空间的时间点恢复分别加以讨论 一 通过基于数据库的时间点恢复被误删除的表空间 1 需要注意的事项 a 基于数据库的时间点恢复将会回退整个数 ...

  9. 模拟数据库,表空间和数据文件损坏后的恢复操作

    1环境准备 对数据库做一次全备份: 验证当前的备份文件: 2数据库损坏的恢复 2.1模拟数据库损坏 尝试重启数据库查看报错: 这里需要重点说明的是因为我们用的是CATLOG数据库作为目录数据库,所以即 ...

最新文章

  1. [蓝桥杯2017初赛]纸牌三角形-枚举permutation+数论
  2. 【SPFA】【最短路/次短路】GF打Dota
  3. catcti监控linux主机,CentOS7搭建Prometheus 监控Linux主机
  4. MySQL笔记-ibd文件格式初步分析(仅数据块笔记)
  5. Python中的zip函数
  6. 20191024:单调栈问题的引出
  7. Protobuf3详细介绍
  8. 服务器修复工具,服务器加固工具
  9. 数据分析方法论(6种方法,8个思路)
  10. AR图书,看着很美其实有点坑
  11. 注册Heroku账户
  12. 39 What Determines the Kind of Person You Are ?是什么决定了你是哪种内型的人 ?
  13. [置顶] 程序员面试之道(《程序员面试笔试宝典》)之程序员如何保持身心健康?
  14. bmp/gif/jpg图象最底层原理分析
  15. 户外直播、慢直播、赛事直播等直播行业的未来发展趋势
  16. Nginx 实现文件夹上传(保留目录结构)
  17. 【BIB文献管理】LATEX使用bib
  18. Mac新手入门以及常用软件推荐
  19. 【毕设项目问题】IDEA打开springboot项目,启动项上有红色叉叉
  20. nagios 服务端与客户端监控安装与详细配置,各配置文件详解

热门文章

  1. FastDFS V6.06 阿里云集群安装配置双IP(踩坑)
  2. Windows 11 有望支持苹果 M1 Mac?微软和高通的秘密协议即将到期
  3. C# Parellel.For 和 Parallel.ForEach
  4. ul阻燃标准有几个等级_阻燃等级划分标准
  5. abaqus python 读取文件_ABAQUS Command 如何调用或执行 Python 脚本文件
  6. 苹果MacBook Pro usb连接iPhone反复重连解决方法
  7. scala编译常见错误
  8. redhat 复制文件夹及子文件夹_linux如何复制文件夹和移动文件夹
  9. 10 大话设计模式C++实现之模板方法模式
  10. CPU通用寄存器 eax ebx ecx edx esp ebp esi edi