JavaScript A Beginner's Guide 3rd Edition
锋利的jQuery
精通Dojo
Using The Dojo JavaScript Library To Build Ajax Applications
Professional JavaScript For Web Developers 2nd Edition
JavaScript语言精粹
Css Javascript动态网页设计与制作
Learning jQuery1.3
Pro Javascript Ria Techniques
Pro JavaScript Design Patterns
JavaScript The Good Parts
jQuery基础教程
jQuery in Action
Enterprise AJAX
Dom Scripting Dynamic Web Design Techniques
Learning jQuery
jQuery Reference Guide
The Art and Science of JavaScript
Simply JavaScript
The Essential Guide to DreamweaverCS3 with CSS Ajax and PHP
......
评估数据高速缓存效率的指标是命中率。该命中率通过查询V$SYSSTAT 和$BUFFER_POOL_STATISTICS视图可以得到。这个视图可以
查询每个缓存池各自的命中率。缓存池的命中率的计算采用下面的公式:
1-(physical_reads/(db_block_gets+consistent_gets))
下面的SQL语句常用来查询当前各个缓存池的命中率情况:
SQL>select name,physical_reads,db_block_gets,consistent_gets,
1-(physical_reads/(db_block_gets+consistent_gets)) "命中率"
from v$buffer_pool_statistics;
SQL> select name,physical_reads,db_block_gets,consistent_gets,
2 1-(physical_reads/(db_block_gets+consistent_gets)) "命中率"
3 from v$buffer_pool_statistics;
NAME PHYSICAL_READS DB_BLOCK_GET ......
SGA 中的另外一个重要结构是共享池。共享池存储了应用执行需要的PL/SQL块结构,SQL语句的文本、SQL编译后的可
执行代码、系统数据字典等。
恰当的共享池尺寸设置将减少系统各种资源的使用。首先,对于SQL、PL/SQL 来说,共享池提供了运行状态下的临时
存储点,后续执行的SQL和PL/SQL将使用已被缓存的编译结果及执行计划,有效减少系统CPU的使用,减少用户调用事件。
第二,栓、锁资源的争用被环节。第三,数据字典信息将被缓存在共享池中,因此,有关系统的信息不必再去执行查询,
这就降低了资源的使用。
在库缓存中区域中,存储着SQL、PL/SQL、Java类的源码、执行计划、伪编译后可执行代码等。当应用程序运行时,这些代码会被调用。如果这些代码在前面不久的应用运行中已经被调用执行过,则可能被后续执行的应用程序共享。默认地,Oracle将试图重复使用现有的代码,实现重用。也就是说,后续应用的执行能够引用前期应用执行中编译过的代码,这称为库缓存的“命中”。一次命中意味着一次
如软解析,SQL、PL/SQL的硬解析及编译过程的资源开销将被避免。
假设后续应用在执行中不能 ......
从AIX 角度,我们可以在下面三个角度衡量内存使用的合理性
1>减少页面交换操作
当操作系统需要更多内存页以支持其他应用运行时,操作系统将依据某种算法(LRU算法)把当前驻留在内存中的某些
数据页"Page Out",也就是把内存中的数据页从内存段转移到物理磁盘。显然,这种类型的操作会影响整个系统的运行性能。
对于数据库这种内存敏感类型的应用系统来说,这点尤为重要。因为数据库需要把数据放在内存中操作,这部分内存区域
称为“数据高速缓存”。
因此,一般在系统设计时,我们往往将数据库安装在一台服务器上,独占这台服务器的所有资源,避免页交换的产生。
在数据库配置时,也避免过度地将内存结构分配给数据库,人为造成操作系统空余内存的紧张。
2>SGA应宿主在物理内存中
分配SGA的目的就是为了快速地将数据存储在内存中,因为内存速率和硬盘速率相比,差别至少在4个数量级以上。如果
SGA对应的虚拟内存页被交换到换页空间(磁盘)上,那么SGA也就没有意义了。
我们可以通过 show sga命令查看系统全局区当前的分配情况:
SQL>show sga
Total System Global Area 285212672 bytes
Fixed Size &nb ......
这篇论坛文章(赛迪网技术社区)针对DBMS_SCHEDULER的使用方法进行了详尽的介绍,更多内容请参考下文:
DBMS_SCHEDULER是Oracle 10G中新增的一个包,与老版本的dbms_job包相比,dbms_scheduler有很多新特性,我将通过一系列的文章来介绍一下如何使用这个包.
1. 创建job
job是什么呢? 简单的说就是计划(schedule)加上任务说明. 另外还有一些必须的参数.
这里提到的"任务"可以是数据库内部的存储过程,匿名的PL/SQL块,也可以是操作系统级别的脚本.
可以有两种方式来定义"计划":
1) 使用DBMS_SCHDULER.CREATE_SCHEDULE 定义一个计划;
2) 调用DBMS_SCHDULER.CREATE_JOB过程直接指定 (下面会详细说明)
在创建一个计划时,你至少需要指定下面的属性,它们是job运行所必须的:
开始时间 (start_time);
重复频率 (repeat_interval);
结束时间 (end_time)
另外,对于一个job而言,还有很多的附加参数:
job_class
job_priority
auto_drop
restartable
......
Oracle数据库10g schedule job的常用操作:
-- job 权限
grant create job to somebody;
-- job 创建
begin
dbms_scheduler.create_job (
job_name => 'AGENT_LIQUIDATION_JOB',
job_type => 'STORED_PROCEDURE',
job_action => 'AGENT_LIQUIDATION.LIQUIDATION', --存储过程名
start_date => sysdate,
repeat_interval => 'FREQ=MONTHLY; INTERVAL=1; BYMONTHDAY=1;BYHOUR=1;BYMINUTE=0;BYSECOND=0', -- 按月,间隔为1个(月),每月1号,凌晨1点
comments => '执行代理商清分程序'
);
end;
/
-- job 执行时间测试
DECLARE
start_date date;
return_date_after date;
next_run_date date;
BEGIN
start_date := sysdate;--to_timestamp_tz('10-OCT-2004 10:00:00','DD-MM-YYYY HH24:MI:SS');
return_date_after := start_date;
FOR i IN 1..10 LOOP
DBMS_SCHEDULER.EVALUATE_CALENDAR_STRING('FREQ=MONTHLY; INTERVAL=1; BYMONTHDAY=1;BYHOUR=1;BYMINUTE=0;BYSECOND=0',start_date, return_date_after, next_run_date);
DBMS_OUTPUT.PUT_LINE('next_run_date: ' || to_char(next_run_date,'yyyy-mm-dd HH24:M ......