下面我們將Oracle 11g作為一個例子來介紹一下。 Oracle本身就是一個很占資源的軟件,光一個實例服務所占內存,根據其安裝時分配的內存就至少要達到256MB以上,再加上其他附屬服務,光內存就要占用物理內存的30%左右,至于CPU,Oracle也需要占用30%左右,因而,我們考慮在有需要使用Oracle時啟用其相關服務,平時則停止該服務。 我們拿Oracle 11g作為例子。首先在“開始=〉運行”中輸入“services.msc”,按回車,進入“服務”控制臺,將Oracle ORCL VSSWriterService、OracleDBConsolexx(xx表示實例名稱)、OracleOraDb11g_home1TNSListener及OracleServicexx(xx表示實例名稱)服務的屬性中啟動類型修改為“手動”,然后在需要使用時啟動OracleDBConsolexx(xx表示實例名稱)、OracleOraDb11g_home1TNSListener及OracleServicexx(xx表示實例名稱)這些服務,不使用時停止,而且這樣做即使機器關機或重啟后,默認系統(tǒng)還是不會啟動這些服務的。當然我們建議將啟動停止服務的操作寫在一個批處理文件中方便使用。 下面我們附上啟動及停止Oracle 11g服務的批處理文件內容(具體批處理文件請見附件,oracle實例名稱以orcl為例):啟動Oracle11g服務批處理代碼如下:@echooff@ ECHO 啟動 Oracle 11g 服務net start"OracleDBConsoleorcl"net start"OracleOraDb11g_home1TNSListener"net start"OracleServiceORCL" @ ECHO 啟動完畢 按任意鍵繼續(xù)pauseexit停止Oracle11g服務批處理代碼如下:@echooff@ ECHO 停止 Oracle 11g 服務net stop"OracleDBConsoleorcl"net stop"OracleOraDb11g_home1TNSListener"net stop"OracleServiceORCL" @ ECHO 停止完畢
創(chuàng)新互聯(lián)公司是專業(yè)的順義網站建設公司,順義接單;提供網站制作、網站設計,網頁設計,網站設計,建網站,PHP網站建設等專業(yè)做網站服務;采用PHP框架,可快速的進行順義網站開發(fā)網頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網站,專業(yè)的做網站團隊,希望更多企業(yè)前來合作!
首先啟動windows命令。在開始菜單中輸入cmd命令
輸入啟動命令:"net start oracleservieYAOYY" [Yaoyy代表實例名稱,不區(qū)分大小寫]
使用sqlplus方式登錄數據庫,測試啟動是否正常。
登錄成功后,會有以下頁面,并且命令前綴變成:“SQL ”方式
使用簡單的查詢語句可以看到系統(tǒng)正常執(zhí)行sql語句.
操作完之后,退出系統(tǒng)使用命令:"exit;"進行退出
停止oracle服務. 使用命令:"net stop oracleserviceyaoyy"注意后面沒有分號.
1 相關表、視圖 dba_jobs all_jobs user_jobs 包含登錄用戶所有的JOB信息 dba_jobs_running 包含正在運行job相關信息注意 須使用oracle的sys用戶登錄到數據庫,才能查看dba_jobs_running, v$process, v$session表的信息。同時,登錄操作系統(tǒng)時,要用oracle用戶。2 問題描述為同事解決一個因為網絡連接情況不佳時,執(zhí)行一個超長時間的SQL插入操作。既然網絡狀況不好,就選擇了使用一次性使用JOB來完成該插入操作。在JOB執(zhí)行一段時間后,我發(fā)現被插入表有些問題(慚愧,當時也沒有先檢查檢查就做了)。準備停止JOB,因為在JOB運行情況下,我的所有修改都會報系統(tǒng)資源忙的錯誤。強行KILL SESSION是行不通的,因為過會兒,JOB還會重新啟動,如果執(zhí)行的SQL也被KILL了通過重新啟動的JOB還是會被再次新執(zhí)行的。3 解決辦法 比較好的方法應該是; 1. 首先確定要停止的JOB號 在10g中可通過Dba_Jobs_Running進行確認。 查找正在運行的JOB: select sid from dba_jobs_running; 查找到正在運行的JOB的spid: select a.spid from v$process a ,v$session b where a.addr=b.paddr and b.sid in (select sid from dba_jobs_running); 2. Broken你確認的JOB 注意使用DBMS_JOB包來標識你的JOB為BROKEN。 SQL EXEC DBMS_JOB.BROKEN(job#,TRUE); 注意:當執(zhí)行完該命令你選擇的這個JOB還是在運行著的。 3. Kill 對應的Oracle Session 應為BROKEN后該JOB還在運行,如果要求該JOB立刻停止,就需要找到該job的對應SESSION(SID,SERIAL#),然后執(zhí)行以下命令: ALTER SYSTEM KILL SESSION 'sid,serial#'; 或者直接KILL對應的操作系統(tǒng)的SESSION,如果使用ALTER SYSTEM KILL SESSION執(zhí)行很長時間,其實可以使用OS的命令來快速KILL掉SESSION. For Windows, at the DOS Prompt: orakill sid spid For UNIX at the command line kill –9 spid 4. 檢查你的JOB是否還在運行 檢查你要停止的JOB是否還在運行,其實多數情況下,應該都已經停止了。尤其執(zhí)行的第三步的“殺手”命令。如果真的還是沒有停止,只好從第一道第三步重新做一下了。 5. 將Job Queue Processes的數目修改為0 首先確認當前的Job Queue Processes的數目 SQL col value for a10 SQL select name,value from v$parameter where name ='job_queue_processes'; 然后將Job Queue Processes的數目修改為0 SQL ALTER SYSTEM SET job_queue_processes = 0; 保證所有的JOB都會停止。 6. 修改你要修改的任何東西,甚至是JOB內的內容。 7. 修改完成后,將job的BROKEN狀態(tài)停止。SQLEXEC DBMS_JOB.BROKEN(job#,FALSE): 8. 恢復job_queue_processes的原始值 ALTER SYSTEM SET job_queue_processes = original_value; 至此整個停止并修改JOB完成. 但是需要另外注意一下的是,在MARK一個BROKEN狀態(tài)的時候,因為JOB內部執(zhí)行SQL的原因,所以執(zhí)行時或許要“煎熬”一段時間。所以在建立JOB時一定要仔細考慮,同時如果可能可以在你設計的PL/SQL代碼中,增加一些判斷“停止信號”的部分。來避免費力執(zhí)行上面的步驟。 畢竟,ORACLE在執(zhí)行JOB時,還是很“倔強”的 -:) 4 附件:ORAKILL用法很多時候遇到某個session一直處于active,使得CPU一直處于搞使用狀態(tài),雖然kill 了,但是卻不能夠使得使得線程結束。 kill session只是kill這個進程,但是線程一直處于活動狀態(tài)。需要真正的kill線程才能夠解決cpu使用率高的問題。os :windows2003ORAKILL用法是 orakill sid spid 其中sid為實例名,spid為線程號。怎么樣取得這個spid呢?以下給出查找spid的語句。select spid, osuser, s.program from v$process p, v$session s where p.addr=s.paddr and s.sid = XXX;--說明:XXX為session的sid (不是數據庫SID 呵呵)。自己輸入就可以。orakill instance_name spid這樣就能夠成功解決cpu使用率高的問題
在windows里啟動Oracle有兩個步驟,一是先啟動服務,二是再啟動實例、數據庫,這兩個都可以設置成自動或者手動
針對數據庫開機自動啟動問題,解決方法有兩個
方法一:在服務把oracleservice%SID%這個服務改成手動啟動
方法二:修改注冊表HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\HOME0\ORA_%SID%_AUTOSTART的值為false,這個是控制啟動服務時是否自動啟動數據庫(實例,占內存),默認是true
注冊表還有個ORA_%SID%_shutdown它是控制你關機時是否自動關數據庫的
啟動服務可以用net start oracleservice%SID% 命令
停止服務可以用net start oracleservice%SID% 命令
手動啟動數據庫要先開始服務,不然sqlplus不能進行操作系統(tǒng)驗證了
進入sqlplus “/as sysdba"
啟動數據庫是在sqlplus里輸入startup
關閉數據庫是在sqlplus里輸入shutdown immediate
找出正在執(zhí)行的JOB編號及其會話編號 SELECT SID,JOB FROM DBA_JOBS_RUNNING; 停止該JOB的執(zhí)行 SELECT SID,SERIAL# FROM V$SESSION WHERE SID='SID'; ALTER SYSTEM KILL SESSION 'SID,SERIAL'; EXEC DBMS_JOB.BROKEN(JOB,TRUE);實例分析:1,查詢正在運行的Job,通過查詢有兩個,和進程占用較多的是兩個ORACLE進程符合。SQL SELECT SID,JOB FROM DBA_JOBS_RUNNING; SID JOB\x0d\x0a---------- ----------12 11616 1172,查詢正在運行的job的信息SQL SELECT SID,SERIAL# FROM V$SESSION WHERE SID='12'; SID SERIAL#\x0d\x0a---------- ----------\x0d\x0a12 4SQL SELECT SID,SERIAL# FROM V$SESSION WHERE SID='16'; SID SERIAL#\x0d\x0a---------- ----------\x0d\x0a16 13,利用查詢出來的job信息將job結束掉SQL ALTER SYSTEM KILL SESSION '12,4';System altered.SQL ALTER SYSTEM KILL SESSION '16,1';System altered.\x0d\x0a4,如果不希望運行上述job的話,可以將job設置為broken.EXEC DBMS_JOB.BROKEN(116,TRUE);EXEC DBMS_JOB.BROKEN(117,TRUE);
當前名稱:oracle調度如何停止 oracle 調度
轉載注明:http://www.rwnh.cn/article22/hicgjc.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供網站建設、用戶體驗、定制開發(fā)、網站設計、Google、建站公司
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)