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 
相关文档:
如果仅仅是lock,以下语句可以发现所有用户锁 :
SELECT s.username,
decode(l.type, 'TM', 'TABLE LOCK', 'TX', 'ROW LOCK', NULL) LOCK_LEVEL,
o.owner,
o.object_name,
&n ......
Oracle 在9i以后,可以利用DBMS_METADATA.GET_DDL包得到数据库的对象的ddl脚本。如下(SQLPLUS中执行):
1. 获取单个的建表、视图和建索引的语法
set pagesize 0
set long 90000
set feedback off
set echo off
spool DEPT.sql
select dbms_metadata. ......
是想生成GUID吗?
SQL> select sys_guid() from dual ;
SYS_GUID()
--------------------------------
F18031C69D8345DEB305D4B2E796A282
你可以把表的主键字段的缺省值设为sys_guid()
insert into luxian_info (id) values(sys_guid()); ......
项目开发中,需要远程备份数据库,以下为C#远程备份数据库的代码
/// <summary>
/// 数据库备份
/// </summary>
/// <param name="fileName">dmp文件名称</param>
/// <param name="logFileName">log文件名称</param>
/// <re ......