
ORACLE 数据结构
Yushan Bai
目前仍热衷于ORACLE数据库,博客内容基本为原创,欢迎指点交流!
展开
-
实测10.2.0.5/11.2.0.4版本修改DB_FILES参数不需要重建控制文件
最近有客户数据文件达到db_files参数上限,和同事就这个参数的修改沟通时,许多人还认为是以前8i/9i时代,修改此参数后需要重建控制文件。通过测试验证修改10.2.0.5/11.2.0.4版本测试修改DB_FILES参数不需要重建控制文件(RAC需要两个节点都停掉再启动,不能先后重启节点).如下为11.2.0.4+LINUX版本的测试过程:1.查看当前的控制文件trace中MAXDAT...原创 2020-01-26 12:03:03 · 569 阅读 · 0 评论 -
ORACLE空间管理实验2:区的管理与分配
内容基于LMT管理的表空间,字典管理已经不用了。本篇主要验证了这些问题:1.LMT管理的表空间,区的分配有两种方法:系统分配和UNIFORM固定大小-->见实验 2.验证Oracle找寻可用区的方式:从数据文件开头的位图块中获得可用区的信息,详见:3.在表空间中建第一个表(注意,第一个),这个表从数据文件的第几个块开始使用11G下,LMT管理的表空间,数据原创 2014-01-27 21:49:46 · 2023 阅读 · 2 评论 -
ORACLE空间管理实验8:数据块格式分析--DUMP结合BBED
使用DUMP 数据块格式结合BBED进行查看。####################实验准备步骤:BYS@ bys3>create table test6(aa int,bb varchar2(10));Table created.BYS@ bys3>insert into test6 values(89,'bys');1 row created.BYS@ bys3>in原创 2014-01-28 13:30:23 · 2625 阅读 · 0 评论 -
alter session set events语句dump 控制文件头信息示例
alter session set events 'immediate trace name controlf level 1';中level n的意义如下:1 控制文件中的文件头信息2 level 1 + 文件头信息3 level 2 + 数据文件头信息10 level 3更详细的alter session set events--oracle -Oracle跟踪事件简介见h原创 2013-11-17 16:10:32 · 2430 阅读 · 0 评论 -
数据文件头块保留大小、ROWID、数据文件最大大小等数据库限制的说明
学习自EYGLE循序渐进ORACLE。本地管理表空间中设置不同大小的db_block_size时数据文件头保留空间对应如下:db_block_size=2KB,文件头保留32个数据块,即64KB。db_block_size=4KB,文件头保留16个数据块,即64KB。db_block_size=8KB,文件头保留8个数据块,即64KB。db_block_size=16KB,文件原创 2013-11-20 17:19:02 · 3972 阅读 · 1 评论 -
ROWID与ROWNUM的简介与对比
关于ROWID:在用户向表中插入一行数据时,ORACLE会自动在这一行数据加上一个ROWID,每行都有一个唯一ROWID,ORACLE利用ROWID定位数据行。ROWID并不显式存储为一列的值(伪列--不是存在表中的实际数据,可能是内部采用函数什么的根据行所在块的信息转换的),是访问一个表中行的最快机制。索引中存储的有索引行的值及索引行的ROWID的值--实际数据。ORACLE ROW原创 2013-12-10 14:33:40 · 2639 阅读 · 2 评论 -
通过rowid得到数据块的相关信息
rowid由18位字符组成,每组字符代表不同的含义,18位最大寻址空间“32G”对一条行ID的解析:AAASKGAAFAAAAWzAAAAAASKG:1-6位:对象idAAF:7-9位:文件idAAAAWz:10-15位:块idAAA:16-18位:行idSQL> create table test1(aa varchar2(100),ab varchar2(100原创 2013-09-09 20:33:47 · 3680 阅读 · 0 评论 -
使用DUMP数据块与BBED查看BLOCK对比数据库修改时的SCN
实验思路:先在数据库中对bys.a表的一行进行更新,查出此行对应的FILE# BLOCK#然后DUMP此FILE# BLOCK#,查看SCN信息使用BBED DUMP此FILE# BLOCK#,查看SCN信息1.在数据库中对 bys.a表的一行进行更新,记录此行的ROWID。19:55:13 BYS@ bys3>select * from a;B----------原创 2013-11-29 20:47:05 · 2555 阅读 · 0 评论 -
数据文件个数大于1024时ORACLE数据文件FILE_ID及RELATIVE_FNO的变化示例
通过ROWID计算数据块的相关信息: --详见: 数据文件头块保留大小、ROWID、数据文件最大大小等数据库限制的说明根据small file tablespace的ROWID,计算出表空间、数据文件、BOOCK中行最大数如下:根据ROWID的构成: ---注:2^10这种写法代表2的10次方,等于1024.每个表空间最大文件数: 2^10 1024原创 2013-12-16 23:44:46 · 4326 阅读 · 0 评论 -
通过oracle event来dump数据文件头信息
1.直接使用dump数据文件头,无法查询数据文件头信息直接通过alter system dump datafile n block min 1 max 10;是得不到任何有用信息的,如下:SQL> alter system dump datafile 1 block min 1 block max 10;部分的DUMP文件内容Start dump data blocks tsn:原创 2013-11-17 12:51:03 · 3372 阅读 · 0 评论 -
使用10046事件查看数据库OPEN时从root dba到bootstrap$的详细引导过程
1.使用10046事件查看数据库OPEN时的TRACE文件:SYS@ bys3>startup mount;ORACLE instance started.Total System Global Area 150654976 bytesFixed Size 1363216 bytesVariable Size 964原创 2013-11-29 15:36:49 · 2179 阅读 · 0 评论 -
ORACLE空间管理实验3:区管理之大区小区对I/O性能的影响
区分配方法:系统分配--UNIFORM区别和使用场景-->DUMP 系统分配,默认在创建表空间时不指定即是此方式。 CREATE TABLESPACE命令语法地址:http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_7003.htm#SQLRF01403 使用系统分配表空间语句是:cre原创 2014-01-27 21:50:14 · 1908 阅读 · 0 评论 -
ORACLE空间管理实验1:探索LMT表空间管理下数据文件头的结构及位图中区的记录方式
新建表空间、数据文件,DUMP数据文件头1号、2号、3号及127/128号块,在其上创建表,DUMP 3号及128号块http://blog.itpub.net/82387/viewspace-1016563/对于LMT本地管理的表空间,ASSM 自动段管理时数据文件的结构是:0号操作系统块,1-2是文件头,3-127是位图信息。 http://blog.itpub.net/原创 2014-01-27 21:49:00 · 3041 阅读 · 0 评论 -
ORACLE空间管理实验7:块管理之MMSM--为什么SYSTEM/UNDO/TEMP是MMSM管理?
ASSM和MSSM的优缺点。ASSM:优点,可以支持大并发插入 :缺点,索引的聚簇因子会很差 --可以用反向键索引、Hash分区。 MSSM不支持大并发插入。在索引范围扫描较多、并发插入很少、索引列顺序增加:使用MSSM更合适。SYSTEM、回滚表空间、临时表空间是MSSM表空间BYS@ bys3>select tablespace_name,EXTENT原创 2014-01-28 13:29:52 · 2028 阅读 · 0 评论 -
表空间管理及段空间管理总结
1.表空间管理技术实际上是管理的是EXTENT.本地管理表空间LMT在每个数据文件头部加入位图区域管理的是EXTENT的使用情况.EXTENT的使用和释放时ORACLE会在数据文件头的位图区域更新记录。1.1EXTENT的管理LMT有两种EXTENT空间分配方法:自动分配autoallocate,此时ORACLE自己决定区块的使用方法,默认会按递增算法分配空间。统一尺寸原创 2013-09-08 11:16:11 · 2307 阅读 · 0 评论 -
ORACLE空间管理实验6:块管理之ASSM下插入操作--高水位的影响及大并发插入的性能问题
插入时,默认只能插入到高水位以下的数据块,这在高并发时可能引起热块从而导致性能问题。原创 2014-01-27 21:51:00 · 2654 阅读 · 1 评论 -
ORACLE空间管理实验4:块管理之ASSM三级位图结构
DUMP L1 L2 L3,解读DUMP信息。在表空间中建第一个表(注意,第一个),这个表从数据文件的第几个块开始使用Extent Map和Auxillary Map的区别与作用什么是EMP Block#######################BYS@ bys3>create tablespace test1 datafile '/u01/oradata/bys3/test原创 2014-01-27 21:50:28 · 2947 阅读 · 0 评论 -
误删除数据文件、控制文件的非RMAN恢复方法
在Unix/Linux上删除所有的Controlfile控制文件后实例并不会在第一时间crash,相反居然还可以顺利完成FULL checkpoint 。这是为什么呢? ---注意这个问题仅适用于Unix/Linux, 在Windows平台上不允许删除 已经被其他进程打开的文件。究其根本原因是在Linux/Unix上Read 或 Write一个文件,进程都会打开一个与此文件相关联的 打开文件描述符 Open File Descriptors (a file descriptor (FD) is an原创 2014-03-07 12:26:41 · 2142 阅读 · 0 评论 -
Oracle Lob类型存储浅析
在Oracle中,为数据表字段column和PL/SQL语言,分别提供了多种数据类型,以应对实际开发中的多种类型。Lob类型是Oracle推出一种保存大对象的数据类型。当我们考虑将信息文件(十进制、二进制)、图像甚至音频信息采用数据库作为保存载体时,就需要使用lob类型数据。 目前Oracle支持的Lob类型具体包括四个子类型(subtype),分别为CLOB、BLOB、NLOB和BFIL转载 2014-04-13 10:20:53 · 2027 阅读 · 0 评论 -
ORACLE空间管理实验5:块管理之ASSM下高水位的影响--删除和查询
高水位概念:所有的oracle段(segments,在此,为了理解方便,建议把segment作为表的一个同义词) 都有一个在段内容纳数据的上限,我们把这个上限称为"high water mark"或HWM。这个HWM是一个标记,用来说明已经有多少没有使用的数据块分配给这个segment。HWM原则上HWM只会增大,不会缩小,即使将表中的数据全部删除,HWM还是为原值,由于这个特点,使HWM很象原创 2014-01-27 21:50:45 · 1911 阅读 · 0 评论 -
ORACEL空间管理实验9:空间管理汇总--索引和表的扫描/闪回时的块管理方式
详细描述全表扫描是如何完成的(只描述I/O相关)I. 段头:在段头读取两样信息:高高水点、Extent Map(区地图)(Auxillary Map)II. 根据段头中的Auxillary Map,依次读每个区的数据。23、描述索引Index RANGE SCAN的流程Root块的块号=索引段段头块号+1I. 查找seg$等数据字典,确定索引段段头位置II. 段原创 2014-01-28 13:48:15 · 1411 阅读 · 0 评论 -
表空间级COMPRESS属性--压缩表的应用
表空间级COMPRESS属性可以在表空间级别上定义COMPRESS属性,既可以在生成时利用CREATE TABLESPACE来定义,也可以稍后时间利用ALTER TABLESPACE来定义。与其他存储参数类似,COMPRESS属性也具有一些继承特性。当在一个表空间中创建一个表时(默认不加参数时),它从该表空间继承COMPRESS属性。实验如下:将使现有表空间转换为压缩表空间原创 2013-09-08 18:52:43 · 3492 阅读 · 0 评论 -
Oracle ORION IO 测试工具
一. ORION 概述1.1 ORION 说明ORION (Oracle I/O Calibration Tool) 是校准用于 Oracle 数据库的存储系统 I/O 性能的独立工具。校准结果对于了解存储系统的性能有很大帮助,不仅可以找出影响 Oracle 数据库性能的问题,还能测量新数据库安装的大小。由于 ORION 是一个独立工具,用户不需要创建和运行 Oracle 数据库。转载 2014-03-07 17:55:45 · 1315 阅读 · 0 评论 -
ORACLE逻辑结构及表空间
1.ORACLE逻辑结构ORACLE将数据逻辑地存放在表空间,物理地存放在数据文件中。一个表空间任何一个时刻只能属于一个数据库。 数据库——表空间——段——区——ORACLE块每个数据库由一个或多个表空间组成,至少一个。每个表空间基于一个或多个操作系统的数据文件,至少一个,一个操作系统的数据文件只能属于一个表空间。一个表空间可以存放一个或多个段 segment。每个段由原创 2013-09-08 10:38:04 · 1371 阅读 · 0 评论 -
consistent read--一致性读--Logical read-逻辑读-current read当前读--物理读示例
各种数据读的解释:数据块现在已经全部缓存到内存中了,我们从内存中读取块即可,不用再从磁盘中读取块了,自然就没有物理读。Logical read:所谓逻辑读,就是从内存中读取数据块,包含current read 与 consistent readcurrent read:属于Oracle版本读取方式的一种机制,就是说当进行DML操作时,我们需要获取数据块最新的状态,只对最新状态进行操原创 2013-09-09 19:44:19 · 2922 阅读 · 0 评论 -
操作系统中数据文件与ORACLE数据库中查询的bytes大小不同的解析
1.操作系统中数据文件与ORACLE数据库中查询的大小不同的疑惑:以SYSTEM为例:操作系统中数据文件比ORACLE数据库中查询的多 8192byte --其它数据文件同样情况[oracle@bys3 ~]$ which dbfsize/u01/app/oracle/product/11.2.0/dbhome_1/bin/dbfsize[oracle@bys3 ~]$ dbfs原创 2013-11-28 11:27:45 · 2562 阅读 · 0 评论 -
使用BBED查看数据文件头(block# 1)的简单使用及查询DBID/DB_NAME等信息
DBID及DB_NAME的查看在最后。一、关于BBED使用命令show all中显示DBA的计算:BBED> show all ---这命令显示了当前的文件号、BLOCK号,偏移号、COUNT数等信息。 FILE# 1 BLOCK# 1 OFFSET 0原创 2013-11-28 01:04:11 · 3890 阅读 · 0 评论 -
不同的pctfree-pctused占用的BLOCK不同的示例
PCTFREE和PCTUSED作用及举例PCTFREE的作用是:当数据块的剩余容量达到PCTFREE值时,此数据块不再被记录于freelist中,不允许其他数据再存放至数据块中。PCTUSED的作用是:当数据块中的数据量小于PCTUSED值时,此数据块将被记录于freelist中,允许其他数据再存放至此数据块中。PCTFREE和PCTUSED举例如下:假设当前此两属性分别设原创 2013-09-09 15:57:18 · 1146 阅读 · 0 评论 -
shrink合并数据块--解决数据块碎片问题
合并数据块的概念及命令在Oracle 数据块中,删除数据后不会降低HWM,造成大量空间的浪费。自行手动合并碎片空间可以采用的方法有:重建表、move、shrink等等,其实底层实现都是通过匹配的insert和delete操作,重新构造表中的行。move操作,不支持在线读/写,表在移动的过程中是锁定状态不能操作,表在移动后表上索引会失效,必须rebuild重建。shrink命令可原创 2013-09-09 16:39:51 · 1977 阅读 · 0 评论 -
段存储属性继承
结论:建表时如果未指定表的段存储属性,则默认使用表空间的段存储属性。如果建表时指定了段存储属性,则使用指定的段存储属性。SYSTEM:系统自动分配区大小,分配值不固定UNIFORM:手动统一分配区大小,每次固定分配2MINITIAL_EXTENT:初始化区大小2M,在auto模式下只有初始化区大小,下次分配值不固定NEXT_EXTENT:下次分配区大小2M,在uniform模式原创 2013-09-09 20:43:44 · 1177 阅读 · 0 评论 -
表压缩前后所占用的BLOCK情况的对比总结
一、表压缩的实现:压缩表的数据要能够被压缩,必须正确地使用批量装载或插入:1、在SQL * LOADER中使用直接路径(direct path)装载数据;2、执行create table ... as select语句;3、执行并行插入语句;4、执行串行插入语句并且使用append提示。二、表压缩性能分析:1、在批量装载或插入数据的过程中,由于压缩的同时进行,会引起原创 2013-09-08 19:13:07 · 1827 阅读 · 0 评论 -
创建一个加密表空间并对表内数据进行加密的示例
一.基于表空间的加密概念对整个表空间进行加密,表空间中的所有对象都是加密的,例如 在加密表空间上创建一个表,表的所有字段都是加密状态,适用Oracle11gR2以上版本。表空间加密数据的优点:不会再收到字段加密的限制,例如 字段类型,索引类型,需要设置no salt才可见索引等。表空间加密数据的缺点:外部大对象不支持,exp/imp逻辑导出导入不支持但可以用expdp/impdp数原创 2013-09-08 18:10:31 · 2126 阅读 · 0 评论 -
收缩表空间数据文件大小的两个案例
收缩表空间两个案例:使用users表空间测试。undo表空间也可以这样操作,系统表空间未测试。一、空闲空间可以正常收回。1.查出表空间总大小及空闲空间大小BYS@ bys001>select df.tablespace_name,df.sum_df_m as space_m,fs.sum_fs_m free_space,to_char(trunc((df.sum_df_m-fs.su原创 2013-09-08 20:03:19 · 1877 阅读 · 1 评论 -
移动数据文件、系统表空间文件、临时表空间文件
1.移动数据文件实验首先使表空间脱机,,复制数据文件到计划的位置,重定义数据文件,使表空间联机,再查看是否已经成功移动数据文件SQL> altertablespace test_index offline; 表空间已更改。SQL> selecttablespace_name,status,contents from dba_tablespaces;TABLESPACE_NA原创 2013-09-08 17:58:57 · 1541 阅读 · 0 评论 -
普通表与临时表DML操作会产生REDO/UNDO对比与分析
ORACLE临时表介绍:ORACLE数据库除了可以保存永久表外,还可以建立临时表temporary tables。这些临时表用来保存一个会话SESSION的数据,或者保存在一个事务中需要的数据。当会话退出或者用户提交commit和回滚rollback事务的时候,临时表的数据自动清空,但是临时表的结构以及元数据还存储在用户的数据字典中。Oracle临时表分为 会话级临时表 和 事务级临时原创 2013-09-17 08:39:34 · 3171 阅读 · 0 评论 -
创建表空间-CREATE TABLESPACE命令详解
语法描述:CREATE [UNDO] TABLESPACE tablespace_name[DATAFILEdatefile_spec1 [,datefile_spec2] ......[ { MININUM EXTENT integer [k|m] | BLOCKSIZE integer [k]|logging clause|FORCE LOGGING|D转载 2013-09-08 10:58:34 · 17380 阅读 · 0 评论 -
segment,extent,block
1.segment 段的不同类型:分区表 tablepartition表 table索引 index簇 cluster索引分区indexpartition索引表 index-organized table临时段 temporary segment还原段 undosegment大对象段lobsegment嵌套表 nest原创 2013-09-08 11:07:31 · 1768 阅读 · 0 评论 -
手工建库后表空间数据文件非自动扩展引起的错误:ORA-01653: unable to extend* in tablespace*
手工建库时,未将表空间数据文件设置为自动扩展引起的错误:ORA-01653: unable to extend * in tablespace * 的解决:查看数据库alert日志文件时,发现出现大量如下的错误:Sun Dec 01 10:00:42 2013ORA-1653: unable to extend table SYS.SCHEDULER$_EVENT_LOG by 8 i原创 2013-12-01 16:18:07 · 5368 阅读 · 0 评论 -
使用BBED查看SYSTEM文件头的root dba及bootstrap$
数据库版本11.2.0.4##############################################实验思路是: --其中数据库OPEN时的TRACE信息,可以参考:http://blog.youkuaiyun.com/q947817003/article/details/17025489file#1 block#1==>root dba==>struct ktetb原创 2013-11-29 16:10:54 · 2470 阅读 · 0 评论 -
关于Big-Endian/Little-Endian 字节顺序的简单记录
一、基本概念位的概念:在计算机中,一个0或1称为一位(bit)。字节:连续的八位称为一个字节(Byte),字节是计算机中可单独处理的最小单位。即以字节为基本单位来解释信息,规定1个字节是8个二进制位。通常1个ASCII码用1个字节存放,1个汉字用2个字节存放,双精度浮点实数用8个字节存放。二、字节顺序由来在写字符流时,因为字符型只占一个字节数,计算机只须按一个字符一个字原创 2013-11-28 11:14:55 · 4532 阅读 · 0 评论