一次打补丁OPatch未完成,若干天后......数据库恢复表recover table失败。

简介: recover table失败恢复表时提示类似下面的信息:

recover table失败

恢复表时提示类似下面的信息:


.......


Creating automatic instance, with SID='<oracle_sid>'
initialization parameters used for automatic instance:
db_name=<db_name>
db_unique_name=<db_unique_name>
compatible=19.0.0
db_block_size=8192
db_files=200
diagnostic_dest=<path>
_system_trig_enabled=FALSE
sga_target=2560M
processes=200
db_create_file_dest=<path>
log_archive_dest_1='location=<path>'
#No auxiliary parameter file used



RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 04/12/2020 08:16:32
RMAN-04025: unable to generate a temporary file

image.pngimage.png


问题分析

初步怀疑是文件系统空间或权限的问题,造成auxiliary数据库的写出现了问题。

到处查找,有提示说window平台下的一个补丁没有打完会出现这种情况,但我们是linux平台,按说不会出现这种问题,但这个说法提醒了我,检查一下opatch的补丁情况:


$ ./opatch lspatches
31281355;Database Release Update : 19.8.0.0.200714 (31281355)
31219897;OJVM RELEASE UPDATE: 19.8.0.0.200714 (31219897)
29585399;OCW RELEASE UPDATE 19.3.0.0.0 (29585399)
OPatch succeeded.


再检查一下数据库的补丁情况

SQL> set linesize 200
SQL>  select patch_id,action,status,SOURCE_VERSION,TARGET_VERSION from dba_registry_sqlpatch;
  PATCH_ID ACTION    STATUS       SOURCE_VERSION  TARGET_VERSION
---------- --------------- ------------------------- --------------- ---------------
  29517242 APPLY    SUCCESS       19.1.0.0.0      19.3.0.0.0


在数据库里面并没有找到opatch的补丁!


解决和回顾

现在的问题是oracle执行文件的补丁和数据库的补丁不一致,显然上次打补丁的时候DBA没有执行datapatch修改数据库的sql文件。执行下面的命令进行补充执行datapatch:


[oracle@dell OPatch]$ ./datapatch -verbose
SQL Patching tool version 19.8.0.0.0 Production on Fri Sep 18 16:53:54 2020
Copyright (c) 2012, 2020, Oracle.  All rights reserved.
Log file for this invocation: /opt/oracle/cfgtoollogs/sqlpatch/sqlpatch_1376_2020_09_18_16_53_54/sqlpatch_invocation.log
Connecting to database...OK
Gathering database info...done
.......
SQL Patching tool complete on Fri Sep 18 16:54:53 2020
[oracle@dell OPatch]$


执行完成后,发现数据库的补丁已经apply成功了!


SQL>  select patch_id,action,status,SOURCE_VERSION,TARGET_VERSION from dba_registry_sqlpatch;
  PATCH_ID ACTION    STATUS       SOURCE_VERSION  TARGET_VERSION
---------- --------------- ------------------------- --------------- ---------------
  31219897 APPLY    SUCCESS       19.1.0.0.0      19.1.0.0.0
  31281355 APPLY    SUCCESS       19.1.0.0.0      19.8.0.0.0
SQL>

再次执行recover table,成功!

有的DBA抱怨,Oracle为什么不把Datapatch 和 OPatch合并到一起执行,实际上把Datapatch和OPatch 合并是不可能的。因为 OPatch 在数据库关闭时执行,而 datapatch 要求数据库是打开以完成其活动。

相关文章
|
关系型数据库 MySQL 数据库
对于mysql数据库delect from,truncate table,drop table, update操作的时候如何选择
对于mysql数据库delect from,truncate table,drop table, update操作的时候如何选择
236 2
|
存储 NoSQL 数据库
阿里云表格存储(table store)属于存储类别还是数据库类别?
什么是表格存储? 表格存储是阿里云提供的一种数据服务。阿里云官方文档的定义如下: 表格存储(Table Store)是阿里云自研的NoSQL多模型数据库,提供海量结构化数据存储以及快速的查询和分析服务。
2848 0
|
3月前
|
SQL 关系型数据库 数据库
PostgreSQL数据库报错 ERROR: multiple default values specified for column "" of table "" 如何解决?
PostgreSQL数据库报错 ERROR: multiple default values specified for column "" of table "" 如何解决?
358 59
|
6月前
|
关系型数据库 MySQL 数据库
【MySQL】MySQL数据库的delete from table和truncate table之间的区别
【MySQL】MySQL数据库的delete from table和truncate table之间的区别
714 1
|
7月前
|
SQL 关系型数据库 MySQL
关系型数据库使用 TRUNCATE TABLE 语句
`TRUNCATE TABLE` SQL 语句快速删除表所有记录,不记录删除操作,通常比 `DELETE` 快。不触发 DELETE 触发器,可能重置自增字段,并产生较少日志。语法:`TRUNCATE TABLE 表名`。注意:不可回滚,不激活触发器,慎用,确保数据不可恢复。考虑使用 `DELETE` 当需保留触发器功能或删除特定条件的行。
145 1
|
7月前
|
Oracle 关系型数据库 数据库
Oracle数据恢复—Oracle数据库误truncate table的数据恢复案例
北京某国企客户Oracle 11g R2数据库误truncate table CM_CHECK_ITEM_HIS,表数据丢失,业务查询到该表时报错,数据库的备份不可用,无法查询表数据。 Oracle数据库执行Truncate命令的原理:在执行Truncate命令后ORACLE会在数据字典和Segment Header中更新表的Data Object ID,但不会修改实际数据部分的块。由于数据字典与段头的DATA_OBJECT_ID与后续的数据块中的并不一致,所以ORACLE服务进程在读取全表数据时不会读取到已经被TRUNCATE的记录,但是实际数据未被覆盖。
Oracle数据恢复—Oracle数据库误truncate table的数据恢复案例
|
7月前
|
关系型数据库 MySQL 数据库
解决mysql导入新数据库大小写问题(Table 'zup.Domain_System' doesn't exist)
解决mysql导入新数据库大小写问题(Table 'zup.Domain_System' doesn't exist)
76 0
|
存储 分布式计算 NoSQL
分布式数据库HBase的基本概念和架构之基本数据模型的Table
HBase是一个分布式数据库系统,基于Google的Bigtable和Apache Hadoop的HDFS构建而成。
|
Java 测试技术 数据库
【异常】测试自增时数据库报错Springboot-jpa Table ‘sell.hibernate_sequence‘ doesn‘t exist
测试自增时数据库报错Springboot-jpa Table ‘sell.hibernate_sequence‘ doesn‘t exist
93 0
【异常】测试自增时数据库报错Springboot-jpa Table ‘sell.hibernate_sequence‘ doesn‘t exist
|
存储 Oracle 关系型数据库
【数据库】解决 oracle: ORA-01653: unable to extend table *.LINEORDER by 1024 in tablespace SYSTEM
【数据库】解决 oracle: ORA-01653: unable to extend table *.LINEORDER by 1024 in tablespace SYSTEM
575 0
【数据库】解决 oracle: ORA-01653: unable to extend table *.LINEORDER by 1024 in tablespace SYSTEM