[转]Oracle数据块体系的详细介绍】的更多相关文章

数据块概述Oracle对数据库数据文件(datafile)中的存储空间进行管理的单位是数据块(data block).数据块是数据库中最小的(逻辑)数据单位.与数据块对应的,所有数据在操作系统级的最小物理存储单位是字节(byte).每种操作系统都有一个被称为块容量(block size)的参数.Oracle每次获取数据时,总是访问整个数(Oracle)数据块,而不是按照操作系统块的容量访问数据. 数据库中标准的数据块(data block)容量是由初始化参数 DB_BLOCK_SIZE 指定的.…
测试环境:11.2.0.4 1.构建数据块损坏的测试环境 2.有备份:常规恢复坏块 3.无备份:跳过坏块 1.构建数据块损坏的测试环境 1.1 创建测试表 --Create Table t_test conn jingyu/jingyu drop table t_test purge; create table t_test (id number, name char(2000)); --Insert data insert into t_test values(1, 'alfred 1');…
详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp57 数据块(Oracle Data Blocks),本文简称为"块",是Oracle最小的存储单位,Oracle数据存放在"块"中.一个块占用一定的磁盘空间.特别注意的是,这里的"块"是Oracle的"数据块",不是操作系统的"块". Oracle每次请求数据的时候,都是以块为单位…
错误信息: java.sql.SQLException: ORA-01578: ORACLE 数据块损坏 (文件号 17, 块号 315703) ORA-01110: 数据文件 17: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\DEMO.DBF' 可能的原因有很多,比如物理磁盘坏块,比如Oracle故障--,反正不好定位具体的问题 简单.粗暴的解决办法: 1.查询有坏块的表 select tablespace_name, segment_type, owner…
1.什么是块损坏: 所谓损坏的数据块,是指块没有採用可识别的 Oracle 格式,或者其内容在内部不一致. 通常情况下,损坏是由硬件故障或操作系统问题引起的.Oracle 数据库将损坏的块标识为"逻辑损坏"或"介质损坏". 假设是逻辑损坏,则是 Oracle 内部错误. Oracle 数据库检測到不一致之后,就将逻辑损坏的块标记为损坏.假设是介质损坏,则是块格式不对:从磁盘读取的块不包括有意义的信息. 通过恢复块,或者删除包括损坏块的数据库对象(或同一时候採用这两种…
https://community.oracle.com/thread/3540795 概述 ------------- 数据库坏块(corruption) 的类型可以按照坏块所属对象的不同,分为用户数据坏块,数据字典坏块,Undo坏块,控制文件坏块,Redo坏块,Lob坏块,index坏块等等:也可以按照坏块产生的原因,分为物理坏块(physical corruption)和逻辑坏块(logical corruption ). 本文主要讨论用户数据发生物理坏块(physical corrupt…
实验:某个分区数据块损坏,不完全恢复此分区表数据 背景:数据库没有有效备份,某个分区中有数据块损坏. 要求:最大限度恢复此分区数据. 环境:RHEL 6.4 + Oracle 11.2.0.4 1. 初始化实验环境 2. 模拟分区中有数据块损坏情景 3. 尝试使用Oracle内部事件10231进行不完全恢复 Reference 1. 初始化实验环境 初始化创建模拟实验环境用到的表空间.业务用户.表,并导入测试数据. 本次实验用到表空间DBS_D_JINGYU, 业务用户JINGYU, 分区表T_…
1. rdba(Tablespace relative database block address) 是相对数据块地址,是数据所在的地址,rdba可就是rowid 中rfile#+block#. 根据rdba获取file#和block#,使用10进制的rdba ), dbms_utility.data_block_address_block() FROM dual; Block dump from disk: buffer tsn: --表示表空间 rdba: )--相对地址,文件号+块号 s…
http: 最近在研究块的内部结构,把文档简单整理了一下,和大家分享一下.该篇文章借助dump和BBED对数据 库内部结构进行了分析,最后附加了一个用BBED解决ORA-1200错误的小例子.在总结的过程中参考了 <Disassembling the Oracle Data Block>以及网上的翻译版本.  dump说明  创建表空间和测试表:  create tablespace testblock datafile '/opt/oracle/oradata/oradb/testblock…
1.生成bbed list file文件: SQL> select file#||' '||name||' '||bytes from v$datafile; $ vim dbfile.txt 2.生成bbed参数文件: $ vim bbed.par mode=edit listfile= dbfile.txt blocksize 3.创建测试表和数据: )) tablespace tbs03; ,'AAAA'); ,'BBBB'); commit; 4.查询表数据行所在的数据块号: selec…