在Oracle中,DBMS_OUTPUT提示緩衝區不夠,怎麼增長?程序員
採用命令「DBMS_OUTPUT.ENABLE(20000);」,另外,若是DBMS_OUTPUT的信息不能顯示,那麼須要設置SET SERVEROUTPUT ON。面試
問題sql |
答案數據庫 |
Oracle中哪一個包能夠獲取環境變量的值?服務器 |
能夠經過DBMS_SYSTEM.GET_ENV來獲取環境變量的當前生效值。微信 |
如何讓程序等待60秒鐘後繼續運行?網絡 |
能夠執行$ORACLE_HOME/rdbms/admin/dbmslock.sql來建立DBMS_LOCK包,該包能夠實現讓程序暫時等待的功能。若想普通用戶使用該包,則須要在SYS用戶下執行「GRANT EXECUTE ON DBMS_LOCK TO USER_XXX;」命令。app |
Oracle使用哪一個包能夠生成並傳遞數據庫告警信息?異步 |
DBMS_ALERT包用於生成並傳遞數據庫告警信息。若想使用DBMS_ALERT包,則必須以SYS登錄,爲普通用戶授予執行權限。DBMS_ALERT能讓數據庫觸發器在特定的數據庫值發生變化時嚮應用程序發送報警。報警是基於事務的而且是異步的(也就是它們的操做與定時機制無關)。ide |
程序包DBMS_APPLICATION_INFO.READ_MODULE的做用是什麼? |
DBMS_APPLICATION_INFO是一個很是有用的程序包,它提供了經過V$SESSION跟蹤腳本運行狀況的能力,該包能夠填充V$SESSION中的CLIENT_INFO、MODULE和ACTION這3列的值。在CLIENT_INFO列中存放程序的客戶端信息;MODULE列存放主程序名,如包的名稱;ACTION列存放程序包中的過程名。該包不只提供了設置這些列值的過程,還提供了返回這些列值的過程。主要有以下的存儲過程: l lDBMS_APPLICATION_INFO.SET_CLIENT_INFO:填充V$SESSION視圖的CLIENT_INFO列,記錄客戶端的信息,這裏能夠記錄客戶端的IP地址 l lDBMS_APPLICATION_INFO.SET_MODULE:填充V$SESSION視圖的MODULE列,記錄主程序名 l lDBMS_APPLICATION_INFO.READ_CLIENT_INFO:從V$SESSION中讀取客戶端的信息 l lDBMS_APPLICATION_INFO.READ_MODULE:從V$SESSION中讀取主程序的名稱 |
如何填充V$SESSION的CLIENT_INFO列和CLIENT_IDENTIFIER列? |
V$SESSION的CLIENT_INFO列和CLIENT_IDENTIFIER列每每爲空,因此須要寫登陸觸發器,而後在觸發器中使用以下的存儲過程記錄這2列的值: BEGIN DBMS_APPLICATION_INFO.SET_CLIENT_INFO(SYS_CONTEXT('USERENV','IP_ADDRESS')); DBMS_SESSION.SET_IDENTIFIER(SYS_CONTEXT('USERENV', 'HOST')); EXCEPTION WHEN OTHERS THEN ROLLBACK; END; |
如何將信息寫入Oracle的告警日誌中? |
使用系統存儲過程「SYS.DBMS_SYSTEM.KSDWRT(2,V_MESSAGE)」可將信息寫入Oracle的告警日誌。以下: SYS@orclasm > EXEC SYS.DBMS_SYSTEM.KSDWRT(2,'this is a test'); PL/SQL procedure successfully completed. 查看告警日誌: Sat Mar 18 18:30:27 2017 this is a test |
在Oracle中,如何獲取IP地址? |
如果獲取服務器IP地址,則使用UTL_INADDR.GET_HOST_ADDRESS。如果獲取客戶端IP地址則使用SYS_CONTEXT('USERENV','IP_ADDRESS')。 |
如何在存儲過程當中暫停指定時間? |
DBMS_LOCK包的SLEEP過程。例如:「DBMS_LOCK.SLEEP(5);」表示暫停5秒。 |
DBMS_OUTPUT提示緩衝區不夠,怎麼增長? |
採用命令「DBMS_OUTPUT.ENABLE(20000);」,另外,若是DBMS_OUTPUT的信息不能顯示,那麼須要設置SET SERVEROUTPUT ON。 |
如何在Oracle中寫操做系統文件,如寫日誌? |
能夠利用UTL_FILE包,可是,在此以前,要注意設置好UTL_FILE_DIR初始化參數。 |
當DML語句中有一條數據報錯時,如何讓該DML語句繼續執行? |
當一個DML語句運行的時候,若是遇到了錯誤,那麼這條語句會進行回滾,就好像沒有執行過。對於一個大的DML語句而言,若是個別數據錯誤而致使整個語句的回滾,那麼會浪費不少的資源和運行時間。因此,從Oracle 10g開始Oracle支持記錄DML語句的錯誤,而容許語句自動繼續執行。這個功能能夠使用DBMS_ERRLOG包實現。 |
本文選自《Oracle程序員面試筆試寶典》,做者:李華榮。
詳細內容能夠添加麥老師微信或QQ私聊。
● 本文做者:小麥苗,只專一於數據庫的技術,更注重技術的運用
● 做者博客地址:http://blog.itpub.net/26736162/abstract/1/
● 本系列題目來源於做者的學習筆記,部分整理自網絡,如有侵權或不當之處還請諒解
● 版權全部,歡迎分享本文,轉載請保留出處
● QQ:646634621 QQ羣:618766405
● 提供OCP、OCM和高可用部分最實用的技能培訓
● 題目解答如有不當之處,還望各位朋友批評指正,共同進步
長按下圖識別二維碼或微信掃描下圖二維碼來關注小麥苗的微信公衆號:xiaomaimiaolhr,學習最實用的數據庫技術。
喜歡就點擊「好看」吧
本文分享自微信公衆號 - DB寶(lhrdba)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。