ORACLE 内存管理
Oracle 9i动态SGA管理
在Oracle 9i中,可以设置SGA_MAX_SIZE,该参数用以控制各缓冲池使用的内存总和,本质上是在进程中预先分配一段虚拟地址备用而不分配物理内存,目的是防止和进城私有地址段的冲突。
只要总的SGA内存设置不超过SGA_MAX_SIZE的设置,更改都可以立即生效。需要注意的是,在Oracle 9iR1中,动态减小内存设置会触发一些Bug。
当在动态修改内存参数时,需要注意:
修改的内存大小必须是粒度大小(GRANULE)的整数倍,否则会自动向上取整;
SGA的总大小不能超过SGA_MAX_SIZE;
SGA最低配置为3个粒度,一个粒度用于固定的SGA(包括重做缓冲区),一个粒度用于缓冲区高速缓存,一个粒度用于共享池。
伴随动态SGA管理的新特性,Oracle推出了一系列内存设置建议功能,同时引入了一系列动态性能视图:
SQL> select tname from tab
2 where tname like '%ADVICE%';
TNAME
------------------------------
GV_$DB_CACHE_ADVICE
GV_$MTTR_TARGET_ADVICE
GV_$PGATARGET_ADVICE_HISTOGRAM
GV_$PGA_TARGET_ADVICE
GV_$SHARED_POOL_ADVICE
V_$DB_CACHE_ADVICE
V_$MTTR_TARGET_ADVICE
V_$PGA_TARGET_ADVICE
V_$PGA_TARGET_ADVICE_HISTOGRAM
V_$SHARED_POOL_ADVICE
缓冲区高速缓存建议受初始化参数DB_CACHE_ADVICE控制,该参数为动态参数,可用的值有:
OFF:关闭建议并且不为建议分配内存;
ON:开启建议并且CPU和内存开销都会发生;
READY:关闭建议但是仍然保存为建议分配的内存。
SQL> show parameter db_cache_advice
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_cache_advice string ON
SQL> select id,name,block_size,size_for_estimate sfe,size_factor sf,
2 estd_physical_read_factor eprf,estd_physical_reads epr
3 from v$db_cache_advice;
ID NAME 
相关文档:
SQL> select dbms_metadata.get_ddl('PROCEDURE','PRO2','SCOTT') text from dual;
TEXT
----------------------------------------
CREATE OR REPLACE PROCEDURE "SCOTT"."P
RO2"
is
begin
dbms_output.put_line('wangpeng up');
end;
SQL> select dbms_metadata.get_ddl('PROCEDURE','PRO1','SCOTT') te ......
在ORACLE中经常会碰到阻塞的情况发生,这个时候我们就需要快速的找出导致阻塞的原因,并尽快排除它,好让系统重新正常运行。
下面以死锁为例,来看看如何找出导致阻塞的会话并解决问题。
//SCOTT窗口1
SQL> select * from t2;
ID
----------
3
1
2
SQL> update t2 set i ......
项目中,需要建立自增长字段,但碰到oracle本身不支持此种类型的字段,只好用别的办法。
ORACLE自增长字段实现(转)
首先,你要有一张表!
CREATE TABLE example(
&nbs ......
一、ORACLE的启动和关闭
1、在单机环境下要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下
su - oracle
a、启动ORACLE系统
oracle>svrmgrl
SVRMGR>connect internal
SVRMGR>startup
SVRMGR>quit
b、关闭ORACLE系统
oracle>svrmgrl
SVRMGR>connect internal
SVRMGR>shutdow ......