您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息

undo损坏案列

2024/3/29 6:29:22发布6次查看
公司一台测试环境的基于linux 平台下 oracle 11.2.0.3 的数据库,为开归档,未备份。 21号晚上,因/目录下 空间使用%100,oracle home目录在系统 / 目录下: 因硬盘资源占尽,不能连接操作,oracle 数据库挂起。 某人的操作,查看undotbs1 占用最大,通过mv 移
公司一台测试环境的基于linux 平台下 oracle 11.2.0.3 的数据库,为开归档,未备份。 21号晚上,因/目录下 空间使用%100,oracle home目录在系统 / 目录下:
因硬盘资源占尽,不能连接操作,oracle 数据库挂起。
某人的操作,查看undotbs1 占用最大,通过mv 移动到 另一目录,同时系统被重启,使得undotbs1 数据文件损坏,不能使用,最后又做了一个rm 操作, 重启库,导致故障出现!
报错一:
wed jan 22 09:42:50 2014alter database openerrors in file /u01/app/oracle/diag/rdbms/gtadata13/gtadata13/trace/gtadata13_dbw0_4245.trc:ora-01157: cannot identify/lock data file 3 - see dbwr trace fileora-01110: data file 3: '/u01/app/oracle/oradata/gtadata13/undotbs01.dbf'ora-27047: unable to read the header block of filelinux-x86_64 error: 25: inappropriate ioctl for deviceadditional information: 1wed jan 22 09:42:52 2014checker run found 1 new persistent data failureserrors in file /u01/app/oracle/diag/rdbms/gtadata13/gtadata13/trace/gtadata13_ora_4361.trc:ora-01157: cannot identify/lock data file 3 - see dbwr trace fileora-01110: data file 3: '/u01/app/oracle/oradata/gtadata13/undotbs01.dbf'ora-1157 signalled during: alter database open...
--- 就是oracle 在mount后,不能加载到open 状态。
2 接下来操作: 因为undo tablespace 数据文件undotbs1 没有了,想通过重建一个undo 表空间 undotbs2 把数据库启动到open 状态
操作:
sql> show parameter undoname type value------------------------------------ ----------- ------------------------------undo_management string autoundo_retention integer 900undo_tablespace string undotbs1
sql > create undo tablespace undotbs2 datafile '/xxxx.dbf' size 32m autoextend on next 32m maxsize 10g; --重创建表空间sql > select * from v$tablesapce select name,status from v$datafile -- 查询其状态值sql > alter system set undo_tablespace=undotbs2 scope=both -- 通过show parameter undo 查看是否使用。
3 此时,数据库可以open起来, 但是通过client ,或者其他用户连接时,报错:
报错二sql> conn input/inputerror:ora-00604: error occurred at recursive sql level 1ora-00376: file 3 cannot be read at this timeora-01110: data file 3: '/u01/app/oracle/oradata/gtadata13/undotbs01.dbf'ora-02002: error while writing to audit trailora-00604: error occurred at recursive sql level 1ora-00376: file 3 cannot be read at this timeora-01110: data file 3: '/u01/app/oracle/oradata/gtadata13/undotbs01.dbf'
4 根据报错,发现不仅仅是 undotbs1数据文件有问题,还有开启了审计 audit: 如是
先关闭审计sql > show parameter auditname type value------------------------------------ ----------- ------------------------------audit_file_dest string /u01/app/oracle/admin/gtadata1 3/adumpaudit_sys_operations boolean falseaudit_syslog_level stringaudit_trail string db
sql > alter system set audit_trail=none scope=spfile -- 设置后需要重启库。 --具体见审计
5 再通过对undotbs1数据文件操作,使其offline 处理(看行否)
sql > alter database datafile 3 offline drop ;
6 通过 v$logfile,dba_tablespaces, dba_data_files 查看数据表空间,数据文件的状态:
sql> select tablespace_name,file_id,file_name from dba_data_files; tablespace_name file_id file_name------- ---------- -------------------------------------------------------------users 4 /u01/app/oracle/oradata/gtadata13/users01.dbfundotbs1 3 /u01/app/oracle/oradata/gtadata13/undotbs01.dbfsql> select status,tablespace_name from dba_tablespaces; status tablespace_name--------- ------------------------------online systemonline sysauxonline undotbs1
7 此时发现undotbs1 数据文件还在,同时undotbs1 表空online
如是操作:
报错三 sql> alter tablespace undotbs1 offline; alter tablespace undotbs1 offline * error at line 1: ora-01191: file 3 is already offline - cannot do a normal offline ora-01110: data file 3: '/u01/app/oracle/oradata/gtadata13/undotbs01.dbf' --- 此时心想,怎么不能offline了,看能否风能 temporary offline 查询数据文件头,select file#,checkpoint_change#,recover, fuzzy from v$datafile_header;
最后通过 sql> alter system checkpoint; --做一个检查点,再试试:system altered.sql> alter tablespace undotbs1 offline temporary;tablespace altered.
再次通过 dba_tablespaces 查看 undotbs1 的状态,发现 是否offline。 offline 状态。
8 测试再看看能否通过其他用户连接或client 连接: -- 发现ok,可以通过其他用户连接了,但是一些程序 涉及到报错:
报错四:
执行存储过程失败 ora-00376: 此时无法读取文件 3ora-01110: 数据文件 3: /u01/app/oracle/oradata/gtadata13/undotbs01.dbf'ora-06512: 在 gta_data.sp_qa_timeliness, line 54ora-06512: 在 line 1
如是想了想 ,确实,因为undotbs1 是通过物理删除的,那么oracle 一致性 会是这些需要recovery恢复:
9 既然offline,可否删除掉,(估计比较麻烦,这回退给干掉了,怎么回退了?)
通过dba_rollback_segs 发现 还有很多 recovery 的undotbs1 段需要回滚恢复,是数据一致性。
sql> select segment_name,tablespace_name,status from dba_rollback_segs;segment_name tablespace_name status------------------------------ ------------------------------ ----------------system system online_syssmu122_928896348$ undotbs1 offline_syssmu121_4101333926$ undotbs1 offline_syssmu120_471964226$ undotbs1 offline_syssmu119_3645569891$ undotbs1 offline_syssmu118_1816999230$ undotbs1 offline_syssmu117_3513527861$ undotbs1 offline_syssmu116_2167311593$ undotbs1 offline_syssmu90_1969094056$ undotbs1 needs recovery_syssmu89_2804401042$ undotbs1 needs recovery_syssmu88_3446396459$ undotbs1 needs recovery_syssmu87_268667266$ undotbs1 needs recovery_syssmu86_1912503840$ undotbs1 needs recovery_syssmu85_2732352333$ undotbs1 needs recovery_syssmu84_1805825668$ undotbs1 needs recovery_syssmu83_1984855352$ undotbs1 needs recovery_syssmu212_1777710046$ undotbs2 online_syssmu211_3260590093$ undotbs2 online_syssmu210_1915944113$ undotbs2 online_syssmu209_2868303011$ undotbs2 online_syssmu208_3687438092$ undotbs2 online_syssmu207_752508113$ undotbs2 online
此时,百度,及询问了一些高手,说最好做个备份: 如是想通过expdp 导入导出:
报错五:
[oracle@gtadata13 dump_dir]$ impdp dcsys/dcsys directory=dump_dir dumpfile=tbl_chn_fn_forecfin.dmpimport: release 11.2.0.3.0 - production on wed jan 22 14:40:30 2014copyright (c) 1982, 2011, oracle and/or its affiliates. all rights reserved.connected to: oracle database 11g enterprise edition release 11.2.0.3.0 - 64bit productionwith the partitioning, olap, data mining and real application testing optionsora-31626: job does not existora-06512: at sys.dbms_sys_error, line 79ora-06512: at sys.kupv$ft, line 1042ora-31637: cannot create job sys_import_full_01 for user dcsysora-31632: master table dcsys.sys_import_full_01 not found, invalid, or inaccessibleora-31635: unable to establish job resource synchronizationora-06512: at sys.dbms_sys_error, line 79ora-06512: at sys.kupv$ft_int, line 2401ora-00376: file 3 cannot be read at this timeora-01110: data file 3: '/u01/app/oracle/oradata/gtadata13/undotbs01.dbf' -- 这也不行,看来,只能老实的弄了
10 ,打算删除 这offline undotbs1表空间,看是否跳过:
报错六:
sql> drop tablespace undotbs1;drop tablespace undotbs1*error at line 1:ora-01548: active rollback segment '_syssmu1_1240252155$' found, terminate dropping tablespacesql> drop rollback segment _syssmu1_1240252155$;drop rollback segment _syssmu1_1240252155$*error at line 1:ora-30025: drop segment '_syssmu1_1240252155$' (in undo tablespace) not allowed
再次通过百度,高手请教: 发现需要在pfile 上 添加隐藏参数文件_offline_rollback_segments (‘xx’)和 _corrupted_rollback_segments ('xx') 后再删除,看否跳过
在pfile中加入参数_offline_rollback_segments=(‘’)_corrupted_rollback_segments=(‘’) ---括号参数为dba_rollback_segs中 undotbs1 status 为need recovery 状态的这种值“_syssmu122_928896348$”
10 : 于是通过 pfile添加影藏参数 或者 alter system set _offline_rollback_segments = 值 socpe=spfile
alter system set _corrupted_rollback_segments = 值 socpe=spfile 进行操作。
当时我通过重建pfile参数文件 *._offline_rollback_segments=('_syssmu90_1969094056$',。。。。) *._corrupted_rollback_segments=('_syssmu90_1969094056$', 来操作
然后 通过删除所有 dba_rollback_segs 下的所有值后,在drop undotbs1 表空间:
sql> drop rollback segment _syssmu1_1240252155$; ---注意双引号不能有空格rollback segment dropped. ---对应的值,一个一个删除。
11 : 最后删除 undotbs1 表空间 ---ok,可以删除了,再通过dba_rollback_segs发现,没有了undtotbs1 的表空间了。
sql> select segment_name,tablespace_name,status from dba_rollback_segs;segment_name tablespace_name status------------------------------ ------------------------------ ----------------system system online_syssmu212_1777710046$ undotbs2 online_syssmu211_3260590093$ undotbs2 online_syssmu210_1915944113$ undotbs2 online_syssmu209_2868303011$ undotbs2 online_syssmu208_3687438092$ undotbs2 online_syssmu207_752508113$ undotbs2 online_syssmu206_883733676$ undotbs2 online_syssmu205_725465268$ undotbs2 online_syssmu204_1401227473$ undotbs2 online_syssmu203_3100642042$ undotbs2 online
12 : 扫尾: a: 恢复原来好审计功能设置, b: 多切换几次,查看业务数据 c: 这样操作,虽然 可以了,但是有部分业务数据丢失 d: 做好备份 e: 就像大师说的,遇事,莫急躁
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录