Oracle 9i体系结构
1.Oracle的体系结构由SGA, Process, Files三部分组成;
1)SGA:Shared Pool, Data Buffer Cache, Redo Log Cache, Large Pool, Java Pool五部分组成;
2)Process:DBWR, LGWR, PMON, SMON, ARCH, CKPT | PGA, Server Process, User Process组成;
3)Files:Parameter Files, Control Files, Redo Log Files, Data Files组成;
2.Oracle Instance
Oracle Instance由SGA, 后台程序组成。
3.Oracle Database
Oracle Database由Parameter Files, Control Files, Redo Log Files, Data Files组成;
4.SGA(System Global Area)
1)Shared Pool
-->Library Cache:缓存已经运行过的Text Statement, Parsed Form, Exection Plan等, Oracle使用HASH对SQL进行索引;
-->Data Dictionary Cache:缓存数据库用户权限, 数据库Table和view的名称, Table的字段名称和类型等数据字典信息;
2)Data Buffer Cache
缓存最近被使用的数据, 当Disk上的数据第一次要被访问时, DBWR首先将数据读取到Data Buffer Cache中, 再对Data Buffer Cache进行访问;
3)redo log Cache
缓存事务日志, 缓存满再写到Redo log File;
4)Large Pool
用于数据备份, 数据恢复, 由RMAN使用;
5)Java Pool
提供对Java语言的支持;
5.Process
Oracle的服务器进程由后台处理程序, 前台处理程序组成;
后台进程:
1)DBWR(Database Writer)
Oracle用户对数据库的操作是对Data Buffer Cache进行操作的, DBWR用于保证Data Buffer Cache和Data File的一致性.
Oracle 9i系统管理者可以根据需要通过DB_WRITER_PROCESSES参数增加DBWR的数据, 增加的范围从DBWR0~DBWRn.
2)LGWR(log Writer)
Oracle将用户的事务顺序记录到Redo log Files中, 在将来数据发生损坏时能够恢复数据.
Oracle考虑到效率, 通过LGWR先将事务记录到Redo log Buffer中, 再写到Redo log Files.
写入Redo log Files的时间点:
Commit命令运行时;redo log Buffer满;DBWRn将数据写到文件时.
3)SMON(system Monitor)
数据清道夫, SGA中数据发生异常时, 由SMON修复数据错误:
Instance启动时, 自动恢复数据;
回收内存中的Temporary Segments;
当数据库使用一段时间, SMON合并数据库中不连续的段;
4)PMON(Process Monitor)
进程清道夫, 用户程序异常时, 负责把被占用的资源释放:
恢复用户现在的事务;
释放被占用的表;
重新启动Dispatcher Processes和Server Processes;
对中断的程序回收SGA资源;
5)ARCH(Archiver)
当数据库设置为Archive log Mode, ARCH就会启动.ARCH负责把已满的联机事务日志文件保存到备份设备.
6)CKPT(Check Point)
CKPT保证所有修改过的数据库缓冲数据被写到磁盘数据库文件, 当CKPT事件被触发时, DBWR和LGWR分别把内存中的数据写到磁盘上.
7)Snnn(Shared Server Process)
MTS结构下产生Shared Server Process来处理会话要求.
8)Dnnn(Dispatcher)
用来增加使用连接数, 支持Shared Server结构, 让有限的Server Process能服务更多的用户.
9)RECO(Recoverer)
用于分布式系统, 自动解决分布式数据库中的事务故障.
前台进程
1)PGA
保存Server Process和控制信息, 包含如下数据:
Stack Space:存储变量和数组的数据;
User Session Data:存储User Process交换的数据;
2)Server Process
User Process向Oracle请求资源时, Oracle启动Server Process负责和User Process沟通, 让Server和User之间交互;
3)User Process
当用户和数据库进行交互时, 由User Process负责和用户之间进行沟通.
6.Files
1)Parameter File
文本格式的参数设置文件, 包含如下参数:
SGA内存数据;
后台进程;
Control File, Trace File, Alert File路径;
其他参数等;
2)Control File
二进制格式文件, 记录数据库结构的数据:
--数据库名称, 建立时间;
--检查点信息;
--备份信息;
--Data File, redo log File, Archived Log信息;
--log日志信息;
--离线的数据库文件;
--log Sequence Number信息;
--表空间信息;
3)Data File
Data File用于存储数据表和索引;
4)redo log File
联机事务日志记录在Redo log File中, 用于数据库异常时的恢复.
5)Trace File
每一个服务器进程都有一个关联的Trace File, 用于记录相关的错误信息.
6)Alert File
每个数据库有一个Alert log, 在这个文件里按照时间顺序记录相关的错误信息.
包括如下信息:
所有内部错误ORA-600;
块损坏ORA-1578;
MTS结构的Shared Server和Dispatcher Process错误;
SQL语法对数据库操作所引起的错误;
其他错误等;
7.Oracle数据库的逻辑结构
1)Oracle数据库的逻辑结构包括:
表空间(tablespace), 对象摘要(schema objects), 数据块(data blocks), 区(extends), 段(segments)五种.
Data block是基本保存单位, 多个Data block组成extend, 多个extend组成Segment.
2)Tablespace
Tablespace是数据库的保存单位.
在逻辑上, Oracle数据库由好多Tablespace组成, Tablespace的逻辑数据保存在各自的表空间文件上.
3)Schema Object
Schema是数据库对象的集合, 包括Tables, Views, Sequences, Stored Procedures, Synonyms, Indexes, Database Links等.
4)Data block
Data File使用Data block作为保存单位, Oracle对磁盘的访问是使用Data Block作为单位进行访问的.
5)extend
数据库创建Tablespace时会指定Initial Extend的大小, next Extend的大小.
6)Segment
Segment是extend的集合, 包括如下类型:
Data Segment;
index Segment;
Temporary Segment;
Rollback Segment;
------------------------------------------------------------------------------------------------------------------
Oracle Instance Setup
1.使用dbca建立Oracle Instance
cd /home/oracle/product/9.0.1/bin
.dbca
选择新建一个Instance
选择New Database
设置Global Database Name(数据库名):ORCL.LOCAL.COM; SID(实例名):ORCL
选择是否在Client使用tnsnames.ora:no
选择Server Mode:Dedicted Server Mode
设置Memory, 选择Custom:Shared Pool, Buffer Cache, Large Pool, Java Pool
设置Archive模式:非Archive模式
设置Database Characterset:ZHT16GBK; National Characterset:UTF-8
设置spfile位置:spfile(Server Parameter File), Trace File(user process, Background process, CORE dump)
设置Control File位置
设置Data File位置
设置Redo log File位置
OK, 开始正式安装Instance啦!
2.使用command line建立Oracle Instance
1)目录介绍
bdump:Alert, Trace文件所在目录, 当后台发生错误时, 会把相关信息放在bdump, 参数为Background_dump_dest
cdump:Oracle运行所产生的core dump 信息的文件的存放路径, 参数为Core_dump_dest
udump:Oracle 用户进程产生的追踪和告警信息的文件的存放路径, 参数为user_dump_dest
create目录
scripts目录
pfile目录
2)设置ORACLE_SID环境变量
export ORACLE_SID=ORCL
3)创建参数文件
在$ORALCE_HOME/dbs目录下找到init.ora
cp init.ora initORCL.ora
修改参数文件内容如下:
db_name=ORCL #数据库名称
control_files #控制文件的路径名
db_block_size #数据库保存的最小单位, 一旦设置无法修改
db_block_buffers #SGA中Data Buffer Cache的树木, 总的大小=db_block_size*db_block_buffers
rollback_segments #Oracle Instance的回滚段
4)启动数据库到nomount阶段
sqlplus /nolog
connect /as sysdba
startup nomount pfile=initORCL.ora
5)创建数据库
CREATE DATABASE ORCL
MAXINSTANCES 1
MAXLOGHISTORY 1
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXDATAFILES 100
DATAFILE '/home/oradata/ORCLE/system01.dbf' SIZE 300M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED
UNDO TABLESPACE "UNDOTBS" DATAFILE '/home/oradata/ORCLE/undotbs01.dbf' SIZE 200M REUSE AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED
CHARACTER SET UTF8
NATIONAL CHARACTER SET UTF8
LOGFILE
GROUP 1 ('/home/oradata/ORCLE/redo01.log') SIZE 100M,
GROUP 2 ('/home/oradata/ORCLE/redo02.log') SIZE 100M,
GROUP 3 ('/home/oradata/ORCLE/redo01.log') SIZE 100M;
参数解释:
CONTROLFILE REUSE:control file的使用方式
LOGFILE GROUP:Redo Log File的文件名
MAXLOGFILES:Redo Log Files在数据库中的最大数目
MAXLOGHISTORY:Archived Redo Files自动恢复的最大数目
MAXDATAFILES:数据文件的最大数目
MAXINSTANCES:允许同时可以被mount和open的最大Instance数目
ARCHIVELOG:是否可以使用Archive Log
NOARCHIVELOG:不使用Archive Log
National CHARACTER SET:国家字符集
注:s