oracle學習筆記(二)之文件篇

構成數據庫和實例的文件類型有8種,其中與實例相關的文件有:參數文件、跟蹤文件、警告文件;

構成數據庫的文件包括:數據文件、臨時文件、控制文件、重做日誌文件、密碼文件;

 

重做日誌文件-------------歸檔重做日誌------------------

 

ORACLE數據庫可以採用兩種模式運行:ARCHIVELOG模式和NOARCHIVELOG模式。

這兩種模式的區別只有一點,即ORACLE重用重做日誌文件時會發生什麼情況。“會保留redo的一個副本嗎?還是ORACLE會將其重寫,而永遠失去原來的日誌?”這是一個很重要的問題,除非你保留了這個文件,否則無法從備份數據恢復到當前的時間點。

 

我認爲,如果系統不以ARCHIVELOG模式運行,那它根本就不能算是生產系統。未以ARCHIVELOG模式運行的數據庫總有一天會丟失數據。這是在所難免的;如果你的數據庫不以ARCHIVELOG模式運行,你肯定會丟失數據的。

 

但歸檔不同,利用歸檔可以保住你的數據,確保數據不會丟失,這不是開銷,而且正是DBA的主要任務!

 

那麼。怎樣查看、修改數據庫的運行模式呢????

 

客戶端:
select log_mode from v$database;

服務器端:
archive log list;

 

改變數據庫運行模式
1、關閉數據庫(正常)shutdown
2、裝載數據庫但不啓動數據庫 startup mount
3、修改數據庫運行模式alter database archivelog  /  noarchivelog
4、打開數據庫 alter database open

 

 

跟蹤文件------------------------------

要想知道跟蹤文件放在哪裏,可以從SQL*PLUS中執行 SOHW PARAMETER DUMP_DEST   命令來查看,也可以直接查詢V$PARAMETER視圖:

SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME LIKE "%DUMP_DEST%"

使用跟蹤文件主要是爲了調整和改善應用的性能,每次遇到錯誤時都會創建一個跟蹤文件,由此可以幫助你準確地跟蹤到爲什麼會產生錯誤。

 

以下代碼創建一個外部表,以便查詢警告日誌(注意:要把/background/dump/dest換成你自己的後臺轉儲目標目錄,並在CREATE TABLE語句中使用你自己的警告日誌名)。

 

create or replace directory data_dir as 'D:/oracle/product/10.2.0/admin/orcl/bdump';

 

 CREATE TABLE alert_log (text_line varchar2(255))
 ORGANIZATION EXTERNAL(TYPE ORACLE_LOADER
 DEFAULT DIRECTORY data_dir
 ACCESS PARAMETERS(records delimited by mewline fields REJECT ROWS WITH ALL NULL FIELDS)
 LOCATION('alert_AskUs.log'))
 REJECT LIMIT unlimited

 

 

select to_char(last_time, 'dd-mon-yyyy hh24:mi') shutdown,
       to_char(start_time, 'dd-mon-yyyy hh24:mi') startup,
       round((start_time - last_time) * 24 * 60, 2) mins_down,
       round((last_time - lag(start_time) over(order by r)), 2) days_up,
       case
         when (lead(r) over(order by r) is null) then
          round((sysdate - start_time), 2)
       end days_still_up
  from (select r,
               to_date(last_time, 'Dy Mon DD HH24:MI:SS YYYY') last_time,
               to_date(start_time, 'Dy Mon DD HH24:MI:SS YYYY') start_time
          from (select rownum r, text_line
                  from alert_log
                 where text_line like '____ ____ __ __:__:__20__'
                    or text_line like 'Starting ORACLE instance %'))
 where text_line like 'Starting ORACLE instance %';

 

紅色字體語句有錯誤,哪位高人能幫忙調試一下..................

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章