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

首頁 > 數(shù)據(jù)庫 > Oracle > 正文

ORACLE入門之簡(jiǎn)析REDO LOGFILE

2024-08-29 13:39:57
字體:
供稿:網(wǎng)友

  我們知道Oracle里聯(lián)機(jī)日志文件(Online redo logfile)循環(huán)記錄數(shù)據(jù)庫所有的事務(wù)(transaction)。
  它的大小、個(gè)數(shù)和存儲(chǔ)位置對(duì)數(shù)據(jù)庫性能和恢復(fù)也是有重要影響的。本文總結(jié)一下關(guān)于redo logfile的一些
  內(nèi)容。
  一、redo logfile的簡(jiǎn)單介紹
  它一般有大小相同的一組文件構(gòu)成。我們可以查看數(shù)據(jù)庫視圖v$logfile知道它的個(gè)數(shù)和存儲(chǔ)位置。
  SVRMGRL> select * from v$logfile;
  查看數(shù)據(jù)庫視圖v$log知道它當(dāng)前的狀態(tài)。
  SVRMGRL> select * from v$log;
   一個(gè)時(shí)間只有一組logfile group是工作狀態(tài)(current), redo logfile滿了后會(huì)自動(dòng)切換到下一個(gè)logfile group, 假如數(shù)據(jù)庫是歸檔方式同時(shí)寫到歸檔日志文件。這些文件不能用常規(guī)的文本編輯器查看, 它以特定的格式存放, 只有數(shù)據(jù)庫或者專門的軟件可以看懂它。
  redo logfile的最大數(shù)目是在創(chuàng)建數(shù)據(jù)庫時(shí)指明的。假如你想知道當(dāng)前數(shù)據(jù)庫redo logfile的最大數(shù)值
  是多少,重新生成控制文件, 就可以知道。
  SVRMGRL>alter database backup controlfile to trace;
  這條語句會(huì)在$ORACLE_BASE/admin/dbname/udump/路徑下生成當(dāng)前時(shí)間的一個(gè)*.trc文件, 也就是數(shù)據(jù)庫的控制文件, 用文本編輯器, 即可看到數(shù)據(jù)庫創(chuàng)建時(shí)用的一些參數(shù), 包括redo logfile的最大數(shù)(maxlogfiles)。
   二、 redo logfile的大小和位置對(duì)數(shù)據(jù)庫性能的影響
  假如用ORACLE的安裝向?qū)?chuàng)建的典型數(shù)據(jù)庫, 它的redo logfile大小為500K, 這基本上是不能滿足典型的OLTP應(yīng)用的, 在數(shù)據(jù)庫日志文件(alert_orasid.log)里會(huì)記錄著頻繁的log switch。ORACLE推薦log switch時(shí)間最好在15--30分鐘之間, 所以redo logfile的大小由數(shù)據(jù)庫DML操作數(shù)據(jù)的大小決定其最佳大小。
  redo logfile最好有多個(gè)存儲(chǔ)位置, 多組成員, 使數(shù)據(jù)庫恢復(fù)時(shí)有更多的選擇。
  典型的OLTP應(yīng)用,redo logfile大小可以為16M。當(dāng)然繁忙的數(shù)據(jù)庫, 例如當(dāng)今的門戶網(wǎng)站, 這個(gè)值可以達(dá)到100M以上.
  假如你發(fā)現(xiàn)當(dāng)前數(shù)據(jù)庫日志文件里log switch的時(shí)間偏大或者偏小,不要緊。ORACLE提供了在數(shù)據(jù)庫聯(lián)機(jī)狀態(tài)來改變r(jià)edo logfile大小的方法。
   三、在聯(lián)機(jī)狀態(tài)改變r(jià)edo logfile大小的方法
  假如原來有3個(gè)小的redo log file, 下面是UNIX環(huán)境下的一個(gè)例子:
  第一步: 往數(shù)據(jù)庫添加三個(gè)大的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;
  此操作可以執(zhí)行一到幾次, 使舊的redo logfile成invalid狀態(tài).
  第三步: 刪除原來舊的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有關(guān)的其它數(shù)據(jù)庫參數(shù)
  1、log_buffer
  log_buffer是ORACLE SGA的一部分, 所有DML命令修改的數(shù)據(jù)塊先放在log_buffer里, 假如滿了或者到了check_point時(shí)候通過lgwr后臺(tái)進(jìn)程寫到redo logfile里去。它不能設(shè)得太大,這樣在意外發(fā)生時(shí)會(huì)丟失很多改變過的數(shù)據(jù)。它最好不要大于512K或者128K*CPU個(gè)數(shù)。
  我們可以用下面的SQL語句檢測(cè)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';
  這個(gè)比率小于1%才好,否則增加log_buffer的大小
  2、log_checkpoint_interval
  Oracle8.1 版本后log_checkpoint_interval指的是兩次checkpoint之間操作系統(tǒng)數(shù)據(jù)塊的個(gè)數(shù)。

  checkpoint時(shí)Oracle把內(nèi)存里修改過的數(shù)據(jù)塊用DBWR寫到物理文件,用LGWR寫到日志和控制文件。
  一般UNIX操作系統(tǒng)的數(shù)據(jù)塊為 512 bytes。
  從性能優(yōu)化來說 log_checkpoint_interval = redo logfile size bytes / 512 bytes
  3、log_checkpoint_timeout
   Oracle8.1 版本后log_checkpoint_timeout指的是兩次checkpoint之間時(shí)間秒數(shù)。
  Oracle建議不用這個(gè)參數(shù)來控制,因?yàn)槭聞?wù)(transaction)大小不是按時(shí)間等量分布的。
  log_checkpoint_timeout = 0
  log_checkpoint_timeout = 900

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 土默特右旗| 红桥区| 墨竹工卡县| 西乌| 承德市| 涟水县| 霍邱县| 松溪县| 磐安县| 恩平市| 铅山县| 巨鹿县| 长宁区| 固原市| 黄梅县| 婺源县| 竹山县| 桦甸市| 秭归县| 广宁县| 徐水县| 长汀县| 泰宁县| 孟津县| 九龙城区| 清涧县| 太和县| 桓仁| 河南省| 同德县| 大化| 阜新市| 枣庄市| 英超| 柳林县| 宜都市| 莲花县| 临高县| 吐鲁番市| 江津市| 积石山|