陌生Oracle的資料庫環境的巡檢內容

mahanso發表於2011-10-08
1、先要了解當前的Oracle 資料庫的版本和平臺和相關資訊 下面的這些指令碼可以幫助你獲取你需要的相關資訊。   

A,
SQL>select * from v$version;
B,
SQL>select dbid, name, open_mode, database_role, platform_name from v$database;
C,
SQL>select * from v$instance;
D,
SQL>select dbms_utility.port_string from dual;
E,
SQL>set serveroutput on

declare     
   ver VARCHAR2(100);     
   compat VARCHAR2(100);   
begin     
    dbms_utility.db_version(ver, compat);
   dbms_output.put_line('Version: ' || ver ||' Compatible: ' || compat);
end;
/

Version: 10.2.0.1.0 Compatible: 10.2.0.1.0
PL/SQL procedure successfully completed



2、其次要了解你的資料庫中裝了哪些元件 
A,
SQL>select * from dba_registry;
3、搞清楚這個環境是單機還是叢集?
這個判斷方法很多,這裡給出一個藉助dbms_utility來判斷的方法。
 
SQL>set serveroutput on   
declare     
    inst_tab dbms_utility.instance_table;
   inst_cnt NUMBER;
begin     
    if         dbms_utility.is_cluster_database then dbms_utility.active_instances(inst_tab, inst_cnt);
     dbms_output.put_line('-' || inst_tab.FIRST);
     dbms_output.put_line(TO_CHAR(inst_cnt));
  else
     dbms_output.put_line('Not A Clustered Database');    end if;
end;   /
Not A Clustered Database
PL/SQL procedure successfully completed


4、是否配置了DataGuard? 
SQL>select protection_mode, protection_level, remote_archive, database_role, dataguard_broker,guard_statusfrom v$database;

5、是否起用了歸檔模式?
A,
SQL>conn /as sysdba  
B,
SQL>archive log list;
C,
SQL>select log_mode from v$database;
SQL>show parameter log_archive_dest

6、是否起用了flashback database特性?
SQL>select flashback_on from v$database;

  如果是,再進一步檢視FLASHBACK RECOVERY AREA的配置情況
SQL> show parameter db_recovery_file_dest;
SQL> show parameter db_recovery_file_dest_size;

7、是否起用了force logging和補充日誌? 
SQL>select force_logging,supplemental_log_data_min, supplemental_log_data_pk, supplemental_log_data_ui,supplemental_log_data_fk,supplemental_log_data_all 

from v$database;

8、瞭解控制檔案的組成
SQL>select * from v$controlfile;

9、瞭解日誌檔案的組成 
SQL>select l.group#, lf.type,lf.member,l.bytes,l.status LOG_STATUS,lf.status LOGFILE_STATUS from v$log l,v$logfile lf where l.group# = lf.group#order by 1,3;

10、瞭解引數檔案的組成和位置   
SQL> show parameter spfile
     create spfile from pfile...    
     create pfile from spfile;    
     create spfile from memory;    
     create pfile from memory;

11、表空間和資料檔案的規劃  
SQL> select ts.name tablespace_name,df.name datfile_name,df.status,df.enabled,df.bytes,df.blocks from v$DATAfile df,v$tablespace ts where df.ts#=ts.ts#; 

SQL> select * from v$tablespace;
SQL> select * from v$datafile;

12、瞭解instance的相關資訊
SQL> select instance_name, host_name, status, archiver, database_status, instance_role, active_state from v$instance;

13、字符集相關  
SQL> select * from database_properties;  
SQL> select parameter,value from nls_database_parameters where parameter like '%CHARACTERSET%';

14、是否開啟了BLOCK CHANGE TRACKING   
SQL> select filename, status, bytes from v$block_change_tracking;

15、起用了那些特性(Feature)?
方案一、
          set serveroutput on spool 
          /home/oracle/backup/usage_report.html
          SELECT output FROM TABLE(dbms_feature_usage_report.display_html);
          spool off
方案二、
          set serveroutput on spool 
          /home/oracle/backup/usage_report.txt
          SELECT output FROM TABLE(dbms_feature_usage_report.display_text);
          spool off

16、系統中是否存在invalid物件 
SQL> select owner, object_type,COUNT(*) from dba_objects where status = 'INVALID' group by owner,object_type;
SQL> @?/rdbms/admin/utlrp.sql
SQL> select owner,object_name
    from dba_objects    
     where status = 'INVALID';

17、更進一步的    
A,網路檔案的配置是如何的?
[oracle@localhost ~]$ vi $ORACLE_HOME/network/admin/listener.ora
[oracle@localhost ~]$ vi $ORACLE_HOME/network/admin/tnsnames.ora[oracle@localhost ~]$ vi $ORACLE_HOME/network/admin/sqlnet.ora 
[oracle@localhost ~]$ lsnrctl status

B,
是否使用了ASM?

C,
當前系統的備份方法和策略是什麼?
冷備份、熱備份
部分庫備份、全庫備份
邏輯備份、物理備份

18、檢視一下最近的alert日誌,獲取一些有用的資訊
SQL>  show parameter dump_dest
[oracle@localhost ~]$ vi $ORACLE_BASE/admin/orcl/bdump/alert_.log

19、跑幾個效能分析報告,看看最近系統的執行狀態如何
        方案一、
SQL>  select * from dba_hist_snapshot order by snap_id desc;
SQL>  dbms_workload_repository.create_snapshot();
SQL>  dbms_workload_repository.create_baseline(start_snap_id=>49,end_snap_id=>50,baseline_name=> 'bn20090908');

        方案二、
Enterprise manager->awr->snapshot
Enterprise manager->addm

20、跑一個RDA報告,收集完整的系統狀態報告
[root@localhost rda]cd 
[root@localhost rda]#./rda.sh –S
[root@localhost rda]#./rda.sh -v

    好了,有了這一些基本資訊(不完全),你基本上對你新接觸的這個系統有了一個大概的瞭解,接來下,你再慢慢的深入分析,然後制訂出一套符合實際情況的運維規範來。


21、使用者和密碼相關  
    是否使用了預設密碼? 
    是否使用了profile? 
    是否起用了密碼驗證函式? 
    使用者身份驗證的方法? 
    密碼是否區分大小寫等。
A, 
SQL>select name, value from gv$parameter where name = 'resource_limit';
B, 
SQL>select profile, resource_name, limit from dba_profiles order by 1,2;
C,  
SQL>select username, profile from dba_users where account_status = 'OPEN' order by 1;
D,
SQL>select d.username, u.account_status from dba_users_with_defpwd d,dba_users u where d.username = u.username and account_status = 'OPEN' order by 2,1; 

22、檢查 dba_jobs 及 dba_scheduler_jobs
SQL>select job,schema_user,last_date,last_sec,this_date,this_sec,next_date,next_sec,total_time From dba_jobs;
SQL>select owner,job_name,program_owner,program_name,start_date,end_date,run_count From dba_scheduler_jobs;

23 檢查 database event trigger(startup, logon 等等)  
   select owner,trigger_name,triggering_event from dba_triggers where trigger_type in ('BEFORE EVENT', 'AFTER EVENT');

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

相關文章