国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

簡析REDO LOGFILE

2024-07-21 02:35:49
字體:
來源:轉載
供稿:網友

  我們知道Oracle里聯機日志文件(Online redo logfile)循環記錄了數據庫所有的事務(transaction)。 它的大小、個數和存儲位置對數據庫性能和恢復也是有重要影響的。本文總結一下關于redo logfile的一些 內容。
  
  一、redo logfile的簡單介紹
  它一般有大小相同的一組文件構成。我們可以查看數據庫視圖v$logfile知道它的個數和存儲位置。
  
   SVRMGRL> select * from v$logfile;
  
  查看數據庫視圖v$log知道它當前的狀態。
  
   SVRMGRL> select * from v$log;
  
  一個時間只有一組logfile group是工作狀態(current), redo logfile滿了后會自動切換到下一個logfile group, 假如數據庫是歸檔方式同時寫到歸檔日志文件。這些文件不能用常規的文本編輯器查看,它以特定的格式存放, 只有數據庫或者專門的軟件可以看懂它。
  
  redo logfile的最大數目是在創建數據庫時指明的。假如你想知道當前數據庫redo logfile的最大數值是多少,重新生成控制文件, 就可以知道。
  
   SVRMGRL>alter database backup controlfile to trace;
  
  這條語句會在$ORACLE_BASE/admin/dbname/udump/路徑下生成當前時間的一個*.trc文件, 也就是數據庫的控制文件, 用文本編輯器, 即可看到數據庫創建時用的一些參數, 包括redo logfile的最大數(maxlogfiles)。
  
  二、 redo logfile的大小和位置對數據庫性能的影響
  假如用ORACLE的安裝向導創建的典型數據庫, 它的redo logfile大小為500K, 這基本上是不能滿足典型的OLTP應用的, 在數據庫日志文件(alert_orasid.log)里會記錄著頻繁的log switch。ORACLE推薦log switch時間最好在15--30分鐘之間, 所以redo logfile的大小由數據庫DML操作數據的大小決定其最佳大小。
  
    redo logfile最好有多個存儲位置, 多組成員, 使數據庫恢復時有更多的選擇。
  
  典型的OLTP應用,redo logfile大小可以為16M。當然繁忙的數據庫, 例如當今的門戶網站, 這個值可以達到100M以上.
  
  假如你發現當前數據庫日志文件里log switch的時間偏大或者偏小,不要緊。ORACLE提供了在數據庫聯機狀態來改變redo logfile大小的方法。
  
  三、在聯機狀態改變redo logfile大小的方法
  假如原來有3個小的redo log file, 下面是UNIX環境下的一個例子:
  
  第一步: 往數據庫添加三個大的redo logfile
  
  SVRMGRL>ALTER DATABASE ADD LOGFILE GROUP 4
  ('/opt/oradata/app/redo04.log',
  '/ora_bak/oradata2/redolog/redo04.log') size 16M reuse;
  
  SVRMGRL>ALTER DATABASE ADD LOGFILE GROUP 5
  ('/opt/oradata/app/redo05.log',
  '/ora_bak/oradata2/redolog/redo05.log') size 16M reuse;
  
  SVRMGRL>ALTER DATABASE ADD LOGFILE GROUP 6
  ('/opt/oradata/app/redo06.log',
  '/ora_bak/oradata2/redolog/redo06.log') size 16M reuse;
  
  第二步: 手工地做log switch, 使新建的redo logfile起作用.
  
  SVRMGRL>alter system switch logfile;
  
  此操作可以執行一到幾次, 使舊的redo logfile成invalid狀態.
  
  第三步: 刪除原來舊的redo logfile.
  
  SVRMGRL>alter database drop logfile group 1;
  
  SVRMGRL>alter database drop logfile group 2;
  
  SVRMGRL>alter database drop logfile group 3;
  
  四、跟redo logfile有關的其它數據庫參數
  1、log_buffer
  
  log_buffer是ORACLE SGA的一部分, 所有DML命令修改的數據塊先放在log_buffer里, 假如滿了或者到 了check_point時候通過lgwr后臺進程寫到redo logfile里去。它不能設得太大,這樣在意外發生時會丟失很多改變過的數據。它最好不要大于512K或者128K*CPU個數。

  
  我們可以用下面的SQL語句檢測log_buffer使用情況:
  
  SVRMGRL> select rbar.name,rbar.value,re.name,re.value,(rbar.value*100)/re.value'%' "radio"
  from v$sysstat rbar,v$sysstat re
  where rbar.name='redo buffer allocation retries'
  and re.name='redo entries';
  
  這個比率小于1%才好,否則增加log_buffer的大小
  
  2、log_checkpoint_interval
  
  Oracle8.1 版本后log_checkpoint_interval指的是兩次checkpoint之間操作系統數據塊的個數。
  
  checkpoint時Oracle把內存里修改過的數據塊用DBWR寫到物理文件,用LGWR寫到日志和控制文件。
  
  一般UNIX操作系統的數據塊為 512 bytes。
  
  從性能優化來說 log_checkpoint_interval = redo logfile size bytes / 512 bytes
  
  3、log_checkpoint_timeout
  
  Oracle8.1 版本后log_checkpoint_timeout指的是兩次checkpoint之間時間秒數。
  Oracle建議不用這個參數來控制,因為事務(transaction)大小不是按時間等量分布的。
  log_checkpoint_timeout = 0
  log_checkpoint_timeout = 900

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 普兰县| 马鞍山市| 仁布县| 铜梁县| 维西| 海安县| 英超| 修文县| 青神县| 汽车| 句容市| 南靖县| 土默特右旗| 武平县| 武宣县| 旬阳县| 安多县| 庐江县| 靖江市| 黎川县| 江永县| 福泉市| 新密市| 吉安市| 荆州市| 集贤县| 田东县| 台湾省| 德州市| 朝阳区| 镇巴县| 大英县| 文成县| 蓝山县| 政和县| 密云县| 宁远县| 青铜峡市| 新竹市| 图片| 新竹市|