order tramadol Hartford buy tramadol online no prescription get tramadol Kent

valium sale cheap diazepam 5mg valium effects nervous system

radiciação soma e subtração buy soma online soma muscle relaxer street value

Skip to content

Mdata 4.0.7 版本发布

2016新年MDATA 4.0.7如约而至。

我们依然坚持工具免费提供,坚持为Oracle DBA们提供恢复工具的使用支持。真心希望,少一点误操作,少一点存储故障,少一点数据丢失,临近春节祝大家猴年新春快乐,系统平安稳定!!

新版下载地址

Download

 

新版本新增特性

1.增加机器验证Key机制,使用Mdata前需要有效的licence key.
2.修复ASM读取bug,感谢广东东方龙马公司的老三同学提出此BUG.

 

验证码机制使用介绍

验证码获取需要提供机器码,机器码在启动Mdata过程会提示,具体如下:

启动mdata

Web:www.ludatou.com,www.hcdba.com
Email:feigigi@qq.com,564439763@qq.com
QQ group:66809572

loading default config…….
The license is invalid,please check license is valid in mdata.key,feature code:R4CJ355T
MDATA has expired,please contact ludatou or hc!

在以上部分会看到code:R4CJ355T即为机器码,将此机器码发送到邮箱 feigigi@qq.com 或者 564439763@qq.com
在收到我们的发出的验证key后请放在安装目录的mdata.key里面即可使用。

感谢大家一如既往的支持,我们也将持续改善使用体验。

Solving UNDO Corruption

List of errors

Block Corruption ORA-01578 belonging to UNDO Segment
ORA-00600 [4193] , ORA-00600 [4194], ORA-00600 [4037], etc…
these errors raises normally together with:
Error encountered while recovering transaction (,) on object .
Scenarios

There are several scenarios:

Scenario 1: There are no pendings transactions.
Scenario 2: There are pending transactions with the database up
Scenario 3: There are pending transactions with database crash
How to check if there are pending transactions:

To check pending transacions, the following query can be executed

Select u.inst#            instid    ,
       u.name             useg      ,
       u.status$          status    ,
       x.ktuxeusn         usn       ,
       x.ktuxeslt         slt       ,
       x.ktuxesqn         wrp       ,
       x.ktuxesiz         undoblocks
From   x$ktuxe            x,
       undo$              u
Where  x.ktuxeusn = u.us#
And    x.ktuxesta = 'ACTIVE'
And    x.ktuxecfl like '%DEAD%' ;
if the DB must be opened to work.

Solution:

The solutions will depends of the situation of our backups and if there are pending transactions or not.

Block corruption

The best option in this case is to do a RMAN block Recover or Restore-Recover
If there is not any backup, then use the solutions “No pending transactions” or “With pending transactions” deppending the situation.

No pending transactions

Drop and recreate the undo tablespace. Note: 431652.1 can help in that

There are pending transactions:

If the error comes together with the message

Error encountered while recovering transaction (,) on object .
in this case, we need to recreate the object reported, and that should fix the issue unless we have more objects affected.

There are different cases:

Error 376 encountered while recovering transaction (A, B) on object YYYY.
(A, B) shows the UNDO segment id and slot number (USN , SLOT)
YYYY shows the object id (NOT the data object id)
Error 600 encountered while recovering transaction (A, B) on object YYYY.
(A, B) shows the UNDO segment id and slot number (USN , SLOT)
YYYY shows the object id (NOT the data object id)
This error can raise without reference to an object_id, but affecting directly to the UNDO segment.

Error XXXX encountered while recovering transaction (A, B).
Note this error has no “on object ….” clause in the error.
This is reported to the alert log when error XXXX is encountered on a UNDO SEGMENT Block.
XXXX is the ORA-XXXX error encountered
(A, B) shows the rollback segment id and slot number (USN , SLOT) of the transaction being recovered.

In this case, the best option is to RESTORE -RECOVER or RMAN Block Recover. If this is not possible, then continue with the following point
If the database is down and can’t be started, then do the following:

STARTUP MOUNT;
Set the following parameter
alter system set “_smu_debug_mode” = 1024
this is a temporary action, so must be unset after finish the process of attempt to fix the issue
Open the DB
Alter database open;
If there is any object_id reported in the alert.log, please find it an recreate if possible
If there is not any object reported, try to recreate the UNDO tablespace (if there are pending transactions ORACLE will not allow you to recreate it)
Take out the parameter set
alter system set “_smu_debug_mode” =
If after doing that the DB can’t be started, please open a SR with Support as the situation will need more analysis.

10g undo tablespace was dropped. 回滚表空间误删除恢复一例.

undo损坏的案例碰到了很多次,主要是人工无操作为主,也有不少的bug导致,这里介绍其中的一次群友生产库误删案例。
这个案例是帮助群里domain朋友解决的,他单位的主要生产系统undo tablespace被开发人员误删除后,数据库出现问题。在群里远程支持他解决了,具体过程日志有缺失,我尽量重现。

告警日志的主要报错如下:

ORA-00604: error occurred at recursive SQL level 1
ORA-00376: file 2 cannot be read at this time
ORA-01110: data file 2: '/prod/hlds/data/undotbs01.dbf'
Error 604 happened during db open, shutting down database
USER: terminating instance due to error 604

从告警得知数据库已经瘫痪崩溃,可以发现数据文件无法找到,01110和00376这2个错误出现在一起总会让我有点心惊,要么是出现文件系统崩溃,硬盘坏了,或者误删等情况,这他的情况就是undo tbs被误删了,现场确认是开发部门的一个人当成垃圾文件删了(多么惨痛的教训),开发怎么能有权限在生产做文件处理?

一般undo出现问题(我们这里暂且把这个删除的案例归结成所有undo tbs的undo segmnet出现corruption),要么就是部分的segment 损坏,要么就是全部segment出现损坏,这里面又要分为是undo tbs上的undo segment损坏和system 上的undo segment损坏,而这里的情况明显是undo tbs上的segment的问题,而这时候还分为三种情况,主要是基于事务的,这里不作解释,具体可以参考我的另外一篇文章《undo 损坏的解决思路》,同时有兴趣system上undo 损坏的处理的可以可以参考我几年前写的00600 [4193]相关文章。

这里为undo tbs的损坏,所以处理方法很容易明确,如下:

1.设置undo 管理模式为手工管理
2.设置undo 表空间为system (或者屏蔽掉alert中告警的undo segment,通过 _OFFLINE/CORRUPTED_ROLLBACK_SEGMENTS)
3.启动数据库并新建undo tablespace,切换undo tablespace至新建的undo tbs
4.删除旧的undo tablespace(可以理解为损坏的undo segment)
5.检查alert里是否有报关于object_id的错误,如果有重建相关object

在他这里的处理的情况中,数据库开启了审计,在处理前还需要把审计关闭。

关闭审计

alter system set audit_trail = none scope=spfile;

设置undo为手工管理模式

alter system set undo_management=’MANUAL’ scope=spfile;

设置undo表空间为system

alter system set undo_tablespace='system' scope=spfile;

重启数据库

SQL> startup 
ORACLE instance started.
Total System Global Area 12167645184 bytes
...
Database mounted.
Database opened.

启动成功,查看下当前的rollback segments

SQL> select segment_name,status from dba_rollback_segs;
SEGMENT_NAME                   STATUS
------------------------------ ----------------
SYSTEM                         ONLINE
_SYSSMU1$                      NEEDS RECOVERY
_SYSSMU2$                      NEEDS RECOVERY
_SYSSMU3$                      NEEDS RECOVERY
_SYSSMU4$                      NEEDS RECOVERY
_SYSSMU5$                      NEEDS RECOVERY
_SYSSMU6$                      NEEDS RECOVERY
_SYSSMU7$                      NEEDS RECOVERY
_SYSSMU8$                      NEEDS RECOVERY
_SYSSMU9$                      NEEDS RECOVERY
_SYSSMU10$                     NEEDS RECOVERY
.........
_SYSSMU201$                     NEEDS RECOVERY

重建undo tablespace

create undo tablespace undo2 datafile '/prod/hdls/data/undo02.dbf' size 20480M;

切换undo表空间

alter system set undu_tablespace='undo2' scope=spfile;

执行offline undo tablespace UNDO并删除

alter tablespace undo offline;
drop tablespace UNDO1 including contents and datafiles;

修改参数恢复

alter system set undo_management=’AUTO’ scope=spfile;

开启原有审计后重启数据库并检查告警。至此undo误删解决。

总体上讲关于undo部分除了system的undo损坏稍微麻烦一点外,关于undo损坏的情况都是比较容易解决的。只是无论怎么样在运行事务时候出现undo损坏的情形皆会造成事物不一致的情况出现。需要引以为戒。

www.ludatou.com