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数据字典常用查询
--查看当前用户所有表及描述
select o.object_name,c.comments
from user_objects o
left outer join user_tab_comments c
on o.object_name=c.table_name
where object_type='TABLE'
and c.comments like '%项目%'
--查看当前用户所有字段信息及描述
select c.table ......
默认情况下,在Oracle的主机上(linux系统)的Oracle操作系统用户下,以sys用户登陆数据库时可以不用输入密码直接登录。实际上,只要是属于dba组(linux)或osdba组(windows)下,都可以不用密码进行登录。这是认证方式称为OS认证。
这种登录方式的控制,是通过$ORACLE_HOME/network/admin/sqlnet.ora中的:
SQLNET.AUTH ......
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 适用于oracle9i以上!
select * from
(select row_number() over(order by sendid desc) rn,m.* from xxt_msgreceive m )
where rn <1010 and rn>=1000
方案2
SELECT * from (SELECT A.*, ROWNUM RN from (SELECT * from xxt_msg where sendstatus=1 order by msgid desc) A WHERE ROWNUM < ......
--包
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, --表名
& ......