Oracle數據庫日常檢查文檔_第1頁
Oracle數據庫日常檢查文檔_第2頁
Oracle數據庫日常檢查文檔_第3頁
Oracle數據庫日常檢查文檔_第4頁
Oracle數據庫日常檢查文檔_第5頁
已閱讀5頁,還剩2頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、數據庫日常檢查文檔1. 檢查表空間使用情況:1.1 檢查是否開啟自擴展功能:select tablespace_name,file_name,file_id,autoextensible,round(increment_by*8191)/(1024*1024),2)|'M' as 自擴展大小M from dba_data_files; 目的:檢查表空間是否開啟自擴展功能。若檢查自擴展特別小,請用下面的方法把自擴展根據數據量增長情況調大。alter database datafile '新增加數據文件路徑' autoextend   

2、 on next *M maxsize unlimited;-把*替換為你需要的自擴展大小1.2 檢查表空間的使用情況:select a.tablespace_name,a.totals 總大小M,b.frees 空閑大小M,round(a.totals-b.frees)/a.totals,4)*100|'%' 使用率from (select sum(bytes)/(1024*1024) as totals,tablespace_namefrom dba_data_filesgroup by tablespace_name) a,(select sum(bytes)/(1024

3、*1024) as frees,tablespace_namefrom dba_free_spacegroup by tablespace_name) bwhere a.tablespace_name=b.tablespace_name ;目的:當表空間沒有開啟自擴展功能時,表空間的使用率大于等于85%時,需要向表空間增加數據文件。開啟自擴展功能的表空間,檢查常用的表空間自擴展的大小不小于100M。注:檢查ulog用戶對應的表空間:select default_tablespacefrom dba_userswhere username='ULOG' Ulog用戶下的tlog表

4、主要是記錄日志的,因為大部分的報表涉及記錄日志。所以,ulog用戶對應的表空間不管是開啟還是未開啟自擴展功能,當ulog對應的表空間的使用率大于等于85%時,就對性能有影響,考慮truncate釋放空間或是擴空間。解決辦法:手工降低使用率的方法:Alter database datafile 數據文件的路徑 resize *M;另一種情況:當前的文件是開啟自擴展的,但是要擴展的數據文件已經到達限制值32G了,此時的解決辦法:alter tablespace 表空間名 add datafile '新增加數據文件路徑' size 5120M;-向表空間中增加數據文件alter da

5、tabase datafile '新增加數據文件路徑' autoextend    on next 100M maxsize unlimited;-開啟自動擴展alter database datafile '達到最大值的數據文件路徑' AUTOEXTEND off;-關閉之前文件的自擴展2. 定期檢查磁盤的使用情況:2.1 Windows下檢查執行下面sql,獲得數據文件的路徑:select file_name from dba_data_files;Windows下直接檢查數據文件所在的盤的總大小和可用空間,當使用率為85%&#

6、160;時,清除數據文件所在的盤上無用的數據,或考慮增加硬件。2.2 Linux或是unix下:Linux或是unix下檢查oracle的安裝所用的盤,檢查變量ORACLE_BASE所在目錄的磁盤的使用情況,當使用率大于或等于90%時,需要清除無用的資料或是考慮增加硬件。例如,linux下用df命令 :rootrac1 /# df文件系統 1K-塊 已用 可用 已用% 掛載點/dev/sda1 10115104 8671272 921724 91% /dev/sda2 15398476 5604628 8999036 39% /u01/oracletmpfs 871640 0 871640 0

7、% /dev/shm3. 常規檢查:3.1 檢查是否有無效的對象:select owner as 用戶,object_name as 對象名,object_type as 對象類型 from dba_objects where status='INVAID'目的:若查詢有結果,對無效對象需要重新編譯。 Alter object_type owner.object_name compile;3.2 檢查不可用的主鍵:select owner,constraint_name,table_namefrom dba_constraints where status!='ENAB

8、LED' and constraint_type='P'目的:若查詢有數據,執行下面語句的執行結果。select 'alter table '|owner|'.'|table_name|' enable constraints '|constraint_name|'' from dba_constraints where status!='ENABLED' and constraint_type='P'3.3 檢查不可用的觸發器:select owner,trigger_na

9、mefrom dba_triggers where status!='ENABLED'目的:若查詢有數據,執行下面語句的執行結果。select 'alter trigger '|owner|'.'|trigger_name|' enable;'from dba_triggers where status!='ENABLED'3.4 檢查session和process:對照當前使用數和參數設置值:Select count(*) from v$session ;Select count(*) from v$proces

10、s;數據庫設置值:select name,value from v$parameter where name in('sessions','processes');注:以 v$開頭的表需要是業務高峰時的數據對分析才有作用。注:現場工程在使用pl/sql developer時,因多個sql窗口會增加sessions和process數,盡量在一個sql窗口操作。3.5 檢查job:檢查參數:當前數據庫的并發可執行的job數量:select name,valuefrom v$parameterwhere name='job_queue_processes

11、9;查詢當前數據中所有的job:select * from dba_jobs;涉及檢查項:LOG_USER,提交任務的用戶 ;PRIV_USER ,賦予任務權限的用戶 ;SCHEMA_USER ,對任務作語法分析的用戶模式;THIS_DATE ,表示正在運行任務的開始時間;LAST_DATE:最后一次成功運行完此job的時間;NEXT_DATE:下一次運行job的開始時間; INTERVAL:用于計算下一運行時間的表達式;What:執行任務的PL/SQL塊。結果判斷:1、 若有創建在sys或是system用戶下的業務job需要刪除,重新創建在業務用戶下。2、 如果

12、Next_date是晚上21點執行的job,在第二天上午9點查詢dba_jobs表時,this_date列不為空表示此job仍在執行。那么就需要優化what列顯示的存儲過程了。3、 當FAILURE<>0時,job不能執行成功。檢查并發可執行的job進程數是否夠用,根據next_date判斷下次需要并發執行的job數與參數job_queue_processes的設置數比較?若不夠,修改方法:Alter system set job_queue_processes=11 scope=both;3.6 檢查數據文件的狀態:select * from v$datafile where s

13、tatus not in('SYSTEM','ONLINE');目的:若查詢無結果,表示數據文件正常。3.7 檢查數據庫的模式:Select name,Created, Log_Mode From V$Database;若log_mode為archive,當value不為空時,檢查對應目錄下的空間使用情況:select value from v$parameter where name= 'log_archive_dest_1'若歸檔日志存在use_db_recovery_file_dest下,檢查下面視圖歸檔日志的使用情況:select per

14、cent_space_usedfrom v$flash_recovery_area_usage where file_type='ARCHIVELOG'當空間使用百分比(percent_space_used)為85%時,需要釋放空間。若使用的是asm 自動存儲管理,檢查空閑大小是否夠用:select group_number,name,total_MB as 總大小,free_MB as 空閑大小from v$asm_diskgroup;3.8 檢查鎖的情況:檢查是否發生阻塞:select /*+ ordered*/ sql_text, spid, p.pid, s.

15、sid, s.username, gram, process from v$sqlarea q, v$session s, v$process p where q.address = s.sql_address and q.hash_value = s.sql_hash_value and s.paddr = p.addr and exists (select sid from v$lock where block=1 and sid=s.sid);目的:若有結果,發回sql的執行結果,開發人員檢查sql涉及的程序。 導出結果后殺掉session。殺session步驟:Alter s

16、ystem kill session SID,SERIAL#;有時候殺掉session后,session對應的進程好長時間不釋放,占用資源,需要從操作系統級殺掉session: select spid, osuser, gram from v$session s,v$process pwhere s.paddr=p.addr and s.sid=&sid;1)在unix上,用root身份執行命令: #kill -9 123(上面語句查詢出的spid)2)在windows用orakill殺死線程,orakill是oracle提供的一個可執行命令,語法為:orakill sid

17、thread 例如:orakill cangzhoucg 123檢查是否有鎖等待:select /*+ ordered*/ sql_text, spid, p.pid, s.sid, s.username, gram, process from v$sqlarea q, v$session s, v$process p where q.address = s.sql_address and q.hash_value = s.sql_hash_value and s.paddr = p.addr and exists (select sid from v$lock where requ

18、est > 0 and block<>1 and sid=s.sid);檢查目的:檢查哪些語句一直在等待資源釋放,正常的鎖等待時間不會持續很長,持續時間較長的就盡快導出結果以便處理。4. 檢查數據庫的alert日志執行下面sql獲得alert日志的路徑:select a.value|' 下的alert_'|b.instance_name|'.log' from v$parameter a,gv$instance bwhere ='background_dump_dest'注:若數據庫為集群環境,查出的結果是二條,需要分別取二臺數據庫服務器所查目錄下的alert日志。目的:檢查最近日期的alert日志是否有以ora-開頭的錯誤或異常信息。5. 檢查tlog的錯誤日志select * from ulog.tlog where llevel=30 and ldate>=sysdate-1 order by

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論