关于ORACLE数据库结构的简介
ORACLE的数据库结构大家都了解吗?如果不了解,下面我为大家整理了关于ORACLE数据库结构简介的文章,希望能为你提供帮助:
一、物理结构:
1、数据文件:ORACLE数据库包含若干数据文件,数据文件存储数据库数据,包括表、索引等等。数据文件的几个特点:
1)一个数据文件只允许分配给一个数据库
2)数据文件可设置为自动扩展
3)一个或多个数据文件构成表空间
在进行数据库 *** 作的时候,数据库先从内存寻找要 *** 作的数据,如果没有找到的话,再从数据文件取出数据放在内存中,然后才对内存中的数据进行相关的 *** 作。 *** 作完的数据并没有立即写到数据文件中(这样减少了磁盘的IO),而是放在内存中,然后由DBWn进程决定何时批量写入数据文件。
2、控制文件:每一个数据库都有一个或多个控制文件,控制文件包含了数据库的物理结构,包括:
1)数据库名
2)数据文件名及位置
3)重做日志文件名及位置
4)数据库的建立时间等等
一般一个数据库都有若干个控制文件镜像。数据库在打开的时候(ALTER
DATABASE OPEN),会读取控制文件中的信息来打开数据库。当数据库的物理结构发生变化的时候,比如增加一个数据文件、一组重做日志等等,控制文件都会自动地做相应的修改。在数据库物理结构发生变化后,最好重新备份一下控制文件,用于数据库恢复。
3、重做日志文件:重做日志中记录了数据的变化。一般一个数据库都会有两到三组重做日志文件。同一日志组的镜像最好分布于不同的磁盘上。
4、归档日志:当数据库启动归档的时候,重做日志会被自动归档到指定的位置。
5、初始化参数文件:包含了数据库启动时的配置信息
6、警告和跟踪日志文件
1)跟踪文件:每一个后台进程都有一个单独的'跟踪文件,比如当系统发现某一个进程有问题的时候,相关的信息就会写到相应的跟踪文件中。可以从数据库的跟踪文件来发现和调试数据库的错误。
2)警告文件,也叫警告日志。是一个特别的跟踪文件,它记录着数据库启动、运行中的相关信息,它是按时间顺序进行记录的。
7、备份文件
二、逻辑结构
1、表空间:相关逻辑对象的集合。在oracle10g中,在创建数据库的时候就自动创建了SYSTEM和SYSAUX表空间。
2、数据块:数据存储在数据块中,一个数据块的大小(DB_BLOCK_SIZE)由 *** 作系统块来决定。可以指定5种,分别为2K、4K、8K、16K、32K。
3、区:一系列连续的数据块组成区,区存储特定类型的数据,比如索引,表等等。
4、段:由一系列区组成段。
1)数据段:对于每一个非聚集表有一数据段,表的所有数据存放在该段。每一聚集有一个数据段,聚集中每一个表的数据存储在该段中。分区表中的每一个分区有一个数据段,分区中的数据存储在该段中。
2)索引段:每一个索引有一索引段,存储索引数据。分区索引中的每一分区有一个索引段。
3)回滚段:用于临时存储要撤消的信息,这些信息用于生成读一致性数据库信息,在数据库恢复时使用,回滚未提交的事务。系统回滚段用于处理系统事务,不建议用户使用系统回滚段来做其它 *** 作。
4)临时段:当一个SQL语句需要临时工作区时,由ORACLE建立临时段。当语句执行完毕,临时段的区退回给系统。
ORACLE由两部分:实例和数据库实例由以下组成: SGA,Shared pool,Database buffer cache,Redo log buffer cache.
数据库由物理文件组成,其中必须有的文件是:数据文件,控制文件,重做日志
另外还有:参数文件,口令文件,归档日志文件(这三个不是必须的)
ORACLE SERVER 由两个部分组成,
1.INSTANCE:又由内存结构和后台进程组成
2.DATABASE:又由数据文件,日志文件和控制文件组成<这三个文件是必需的>.
CONTROL FILE是用来连接实例和DATABASE的
SQL>SHUTDOWN IMMEDIATE
SQL>STARTUP NOMOUNT
SQL>ALTER DATABASE MOUNT
以上三个过程就是通过CONTROL FILE来连接实例和数据库.
SQL>ALTER DATABASE OPEN
在OPEN的过程对DATABASE的数据文件和重做日志文件进行一次性的验证,验证它们的状态.
ORACLE INSTANCE:存取数据库的一个手段
一个DATABASE与INSTANCE之间是1:N的关系,一个INSTANCE只能 *** 作一个DATABASE,由内存结构(共享池,
BUFFER CACHE,REDO LOG BUFFER CACHE)及相应的进程结构组成(PMON<程序监控进程>,SMON<系统监控进
程>,CKPT<检查点进程>)
SQL>SHOW SGA ---显示DATABASE内存结构信息
SQL>SET WRAP OFF
SQL>SET LINESIZE 200
以上这两个是设置行宽
SQL>SELECT * FROM V$BGPROCESS
将看到在这个系统中所有可能使用到的进程,其中PADDR并不每个进程都分配到有效的地址,即并不是每个进程都是必须的.
SQL>SELECT * FROM V$BGPROCESS WHERE PADDR<>\'00\'
将显示所有必需的进程.
ESTABLISHING A CONNECTION AND CREATING A SESSION
连接到ORACLE实例包括建立一个用户连接及创建会话.
ORACLE MEMORY STRUCTURE (内存结构)
由两部分组成:
1.SGA
SGA是动态的,其最大值由SGA_MAX_SIZE指定,SGA的内存由SGA COMPONENTS来动态调整.
2.PGA 是不共享的,即其包含的信息是不一样的,有两个可享的内存可以由SGA配置
<1>LARGE POOL
<2>JAVA POOL
SQL>SHOW PARAMETER SHARED
SQL>SHOW PARAMETER DB_CACHE
SQL>SHOW PARAMETER LOG
以上三个命令是用于查看相关内存信息
SQL>ALTER SYSTEM SET DB_CACHE_SIZE=20M
所有内存大小总和不能大于SGA_MAX_SIZE的值,当提示信息出现?号或乱码时,是由于系统的语言问题.
可以通过ALTER SESSION SET NLS_LANGUAGE=\'AMERICAN\'或ALTER SESSION SET NLS_LANGUAGE=\"SIMPLE
[Page]
CHINESE\"
SHARED POOL (共享池)
含:<1>LIBRARY CACHE 库缓存
<2>DATA DICTIONARY CACHE 数据字典缓存,有的地方又称行CACHE,由SHARED_POOL_SIZE指定大小.
SQL>ALTER SYSTEM SET SHARED_POOL_SIZE=64M
LIBRARY CACHE 主要为提高代码的共享,存储的是最近使用的SQL和PL/SQL代码.
<1>.用最近最少使用(LRU)算法
<2>.包括两个结构 1:共享SQL代码 2:共享PL/SQL代码
<3>.不可直接定义,而由SHARED POOL SIZE决定.
DATA DICTONARY CACHE.
执行此命令的过程是:首先确认是否存在AUTHORS,,然后确认字段存不存在,再检查语法,最后验证权限,而
这些信息就属于DATA DICTIONARY CACHE的内容.其包含的信息有:DATABASE FILES,表,索引,字段,用户,
权限和其他数据库对象.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)