Oracle Study--RAW Device在Oracle下的應(yīng)用
堅守“ 做人真誠 · 做事靠譜 · 口碑至上 · 高效敬業(yè) ”的價值觀,專業(yè)網(wǎng)站建設(shè)服務(wù)10余年為成都輕質(zhì)隔墻板小微創(chuàng)業(yè)公司專業(yè)提供成都企業(yè)網(wǎng)站建設(shè)營銷網(wǎng)站建設(shè)商城網(wǎng)站建設(shè)手機(jī)網(wǎng)站建設(shè)小程序網(wǎng)站建設(shè)網(wǎng)站改版,從內(nèi)容策劃、視覺設(shè)計、底層架構(gòu)、網(wǎng)頁布局、功能開發(fā)迭代于一體的高端網(wǎng)站建設(shè)服務(wù)。1、 什么是裸設(shè)備(RAW DEVICE)
裸設(shè)備是指未創(chuàng)建文件系統(tǒng)的磁盤分區(qū)(raw partition)或邏輯卷(raw logical volume),應(yīng)用程序直接通過一
個字符設(shè)備驅(qū)動程序?qū)λM(jìn)行訪問。如何對設(shè)備上的數(shù)據(jù)讀寫決定于使用它的應(yīng)用程序。由于對裸設(shè)備的操作不通過UNIX的緩沖區(qū),數(shù)據(jù)在ORACLE的數(shù)據(jù)緩沖區(qū)(BUFFER CACHE)和磁盤之間直接傳遞,所以使用裸設(shè)備在一定程度上能夠提高I/O性能,適合I/O量大的系統(tǒng)。另外OPS/RAC (Oracle Parallel Server/Real Application Cluster)環(huán)境下,多個節(jié)點同時訪問同一個數(shù)據(jù)庫,所以CONTROL FILE、DATA FILE、REDO LOG都必須建在RAW DEVICE上。
2、裸設(shè)備的可用空間
不同的UNIX對裸設(shè)備的管理不完全相同,特別要注意的是某些UNIX在每個裸設(shè)備的頭部要保留一定的空間,應(yīng)用程序在使用裸設(shè)備時不可以覆蓋這一部分,否則會對裸設(shè)備造成損壞。所以一個裸設(shè)備的實際可用空間是分配給裸設(shè)備的空間再減去這部分操作系統(tǒng)保留空間。下面是常用UNIX的OS Reserved Size列表:
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上讀寫裸設(shè)備不能使用cp, cpio, tar等命令,必須用dd,下面是幾個dd常用參數(shù)的簡單說明,更詳細(xì)的信息請參考UNIX使用手冊或用命令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 在拷貝之前跳過n個輸入塊,缺省值是0
seek=n 在拷貝之前從輸出文件首部跳過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,否則語句將會失?。?nbsp; ORA-01119: error in creating database file '/dev/rlv_data' ORA-27042: not enough space on raw partition to fullfill request這個大值的計算方法如下:
8192k(RAW DEVICE SIZE) - 4k (OS_RESERVED_SIZE) - 8k (DB_BLOCK_SIZE) = 8180k
為什么還要減去一個DB_BLOCK_SIZE呢?這是因為ORACLE建立DATAFILE時,在命令中SIZE指定的大小之外,還要在文件頭另加一個BLOCK,叫作“Oracle OS Header Block”,里面保存有這個文件的邏輯塊大小和文件塊數(shù)等信息。這一點并不是在RAW DEVICE上建DATAFILE特有的,如果你在文件系統(tǒng)上建一個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個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,不能全部用來創(chuàng)建表空間(最少要留有2X8k)另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。