oracle資料庫巡檢(一)基本sql語句

comebackdog發表於2011-10-17
       很多初學者在管理oracle資料庫的時候面臨一個問題,在沒有前人留下的任何文件資料的情況下要檢查這個資料庫的執行狀態,我也同樣經歷了這樣的痛苦,不過好在有前人留下的一個巡檢報告範本,根據網路上的資料我總結了一些基本的檢查語句供自己積累和大家的參考。
 
--資料庫巡檢sql語句
 
--查詢當前資料庫大小(資料檔案+臨時表空間+重做日誌)
 select round(sum(space)) Total_DB_size_in_MB from
(
select sum(bytes)/1024/1024 space from dba_data_files
union all
select nvl(sum(bytes)/1024/1024,0) space from dba_temp_files
union all
select sum(bytes)/1024/1024 space from v$log
);
 
--查詢表空間及資料檔案使用情況
select a.tablespace_name "Tablespace",a.file_name "DataFile",a.bytes/1024/1024 "Total MBytes",a.blocks "DB Blocks",
sum(nvl(b.bytes,0))/1024/1024 "MBytes Free",
round(sum(nvl(b.bytes,0))/a.bytes*100,3) "%Free",
(a.bytes-sum(nvl(b.bytes,0)))/1024/1024 "MBytes Used",
round((a.bytes-sum(nvl(b.bytes,0)))/a.bytes*100,3) "%Used"
from dba_data_files a, dba_free_space b
where a.file_id=b.file_id
group by a.tablespace_name ,a.file_name,a.bytes,a.blocks
order by a.tablespace_name;
 
--查詢日誌組及日誌的位置大小
select l.group#, lf.member as Logfile,l.status,l.bytes/1024/1024 as "Size/MB"
from v$log l,v$logfile lf
where l.group#=lf.group#
order by group#
group by group#,lf.member;
 
--檢視所有使用者基本資訊
select USERNAME,ACCOUNT_STATUS,EXPIRY_DATE,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE,PROFILE,CREATED from dba_users

--檢視用用DBA角色的使用者
select GRANTEE,GRANTED_ROLE,ADMIN_OPTION from dba_role_privs where GRANTED_ROLE='DBA' order by GRANTEE;

--檢視被授予SYSDBA許可權的使用者
select * from V$PWFILE_USERS
  select * from dba_sys_privs where GRANTEE  not in ('DBA','SYS');

--檢視非系統使用者許可權
select * from dba_sys_privs where GRANTEE in ( select USERNAME from dba_users where account_status ='OPEN' and USERNAME not like '%SYS%') order by GRANTEE;

--檢視失效物件
SELECT owner,object_type,object_name,status,LAST_DDL_TIME  FROM dba_objects WHERE status like 'INVALID';
--檢查資料庫安裝選項
select * from v$option;
--檢視oracle元件版本
select comp_id, comp_name, version,status from dba_registry;
--檢查資料庫引數配置
select NAME,VALUE,ISDEFAULT as "Default",ISSYS_MODIFIABLE as "Dynamic" from v$system_parameter order by name;
--檢查控制檔案
select * from v$controlfile;
--檢查系統表空間內非系統使用者的物件
select OWNER,SEGMENT_NAME,SEGMENT_TYPE,TABLESPACE_NAME from dba_segments where tablespace_name='SYSTEM' and owner not in ('SYS','SYSTEM','OUTLN');
--查詢當前session數和最大的session數(自資料庫執行以來)
select d.name "DATABASE",to_char(sysdate,'yyyy-MM-dd HH:MM:SS') "Check Date",l.SESSIONS_CURRENT,l.SESSIONS_HIGHWATER from v$license l ,v$database d;
--檢視ASM空間使用
select name,state,type,total_mb,free_mb,usable_file_mb,offline_disks from v$asm_diskgroup;
--檢視SGA大小
select name,display_value from v$parameter where name like 'sga%'
--檢視PGA大小
select name,display_value from v$parameter where name like '%pga%'
 
這些只能算是一個最基本的參考語句,下一篇《oracle資料庫巡檢(二)全面檢查》我將整理好我正在使用的一個較為完整的資料庫系統的檢查文件。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/20575781/viewspace-709230/,如需轉載,請註明出處,否則將追究法律責任。

相關文章