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

首頁 > 數據庫 > Oracle > 正文

Oracle Online Redo LogFile 全面剖析

2024-08-29 13:38:08
字體:
來源:轉載
供稿:網友

  一、 redologfile 的簡單介紹
  
  它一般有大小相同的一組文件構成。我們可以查看數據庫視圖 v$logfile 知道它的個數和存儲位置。
  
  SVRMGRL>select * from v$logfile;
  
  查看數據庫視圖 v$log 知道它當前的狀態。
  
  SVRMGRL>select * from v$log;
  
  一個時間只有一組 logfilegroup 是工作狀態 (current) , redologfile 滿了后會自動切換到下一個 logfilegroup ,假如數據庫是歸檔方式同時寫到歸檔日志文件。這些文件不能用常規的文本編輯器查看 , 它以特定的格式存放 , 只有數據庫或者專門的軟件可以看懂它。
  
  redologfile 的最大數目是在創建數據庫時指明的。假如你想知道當前數據庫 redologfile 的最大數值是多少,重新生成控制文件 , 就可以知道。
  
  SVRMGRL>alter database backup controlfile to trace;
  
  這條語句會在 $Oracle_BASE/admin/dbname/udump/ 路徑下生成當前時間的一個 *.trc 文件 , 也就是數據庫的控制文件 , 用文本編輯器 , 即可看到數據庫創建時用的一些參數 , 包括 redologfile 的最大數 (maxlogfiles), 每組最大的成員個數 (maxlogmembers) 。
  
  二、 redologfile 的大小和位置對數據庫性能的影響
  
  假如用 ORACLE 的安裝向導創建的典型數據庫 , 它的 redologfile 大小為 500K, 這基本上是不能滿足典型的 OLTP 應用的 , 在數據庫日志文件 (alert_orasid.log) 里會記錄著頻繁的 logswitch 。 ORACLE 推薦 logswitch 時間最好在 15--30 分鐘之間 , 所以 redologfile 的大小由數據庫 DML 操作數據量的大小決定其最佳大小。
  
  redologfile 最好有多個分布在不同硬盤的存儲位置 , 多組成員 , 使數據庫恢復時有更多的選擇。
  
  典型的 OLTP 應用, redologfile 大小可以為 16M 。當然繁忙的數據庫 , 例如當今的門戶網站 , 這個值可以達到 100M 以上 .
  
  假如你發現當前數據庫日志文件里 logswitch 的時間偏大或者偏小,不要緊。 ORACLE 提供了在數據庫聯機狀態來改變 redologfile 大小的方法。
  
  三、在聯機狀態改變 redologfile 大小的方法
  
  假如原來數據庫有 3 個小的 redologfile, 下面是 UNIX 環境下的一個例子 :
  
  第一步 : 往數據庫添加三個大的 redologfile
  
  SVRMGRL>ALTERDATABASEADDLOGFILEGROUP4
  
  ('/opt/oradata/app/redo04.log',
  
  '/ora_bak/oradata2/redolog/redo04.log')size16Mreuse;
  
  SVRMGRL>ALTERDATABASEADDLOGFILEGROUP5
  
  ('/opt/oradata/app/redo05.log',
  
  '/ora_bak/oradata2/redolog/redo05.log')size16Mreuse;
  
  SVRMGRL>ALTERDATABASEADDLOGFILEGROUP6
  
  ('/opt/oradata/app/redo06.log',
  
  '/ora_bak/oradata2/redolog/redo06.log')size16Mreuse;
  
  第二步 : 手工地做 logswitch, 使新建的 redologfile 起作用 .
  
  SVRMGRL>altersystemswitchlogfile;
  
  此操作可以執行一到幾次 , 使舊的 redologfile 成 invalid 狀態 .
  
  第三步 : 刪除原來舊的 redologfile.
  
  SVRMGRL>alterdatabasedroplogfilegroup1;
  
  SVRMGRL>alterdatabasedroplogfilegroup2;
  
  SVRMGRL>alterdatabasedroplogfilegroup3;
  
  四、跟 redologfile 有關的其它數據庫參數
  
  1 、 log_buffer
  
  log_buffer 是 ORACLESGA 的一部分 , 所有 DML 命令修改的數據塊先放在 log_buffer 里 , 假如滿了或者到了 check_point 時候通過 lgwr 后臺進程寫到 redologfile 里去。它不能設得太大,這樣在意外發生時會丟失很多改變過的數據。它最好不要大于 512K 或者 128K*CPU 個數。
  
  我們可以用下面的 SQL 語句檢測 log_buffer 使用情況 :
  
  SVRMGRL>selectrbar.name,rbar.value,re.name,re.value,(rbar.value*100)/re.value'%'"radio"
  
  fromv$sysstatrbar,v$sysstatre
  
  whererbar.name='redobufferallocationretries'
  
  andre.name='redoentries';
  
  這個比率小于 1% 才好,否則增加 log_buffer 的大小
  
  2 、 log_checkpoint_interval
  
  Oracle8.1 版本后 log_checkpoint_interval 指的是兩次 checkpoint 之間操作系統數據塊的個數。
checkpoint 時 Oracle 把內存里修改過的數據塊用 DBWR 寫到物理文件,用 LGWR 寫到日志和控制文件。
  
  一般 UNIX 操作系統的數據塊為 512bytes 。
  
  從性能優化來說 log_checkpoint_interval=redologfilesizebytes/512bytes
  
  3 、 log_checkpoint_timeout
  
  Oracle8.1 版本后 log_checkpoint_timeout 指的是兩次 checkpoint 之間時間秒數。
  
  Oracle 建議不用這個參數來控制,因為事務 (transaction) 大小不是按時間等量分布的。用 log_checkpoint_interval 參數控制會好一些。
  
  禁用此參數或者按默認的 900 。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 改则县| 抚远县| 巴塘县| 雷山县| 青岛市| 钟祥市| 嘉定区| 平泉县| 陆丰市| 长乐市| 辽宁省| 通辽市| 钦州市| 恭城| 林州市| 从江县| 佛山市| 青冈县| 尚志市| 抚顺市| 黄骅市| 德安县| 衡阳县| 安陆市| 新营市| 嘉兴市| 德保县| 吉木乃县| 东阿县| 南充市| 临江市| 若尔盖县| 抚远县| 宜城市| 吴桥县| 延安市| 华阴市| 昔阳县| 集贤县| 古蔺县| 金塔县|