您好,登錄后才能下訂單哦!
今天朋友在aix 5.3系統(tǒng)上安裝oracle 10g 建庫是用裸設(shè)備時(shí)候,dbca建庫到2%報(bào)錯(cuò)退出,觀察alert日志發(fā)現(xiàn)是temp表空間空間不足導(dǎo)致。查看該表空間數(shù)據(jù)文件所在的裸設(shè)備容量為512M,建庫時(shí)候給出的數(shù)據(jù)文件大小也是512M。也許是因?yàn)閍ix系統(tǒng)以1000進(jìn)制計(jì)算,而oracle數(shù)據(jù)庫計(jì)算容量是以1024進(jìn)制導(dǎo)致差距,隨即將oracle數(shù)據(jù)文件大小改為500M,則正常通過。
但是,在alert日志中不斷爆出warning提示:WARNING: You are creating datafile /dev/temp01.
WARNING: Oracle recommends creating new datafiles on devices with zero offset. The command "/usr/sbin/mklv -y LVname -T O -w n -s n -r n VGname NumPPs" can be used. Please contact Oracle customer support for more details。通過查詢資料以及朋友的幫助,終于找到了問題原因并得到解決方法。
AIX在創(chuàng)建vg時(shí)有3中vg類型可選,分別是 Original Volume Group,Big Volume Group和Scalable Volume Group
對于普通的VG(Original Volume Group),不管你使用什么命令創(chuàng)建lv,都是普通的DS_LV類型的LV。
對于Big VG,是唯一允許同時(shí)存在這兩種LV類型的VG,如果我們指定-T O(注意,這里是大寫的字母O),則創(chuàng)建DS_LVZ類型的LV,否則,創(chuàng)建普通類型的LV。如
/usr/sbin/mklv -y LVname -T O -w n -s n -r n VGname NumPPs。
對于Scalable-type VG類型的VG,不管你使用什么方式的命令創(chuàng)建lv,都是擴(kuò)展的DS_LVZ類型的LV。
由Oracle的警告日志可以看出,Oracle 使用raw設(shè)備時(shí),建議設(shè)置不帶4k的lv。
AIX將這4k偏移量稱之為lvcb(logical volume control block),它將占用4k的前512個(gè)字節(jié),它類似于Oracle數(shù)據(jù)文件頭,保留有l(wèi)v的創(chuàng)建時(shí)間,鏡像拷貝信息,文件系統(tǒng)掛載點(diǎn)等。
從2個(gè)方面可以查看lv是否有4k偏移量
1、主機(jī)層面
沒有4k偏移量:
引用
#lslv jfkdb_2G_044
LOGICAL VOLUME: jfkdb_2G_044 VOLUME GROUP: jfk_dbvg_01
LV IDENTIFIER: 00c3dff400004c00000001217a9d839e.84 PERMISSION: read/write
VG STATE: active/complete LV STATE: closed/syncd
TYPE: raw WRITE VERIFY: off
MAX LPs: 1024 PP SIZE: 32 megabyte(s)
COPIES: 1 SCHED POLICY: parallel
LPs: 64 PPs: 64
STALE PPs: 0 BB POLICY: relocatable
INTER-POLICY: maximum RELOCATABLE: yes
INTRA-POLICY: middle UPPER BOUND: 1024
MOUNT POINT: N/A LABEL: None
MIRROR WRITE CONSISTENCY: on/ACTIVE
EACH LP COPY ON A SEPARATE PV ?: yes
Serialize IO ?: NO
DEVICESUBTYPE : DS_LVZ
有4k偏移量:
引用
[root@jfk_p560q /]# lslv jfkdb_2G_044
LOGICAL VOLUME: jfkdb_2G_044 VOLUME GROUP: jfk_db_vg01
LV IDENTIFIER: 00ce76de00004c00000001134ee6bc51.84 PERMISSION: read/write
VG STATE: active/complete LV STATE: opened/syncd
TYPE: raw WRITE VERIFY: off
MAX LPs: 1024 PP SIZE: 32 megabyte(s)
COPIES: 1 SCHED POLICY: parallel
LPs: 64 PPs: 64
STALE PPs: 0 BB POLICY: relocatable
INTER-POLICY: maximum RELOCATABLE: yes
INTRA-POLICY: middle UPPER BOUND: 16
MOUNT POINT: N/A LABEL: None
MIRROR WRITE CONSISTENCY: on/ACTIVE
EACH LP COPY ON A SEPARATE PV ?: yes
Serialize IO ?: NO
(2)Oracle層面:
Oracle提供了一小工具dbfsize(在$ORACLE_HOME/bin下)用于觀察lv是否有4k偏移量
無4k偏移量:
引用
$ dbfsize /dev/rlvsysaux_1g
Database file: /dev/rlvsysaux_1g
Database file type: raw device without 4K starting offset
Database file size: 40960 8192 byte blocks
有4k偏移量:
引用
[oracle@jfk_p560q /dev]$ dbfsize /dev/rjfkdb_2G_054
Database file: /dev/rjfkdb_2G_054
Database file type: raw device
Database file size: 262016 8192 byte blocks
如果數(shù)據(jù)庫使用block size為16k,創(chuàng)建跨pv帶有4k偏移的lv,條帶塊大小為64k。這樣將導(dǎo)致第4個(gè)block橫跨2個(gè)pv(條帶化操作,把lvcb也計(jì)算進(jìn)條帶塊中)。這樣會(huì)導(dǎo)致
條帶塊的第4個(gè)Oracle block跨磁盤,撇開性能方面考慮,如果系統(tǒng)異常宕機(jī),或者存儲(chǔ)異常宕機(jī),極易引起數(shù)據(jù)庫塊損壞,引起ora-01578錯(cuò)誤。(metalink ID 261460.1)
引用
$ oerr ora 01578
01578, 00000, "ORACLE data block corrupted (file # %s, block # %s)"
// *Cause: The data block indicated was corrupted, mostly due to software
// errors.
// *Action: Try to restore the segment containing the block indicated. This
// may involve dropping the segment and recreating it. If there
// is a trace file, report the errors in it to your ORACLE
// representative.
也就是說,使用Original Volume Group時(shí)候無法通過參數(shù)來取消4k offerset,唯一的辦法就是將oracle數(shù)據(jù)庫db_block_size設(shè)置為4k。(不推薦使用)
而使用big VG的時(shí)候,可以通過創(chuàng)建LV加入-T -O參數(shù)來實(shí)現(xiàn)創(chuàng)建DS_LVZ類型的LV,從而取消前面4K的偏移量。(但傳說big vg有已知的bug,顧不推薦使用)。
而Scalable-type VG類型的VG,無論如何創(chuàng)建LV都是不帶4K偏移量的,且支持的pp更多,支持單個(gè)文件容量最大。(強(qiáng)烈推薦使用)
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。