查看: 2416|回复: 0

[转载] Putting Your Web Cache To Work: Cache Invalidation using PL/SQL

[复制链接]
认证徽章
论坛徽章:
132
懒羊羊
日期:2015-03-27 23:10:30灰彻蛋
日期:2011-07-02 08:52:54现任管理团队成员
日期:2011-05-07 01:45:082010广州亚运会纪念徽章:举重
日期:2011-04-18 14:05:482010广州亚运会纪念徽章:拳击
日期:2011-03-09 14:42:092011新春纪念徽章
日期:2011-02-18 11:42:472011新春纪念徽章
日期:2011-02-03 10:32:092011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:15
发表于 2006-8-24 10:40 | 显示全部楼层 |阅读模式
John Garmany


The Oracle Web Cache is a powerful tool and one that I see few organizations taking advantage of it ability to cache dynamic documents.

A dynamic document or object is one created from data and is valid only as long as the data does not change.

It's the "does not change" part that makes caching dynamic objects difficult.  It of course takes planning  in both your application development and database model.

While you still have to determine when an object is no longer valid, Oracle provides some simple tools to perform the actual cache invalidation.

The Web cache listens on an invalidation port (mine installed on 4002) for a simple HTTP POST message.  The message can come from a terminal, the application, or the database.

In PL/SQL the WXVUTIL package contains the procedures to send an invalidation message to the web cache.

First, the package must be loaded in the database.  It is provides in the webcache/toolkit directory.

  1. <appsvr Oracle_Home>/webcache/toolkit/wxvutil.sql.

  2. [oracle@appsvr toolkit]$ pwd
  3. /opt/oracle/portal904/webcache/toolkit
  4. [oracle@appsvr toolkit]$ ls -l
  5. total 104
  6. -rw-r--r--    1 oracle   oinstall      672 Jul 11  2003 invalidation.dtd
  7. -rw-r--r--    1 oracle   oinstall    65389 Nov 12  2003 jawc.jar
  8. -rw-r--r--    1 oracle   oinstall       70 Jul 11  2003 README.toolkit.txt
  9. -rw-r--r--    1 oracle   oinstall     4348 Jul 11  2003 WCSinvalidation.dtd
  10. -rw-r--r--    1 oracle   oinstall     6083 Jul 11  2003 wxvappl.sql
  11. -rw-r--r--    1 oracle   oinstall    10757 Jul 11  2003 wxvutil.sql
复制代码


Notice this is the application server (or web cache if on a separate server) ORACLE_HOME, not the database ORACLE HOME.

After the scripts are run you can create triggers on the underlying tables of the dynamic objects.  When the database executes a DML operation on the table (INSERT, UPDATE or DELETE), the trigger invalidates the cached objects based on the table data.


  1. CREATE OR REPLACE TRIGGER PRODUCT_INVALID_TRIG
  2.   AFTER DELETE OR INSERT OR UPDATE on PRODUCT FOR EACH ROW
  3.   BEGIN
  4.     wxvutil.invalidate_reset;
  5.     wxvutil.invalidate_uri('/MainApp/prod_list.jsp', 0,
  6.                             null);
  7.     wxvutil.invalidate_exec('web.appsvr.com', 4002,
  8.                             'oracie123');
  9. END;
  10. /
复制代码


You can invalidate a single object (as in the example above) or multiple objects.


  1. wxvutil.invalidate_uri('/MainApp/prod_list.*', 0, null);
复制代码

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表