Oracle Study--RAW Device在Oracle下的應(yīng)用
10年積累的成都做網(wǎng)站、網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有麒麟免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
1、 什么是裸設(shè)備(RAW DEVICE)
裸設(shè)備是指未創(chuàng)建文件系統(tǒng)的磁盤(pán)分區(qū)(raw partition)或邏輯卷(raw logical volume),應(yīng)用程序直接通過(guò)一
個(gè)字符設(shè)備驅(qū)動(dòng)程序?qū)λM(jìn)行訪問(wèn)。如何對(duì)設(shè)備上的數(shù)據(jù)讀寫(xiě)決定于使用它的應(yīng)用程序。由于對(duì)裸設(shè)備的操作不通過(guò)UNIX的緩沖區(qū),數(shù)據(jù)在ORACLE的數(shù)據(jù)緩沖區(qū)(BUFFER CACHE)和磁盤(pán)之間直接傳遞,所以使用裸設(shè)備在一定程度上能夠提高I/O性能,適合I/O量大的系統(tǒng)。另外OPS/RAC (Oracle Parallel Server/Real Application Cluster)環(huán)境下,多個(gè)節(jié)點(diǎn)同時(shí)訪問(wèn)同一個(gè)數(shù)據(jù)庫(kù),所以CONTROL FILE、DATA FILE、REDO LOG都必須建在RAW DEVICE上。
2、裸設(shè)備的可用空間
不同的UNIX對(duì)裸設(shè)備的管理不完全相同,特別要注意的是某些UNIX在每個(gè)裸設(shè)備的頭部要保留一定的空間,應(yīng)用程序在使用裸設(shè)備時(shí)不可以覆蓋這一部分,否則會(huì)對(duì)裸設(shè)備造成損壞。所以一個(gè)裸設(shè)備的實(shí)際可用空間是分配給裸設(shè)備的空間再減去這部分操作系統(tǒng)保留空間。下面是常用UNIX的OS Reserved Size列表:
UNIX OS Reserved Size ------------ - --------------- SUN Solaris 0 HP-UX 0 IBM AIX 4k Tru64 UNIX 64k Linux 0
Oracle下redo block size:
SQL> SELECT b.member, b.bytes, b.bytes+512 file_size FROM v$logfile a, v$log b WHERE a.group#=b.group# and a.member='/oradata/redo01.log '; MEMBER BYTES FILE_SIZE -------------------- -------- --------- /oradata/redo01.log 4194304 4194816 下表列出了常用OS上的ORACLE REDO_BLOCK_SIZE: OS REDO_BLOCK_SIZE ----------------- --------------- Windows 512 SUN Solaris 512 HP-UX 1024 IBM AIX 512 Compaq Tru64 UNIX 1024 Linux 512
3、dd命令
UNIX上讀寫(xiě)裸設(shè)備不能使用cp, cpio, tar等命令,必須用dd,下面是幾個(gè)dd常用參數(shù)的簡(jiǎn)單說(shuō)明,更詳細(xì)的信息請(qǐng)參考UNIX使用手冊(cè)或用命令man dd。
dd [ operand=value ... ]
if=file 指定輸入文件,缺省值是標(biāo)準(zhǔn)輸入
of=file 指定輸出文件,缺省值是標(biāo)準(zhǔn)輸出
bs=n 設(shè)置輸入和輸出的塊大小為n字節(jié),也可以用“k”作單位
skip=n 在拷貝之前跳過(guò)n個(gè)輸入塊,缺省值是0
seek=n 在拷貝之前從輸出文件首部跳過(guò)n塊,缺省值是0
count=n 指定拷貝的塊數(shù),缺省拷貝到輸入文件結(jié)束
4、在raw上創(chuàng)建數(shù)據(jù)文件可用空間
SQL> CREATE TABLESPACE ts_test DATAFILE '/dev/rlv_data' SIZE 8180k; SIZE指定的數(shù)值必須小于或等于8180k,否則語(yǔ)句將會(huì)失敗: ORA-01119: error in creating database file '/dev/rlv_data' ORA-27042: not enough space on raw partition to fullfill request
這個(gè)最大值的計(jì)算方法如下:
8192k(RAW DEVICE SIZE) - 4k (OS_RESERVED_SIZE) - 8k (DB_BLOCK_SIZE) = 8180k
為什么還要減去一個(gè)DB_BLOCK_SIZE呢?這是因?yàn)镺RACLE建立DATAFILE時(shí),在命令中SIZE指定的大小之外,還要在文件頭另加一個(gè)BLOCK,叫作“Oracle OS Header Block”,里面保存有這個(gè)文件的邏輯塊大小和文件塊數(shù)等信息。這一點(diǎn)并不是在RAW DEVICE上建DATAFILE特有的,如果你在文件系統(tǒng)上建一個(gè)DATAFILE,指定SIZE 1000k的話,你用ls -l或dir命令看到的文件大小將是1008k (DB_BLOCK_SIZE=8K)。
案例分析:
查看vg信息: [oracle@aix211 ~]$lsvg datavg VOLUME GROUP: datavg VG IDENTIFIER: 00040f8a00004c000000014862af71b0 VG STATE: active PP SIZE: 64 megabyte(s) VG PERMISSION: read/write TOTAL PPs: 480 (30720 megabytes) MAX LVs: 256 FREE PPs: 372 (23808 megabytes) LVs: 19 USED PPs: 108 (6912 megabytes) OPEN LVs: 14 QUORUM: 2 (Enabled) TOTAL PVs: 1 VG DESCRIPTORS: 2 STALE PVs: 0 STALE PPs: 0 ACTIVE PVs: 1 AUTO ON: no Concurrent: Enhanced-Capable Auto-Concurrent: Disabled VG Mode: Concurrent Node ID: - Active Nodes: MAX PPs per VG: 32512 MAX PPs per PV: 1016 MAX PVs: 32 LTG size (Dynamic): 256 kilobyte(s) AUTO SYNC: no HOT SPARE: no BB POLICY: relocatable 創(chuàng)建lv大小為128M(2個(gè)pp) [root@aix211 /]#mklv -y 'tbs1' -t 'raw' datavg 2 tbs1 [root@aix211 /]#lsvg -l datavg datavg: LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT tbs1 raw 2 2 1 closed/syncd N/A 修改設(shè)備屬性 [root@aix211 /]#chown oracle:dba /dev/tbs1 [root@aix211 /]#chown oracle:dba /dev/rtbs1 [root@aix211 /]#chmod 660 /dev/tbs1 [root@aix211 /]#chmod 660 /dev/rtbs1 [root@aix211 /]#ls -l /dev |grep tbs1 crw-rw---- 1 oracle dba 88, 19 Sep 15 16:55 rtbs1 brw-rw---- 1 oracle dba 88, 19 Sep 15 16:55 tbs1 創(chuàng)建表空間tbs1 [oracle@aix211 ~]$ln -s /dev/rtbs1 /u01/app/oracle/oradata/prod/tbs1.dbf [oracle@aix212@ ~]$sqlplus '/as sysdba' SQL*Plus: Release 10.2.0.1.0 - Production on Mon Sep 15 17:44:10 2014 Copyright (c) 1982, 2005, Oracle. All rights reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production With the Partitioning, Real Application Clusters, OLAP and Data Mining options SQL> create tablespace tbs1 2 datafile '/u01/app/oracle/oradata/prod/tbs1.dbf' size 128m; create tablespace tbs1 * ERROR at line 1: ORA-01119: error in creating database file '/u01/app/oracle/oradata/prod/tbs1.dbf' ORA-27042: not enough space on raw partition to fullfill request IBM AIX RISC System/6000 Error: 6: No such device or address Additional information: 1 Additional information: 1 Additional information: -1 由于/dev/rtbs1大小為128m,不能全部用來(lái)創(chuàng)建表空間(最少要留有2X8k)