Oracle Database 11g 体系结构
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle Database 11g 体系结构相关的知识,希望对你有一定的参考价值。
一、Oracle数据库结构
1、逻辑结构
1.1、数据块(Orale块):操作系统的存储系统中磁盘空间的一定数目字节组成。数据块是oracle数据库最小的逻辑部件。可定义为2K、4K、8K、16K、32K或者更大,通常称为Oralce块。
Orale块的尺寸:在初始文件init.ora中的DB_BLOCK_SIZE参数设置。是处理oracle更新、选择、和插入数据库事务的最小单位(可认为等同于sql server的页)。操作系统也有一个磁盘块的尺寸,所以理想情况下数据块的大小应该是磁盘块大小的倍数。
show parameter db_block_size;--查看块尺寸
数据块大小选择的方案:
(1)如果行比较小且访问很随机,选择较小的块尺寸。比如处理行小,需要大量的索引查找。
(2)如果行比较小且访问主要是连续的(或者随机且连续),或者较大的行,选择较大的块尺寸。比如报表。
(3)如果不能确定,Oracle建议尺寸是8K。
同一数据库中可以配置多个块尺寸(需要配置SGA的缓冲区高速缓存中相应的子高速缓存),主要用于具有不同数据库块尺寸的数据库之间传送表空间。
数据块内部结构(行数据部分、可用空间部分、还有其他一些小的部分:数据块所用的系统开销和首部空间)
行数据部分包括存储在表或者索引中的数据。可用空间部分是oracle块留下的空间,为了是给将要输入的新数据或者是扩充已有行留下的空间
1.2、区(extent):相邻的数据块组成一个区。创建表或者索引等数据库对象时,先分配一个初始的空间量(initial extent),并指定下一个区的空间量。在删除该对象之前,区都会一直保留他们。一旦对象从数据库中删除,区空间也会回到数据库可分配的可用空间池中。
1.3、段(segment):一组区组成段。Oracle称分配给任一数据库对象所有的空间为一个段。如果一个段被填满了,Oracle根据需要分配另外的区,这些区可能是不相邻的。
1.4、表空间(tablespace):包含物理数据文件的逻辑实体。System、Sysaux、撤销(undo)、临时(temporary)、默认参数,这5个是数据库必须要有的表空间。
同一个数据库中可以有不同Oracle块尺寸的表空间,我们可以把大对象(LOB)数据放在其他表空间,并设置尺寸较大的Oracle块,以提高查询速度。
大文件表空间只是拥有一个大数据文件的表空间。
小文件表空间可以包含多个数据文件。
临时表空间只包含用户会话期间的数据,通常只想数据分类或者类似的活动。
永久表空间除了临时表空间之外的所有表空间。
撤销表空间包含撤销记录,oracle用来回滚或者撤销更改的数据库
只读表空间不允许对表空间的数据文件执行写的操作。
--创建大表空间 CREATE BIGFILE TABLESPACE BigTableSpace DATAFILE ‘/mnt/db1/BigTableSpace01.dbf‘ SIZE 500M AUTOEXTEND ON; --创建小表空间,增加数据文件(默认oracle创建的是小表空间按) CREATE TABLESPACE TABLESPACE_NAME LOGGING DATAFILE ‘/mnt/db1/TABLESPACE_NAME.dbf‘ SIZE 2048M AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED; ALTER TABLESPACE TABLESPACE_NAME ADD DATAFILE ‘/mnt/db1/TABLESPACE_NAME02.dbf‘ SIZE 50m AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED; --创建临时表空间,修改默认临时表空间 CREATE TEMPORARY TABLESPACE TABLESPACEE_TEMP TEMPFILE ‘/mnt/db1/TABLESPACEE_TEMP.dbf‘ SIZE 50m AUTOEXTEND ON NEXT 50m MAXSIZE 20480m; ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TABLESPACEE_TEMP; --为用户设置默认表空间 ALTER USER USER_NAME DEFAULT TABLESPACE TABLESPACE_NAME TEMPORARY TABLESPACE TABLESPACEE_TEMP;
2、物理结构
2.1、数据文件(data file)存储表和索引的数据
数据文件的容量和DB_BLOCK_SIZE有关,在创建数据库时可设置大小为4K、8K、16K、32K、64K,
oracle小表空间的数据文件最大只允许4194304个块。所以该最大值为4194304*DB_BLOCK_SIZE/1024M:
4K最大数据文件:16384M=16G
8K最大数据文件:32768M=32G
16K最大数据文件:65536M=64G
32K最大数据文件:121072M=128G
64K最大数据文件:262144M=256G
Oracle大表空间的数据快最大有4G,所以数据文件大小8T-128T
2.2、控制文件(control file)记录所有数据库结构的更改信息,包括数据文件和重做日志文件的名字和位置,当前日志序列号,备份集详细信息,以及SCN(系统更改号)。
--查看控制文件状态,路径以及名称,是否放在闪回恢复区 SELECT status, NAME, is_recovery_dest_file FROM v$controlfile;
oracle建议多路复用控制文件。
--查看控制文件信息 SHOW PARAMETER CONTROL_FILES SELECT * FROM V$CONTROLFILE; --调整多路复用基于spfile启动的 alter system set control_files= ‘/mnt/db1/controlo1.ctl‘,‘/mnt/db2/controlo2.ctl‘,‘/mnt/db3/controlo3.ctl‘ scope=spfile; --关闭数据库 shutdown immediate --复制物理控制文件到新的目录 --启动数据库
2.3、重做日志文件(redo log file)对表数据所做的更改信息。当前的日志文件被称为联机重做日志,已区别旧的被保存的归档日志。
重做日志由重做记录组成,是更改的矢量组,每个记录都指向数据块的一个特定更改。
开始日志的内容保留在重做日志缓冲区(内存区域)中,之后转移到磁盘上,如果数据库突然停机了,重做日志将帮助确定崩溃前的事务是否提交。
开启归档日志模式
shutdown immediate; startup mount; alter database archivelog; alter database open; archive log list;
oracle建议多路复用重做日志文件。
--查看日志文件信息 select * from v$log; select * from v$logfile; --添加组 alter database add logfile group 5 (‘/mnt/db1/oradata/redo05.log‘) size 50m; --添加组成员 alter database add logfile member ‘/mnt/db1/oradata/redo01B.log‘ to group 1, ‘/mnt/db2/oradata/redo02B.log‘ to group 2, ‘/mnt/db2/oradata/redo03B.log‘ to group 3, ‘/mnt/db2/oradata/redo04B.log‘ to group 4, ‘/mnt/db2/oradata/redo05B.log‘ to group 5; --切换5次logfile,使5组所有的日志都生效,至此,数据库重做日志的多路复用就完成了。 alter system switch logfile; --删除日志组成员 --如果改组只有一个成员是不能删除的, --当前使用的日志组成员不能删除,先删除其他然后切换日志组,再删除 alter database drop logfile member ‘/mnt/db1/oradata/redo01B.log‘, ‘/mnt/db2/oradata/redo02B.log‘, ‘/mnt/db2/oradata/redo03B.log‘, ‘/mnt/db2/oradata/redo04B.log‘; --删除日志组,日志组的状态必须是INACTIVE,物理文件要手动删除 alter database drop logfile group 5;
2.4、其他文件
2.4.1、服务器参数文件(SPFILE),可说明实例的内存限制值,控制文件的位置,归档日志是否保存以及位置,以及其他一些服务器设置。该文件是二进制文件,可转换成pfile进行编辑
--创建SPFILE create pfile=‘/home/oracle/pfile.ora‘ from spfile; --修改pfile的值,并还原 create spfile from pfile=‘/home/oracle/pfile.ora‘;
2.4.2、密码文件,是一个可选文件,指定授予SYSDBA、SYSOPER管理权限的数据库用户的名字,使用这些用户可执行的操作。
2.4.3、预警日志文件,alterDB_NAME.log,捕捉实例运行期间主要的更改和事件,包括日志切换,错误,警告以及其他消息。通过以下命令查看所有的错误信息。
grep ORA- alterDB_NAME.log
2.4.4、跟踪文件,所有的诊断文件都存储在DIAGNOSTIC_DEST初始化参数指定的目录下。
2.4.5、备份文件,在介质故障或者用户错误之后,还原数据文件。
二、Oracle进程结构
1、用户进程
连接用户用户与数据库实例的应用:SQL*PLUS、SQL Developer等等。
2、Oracle进程
2.1、服务器进程
为单独的用户进程服务的进程。
2.2、后台进程
数据库写入器(DBWn):ORACLE所有的数据修改都是在内存中进行的,而后,DBWn负责将数据库缓冲区里的脏数据即更改过的数据写入到磁盘中。使用最近最少使用算法执行进程,触发条件(1)发布检查点(2)找不到可重用的缓冲区(3)每隔3秒立刻执行该进程。最多有20个写入进程(DBW0-DBW9,DBWa-DBWj),可通过DB_WRITER_PROCESSES指定,不指定则根据CPU和处理器分配个数。
日志写入器(LGWR):重做日志缓冲区的内容传送到磁盘上,更改数据的时候,oracle会把提交未提交的更改写入重做日志缓冲区,然后日志写入器把这些更改从重做日志缓冲区写入磁盘重做日志文件中。触发条件(1)每隔3秒(2)重做日志缓冲区被填充三分之一(3)数据写入磁盘前(3)事务提交
检查点(CKPT):负责通知数据库写入器进程把内存缓冲区的脏数据写入磁盘。之后检查点进程还更新数据文件头和控制文件。步骤(1)日志写入器(2)检查点记录写到重做日志文件(3)数据库缓冲区高速缓存的内容写到磁盘(4)检查点更新数据文件的头以及控制文件。
进程监控器(PMON):用户进程失败后,PMONC立刻将其清除,释放死进程占用的资源。重启失败的服务器进程和调度程序进程,长期处于不活动状态,定期启动查看是否需要执行。
系统监控器(SMON):实例的系统监控任务,需要时启动。(1)崩溃实例重启后检查数据库是否一致(2)本地管理表空间,SMON合并可用区,将磁盘较大的相邻的可用区域分配给数据库对象(3)清除不必要的临时段。需要时启动。
归档器(ARCn):数据库运行在归档模式下,每个被填满的日志文件保存存档在一个特定的地方。最多30个归档器进程(ARC0-ARCn),初始化参数LOG_ARCHIVE_MAX_PROCESSES参数决定Oracle初始启动多少个归档器进程(不需要提前设置)。这是一个动态参数,可在数据库运行中更改:
ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=10;
与ASM有关的进程:使用ASM时候必须创建一个ASM实例(重新平衡(RBAL)、ASM重新平衡(ARBn)、ASM后台)
可管理监控器(MMON):收集集中统计数据,如AWR快照信息,还将在数据库各种尺寸违反阙值发出警告。
可管理监控器灯(MMNL):将ASH数据刷新到磁盘,其他可管理任务,捕捉会话历史数据以及计算数据库度量标准。
内存管理器(MMAN):调整内存部件的大小
作业队列调整进程(CJQO):安排并运行用户作业,CJQO动态产生作业队列的从属进程(J000到J999)。
恢复器(RECO):用来调整分布式数据库和其他特殊进程。
闪回数据归档器(FBDA):负责把更改写到表(闪回数据归档到历史表而启用的表)中。
结果集高速缓存后台(RCBG):负责管理结果集高速缓存。
三、Oracle内存结构
本文出自 “felixchen的博客” 博客,转载请与作者联系!
以上是关于Oracle Database 11g 体系结构的主要内容,如果未能解决你的问题,请参考以下文章
Oracle 集群ORACLE DATABASE 11G RAC 知识图文详细教程之缓存融合技术和主要后台进程
Oracle 集群ORACLE DATABASE 11G RAC 知识图文详细教程之缓存融合技术和主要后台进程(转)
Oracle - 安装 Oracle Database 11g Release 2
Oracle Database 12c 第 1 版 与Oracle Database 11g 第 2 版 有啥区别 啊!???