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

首頁 > 數據庫 > Oracle > 正文

簡析Oracle Online Redo LogFile

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

  一、redologfile的簡單介紹
  
  它一般有大小相同的一組文件構成。我們可以查看數據庫視圖v$logfile知道它的個數和存儲位置。
  
  SVRMGRL>select*fromv$logfile;
  
  查看數據庫視圖v$log知道它當前的狀態。
  SVRMGRL>select*fromv$log;
  
  一個時間只有一組logfilegroup是工作狀態(current),redologfile滿了后會自動切換到下一個logfilegroup,假如數據庫是歸檔方式同時寫到歸檔日志文件。這些文件不能用常規的文本編輯器查看,它以特定的格式存放,只有數據庫或者專門的軟件可以看懂它。
  
  redologfile的最大數目是在創建數據庫時指明的。假如你想知道當前數據庫redologfile的最大數值是多少,重新生成控制文件,就可以知道。
  SVRMGRL>alterdatabasebackupcontrolfiletotrace;
  
  這條語句會在$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。
  log_checkpoint_timeout=0

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永靖县| 疏勒县| 磴口县| 辽阳县| 响水县| 枞阳县| 隆安县| 岳阳市| 巴林右旗| 古交市| 晋中市| 如东县| 泗水县| 民乐县| 道真| 阿瓦提县| 望都县| 河曲县| 太保市| 丹棱县| 塔河县| 泸西县| 五河县| 九龙城区| 临洮县| 黄浦区| 武隆县| 元朗区| 托里县| 方正县| 乐清市| 信宜市| 南漳县| 定西市| 保山市| 清河县| 泸定县| 大渡口区| 乌拉特后旗| 溧水县| 吉林市|