Oracle dbms_lock.sleep()儲存過程使用技巧-場景-分析-例項-可下載
更多精彩內容盡在
《Oracle dbms_lock.sleep()儲存過程使用技巧》-場景-分析-例項-可下載
摘要:今天是2014年3月10日,北京,霧霾,下午組織相關部門開會。會議的結尾一名開發工程師找到了我,向我請教了一下“如何延遲SQL語句的執行時間”為了是測試專案的一個功能輸出。在我的建議下使用了dbms_lock.sleep()儲存過程來完成了這個實現。我在會議之後體會到Oracle的package的應用場景非常重要。往往新入職場的DBA技術不錯,會的東西也不少,就是不太瞭解什麼技術應用在什麼場景下,使之發揮最大的作用來幫助我們。今天藉此機會來給大家分享一下dbms_lock.sleep()儲存過程使用技巧。
場景:
1:儲存過程中想實現延遲10分鐘再繼續執行
2:應用中判斷條件如果在“同步”就需要等待5分鐘,如果“完成”就可以無需等待
3:測試功能反饋是否正常,我們需要延遲3分鐘得到SQL語句的結果和不延遲得到的SQL語句結果是否一致
dbms_lock包:
1.這個package是Oracle提供的一個鎖管理服務包,它具有建立一個鎖,請求鎖的狀態,釋放一個鎖資源等功能。一般使用dbca建立的資料庫預設就有這個包,如果是手工建庫的話需要執行$ORACLE_HOME/rdbms/admin/dbmslock.sql這個指令碼來建立這個package。建立之後資料庫中才能有這個包物件。
注意:只有授予執行許可權才能使用
使用SYS使用者授予許可權
grant execute on dbms_lock to USERNAME;
2.檢視dbms_lock包內容
SQL> desc dbms_lock
Element Type
--------------- ---------
NL_MODE CONSTANT
SS_MODE CONSTANT
SX_MODE CONSTANT
S_MODE CONSTANT
SSX_MODE CONSTANT
X_MODE CONSTANT
MAXWAIT CONSTANT
ALLOCATE_UNIQUE PROCEDURE 給鎖分配一個唯一的識別符號
REQUEST FUNCTION 請求一個鎖的模式(獲取鎖的狀態值)
CONVERT FUNCTION 將鎖從一個狀態轉換成另一個狀態
RELEASE FUNCTION 釋放鎖
SLEEP PROCEDURE 這是實現延遲時間的儲存過程,可以指定睡眠時間間隔
本文章主要講解SLEEP PROCEDURE。
DBMS_LOCK.SLEEP()儲存過程:
作用:使用這個儲存過程可以中止會話一段時間
語法:DBMS_LOCK.SLEEP (seconds IN NUMBER); 單位為“秒”,最小的增量可以百分之一秒
例如:DBMS_LOCK.SLEEP (1.95);是一個合法的值
Example:
(1)由於是一個儲存過程可以直接使用
SQL> execute dbms_lock.sleep(60);
PL/SQL procedure successfully completed
SQL> select * from pb_tradeinfo where rownum<=3;
IID TRADEID NAME CERTTYPE
--------------------- --------------------- ----------------------------------
382 548 一次性還款 0
415 563 測試一次性貸款 2
423 569 測試 1
(2)PL/SQL塊實現延遲60秒
SQL> begin
2 dbms_output.put_line(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'));
3 dbms_lock.sleep(60);
4 dbms_output.put_line(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'));
5 end;
6 /
2014-03-10 20:41:56
2014-03-10 20:42:56
PL/SQL procedure successfully completed
(3)列印間隔5秒時間列表
建立測試表
SQL> create table leonarding (iid number,appendtime date);
Table created
開始測試
SQL> begin
2 for i in 1..10
3 loop
4 insert into leonarding values(i,sysdate);
5 commit;
6 dbms_lock.sleep(5);
7 end loop;
8 end;
9 /
PL/SQL procedure successfully completed
列印列表
SQL> select * from leonarding;
IID APPENDTIME
---------- --------------------------------------------------
1 2014-3-10 20:51:20
2 2014-3-10 20:51:25
3 2014-3-10 20:51:30
4 2014-3-10 20:51:35
5 2014-3-10 20:51:40
6 2014-3-10 20:51:45
7 2014-3-10 20:51:50
8 2014-3-10 20:51:55
9 2014-3-10 20:52:00
10 2014-3-10 20:52:05
10 rows selected
小結:dbms_lock.sleep()過程我們在使用的時候請注意第一是許可權要授予,第二是使用的場景,第三注意單位。請點選下載
dbms sleep 延遲 package leonarding
Leonarding 劉盛
2014.03.10
北京&spring
分享技術~成就夢想
Blog:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26686207/viewspace-1107668/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql 儲存過程簡單例項MySql儲存過程單例
- PHP呼叫MYSQL儲存過程例項PHPMySql儲存過程
- mysql儲存過程簡單例項MySql儲存過程單例
- 《Oracle 複合壓縮索引場景及效能對比》-原理引航-例項演示-可下載Oracle索引
- (Oracle)儲存過程、儲存函式和包的相關知識與例項Oracle儲存過程儲存函式
- mysql儲存過程經典例項詳解MySql儲存過程
- oracle 儲存過程遊標的使用Oracle儲存過程
- Oracle儲存過程Oracle儲存過程
- MySQL定時任務與儲存過程例項MySql儲存過程
- 使用儲存過程儲存過程
- 儲存過程注意事項儲存過程
- Oracle儲存過程乾貨(一):儲存過程基礎Oracle儲存過程
- Oracle儲存過程-1Oracle儲存過程
- oracle的儲存過程Oracle儲存過程
- Oracle儲存過程例子Oracle儲存過程
- Oracle建立儲存過程Oracle儲存過程
- oracle plsql儲存過程OracleSQL儲存過程
- ORACLE 儲存過程示例Oracle儲存過程
- 從sybase的儲存過程轉向oracle的儲存過程儲存過程Oracle
- mysql儲存過程一例MySql儲存過程
- 原創:oracle 儲存過程Oracle儲存過程
- oracle 儲存過程批次提交Oracle儲存過程
- oracle 儲存過程學習Oracle儲存過程
- [Flashback]Oracle flashback儲存過程Oracle儲存過程
- Oracle儲存過程學習Oracle儲存過程
- oracle的儲存過程格式Oracle儲存過程
- java 呼叫oracle 儲存過程JavaOracle儲存過程
- oracle--08儲存過程Oracle儲存過程
- Android SharedPreferences儲存資料使用例項分析Android
- 【實戰】oracle job + 儲存過程 的使用示例Oracle儲存過程
- Mysql 儲存過程的使用MySql儲存過程
- 儲存過程中使用cursor儲存過程
- oracle儲存過程書寫格式Oracle儲存過程
- Oracle Pl/SQL 之 儲存過程OracleSQL儲存過程
- C#呼叫 oracle儲存過程C#Oracle儲存過程
- Oracle儲存過程基本語法Oracle儲存過程
- [Procedure]Oracle之分頁儲存過程Oracle儲存過程
- C#呼叫Oracle儲存過程C#Oracle儲存過程