我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

什么是块损坏:

所谓损坏的数据块,是指块没有采用可识别的 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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

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

下载Word文档

编程热搜

目录