2011-07-17 88 views
1

有沒有一種方法可以查詢Oracle 10g數據庫,並且每隔3分鐘將結果顯​​示在動態刷新的html文件中?查詢和顯示結果Oracle數據庫中的每個「X」分鐘數

這是我的困境:我有幾個查詢,我很樂意在一個基本的HTML網頁上用一些CSS顯示整個組織的結果。問題是我不希望用戶能夠不斷刷新他/她瀏覽器中的頁面,從而嚴重阻塞數據庫。在編寫查詢或編寫顯示錶所需的HTML和CSS時,我沒有任何問題。這幾乎就像我想查詢,每3分鐘將結果導出爲XML,並且不斷有一個HTML或PHP文件指向動態更新的XML文件。我對其他選項也是開放的...

我有Oracle數據庫的基本用戶訪問...沒有管理員喜歡。但是,我確實可以訪問服務器,並具有PHP,PL/SQL和HTML的使用經驗。也許我將不得不進入像Python這樣的低級編程語言?我有點卡在這裏。任何形式的幫助,將不勝感激!

回答

2

您還可以使用setTimeout()函數每3分鐘執行一次Ajax請求。

使用jQuery框架

$(document).ready(function() { 
    setTimeout("getFeed()", 180000); //180000 = 3 minutes in milliseconds 
}); 

function getFeed() { 
    //ajaxRequest here 
} 

欲瞭解更多信息Ajax的,你可以去這裏:http://api.jquery.com/jQuery.ajax/

1

設置一個materialized view(MV),將您的應用這支MV,然後設置調度作業以任何你喜歡的頻率刷新它。

請參閱dbms_scheduler在Oracle中設置調度程序作業。

一個注意:你可能想要做一個atomic_refresh => true來刪除/插入mv而不是truncate/insert(如果atomic_refresh => false,直到刷新完成後,mv中將有0行)。

一個簡單的例子MV創作:

create materialized view MY_MV 
tablespace MY_TS 
build immediate 
refresh complete on demand 
with primary key 
as 
SELECT a.foo, b.bar 
from table_a a, table_b b 
where a.col1 = b.col2 
and a.baz='BLAH' 
; 

一個例子刷新調用:

dbms_mview.refresh('MY_MV', 'C', atomic_refresh=>true);