一、oracle启动3个步骤:
1、nomount(只需要参数文件)
a、依次寻找$ORACLE_HOME/database/中的以下文件:
spfile$ORACLE_SID.ora,spfile.ora,init$ORACLE_SID.ora
注:在$ORACLE_HOME/admin/pfile/中有第一次启动数据库是用的pfile=init.ora.<时间>??
unix:$ORACLE_HOME/dbs/
b、其他日志文件在$ORACLE_HOME/admin/中。
c、控制文件,重做日志,表空间文件在以下目录中:
$ORACLE_HOME/oradata/$ORACLE_SID/
[使用rman target /可以在没有参数文件nomount,db_name=DUMMY]
2、mount
a、寻找控制文件
b、寻找口令文件pwd<sid>.ora或orapw
c、unix中在mount后会有lk<sid>文件
3、open
a、根据控制文件寻找日志文件和数据文件
b、检查控制文件和数据文件的checkpoint cnt是否一致
c、检查控制文件和数据文件的scn是否一致
d、启动在线日志,提供对外服务等
二、检查点相关:
1、检查点设置
8i:FAST_START_IO_TARGET,LOG_CHECKPOINT_TIMEOUT,LOG_CHECKPOINT_INTERVAL
9i:FAST_START_MTTR_TARGET
10g:自动检查点调整
2、转储控制文件
alter session set events 'immediate trace name CONTROLF level 10';
3、转储数据文件头
alter session set events 'immediate trace name file_hdrs level 10';
三、关闭数据库
1、shutdown immediate;正常结束,完全检查点
2、shutdown abort;非正常结束,下次启动时,系统会自动根据重做日志重做事务
四、数据字典
1、内部RDBMS(X$)表,可以从v$fixed_table查到,可以通过查看一些系统视图的执行计划找到。
2、数据字典表,通常以“$”结尾,rdbms/admin/sql.bsq中创建
3、动态性能视图,通常以“V$”开头(含GV$开头),v$synonym->sys.v_$view->sys.v$view->X$table,v$fixed_view_definition记录其他视图的创建过程。rdbms/admin/catalog.sql中创建
4、数据字典视图,user_*,all_*,dba_*,是x$table,table$的视图
五、内存管理
a、sga
v$sgastat,v$sgainfo
1、fixed size(实例的通用信息,后台进程需要访问的信息,不含用户信息)
2、variable size
shared pool(sql区,执行计划,数据字典,内库等)
large pool(相关服务器模式,并行计算和RMAN)
java pool
streams pool(如果没有定义,则包含在shared pool中)
3、database buffers
buffer cache(default pool,keep pool,recycle pool)
9i之前由db_block_buffers(块数量)和db_block_size(块大小)决定;
9i之后新参数db_cache_size,定义主块(db_block_size定义的块)组成的default缓冲池大小,最小单位为granule,9i新概念,if(sga<128MB) granule=4MB else granule=16MB.
4、redo buffers(没有定义时,在fixed size中)
redo log buffer(由log_buffer决定)
b、系统参数shmmax
unix下通常为32MB,此为每个共享内存块的大小,如果sga大于这个参数值,就会分配多个共享内存块。建议调整shmmax参数,使一个sga在一个块中。
c、sga的管理
1、8i中,由pfile静止定义参数大小
2、9i中,可以动态调整spfile参数
各个内存必须是granule的整数倍,自动向上取整,
sga各个内存相加不能超过SGA_MAX_SIZE,
SGA最低位3个granule,分别是fixed sga(redo),buffer cache,shared pool.
有V_$DB_CACHE_ADVICE,V_$SHARED_POOL_ADVICE对缓冲池和共享池的建议值,
3、10g中,ASMM
新参数SGA_TARGET,系统动态自动调整,但是必须小于SGA_MAX_SIZE,可以自动调整的参数:buffer cache,shared pool,java pool,large pool.记录到spfile中的参数以'__'开头。
需要手动调整的参数:非标准block_size的cache,keep/recycle buffer cache,redo log buffer,stream pool.
sga_target=0,表示手动调整。
d、pga(在服务器进程启动或创建是分配,运行时再分配排序、连接等,通常包含私有sql区,存放绑定信息、运行是内存结构等,和session信息等)
1、8i中,有以下主要参数:sort_area_size,hash_area_size,bitmap_merge_size,create_bitmap_area_size.(show parameter area_size)
2、9i,自动化sql执行内存管理,新参数:
pga_aggregate_target--所有session最大pga内存(10M……4096G-1)bytes.只对专用服务器模式有效,10g才对共享有效。
workarea_size_policy--开关pga内存自动管理。
e、pga_aggregate_target(同时限制全局pga分配和私有工作区内存分配)
1、串行,单个sql操作能用的pga=min(5%pga_aggregate_target,100mb);并行,单个sql操作能用的pga=30%pga_aggregate_target/dop(并行度)
2、pga分可调整内存和不可调整内存,可调整内存是由sql工作区使用的,启动自动pga调整后,可调整内存+不可调整内存<=pga_aggregate_target.
3、参数设置,oracle的建议方案:
对于OLTP系统,pga_aggregate_target=(<total physical memory>*80%)*20%;对于DSS(决策支持系统)系统,pga_aggregate_target=(<total physical memory>*80%)*50%.
4、可以通过v$process.pga_used_mem看每个进程使用pga的情况,但是在aix系统中实际使用内存可能比这个大。
5、sql工作区的3种方式:
optimal,内存完成;onepass,少量磁盘io;multipass,大量磁盘io。select name,value from v$sysstat where name like 'workarea executions%'
f、pga的调整建议
v$pga_target_advece,v$pga_target_advice_histogram提供优化建议值。