Oracle Recovery Tools解决ORA-00279 ORA-00289 ORA-00280故障

对于ORA-00279 ORA-00289 ORA-00280故障,一般是由于缺少日志(比如数据库非归档模式,或者归档日志丢失),导致某些文件无法正常online,对此Oracle Recovery Tool能够一键式快速解决.参考:Oracle Recovery Tools—202008
模拟故障
非归档环境,模拟datafile 4 offline,然后多次切换日志,导致该文件无法正常online

SQL> select owner,segment_name from dba_segments where tablespace_name='USERS' AND OWNER='SYSTEM';

OWNER                          SEGMENT_NAME
------------------------------ ------------------------------
SYSTEM                         T_XIFENFEI

SQL> SELECT COUNT(1) FROM SYSTEM.T_XIFENFEI;

  COUNT(1)
----------
     87752

SQL> ALTER DATABASE DATAFILE 4 OFFLINE DROP;

Database altered.

SQL> ALTER SYSTEM SWITCH LOGFILE;

System altered.

SQL> /

System altered.

SQL> /

System altered.

SQL> /

System altered.

SQL> /

System altered.

SQL> archive log list;
Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            D:\app\Administrator\product\11.2.0\dbhome_1\RDBMS
Oldest online log sequence     22
Current log sequence           24
SQL> select group#,status,sequence# from v$log;

    GROUP# STATUS            SEQUENCE#
---------- ---------------- ----------
         1 INACTIVE                 22
         2 INACTIVE                 23
         3 CURRENT                  24

SQL> RECOVER DATAFILE 4;
ORA-00279: change 1525881 generated at 09/06/2020 13:46:17 needed for thread 1
ORA-00289: suggestion :
D:\APP\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\RDBMS\ARC0000000019_1046476315.0001
ORA-00280: change 1525881 for thread 1 is in sequence #19


Specify log: {<RET>=suggested | filename | AUTO | CANCEL}

使用Oracle Recovery Tools快速修复
1


2

3

online文件成功

SQL> recover datafile 4;
Media recovery complete.
SQL> alter database datafile 4 online;

Database altered.

SQL> SELECT COUNT(1) FROM SYSTEM.T_XIFENFEI;

  COUNT(1)
----------
     87752

通过该工具就可以快速解决oracle丢失归档数据文件online的问题
软件下载:OraRecovery下载
使用说明:使用说明

发表在 Oracle备份恢复, 小工具 | 标签为 , , | 评论关闭

数据库升级遭遇ORA-04063: package body “SYS.DBMS_SQLTUNE”

数据库从11.2.0.2升级到11.2.0.4,遇到一下错误

Oracle Database 11.2 Post-Upgrade Status Tool           08-21-2020 20:43:36
.
Component                               Current      Version     Elapsed Time
Name                                    Status       Number      HH:MM:SS
.
Oracle Server
.   ORA-04063: package body "SYS.DBMS_SQLTUNE" 有错误
.   ORA-06508: PL/SQL: 无法找到正在调用 : "SYS.DBMS_SQLTUNE" 的程序单元
.   ORA-06512: 在 line 8
.                                       INVALID      11.2.0.4.0  00:07:28
JServer JAVA Virtual Machine
.                                         VALID      11.2.0.4.0  00:01:45
Oracle Workspace Manager
.                                         VALID      11.2.0.4.0  00:00:20
OLAP Analytic Workspace
.                                         VALID      11.2.0.4.0  00:00:35
OLAP Catalog
.                                         VALID      11.2.0.4.0  00:00:57
Oracle OLAP API
.                                         VALID      11.2.0.4.0  00:00:12
Oracle Enterprise Manager
.   ORA-01422: 实际返回的行数超出请求的行数
.   ORA-06512: 在 line 6
.   ORA-01422: 实际返回的行数超出请求的行数
.   ORA-06512: 在 line 5
.   SP2-1506: START, @ 或 @@ 命令没有参数
.   ORA-01422: 实际返回的行数超出请求的行数
.   ORA-06512: 在 line 5
.   SP2-1506: START, @ 或 @@ 命令没有参数
.   ORA-01422: 实际返回的行数超出请求的行数
.   ORA-06512: 在 line 5
.   SP2-1506: START, @ 或 @@ 命令没有参数
.   ORA-01422: 实际返回的行数超出请求的行数
.   ORA-06512: 在 line 5
.   SP2-1506: START, @ 或 @@ 命令没有参数
.   ORA-01422: 实际返回的行数超出请求的行数
.   ORA-06512: 在 line 5
.   SP2-1506: START, @ 或 @@ 命令没有参数
.   ORA-01422: 实际返回的行数超出请求的行数
.   ORA-06512: 在 line 5
.   SP2-1506: START, @ 或 @@ 命令没有参数
.   ORA-01422: 实际返回的行数超出请求的行数
.   ORA-06512: 在 line 5
.   SP2-1506: START, @ 或 @@ 命令没有参数
.   ORA-01422: 实际返回的行数超出请求的行数
.                                         VALID      11.2.0.4.0  00:00:24
Oracle XDK
.                                         VALID      11.2.0.4.0  00:00:16
Oracle Text
.                                         VALID      11.2.0.4.0  00:00:33
Oracle XML Database
.                                         VALID      11.2.0.4.0  00:01:21
Oracle Database Java Packages
.                                         VALID      11.2.0.4.0  00:00:05
Oracle Multimedia
.   ORA-04063: package body "SYS.DBMS_SQLTUNE" 有错误
.   ORA-06508: PL/SQL: 无法找到正在调用 : "SYS.DBMS_SQLTUNE" 的程序单元
.   ORA-06512: 在 "SYS.UTL_RECOMP", line 865
.   ORA-06512: 在 "SYS.UTL_RECOMP", line 878
.   ORA-06512: 在 line 1
.                                         VALID      11.2.0.4.0  00:00:53
Spatial
.                                         VALID      11.2.0.4.0  00:03:25
Oracle Expression Filter
.                                         VALID      11.2.0.4.0  00:00:08
Oracle Rules Manager
.                                         VALID      11.2.0.4.0  00:00:06
Oracle Application Express
.                                         VALID     3.2.1.00.10
Final Actions
.                                                                00:00:00
Total Upgrade Time: 00:18:38

PL/SQL 过程已成功完成。

查询mos发现类似解决方案

SQL> select owner, object_name, object_type, status from dba_objects  where object_name = 'DBMS_STATS';

OWNER                          OBJECT_NAME
                                        OBJECT_TYPE         STATUS
------------------------------ -----------------------------------------------------------------------------------------
--------------------------------------- ------------------- -------
SYS                            DBMS_STATS
                                        PACKAGE             VALID
SYS                            DBMS_STATS
                                        PACKAGE BODY        VALID
PUBLIC                         DBMS_STATS
                                        SYNONYM             VALID

SQL> select owner, object_name, object_type, status from dba_objects  where object_name = 'DBMS_SQLTUNE'
  2  /

OWNER                          OBJECT_NAME
                                        OBJECT_TYPE         STATUS
------------------------------ -----------------------------------------------------------------------------------------
--------------------------------------- ------------------- -------
SYS                            DBMS_SQLTUNE
                                        PACKAGE             VALID
SYS                            DBMS_SQLTUNE
                                        PACKAGE BODY        INVALID
PUBLIC                         DBMS_SQLTUNE
                                        SYNONYM             INVALID

SQL> alter package DBMS_SQLTUNE compile body;

警告: 更改的包体带有编译错误。

SQL> show error;
PACKAGE BODY DBMS_SQLTUNE 出现错误:

LINE/COL ERROR
-------- -----------------------------------------------------------------
0/0      PLS-00801: 内部错误 [phdite:node kind]
10210/5  PL/SQL: ORA-01775: 同义词的循环链
10210/5  PL/SQL: SQL Statement ignored
13917/7  PL/SQL: Statement ignored
16995/5  PL/SQL: SQL Statement ignored
17060/12 PL/SQL: ORA-01775: 同义词的循环链
17657/7  PL/SQL: Statement ignored
17660/31 PLS-00231: 函数 'SQLERRM' 不能在 SQL 中使用
19718/5  PL/SQL: SQL Statement ignored
19718/12 PL/SQL: ORA-01775: 同义词的循环链
19782/5  PL/SQL: Statement ignored

LINE/COL ERROR
-------- -----------------------------------------------------------------
19782/17 PLS-00231: 函数 'BUILD_SQL_DETAIL_XML' 不能在 SQL 中使用
SQL> select owner, object_name, object_type, status from dba_objects  where object_name = 'XMLCONCAT';

OWNER
------------------------------
OBJECT_NAME
--------------------------------------------------------------------------------
OBJECT_TYPE         STATUS
------------------- -------
PUBLIC
XMLCONCAT
SYNONYM             VALID


SQL> drop public synonym XMLCONCAT;

同义词已删除。

SQL>  alter package DBMS_SQLTUNE compile body;

程序包体已变更。

重新跑升级脚本catupgrd.sql,一切正常

Oracle Database 11.2 Post-Upgrade Status Tool           08-21-2020 21:08:31
.
Component                               Current      Version     Elapsed Time
Name                                    Status       Number      HH:MM:SS
.
Oracle Server
.                                         VALID      11.2.0.4.0  00:06:44
JServer JAVA Virtual Machine
.                                         VALID      11.2.0.4.0  00:00:00
Oracle Workspace Manager
.                                         VALID      11.2.0.4.0  00:00:00
OLAP Analytic Workspace
.                                         VALID      11.2.0.4.0  00:00:00
OLAP Catalog
.                                         VALID      11.2.0.4.0  00:00:00
Oracle OLAP API
.                                         VALID      11.2.0.4.0
Oracle Enterprise Manager
.                                         VALID      11.2.0.4.0  00:00:00
Oracle XDK
.                                         VALID      11.2.0.4.0  00:00:00
Oracle Text
.                                         VALID      11.2.0.4.0  00:00:00
Oracle XML Database
.                                         VALID      11.2.0.4.0  00:00:00
Oracle Database Java Packages
.                                         VALID      11.2.0.4.0  00:00:00
Oracle Multimedia
.                                         VALID      11.2.0.4.0  00:00:00
Spatial
.                                         VALID      11.2.0.4.0  00:00:00
Oracle Expression Filter
.                                         VALID      11.2.0.4.0  00:00:00
Oracle Rules Manager
.                                         VALID      11.2.0.4.0
Oracle Application Express
.                                         VALID     3.2.1.00.10
Final Actions
.                                                                00:00:00
Total Upgrade Time: 00:06:51

PL/SQL 过程已成功完成。

参考解决方案:Upgrade From 10G To 11G Fails On Dbms_sqltune : ORA-04063: Package Body “SYS.DBMS_SQLTUNE” Has Errors (Doc ID 1271490.1)
DBMS_STATS , DBMS_SQLTUNE_INTERNAL , DBMS_SQLTUNE Package Can Not be Recompiled during/After Upgrade reporting “ORA-04063″ , “ORA-06508″ . “ORA-06512″ (Doc ID 761961.1)

发表在 Oracle安装升级 | 标签为 , , | 评论关闭

Oracle Recovery Tools恢复MISSING00000文件故障

前几天介绍了自己开发的Oracle Recovery Tools工具,今天有客户遇到故障,数据库由于断电无法正常启动,第三方对其进行了重建控制文件操作,但是有两个数据文件没有加入到重建控制文件脚本中,当数据库被resetlogs方式打开之后出现如下效果
20200808142132


20200808142248

数据库已经被多次resetlogs打开,这两个丢失的文件无法正常加载进去,通过Oracle Recovery Tools进行处理
20200808143542

这里可以明显看到,resetlogs scn和checkpoint scn均不一样,常规方法肯定无法处理.
20200808143640

直接在恢复库只读情况下把文件加入到数据库中
20200808142722

通过Oracle Recovery Tools点击鼠标就可以快速的解决这类问题,省去的大量的bbed处理的烦劳(在win上要去找bbed软件,要去考虑各种偏移量,修改目标值等)
软件下载:OraRecovery下载
使用说明:使用说明

发表在 非常规恢复 | 标签为 , | 评论关闭