Oracle10g结构
本文简单的介绍了
oracle
的结构
,
如果查看各个参数
,
及修改几个重要参数
,
例如讨论了优化常用的
SGA_TARGET,DBWR,
以及如何应用
spfile
和
pfile
简单排错
.
oracle server结构
作为
oracel
的
DBA
下图必须熟记于心
可以看到总体来讲
,oracle server
由上部的
instance
和下部的
database
两部分组成
1.Database
而
database
主要由数据文件
(data files),
控制文件
(control files),
重做日志文件
(redo log files)
和参数文件
(parameter files),
密码文件
(password file),
归档日志文件
(archived log files)
等组成
在
oracle
中
,
这些都是实实在在的文件
,
在服务器上都可以找到
ls -l $ORACLE_BASE/oracle/SID
其中必须的三种文件在
$ORACLE_BASE/SID/
下
*.ctl
为控制文件
*.dbf.
为数据文件
*.log
为
redolog
文件
查找参数文件
(parameter,),
密码文件
(password files)
ls -l $ORACLE_HOME/dbs/
其中
*.ora
为参数文件
,orapwdenver
为密码文件
关于归档日志文件
(archive log file)
Oracle
日志分为归档模式和非归档模式
,
只有在归档模式下才有归档日志文件
.
由于本文是讨论
oracle
结构
,
在些不做深入讨论
.
2.instanc结构
Instance
由内存
SGA
和进程
PGA
两部分组成
1. SGA
1.SGA结构
(SGA
结构
)
如上图
SGA
由必须的
share pool, database buffer cache, redo log buffer
和可选的
jave pool
和
large pool
组成
在
oracle10g
上可以通过如下命今查看
SQL>select name bytes from v$sgainfo;
而在
oracle 9i
上通过如下命今查看
SQL>show sga;
可见
SGA
总大小为
236000356 byte
Database buffers
大小为
33554432 byte
Redo buffers
大小为
667648 byte
分配的最小单位是
granules.,
当
SGA<128M
时
,granules
为
4M,
当
SGA>128M
时
,
为
16M
显示当前
SGA
组成部分
,
及最小单位
查当前各区块的大小
.
1.shared pool
shared pool
又分为
library cache
和
data dictionary cache
两部分
1>library cache
作用
:
主要保存解析后的
SQL
语名
2>data dictionary cache
2.database buffer cache和redo log buffer
可以通过
show parameter XXX
查看这些参数
3.SGA中优化参数sga_target的设置
显示
SGA_SIZE
和
SGA_TARGET
修改
SGA_TARGET
修改前
SGA_MAX_SIZE=196M,SGA_TARGET=0
如下图
使用
alter system set sga_target=
值修改
sga_target
可见修改后值为
200M
当以
spfiel
启动这个值就不能再修改小了
,
要修改小它
,
要以
pfile
启动数据库
,
在
pfile
文件中可以编写
.
Alter system set sga_target=200
只是内存中修改
,
重启后就失效了
关于
Pfile
和
spfile
Pfile
和
spfile
互相生成
(create spfile form pfile , create pfile from spfile)
Pfile
生成
spfile
重启
oracle
后
,
先用
spfile
启动
,
使用
show parameter spfile
查询
,
如果
value
为空则使用的是
pfile
非空为
spfile
下图
oracle
用刚建的
spfile
启动
在
pfile
文件中修改
sga_target,
Spfile
是二近制文件不能手动修改
,
一但修改文件就挂了
.
灵活运用pfile与spfile
当把
processes
改为
0
时,关闭
oracle
就不能再启动了。些时可以用
pfile
启动,因为
pfile
文件可以手动修改,然后再可以用
pfile
生成
spfiel
此时把spfile文件名修改再以以前的pfile启动.
2.服务器端进程(只有当oracle启动后才生成)
在服务器上查看后台进程
ps -ef | grep oracle
简单应用
在
oracle
中
DBWR
进程是最忙的,可以启动多个
DBWR,
下图只启动了一个
增加
DBWR
的个数,
当以
spfiel
启动时,需要在
alter
最后加参数
scope=spfile
修改后重启生效
可见
DBWR=3
了
.