oracle 点滴

            为了更好的介绍Oracle主要组成部分,首先我给大家一张结构图,有一个整体感觉。

从图可以看出来,主要分成两个大的主要部分:Oracle Instance 和 Oracle DataBase。

先介绍一下Oracle DataBase(Oracle的四种文件):Datafile 扩展名 .dbf,Redo log 扩展名 .log ,Archived redo log 扩展名 .log ,control file 扩展名 .ctl 但在unix系统上这些扩展名有没有是无所谓的。

Datafile文件:数据存储的真正实体,物理元素。

Redo log:日志文件,存储对数据库所有的insert, delete, update 操作,从图中可以看出来.log文件会分为多个group,日志是顺序写进去的,例如:从图中可以看出来,有三组log,先从group1开始写日志,当group1写满后,会自动向group2内写,当group2满后自动写向group3。当group3写满后,会重新向group1内写,这时候group1的内容被重写,也就是说在写满后重新写的时候,内容将全部被删除。

Archived redo log:同样是日志文件,只不过是对Redo log 的一个备份,上面说过Redo log会发生重写,这时候如果Archived redo log 空间足够的时,它会对Redo log进行备份。举例:control file 内记录了这样一条信息,那就是对每组log文件的scn号(scn号是CKPT打上去的),当LGWR Log Writer 向group1内写的时候,对group1分配了scn=101,满后写向group2,scn=102,写group3,scn=103,在这个过程中Archived redo log都会对log文件做同样的操作进行备份,当又写回group1时,scn=104,这时候scn=101的log就被删除,如果想再找回那时的数据,就需要从Archived redo log内的scn=101时的日志还原。

Control file:会记录这样一些信息,DBname, DBfile ,Redo log 位置(disk/oralce...),备份恢复信息,scn,对物理文件的所有名称,路径等等的所有信息........

Oracle Instance

init文件:主要记录了Oracle在启动时所需要的参数,在启动之后,这个文件就不再使用了。例如:SGA,DBblock Size , process control files ............

Oracle在一启动的时候就会为其分配内存,和其他运行程序不一样的是,其他进程会随着进程计算的不断变化而增长或减少,而Oracle 所分配的内存是直接达到所定义的大小。

在System Global Area(SGA) 表示的是内存结构,其中最主要的是 shared pool, Database Buffer Cache, Redo Log Buffer . 还有就是java pool , streams pool , large pool .

下面分别介绍内存结构各部分:
shared pool :公共连接池。
当客户端请求连接数据库时有两种形式:
1.专用类型(一般我们常用的):例如一个DB最多可以分配50条线程,那么每个请求端会占用一条线程,直到全部用尽。50 --- DB
2.共享类型:要自己开发中间件  50 ----中间件---10---DB,这个DB允许10条线程,来了50个客户端请求资源,这样中间件会为客户安排排序等待。

Database Buffer Cache: 数据缓存。针对数据库N条写进程(从图中可以看出,有一个圆形图,写着DBWn Database Writer),主要作用是针对数据库的Datafile 文件,也就是真正的物理文件,后面会对Datafile进行介绍。

Redo Log Buffer:针对Log文件写进程的缓存。针对LGWR Log Writer 所分配的缓存区。所针对的Redo Log文件,也是真正的物理文件,后面会对其介绍。

Java Pool:

Streams Pool:

Large Pool:

在内存结构下面就是许多进程了:DBWn Database Writer, Redo Log Buffer,CKPT CheckPoint...............

从图中可以看出用圆圈画的就是进程

下面分别介绍进程的各部分:
DBWn Database Writer:针对DataFile的写进程,它执行对DataFile所有的add, delete, update 操作。

LGWR Log Writer: 针对 Redo log 的写进程。

ARCn Archiver:针对Archived Redo log 的写进程。

CKPT Checkpoint:针对control file的写进程。


Instance, Table Space, .dbf 的关系

在我们创建Instance(在mssql里也就是所说的库)之前,一定要,先建table space,然后给出table space的datafile,并指定datafile的路径,名称,大小等信息,一个table space可以有多个datafile,但一个datafile不能所属于多个table space。

一个Instance可以由多个table space组成,有人会问了,由一个组成不是很简单, 原因很多,举一个例子说说:
这个例子主要会提高查询的速度。

create table tcc_ne_snap
  (
    ne_id 
integer not null ,
    ne_type 
integer not null ,
    first_result date 
not null ,
    compress_date date 
not null ,
    s_month 
smallint,
    related_ne1 
integer not null , 
    cat38_sv_id 
integer,
    cat39_sv_id 
integer,
    
unique (first_result,ne_type,ne_id,s_month) USING INDEX LOCAL STORAGE( initial 30000 k next 30000 k) ,
    
primary key (compress_date,ne_type,ne_id,s_month) USING INDEX LOCAL STORAGE( initial 30000 k next 30000 k)
 )
partition 
by range (s_month) (
PARTITION 
VALUES LESS THAN (2 ) TABLESPACE   apmdbs11 ,
PARTITION 
VALUES LESS THAN (3 ) TABLESPACE   apmdbs1 ,
PARTITION 
VALUES LESS THAN (4 ) TABLESPACE   apmdbs2 ,
PARTITION 
VALUES LESS THAN (5 ) TABLESPACE   apmdbs12 ,
PARTITION 
VALUES LESS THAN (6 ) TABLESPACE   apmdbs3 ,
PARTITION 
VALUES LESS THAN (7 ) TABLESPACE   apmdbs4 ,
PARTITION 
VALUES LESS THAN (8 ) TABLESPACE   apmdbs5 ,
PARTITION 
VALUES LESS THAN (9 ) TABLESPACE   apmdbs6 ,
PARTITION 
VALUES LESS THAN (10 ) TABLESPACE   apmdbs7 ,
PARTITION 
VALUES LESS THAN (11 ) TABLESPACE   apmdbs8 ,
PARTITION 
VALUES LESS THAN (12 ) TABLESPACE   apmdbs9 ,
PARTITION 
VALUES LESS THAN (13 ) TABLESPACE   apmdbs10
)
   storage(initial 
600000 k next 20480k freelists 4 ) pctfree 0   ;

这时你按月查询数据的时候,是不是会很快呢?呵呵!

table space 的组成单位: table space -> partition -> segment -> block

不同的用户登录后所能看到的也不同,oracle 有很完备的roles 和 users 管理,是基于RBAC 的表现形式,权限分配给roles ,而不同的user会分配到一个或多个roles。

posted on 2007-05-28 15:38  执法长老  阅读(300)  评论(0编辑  收藏  举报

导航