模拟数据库丢失undo表空间
数据库无事务情况下丢失undo表空间数据文件
1. 查看当前undo表空间,并删除物理undo文件
SYS@userdata>show parameter undo_tablespace; NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
undo_tablespace string UNDOTBS1
SYS@userdata>select file_name,tablespace_name,status from dba_data_files where tablespace_name='UNDOTBS1'; FILE_NAME TABLESPACE_NAME STATUS
------------------------------------------------------------ ------------------------------------------------------------------------------------------ ---------------------------
/u01/app/oracle/oradata/userdata/undotbs01.dbf UNDOTBS1 AVAILABLE SYS@userdata>host rm -rf /u01/app/oracle/oradata/userdata/undotbs01.dbf SYS@userdata>shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
2.将数据库正常启动,可以看到缺少undo表空间数据文件的报错
SYS@userdata>startup;
ORACLE instance started. Total System Global Area 314572800 bytes
Fixed Size 2083592 bytes
Variable Size 255853816 bytes
Database Buffers 50331648 bytes
Redo Buffers 6303744 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 2 - see DBWR trace file
ORA-01110: data file 2: '/u01/app/oracle/oradata/userdata/undotbs01.dbf' SYS@userdata>show parameter back; NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
background_core_dump string partial
background_dump_dest string /u01/app/oracle/admin/userdata
/bdump
backup_tape_io_slaves boolean FALSE
db_flashback_retention_target integer 1440
fast_start_parallel_rollback string LOW
rollback_segments string
transactions_per_rollback_segment integer 5
SYS@userdata>host tail -n 10 /u01/app/oracle/admin/userdata/bdump/alert_userdata.log
Mon Oct 2 10:53:58 2017
ALTER DATABASE OPEN
Mon Oct 2 10:53:58 2017
Errors in file /u01/app/oracle/admin/userdata/bdump/userdata_dbw0_8121.trc:
ORA-01157: cannot identify/lock data file 2 - see DBWR trace file
ORA-01110: data file 2: '/u01/app/oracle/oradata/userdata/undotbs01.dbf'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
ORA-1157 signalled during: ALTER DATABASE OPEN...
3.因为undo表空间此时不包含数据,drop undo表空间
SYS@userdata>alter database datafile 2 offline drop; Database altered.
4. 将undo管理改为manual
SYS@userdata>alter system set undo_management='MANUAL' scope=spfile; System altered.
5. 重启数据库
SYS@userdata>shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SYS@userdata>startup;
ORACLE instance started. Total System Global Area 314572800 bytes
Fixed Size 2083592 bytes
Variable Size 255853816 bytes
Database Buffers 50331648 bytes
Redo Buffers 6303744 bytes
Database mounted.
Database opened.
SYS@userdata>show parameter undo; NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
undo_management string MANUAL
undo_retention integer 900
undo_tablespace string UNDOTBS1
6. 将丢失文件的undo表空间drop后重建
SYS@userdata>drop tablespace UNDOTBS1; Tablespace dropped. SYS@userdata>create undo tablespace undotbs1 datafile '/u01/app/oracle/oradata/userdata/undotbs01.dbf' size 100m autoextend on; Tablespace created.
7. 查看目前的数据库undo设置,需要将undo_management 改为auto
SYS@userdata>alter system set undo_management='AUTO' scope=spfile; System altered. SYS@userdata>shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SYS@userdata>startup;
ORACLE instance started. Total System Global Area 314572800 bytes
Fixed Size 2083592 bytes
Variable Size 255853816 bytes
Database Buffers 50331648 bytes
Redo Buffers 6303744 bytes
Database mounted.
Database opened.
SYS@userdata>select name,status,enabled from v$datafile; NAME STATUS ENABLED
-------------------------------------------------- --------------------- ------------------------------
/u01/app/oracle/oradata/userdata/system01.dbf SYSTEM READ WRITE
/u01/app/oracle/oradata/userdata/undotbs01.dbf ONLINE READ WRITE
/u01/app/oracle/oradata/userdata/sysaux01.dbf ONLINE READ WRITE
/u01/app/oracle/oradata/userdata/users01.dbf ONLINE READ WRITE
/u01/app/oracle/oradata/userdata/example01.dbf ONLINE READ WRITE
数据库有事务情况下丢失undo表空间数据文件
1. undo表空间数据文件丢失后启动数据库
SYS@userdata>startup
ORACLE instance started. Total System Global Area 314572800 bytes
Fixed Size 2083592 bytes
Variable Size 255853816 bytes
Database Buffers 50331648 bytes
Redo Buffers 6303744 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 2 - see DBWR trace file
ORA-01110: data file 2: '/u01/app/oracle/oradata/userdata/undotbs01.dbf' SYS@userdata>alter database datafile 2 offline drop; Database altered. SYS@userdata>alter system set undo_management='MANUAL' scope=spfile; System altered. SYS@userdata>shutdown immediate;
ORA-01109: database not open Database dismounted.
ORACLE instance shut down.
SYS@userdata>startup;
ORACLE instance started. Total System Global Area 314572800 bytes
Fixed Size 2083592 bytes
Variable Size 255853816 bytes
Database Buffers 50331648 bytes
Redo Buffers 6303744 bytes
Database mounted.
ORA-01092: ORACLE instance terminated. Disconnection forced
2. 查看跟踪日志的详细报错
SYS@userdata>host tail -n 10 /u01/app/oracle/admin/userdata/bdump/alert_userdata.log
Database Characterset is AL32UTF8
Mon Oct 2 11:20:10 2017
Errors in file /u01/app/oracle/admin/userdata/udump/userdata_ora_8444.trc:
ORA-00604: error occurred at recursive SQL level 1
ORA-00376: file 2 cannot be read at this time
ORA-01110: data file 2: '/u01/app/oracle/oradata/userdata/undotbs01.dbf'
Error 604 happened during db open, shutting down database
USER: terminating instance due to error 604
Instance terminated by USER, pid = 8444
ORA-1092 signalled during: ALTER DATABASE OPEN... SYS@userdata>host tail -n 10 /u01/app/oracle/admin/userdata/udump/userdata_ora_8444.trc
Longest hash chain = 1
Average hash chain = 20/20 = 1.0
Max compares per lookup = 1
Avg compares per lookup = 95/195 = 0.5
----------------------------------------------
tkcrrsarc: (WARN) Failed to find ARCH for message (message:0x1)
tkcrrpa: (WARN) Failed initial attempt to send ARCH message (message:0x1)
ORA-00604: error occurred at recursive SQL level 1
ORA-00376: file 2 cannot be read at this time
ORA-01110: data file 2: '/u01/app/oracle/oradata/userdata/undotbs01.dbf'
3. 加undo隐藏参数重新启动数据库
SYS@userdata>select ksppinm from x$ksppi where ksppinm like '%roll%'; KSPPINM
--------------------------------------------------
transactions_per_rollback_segment
rollback_segments
_rollback_segment_initial
_rollback_segment_count
_offline_rollback_segments
_corrupted_rollback_segments
_cleanup_rollback_entries
_rollback_stopat
fast_start_parallel_rollback
_mv_rolling_inv 10 rows selected. SYS@userdata>alter system set "_offline_rollback_segments"=true scope=spfile; System altered. SYS@userdata>alter system set "_corrupted_rollback_segments"='_SYSSMU1$','_SYSSMU2$','_SYSSMU3$','_SYSSMU4$','_SYSSMU5$','_SYSSMU6$','_SYSSMU7$','_SYSSMU8$','_SYSSMU9$','_SYSSMU10$' scope=spfile; System altered. SYS@userdata>shutdown abort;
ORACLE instance shut down.
SYS@userdata>startup;
ORACLE instance started. Total System Global Area 314572800 bytes
Fixed Size 2083592 bytes
Variable Size 255853816 bytes
Database Buffers 50331648 bytes
Redo Buffers 6303744 bytes
Database mounted.
Database opened.
4.将丢失文件的undo表空间drop后重建
SYS@userdata>drop tablespace UNDOTBS1; Tablespace dropped. SYS@userdata>create undo tablespace undotbs1 datafile '/u01/app/oracle/oradata/userdata/undotbs01.dbf' size 100m autoextend on; Tablespace created.
5.将undo管理方式修改为auto
SYS@userdata>alter system set undo_management='AUTO' scope=spfile; System altered.
6.将隐藏参数恢复为默认值
SYS@userdata>alter system reset "_offline_rollback_segments" scope=spfile sid='*'; System altered. SYS@userdata>alter system reset "_corrupted_rollback_segments" scope=spfile sid='*'; System altered.
7.重启数据库
SYS@userdata>shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SYS@userdata>startup;
ORACLE instance started. Total System Global Area 314572800 bytes
Fixed Size 2083592 bytes
Variable Size 255853816 bytes
Database Buffers 50331648 bytes
Redo Buffers 6303744 bytes
Database mounted.
Database opened. SYS@userdata>select name,status,enabled from v$datafile; NAME STATUS ENABLED
-------------------------------------------------- --------------------- ------------------------------
/u01/app/oracle/oradata/userdata/system01.dbf SYSTEM READ WRITE
/u01/app/oracle/oradata/userdata/undotbs01.dbf ONLINE READ WRITE
/u01/app/oracle/oradata/userdata/sysaux01.dbf ONLINE READ WRITE
/u01/app/oracle/oradata/userdata/users01.dbf ONLINE READ WRITE
/u01/app/oracle/oradata/userdata/example01.dbf ONLINE READ WRITE
模拟数据库丢失undo表空间的更多相关文章
- UNDO表空间损坏,爆满,ORA-600[4194]/[4193]错误解决
模拟手工删除UNDO表空间 在ORADATA 中把UNDOTBS01.DBF 删除 模拟启库 SQL> STARUP; * 第 1 行出现错误: ORA-01157: 无法标识/锁定数据文件 2 ...
- 重建UNDO表空间遭遇ORA-01548
今天开发那边的一套数据库的undo表空间不知道被谁设置成了自动扩展,然后所谓的屋漏偏逢连夜雨的是, 开发人员今天跑了一个很大的事物,然后直接后果就是undo表空间不断被扩展,直到把文件系统写爆了.没办 ...
- undo表空间
undo表空间undo表空间的管理,主要包括创建.删除.修改.切换.其中需要注意的是不能在undo表空间创建数据库对象,还有就是只能是单文件或大文件表空间. 创建创建主要有两种方法,一种是在创建数据库 ...
- Oracle 释放过度使用的Undo表空间
故障现象:UNDO表空间越来越大,长此下去最终数据因为磁盘空间不足而崩溃: 问题分析:产生问题的原因主要以下两点: 1. 有较大的事务量让Oracle Undo自动扩展,产生过度占用磁盘空间的情况: ...
- UNDO表空间不足解决方法
确认UNDO表空间名称 select name from v$tablespace; 检查数据库UNDO表空间占用空间情况以及数据文件存放位置: select file_name,bytes/1024 ...
- 项目中遇到的undo表空间不足的替换
1.查找数据库的UNDO表空间名 select name from v$tablespace; ...
- Oracle数据库 ORA-01555 快照过旧 (undo表空间:撤销表空间)
UNDO表空间用于存放UNDO数据,当执行DML操作时,oracle会将这些操作的旧数据写入到UNDO段,以保证可以回滚或者一致读等,而临时表空间主要用来做查询和存放一些缓冲区数据.你听说UNDO也是 ...
- 总结Oracle8i 的UNDO表空间损坏(ORA-01092及ORA-00600【4193】)情况下的数据库不完全恢复的经历
服务器断电重启导致备份生产环境的恢复目录库无法进行启动,提示Ora-01092例程终止.强行断开连接 查看跟踪日志: Wed Jan 10 08:41:37 2018 Errors in file d ...
- UNDO表空间损坏导致数据库无法OPEN
在数据库undo表空间文件损坏.或者undo表空间文件缺失的情况下.无法打开数据库. 这两种情况都能够视为一种情况处理,解决方法一样. 场景:在23:10的时候新建一个undo表空间undotbs02 ...
随机推荐
- Codeforces 767D - Cartons of milk
题目链接:http://codeforces.com/contest/767/problem/D D比C水系列. 将商店里面的牛奶按照保质期升序排序(显然优先买保质期久的)考虑二分答案,然后再将整个序 ...
- docker启动:Got permission denied while trying to connect to the Docker daemon
权限问题: 1.查看所有用户组与用户 vim /etc/group /etc/group 的内容包括用户组(Group).用户组口令.GID及该用户组所包含的用户(User),每个用户组一条记 ...
- 《EM-PLANT仿真技术教程》读书笔记
1.在系统分析过程中,必须考虑系统所处的环境,因此划分系统与环境的边界是系统分析的首要任务 2.模型可以分为物理模型和数学模型.数学模型可以分为解析模型.逻辑模型.网络模型以及仿真模型.模型可以分为离 ...
- python redis 操作
1.String 操作 redis中的String在在内存中按照一个name对应一个value来存储 set() #在Redis中设置值,默认不存在则创建,存在则修改 r.set('name', 'z ...
- uni-app去掉h5端的导航栏
找到项目的根目录下的pages.json文件,添加一下内容,可以去掉对应页面的导航栏 附上代码 "app-plus":{ "titleNView": false ...
- [转][JSBSim]JSBSim的使用--飞行控制组件及其配置
http://www.jianshu.com/p/b5e9f1f5df95 飞行控制率.稳定增强系统.自动驾驶仪和其他飞控系统(航电.电气等)都能够在 JSBSim 中以独立的控制组件进行建模.JSB ...
- maven项目, 单元测试失败提示 Class not found datastorage........
---恢复内容开始--- 单元测试失败: 提示 Class not found datastorage........ 原因: maven 环境变量问题, eclipse 没有自动更新下载 ...
- 力扣(LeetCode) 509. 斐波那契数
斐波那契数,通常用 F(n) 表示,形成的序列称为斐波那契数列.该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和.也就是: F(0) = 0, F(1) = 1 F(N) = F(N ...
- Java面试宝典(说说&和&&的区别)
&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false. ...
- 记录结果再利用的"动态规划"
2018-09-24 15:01:37 动态规划(DP: Dynamic Programming)是算法设计方法之一,在程序设计竞赛中经常被选作题材.在此,我们考察一些经典的DP问题,来看看DP究竟是 ...