数据文件被误删,解决ORA-376,ORA-1578,ORA-8103问题

无人机避障——感知篇(采用Mid360复现Fast-lio) 本文介绍了在Ubuntu 18.04和ROS Melodic环境下,使用Xavier-nx电脑和Livox Mid-360激光雷达编译和运行FAST-LIO工程的步骤,包括创建工作空间、编译驱动和FAST-LIO源码,以及运行launch文件进行建图的过程。 阅读详情

如下为metalink 关于上述错误的解决方法:此错误主要是由于数据文件被误offline drop掉。出现ora-376

Applies to:

Oracle Server - Enterprise Edition - Version: 8.1.7.4 to 10.2.0.4
Information in this document applies to any platform.

Goal

This article describe a procedure that can be used to skip corrupted rows from a table when event 10231, dbms_repair or skipping the rows through an index cannot be used.

This method builds the rowid's for a table based on the information from dba_extents.

Example of errors where this procedure can be used:

ORA-8103
ORA-1578
ORA-376 (The procedure can be used to recover the rows from a table which contains rows in a OFFLINE datafile).

Solution

1. Determine the average rows per block by using any method. dba_tables.avg_row_len might be a starting point.

You may add an overhead of 100% or more to that average to ensure that no rows will be missed from the blocks. i.e. if the calculated value is 80 rows per block, then 160 may be appropriate. This value will be used in variable ROWSPERBLOCK.

2. Modify and run the next script

connect / as sysdba
set serveroutput onDECLAREnrows number;
rid rowid;
dobj number;
ROWSPERBLOCK number;BEGIN

ROWSPERBLOCK:=<VALUE CALCULATED IN STEP 1>;

nrows:=0;select data_object_id
into dobj
from dba_objects
where owner = 'PERF'
and object_name = 'PROFILEDATA';for i in (select relative_fno, block_id, block_id+blocks-1 totblocks
from dba_extents
where owner= '<TABLE OWNER>'
and segment_name = '<SOURCE TABLE NAME>'
-- and file_id != <OFFLINED DATAFILE> This condition is only used if a datafile needs to be skipped due to ORA-376
) loopfor br in i.block_id..i.totblocks loop

for j in 1..ROWSPERBLOCK loop
begin
rid := dbms_rowid.ROWID_CREATE(1,dobj,i.relative_fno, br , j-1);insert into <OWNER.NEW_TABLE> (<columns here>)
select /*+ ROWID(A) */ <columns here>
from <OWNER>.<SOURCE TABLE NAME> A where rowid = rid;if sql%rowcount = 1 then nrows:=nrows+1; end if;
if (mod(nrows,10000)=0) then commit; end if;exception when others then null;
end;
end loop;
end loop;end loop;
COMMIT;
dbms_output.put_line('Total rows: '||to_char(nrows));
END;
/下面就上诉文档做出现ORA-376问题的解决示例,以此来说明此脚本的使用方法。假设select table test时,抱 ORA-376错误,发现file_id=4的文件丢失,被offline drop掉了。
另表test onwer是jeffer,且此表为普通表(非分区表)。1)估算每行块数量(ROWSPERBLOCK)
如表有统计分析过,则可以查询dba_tables表,得到dba_tables.num_rows/dba_tables.blocks.
最后取预估值rowsperblock = 2 * dba_tables.num_rows/dba_tables.blocks.当然只是估算值,此值
取值原则是尽可能大,来确保没有行丢失。后面会根据理解,来检测是否有数据丢失。2)创建抽取目标临时表T_TEST
CREATE TABLE JEFFER.T_TEST AS SELECT * FROM JEFFER.TEST WHERE 1=2;3) 替换如下值,运行脚本抽取数据。
<VALUE CALCULATED IN STEP 1> 替换为 (2 * dba_tables.num_rows/dba_tables.blocks)--假设为500
PERF 替换为 JEFFER
PROFILEDATA 替换为 TEST
<TABLE OWNER> 替换为 JEFFER
<SOURCE TABLE NAME> 替换为 TEST
<OFFLINED DATAFILE> 替换为 4
<OWNER.NEW_TABLE> (<columns here>) 替换为 JEFFER.T_TEST
<columns here> 替换为 *
<OWNER>.<SOURCE TABLE NAME> 替换为 JEFFER.TEST
替换后脚本如下:
set serveroutput on; DECLARE
nrows number;
rid   rowid;
dobj number;
ROWSPERBLOCK number;BEGIN
ROWSPERBLOCK:=500;
nrows:=0;select data_object_id into dobj
from dba_objects
where owner = 'JEFFER' and object_name = 'TEST';for i in (select relative_fno, block_id, block_id + blocks-1 totblocks          
                 from dba_extents
                 where owner = 'JEFFER' and segment_name = 'TEST' and file_id != 4 )
Loopfor br in i.block_id..i.totblocks
    loop
       for j in 1..ROWSPERBLOCK
          loop
            begin rid := dbms_rowid.ROWID_CREATE(1,dobj,i.relative_fno, br , j-1);
              insert into JEFFER.T_TEST
              select /*+ ROWID(A) */ * from JEFFER.TEST A where rowid = rid;
             
               if sql%rowcount = 1 then
                  nrows:=nrows+1;
               end if;      
              
               if (mod(nrows,10000)=0) then
                 commit;
               end if;
               exception when others then null;    
             end;    
          end loop;  
   end loop;
end loop;
COMMIT;
dbms_output.put_line('Total rows: '||to_char(nrows));
END;
/ 4) 验证测试
select count(*) from JEFFER.T_TEST;
查看上面sql,如果TEST表存放在几个数据文件上(不仅仅存放在file_id=4上),上面结果肯定应该是>0的。
另验证上面是否ROWSPERBLOCK取值太小而有数据丢失,可如下进行
a,记下上面count(*)值为tot1,并truncate table T_test.b,将ROWSPERBLOCK取值放大一倍,重新运行上述脚本。
c,执行select count(*) tot2 from JEFFER.T_TEST;d,比较tot1,tot2值,如果相等,则ROWSPERBLOCK取值是没问题的
如果tot1<tot2,则ROWSPERBLOCK取值偏小。
此时可重复a-d步骤,直至tot1=tot2来保证未有数据丢失。当tot1=tot2时,T_TEST表里数据为所有我们需提取的数据。 注:上面是处理ora-376错误方法,如是其他错误,相应更改file_id != 条件换成其他排除条件就行了。
如果此表TEST是分区表,还可以使用exchange partition来处理如下:
ALTER TABLE TEST EXCHANGE PARTITION p2 WITH TABLE T_TEST WITHOUT VALIDATION; 其中TEST是出问题的表明,p2是出问题数据文件所在表空间对应的分区名,T_TEST是交换出去的目标表明,可以不是分区表.
注:上述处理的话,那出问题分区p2上所有数据都丢失了,而除了丢失的数据文件外,其他的数据文件上的数据是可以提取出来的。
这个要看你的实际情况来选择具体处理方法了!
Backtrader Web:开源量化交易全栈平台 Backtrader Web是一个基于Backtrader框架的现代化量化交易全栈平台,将专业回测引擎与Web技术结合,提供从策略开发到实盘交易的完整解决方案。平台采用FastAPI+Vue3技术栈,具有118个内置策略模板、专业可视化分析工具和完整的策略生命周期管理功能。支持策略版本控制、参数优化、模拟/实盘交易及监控告警,通过RESTful API和WebSocket实现前后端交互。系统采用模块化设计,包含策略服务、回测服务等核心模块,支持SQLite/PostgreSQL等多种数据库。安装简单,5分钟 阅读详情

相关推荐

《从0到1:CTFer成长之路》书籍配套题目-[第二章 web进阶]文件上传

[第二章 web进阶]文件上传开始行动绕过第1个限制绕过第2个限制 介绍:记录一下笔记,方便以后迅速回忆使用。 《从0到1:CTFer成长之路》书籍配套题目,来源网站:《从0到1:CTFer成长之路》 先看一下题目源码: <?php header("Content-Type:text/html; charset=utf-8"); // 每5分钟会清除一次目录下上传的文件 require_once('pclzip.lib.php'); if(!$_FILES){ echo '

weixin_46703850的博客 3411

oracle数据同步失败返回1,Oracle 在备份和恢复中发现的ORA-376 错误的常见原因和解决方案...

适用于:Oracle Database – Enterprise Edition – 版本 9.0.1.0 到 11.2.0.3 [Release 9.0.1 to 11.2]本文信息适用于任何平台。目的夯实ORA-376错误的常见原因和解决方案。故障排除步骤SCOPE & APPLICATION——————-Customers facing ORA-376 or analysts req...

weixin_33954023的博客 578

OceanBase容量统计:租户、数据库、表大小

🍎 数据库版本:OceanBase V4。

Sebastien23的博客 1401

oracle修复错误,Oracle 在备份和恢复中发现的ORA-376 错误的常见原因和解决方案

适用于:Oracle Database – Enterprise Edition – 版本 9.0.1.0 到 11.2.0.3 [Release 9.0.1 to 11.2]本文信息适用于任何平台。目的夯实ORA-376错误的常见原因和解决方案。故障排除步骤SCOPE & APPLICATION——————-Customers facing ORA-376 or analysts req...

weixin_42444974的博客 777

UG NX二次开发(C#)-读取PMI对象的名称

摘要:本文介绍了在UG NX中通过NXOpen获取PMI对象名称的方法。首先说明PMI对象初始无名称,可通过重命名或属性设置名称。然后提供C#代码示例,展示如何遍历PMI集合获取对象名称,并显示名称和类型信息。适用于需要操作PMI对象的开发人员,欢迎加入技术交流QQ群749492565。(99字)

GimiGimmy 592

DDR5 输入时钟抖动规范全解析!技术宅必看

简单说,时钟抖动就是时钟信号边沿的“颤抖”——信号本来应该在某个固定时间跳变,但实际时刻可能会前后波动。这种波动可能是随机的,也可能是确定性的。随机抖动(Random Jitter, Rj):符合高斯分布,像是你家猫咪不经意的晃动。确定性抖动(Deterministic Jitter, Dj):受限于特定周期或模式,像是邻居装修时的规律敲击声。⚠️ 注意,如果时钟抖动超出规格,DDR5可能无法正确接收或发送数据,内存错误、系统崩溃可就跟着来了!

weixin_43199439的博客 391

Oracle ORA-00376 无法读取数据文件的解决方法

这时可能的情况有两种,一种是表空间不在线,数据文件在线,一种是表空间和数据文件均不在线,首先查询下对应数据文件,以及数据文件对应的表空间的在线状态。在查询,数据文件应该处于上线且可读状态了,问题可以解决。简单处理就是把表空间上线。

jxyz3333的博客 1424

Pre-suite 开发之MFi功能搭建

Pre-suite 固件中只有带无线硬件的Ezairo 7160sl才具备无线通信能力,其无线功能包括标准BLE 5.2 低功耗蓝牙功能以及非标准的低功耗无线音频流功能。Ezairo 7160sl 支持3种低功耗无线音频流协议:来自APPLE的MFi,来自Google的ASHA以及来自onsemi的remote mic。其中MFi音频流走的G.722编码的Mode1,速率为64kbps;而非MFi音频流走的G.722的Mode3,速率为48kbps.

SnowYang2017的博客 1501

错误oracle-56 error 376解决办法

EXP-00056: 遇到 ORACLE 错误 376 ORA-00376: 此时无法读取文件 3 ORA-01110: 数据文件 3: 'C:\ORACLEXE\ORADATA\XE\SYSAUX.DBF' Exported 23,000 rows EXP-00000: 导出终止失败 Hi, Following is a checklist to solve your p...

thinkact的专栏 1017

YOLOv11【第六章:模型压缩与极致优化篇·第15节】YOLOv11 专用剪枝工具库使用指南!

🏆 本文收录于专栏 《YOLOv11实战:从入门到深度优化》。本专栏围绕 YOLOv11 的改进、训练、部署与工程优化 展开,系统梳理并复现当前主流的 YOLOv11 实战案例与优化方案,内容目前已覆盖 分类、检测、分割、追踪、关键点、OBB 检测 等多个方向。

**My Coding Family** 1312

【agent实战教程】OpenClaw多个agent一文通

一个合格的独立agent,必须具备6个完全独立的专属组件独立组件路径规则核心要求不独立的严重后果唯一agentId配置文件中全局唯一,不能重复,建议用英文+数字,不要有特殊字符agent配置冲突,消息派单错误,会话串线独立工作区(workspace)建议每个agent一个独立文件夹,不要共用人设、记忆、规则混在一起,agent人设崩塌,对话串线独立状态目录(agentDir)固定系统自动生成,绝对禁止多个agent复用同一个agentDir。

海兰 649

oracle 修改密码有效期及ORACLE-02376无效或冗余的资源异常解决

oracle 修改密码有效期及ORACLE-02376无效或冗余的资源异常解决 oracle 修改密码有效期   由于Oracle11G的新特性所致,经常会遇到使用sqlplus登陆oracle数据库时提示“ORA-28002: 7 天之后口令将过期”等情况。 在Oracle 11G 创建用户时缺省密码过期限制是180天, 如果超过180天用户密码未做修改则该用户无法登录,提示“ORA-2...

凌大大的博客 4974

Python 爬虫项目:爬取百度贴吧帖子,保存标题与评论内容

在 Python 爬虫技术的学习与实战体系中,贴吧类动态内容爬取是典型的入门进阶案例,百度贴吧作为国内主流的社区论坛平台,其页面结构规范、数据载体清晰,非常适合用于巩固爬虫核心技术栈。本次实战项目基于requests请求库与解析库实现完整的爬取流程,从网页请求、数据解析、内容提取到本地持久化存储全链路落地,既能掌握基础爬虫的核心逻辑,也能理解网页结构化数据解析的通用思路,同时规避爬虫常见的反爬基础策略,具备极高的实战参考价值。本文核心价值。

2503_91057718的博客 2543

ORACLE 11G ORA-8103 错误问题处理一例

ORACLE ORA 8103 块错误处理

cqsztech的博客 5900

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

oracle查询报8103,记一次ORA-8103错误的处理

某客户的一个表在进行分析和建索引一段时间时,均报ORA-8103错误。让我们先看看ORA-8103错误是个什么样的错误?[oracle@xty ~]$ oerr ora 810308103, 00000, “object no longer exists”// *Cause: The object has been deleted by another user since the operati...

weixin_35070219的博客 1014

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

ORA-8103 "object no longer exists" 诊断与解决

In this DocumentPurposeScopeDetailsDescriptionCauseExpected behavior.Block Corruption.Overlapped Extents.Ove...

cijinli4767的博客 1432

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

oracle ora错误文档,Oracle 在备份和恢复中发现的ORA-376 ORA-00376: 此时无法读取文件 错误的常见原因和解决方案...

适用于:Oracle Database – Enterprise Edition – 版本 9.0.1.0 到 11.2.0.3 [Release 9.0.1 to 11.2]本文信息适用于任何平台。目的夯实ORA-376错误的常见原因和解决方案。故障排除步骤SCOPE & APPLICATION——————-Customers facing ORA-376 or analysts req...

weixin_33895396的博客 1773

ORA-8103 “object no longer exists“错误

一、错误原因及解决方案 OERR: ORA-8103 "object no longer exists" Master Note / Troubleshooting, Diagnostic and Solution (Doc ID 8103.1)上的这篇文档给我们清楚的列出了可能导致该报错的原因(该报错有多种可能,我只简单的讲一下我目前碰到的情况) Description ORA-8103 is reporting that a SQL statement found a block that no

Hehuyi_In的博客 8364

oracle 8103错误,[数据恢复]详解ORA-8103错误

ORA-8103是我们Database Consultant 经常要遇到的一个问题,了解ORA-8103的成因非常重要。简单来说ORA-8103 的主要成因有2类:数据块的 block type 类型 是 无效的 或者读出来的块类型与Oracle期望的不一致。 例如 Oracle 认为该数据块的类型为data(type=6),但实际却不是。数据块中的data_object_id 和 数据字典中的...

weixin_42512936的博客 723

oracle错误代码8103,记一次ORA-8103错误的处理

Connected to:Oracle9i Enterprise Edition Release 9.2.0.6.0 - 64bit ProductionWith the Partitioning optionJServer Release 9.2.0.6.0 - ProductionSQL> set timing onSQL> set time on14:20:03 SQL> ...

weixin_42311349的博客 942

模拟普通ORA-08103并解决

在上一篇中说到:模拟极端ORA-08103并解决,不能通过修改成坏块来解决,这里演示了是一个普通的数据块出现异常,然后通过bbed修改为坏块通过dbms_repair来解决该故障,补充说明:在11.2.0.3.3的库中,使用该方法不能重现该错误,而是直接提示ORA-01578,证明ORACLE的新版本在这一方面进行了改进创建测试表 SQL> SELECT * FROM V$VERSION; BANNER ------------------------------.

sqlora的专栏 781

oracle 8103错误,【数据恢复】详解ORA-8103错误

ORA-8103是我们Database Consultant 经常要遇到的一个问题,了解ORA-8103的成因非常重要。简单来说ORA-8103 的主要成因有2类:数据块的 block type 类型 是 无效的 或者读出来的块类型与Oracle期望的不一致。 例如 Oracle 认为该数据块的类型为data(type=6),但实际却不是。数据块中的data_object_id 和 数据字典中的...

weixin_31668255的博客 1994

oracle查询报8103,【数据恢复】详解ORA-8103错误 | Oracle and MySQL Database Recovery Repair Software recover delete...

ORA-8103是我们Database Consultant 经常要遇到的一个问题,了解ORA-8103的成因非常重要。简单来说ORA-8103 的主要成因有2类:数据块的 block type 类型 是 无效的 或者读出来的块类型与Oracle期望的不一致。 例如 Oracle 认为该数据块的类型为data(type=6),但实际却不是。数据块中的data_object_id 和 数据字典中的...

weixin_26800111的博客 927

oracle ora 00279,ORA-00376错误解决案例

今天开始磁盘空间100%,删完日志后,查询表遇到ORA-00376错误:SQL> select count(*) fromtab_test;ORA0-00376: "file '/data1/oradata/e_data1.dbf'cannot be read at this time"重启数据库没有问题,数据文件都能打开。[oracle@game ~]$ oerr ora37600376,...

weixin_36354744的博客 1464

ORA-12801,ORA-08103

“ORA-12801: 并行查询服务器 P004,ORA-08103: 对象不再存在”

渔夫数据库笔记 2万+

ORA-8103 Troubleshooting, Diagnostic and Solution (文档 ID 8103.1)

APPLIES TO: Oracle Database - Enterprise Edition - Version 8.1.5.0 to 12.2.0.1 [Release 8.1.5 to 12.2] Info...

cuilingqiao0657的博客 1014
上一篇: ORA-16038和ora-19809错误
下一篇: Oracle表碎片起因及解决办法
常飞梦
常飞梦 领域专家: 数据库技术领域 领域专家: 数据库技术领域
博客等级 码龄21年 403粉丝 314原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值