Housekeeping -1
Housekeeping -2
Housekeeping -3
Housekeeping -4
Housekeeping -5
Housekeeping -6
Weitere Ordner unter $ORA_CRS_HOME/log/crs: log : Verzeichnis für CRS Resourcen die dazukommen, neu gestartet werden, oder herausgenommen werden init: Core Dumps Housekeeping -7
Housekeeping -8
Stichwörter: Aufräumen im Dateisystem Housekeeping -9
Stichwörter: Aufräumen im Dateisystem Housekeeping -10
Das ganze als Datenbank-Job: DECLARE oracle_home VARCHAR2(256); diag_path VARCHAR2(256); minutes NUMBER:=0; PROCEDURE adrci_job( job_name IN VARCHAR2, cmd IN VARCHAR2) IS BEGIN dbms_scheduler.create_job( job_name => job_name, job_type => 'EXECUTABLE', job_action => oracle_home '\adrci.exe ', start_date => SYSTIMESTAMP, auto_drop => TRUE, enabled => TRUE); COMMIT; END; BEGIN dbms_system.get_env('oracle_home',oracle_home); SELECT replace(substr(value,instr(value,'diag')+5),'\','\\') INTO diag_path FROM v$diag_info WHERE name='adr Home'; adrci_job('adrci_job1','exec="set homepath ' diag_path '; purge -age ' minutes ' -type trace"'); adrci_job('adrci_job2','exec="set homepath ' diag_path '; purge -age ' minutes ' -type incident"'); -- Derzeit funktioniert alle Werte >0 nicht (20.2.2010) adrci_job('adrci_job3','exec="set homepath ' diag_path '; purge -age ' minutes ' -type alert"'); END; / Stichwörter: Aufräumen im Dateisystem Housekeeping -11
Housekeeping -12
Hinweis: Ein SELECT liefert die Speicherdauer für die verschiedenen Homes: SELECT adr_home,shortp_policy,longp_policy FROM V$DIAG_ADR_CONTROL; Housekeeping -13
'####################################################### ' ### VBA Routine zum Löschen von Trace-Dateien ' ### Geschrieben von Marco Patzwahl, MuniQSoft GmbH ' ### (c) 2005 und 2006 Version 1.0 ' ### Aufrufsyntax: del_trac.vbs <pfad> <tage> ' ### Löscht alle Trace-Dateien im Ordner <pfad> ' ### die aelter als <tage> sind ' ### Beispiel: del_trace.vbs D:\oracle\admin\o10g\udump 21 Dim ofso Set ofso = Createobject("Scripting.FileSystemObject") Dim ostartfolder Dim ofolder Dim ofile Dim dkilldate Dim dkilldays Set Args = WScript.Arguments sstartfolder=args(0) dkilldays=args(1) 'Const STARTDIR = "D:\oracle\admin\o10g\udump" 'Const KILLDATE = "21" dkilldate = CDate(Now() - CInt(dKillDays)) Set ostartfolder = ofso.getfolder(sstartfolder) For Each ofile In ostartfolder.files If ofile.datecreated < DKillDate and Mid(oFile.name,Len(oFile.name)- 3) = ".trc" Then ofile.delete True End If Next Stichwörter: Aufräumen im Dateisystem Housekeeping -14
Stichwörter: Aufräumen im Dateisystem Housekeeping -15
CREATE OR REPLACE TYPE ms_file_type AS OBJECT (path VARCHAR2(512),file_name VARCHAR2(256),fsize NUMBER,ftype VARCHAR2(32)); / CREATE OR REPLACE TYPE ms_file_tab_type AS TABLE OF ms_file_type; / CREATE OR REPLACE FUNCTION ms_file_check(f_path IN VARCHAR2) RETURN ms_file_tab_type PIPELINED IS PRAGMA AUTONOMOUS_TRANSACTION; v_file_t ms_file_tab_type:=ms_file_tab_type(ms_file_type(null,null,null,null)); ns VARCHAR2(1024); v_dir VARCHAR2(1024):=f_path; v_file UTL_FILE.FILE_TYPE; v_exists BOOLEAN; v_len NUMBER:=1; v_bs NUMBER; v_os_sl CHAR(1):='/'; BEGIN IF instr(v_dir,v_os_sl)=0 THEN -- Betriebssystem prüfen (UNIX/Win) v_os_sl:='\'; --'Slash wechseln END IF; DBMS_BACKUP_RESTORE.SEARCHFILES(v_dir, ns); -- Verzeichnis incl Unterordner einlesen FOR r IN ( SELECT fname_krbmsft AS name FROM x$krbmsft) LOOP -- Temporäres Directory anlegen für utl_file EXECUTE IMMEDIATE 'CREATE OR REPLACE DIRECTORY ORA_TMP_DIR AS ''' substr(r.name,1,instr(r.name,v_os_sl,-1)-1) ''''; v_file := UTL_FILE.FOPEN('ORA_TMP_DIR', r.name, 'r'); -- Größe der Datei einlesen UTL_FILE.FGETATTR('ORA_TMP_DIR', r.name, v_exists, v_len, v_bs); v_file_t(1).path:=substr(r.name,1,instr(r.name,v_os_sl,-1)-1); v_file_t(1).file_name:=substr(r.name,instr(r.name,v_os_sl,-1)+1); v_file_t(1).fsize:=v_len; IF instr(v_file_t(1).file_name,'.')>0 THEN v_file_t(1).ftype:=substr(v_file_t(1).file_name,instr(v_file_t(1).file_name,'.')+1,32); ELSE v_file_t(1).ftype:=null; END IF; PIPE ROW (v_file_t(1)) ; UTL_FILE.FCLOSE(v_file); END LOOP; EXECUTE IMMEDIATE 'DROP DIRECTORY ORA_TMP_DIR'; END; / SELECT * FROM table(ms_file_check('d:\oracle\diag\rdbms\o112\o112\trace')) order by fsize desc SELECT * FROM table(ms_file_check('d:\oracle\diag\rdbms\o112\o112')) where ftype in ('trc','trm','log') order by fsize desc Housekeeping -16
Housekeeping -17
Housekeeping -18
Stichwörter: Enterprise Manager Housekeeping -19
Stichwörter: Enterprise Manager Housekeeping -20
Stichwörter: Installations-Logs Housekeeping -21
Housekeeping -22
Housekeeping -23
Housekeeping -24
Housekeeping -25
Stichwörter: Audits Housekeeping -26
Weiteres Beispiel: Alle 48 Stunden Purge Job Starten: DECLARE att NUMBER := dbms_audit_mgmt.audit_trail_all; pje NUMBER := dbms_audit_mgmt.purge_job_enable; BEGIN dbms_audit_mgmt.create_purge_job( audit_trail_type=>att, audit_trail_purge_interval=>48, audit_trail_purge_name=>'audit_purge', use_last_arch_timestamp => TRUE); --dbms_audit_mgmt.set_purge_job_interval('audit_purge', 7*24); dbms_audit_mgmt.set_purge_job_status('audit_purge', pje); dbms_audit_mgmt.drop_purge_job('audit_purge'); END; / Stichwörter: Audits Housekeeping -27
Housekeeping -28
Housekeeping -29
Stichwörter: Scheduler Logs Housekeeping -30
Stichwörter: Scheduler Logs Housekeeping -31
Hinweis: Sie können die Speicherdauer wieder kontrollieren durch: SELECT retention FROM dba_hist_wr_control; Housekeeping -32
Hinweis: Sie können auch die Lebensdauer des Tasks manuell einstellen (hier 3 Tage): BEGIN DBMS_ADVISOR.SET_TASK_PARAMETER ( task_name =>'MY_TASK', parameter =>' DAYS_TO_EXPIRE', value=>3); END; / Housekeeping -33
Housekeeping -34
REM Statspack komplett aufräumen (Löschen) DECLARE t_n VARCHAR2(30); BEGIN FOR r IN (select table_name FROM dba_tables WHERE owner='perfstat' AND table_name NOT IN ('STATS$IDLE_EVENT','STATS$LEVEL_DESCRIPTION','STATS$STATSPACK_PARA METER', 'STATS$DATABASE_INSTANCE','STATS$SNAPSHOT','STATS$TEMP_SQLSTATS')) LOOP BEGIN t_n:=r.table_name; EXECUTE IMMEDIATE 'TRUNCATE TABLE perfstat.' t_n ' DROP STORAGE'; EXECUTE IMMEDIATE 'ALTER TABLE perfstat.' t_n ' ENABLE ROW MOVEMENT'; EXECUTE IMMEDIATE 'ALTER TABLE perfstat.' t_n ' SHRINK SPACE'; EXCEPTION WHEN OTHERS THEN dbms_output.put_line(' Fehler bei Reorg in Tabelle:' t_n ':' sqlerrm); END; END LOOP; DELETE FROM STATS$SNAPSHOT; DELETE FROM STATS$DATABASE_INSTANCE; COMMIT; END; Stichwörter: Statspack Housekeeping -35
Hinweis: Sie können natürlich auch Snapshots aus einem bestimmten Bereich löschen: Snapshots manuell löschen. Hier im Beispiel von 22-32 BEGIN DBMS_WORKLOAD_REPOSITORY.drop_snapshot_range ( low_snap_id => 22, high_snap_id => 32); END; / Stichwörter: Snapshots Housekeeping -36
Beispiel-Select: SELECT distinct ref_owner_1 '.' ref_name_1,ref_type_1,ref_owner_2 '.' nam e_2 '(' type_1 ')',ref_name_2,ref_type_2 FROM ( select owner owner_1,name name_1,type type_1,referenced_owner ref_owner_1,referenced_name ref_name_1,referenced_type ref_type_1 from dba_dependencies where owner='scott' and referenced_type='table' and type='trigger' order by 1,2) t1 FULL OUTER JOIN ( select owner owner_2,name name_2,type type_2,referenced_owner ref_owner_2,referenced_name ref_name_2,referenced_type ref_type_2 from dba_dependencies where owner='scott' and referenced_type='table' and type='trigger' order by 1,2) t2 ON (owner_1=owner_2 and name_1=name_2) where ref_owner_1 ref_name_1<>ref_owner_2 ref_name_2 order by 1,2; Housekeeping -37
Housekeeping -38
Housekeeping -39
Housekeeping -40
Housekeeping -41