Oracle 段 区 块
阅读oracle文档的b10743,《conceps》。这本被oracle公司的大师级的人物Michele Cyran等牛人所写,真是一本不错的书籍。可叹英文不太好,但努力,总会有收获的。还是从他的数据架构来说吧!
(一)Data blocks ,Extents,Segment
这就是他们之间的逻辑结构。
先看Data blocks(也叫逻辑块,oracle块,页)吧,oracle存储数据都是在这些数据块中,一个数据块是磁盘上数据库物理空间一系列物理字节的组成。
比Data blocks更高一层的逻辑数据块空间是extent,一个extent是由一系列临近的存储信息的数据块组成。
最高一层的逻辑结构是segment,一个segment是同一表空间extents的一个集合。每一个segment有不同的数据结构。如每一个表的数据就存储在自己的data segment,每一个索引存储在自己的索引段,如果表或者索引是
是分区存储的,那么每一个分区都存储在他们各自的segment中。一个segment和他所有的extent都是在一个表空间中,并且一个segment可以跨越几个数据文件。。
对于数据库来说,data block是oracle数据库中分配和私用的最小存储单元。但这仅仅对数据库来说,在物理层次,操作系统层次,所有的数据仍旧是按字节存储的。每一个操作系统都有自己的块尺寸(block size),在oracle数据库中,数据块的大小都有参数db_block_size在创建数据库的时候来确定,他的数值应该是操作系统块尺寸的整数倍。
数据块都有这么几部分组成,块头部分,表目录,行目录,空闲空间,数据这几部分组成。块头主要包含两部分信息:块头地址和segment的类型,是数据表还是索引;表目录主要包含块中有多少行数据。行目录主要包含每一行的物理地址。数据就很明显了,就是这个块包含的数据。这里边最奇妙的就是这个空闲空间,它主要目的就是为varchar这个数据类型准备的,有两个阈值参数pctfree,pctused来控制此数据快移向那一个链表,这两个参数的设定主要目的是为了避免行连接与行迁移,具体的又够一篇文章了,以后再写,^_^。
在来说extent这个由一系列连续的data blocks组成。每当在数据库中创建一个表,那么分配给表的data segment分配一个包含若干数据库的初始的extent,虽然还没有插进去数据,但初始的extent已经做好了插入数据的准备。如果初始的extent中的数据块已经满了,或者没有空间插入数据,那么他
相关文档:
向Oracle数据库表中插入十几万条数据,可是当插入3万多条后,程序就抛
Java代码
ORA-01000 maximum open cursors exceeded
ORA-01000 maximum open cursors exceeded
异常信息。Google了异常信息,得知这样的错误很容易出现在Java代码中的主要原因是:Java代码在执行conn.crea ......
Oracle JOB 用法小结
一、设置初始化参数 job_queue_processes
sql> alter system set job_queue_processes=n;(n>0)
job_queue_processes最大值为1000
查看job queue 后台进程
sql>select name,description from v$bgprocess;
二,dbms_job package 用法介绍
......
(1) 选择最有效率的表名顺序(只在基于规则的优化器中有效):
ORACLE的解析器按照从右到左的顺序处理from子句中的表名,from子句中写在最后的表(基础表 driving table)将被最先处理,在from子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那 ......
--包
create or replace package pkg_query as
type cur_query is ref cursor;
end pkg_query;
--过程
CREATE OR REPLACE PROCEDURE "PRC_QUERY" (p_tableName
in varchar2, --表名
& ......