iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Oracle数据块损坏之10231内部事件不完全恢复
  • 526
分享到

Oracle数据块损坏之10231内部事件不完全恢复

2024-04-02 19:04:59 526人浏览 八月长安
摘要

什么是块损坏: 所谓损坏的数据块,是指块没有采用可识别的 oracle 格式,或者其内容在内部不一致。通常情况下,损坏是由硬件故障或操作系统问题引起的。Oracle 数据库将损坏的块标识为“逻辑损坏”或“介

什么是块损坏:

所谓损坏的数据块,是指块没有采用可识别的 oracle 格式,或者其内容在内部不一致。通常情况下,损坏是由硬件故障或操作系统问题引起的。Oracle 数据库将损坏的块标识为“逻辑损坏”或“介质损坏”。如果是逻辑损坏,则是 Oracle 内部错误。Oracle 数据库检测到不一致之后,就将逻辑损坏的块标记为损坏。如果是介质损坏,则是块格式不正确;从磁盘读取的块不包含有意义的信息。实验:某个分区数据块损坏,不完全恢复此分区表数据。

 背景:数据库没有有效备份,某个分区中有数据块损坏。

 要求:最大限度恢复此分区数据。

 环境:RHEL 6.4 + Oracle 11.2.0.4

下面这篇文章主要给大家介绍了关于Oracle数据块损坏之10231内部事件的相关内容,分享出来供大家参考学习,下面来看看详细的介绍:

1. 初始化实验环境

初始化创建模拟实验环境用到的表空间、业务用户、表,并导入测试数据。

本次实验用到表空间DBS_D_JINGYU, 业务用户JINGYU, 分区表T_PART(含两个分区的测试数据)。


-- 数据表空间
create tablespace dbs_d_jingyu datafile '/u02/oradata/jingyu/dbs_d_jingyu01.dbf' size 30M autoextend off;
-- 临时表空间
create temporary tablespace temp_jingyu tempfile '/u02/oradata/jingyu/temp_jingyu01.tmp' size 30M autoextend off;
-- 索引表空间(可选)
create tablespace dbs_i_jingyu datafile '/u02/oradata/jingyu/dbs_i_jingyu01.dbf' size 30M autoextend off;
-- 假设创建用户 jingyu 密码 jingyu,默认临时表空间 temp_jingyu, 默认数据表空间 dbs_d_jingyu。
CREATE USER jingyu IDENTIFIED BY jingyu
 TEMPORARY TABLESPACE temp_jingyu
 DEFAULT TABLESPACE dbs_d_jingyu
 QUOTA UNLIMITED ON dbs_d_jingyu;
-- 赋予普通业务用户权限
grant resource, connect to jingyu;
-- 赋予DBA用户权限
grant dba to jingyu;
-- 业务用户登录
conn jingyu/jingyu 
-- 1.1 创建分区表
create table t_part(
id number, 
name varchar2(20), 
start_time date, 
content varchar2(200)
)partition by range(start_time)
(
 partition P20150101 values less than (TO_DATE(' 2015-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGoRIAN'))
 tablespace dbs_d_jingyu,
 partition P20150102 values less than (TO_DATE(' 2015-01-02 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
 tablespace dbs_d_jingyu,
 partition P20150103 values less than (TO_DATE(' 2015-01-03 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
 tablespace dbs_d_jingyu
);

-- 1.2 插入测试数据
--分区P20150102插入10000行数据
begin
 for i in 1..10000 loop
 insert into t_part values (i,'alfred'||i, to_date('2015-01-01','yyyy-mm-dd'), 'AAAAAAAAAA');
 end loop;
 commit;
end;
/
--分区P20150103插入20000行数据
begin
 for i in 10001..30000 loop
 insert into t_part values (i,'alfred'||i, to_date('2015-01-02','yyyy-mm-dd'), 'AAAAAAAAAA');
 end loop;
 commit;
end;
/

-- 1.3查询表数据量和大小
select count(1) from t_part; 
--result: 30000
select count(1) from t_part partition(P20150102); 
--result: 10000
select count(1) from t_part partition(P20150103); 
--result: 20000
--普通表/分区表的每个分区大约__G大小
set linesize 160
col segment_name for a30
select (t.bytes/1024/1024) "MB", t.owner, t.segment_name, t.partition_name, t.tablespace_name from dba_segments t where segment_name = 'T_PART';
 MB OWNER  SEGMENT_NAME  PARTITION_NAME  TABLESPACE_NAME
---------- ------------------------------ ------------------------------ ------------------------------ ------------------------------
 8 JINGYU  T_PART  P20150102  DBS_D_JINGYU
 8 JINGYU  T_PART  P20150103  DBS_D_JINGYU
您可能感兴趣的文档:

--结束END--

本文标题: Oracle数据块损坏之10231内部事件不完全恢复

本文链接: https://www.lsjlt.com/news/51633.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Oracle数据块损坏之10231内部事件不完全恢复
    什么是块损坏: 所谓损坏的数据块,是指块没有采用可识别的 Oracle 格式,或者其内容在内部不一致。通常情况下,损坏是由硬件故障或操作系统问题引起的。Oracle 数据库将损坏的块标识为“逻辑损坏”或“介...
    99+
    2024-04-02
  • Oracle数据库不同损坏级别的恢复教程
    前言 在 DBA 的日常工作中不可避免存在着数据库的损坏,本文将主要介绍 Oracle 数据库遇到不同损坏级别下的应该采用的恢复方法,供读者在遇到此类情景时,能的找到适合自己的恢复方法,提高工作效率。 数据...
    99+
    2024-04-02
  • Oracle数据库不同损坏级别的恢复是怎样的
    这期内容当中小编将会给大家带来有关Oracle数据库不同损坏级别的恢复是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。  在 DBA 的日常工作中不可避免存在着数据...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作