OracleStudy--RAWDevice在Oracle下的应用-创新互联

Oracle Study--RAW Device在Oracle下的应用

坚守“ 做人真诚 · 做事靠谱 · 口碑至上 · 高效敬业 ”的价值观,专业网站建设服务10余年为成都轻质隔墙板小微创业公司专业提供成都企业网站建设营销网站建设商城网站建设手机网站建设小程序网站建设网站改版,从内容策划、视觉设计、底层架构、网页布局、功能开发迭代于一体的高端网站建设服务。

1、 什么是裸设备(RAW DEVICE)
    裸设备是指未创建文件系统的磁盘分区(raw partition)或逻辑卷(raw logical volume),应用程序直接通过一
个字符设备驱动程序对它进行访问。如何对设备上的数据读写决定于使用它的应用程序。由于对裸设备的操作不通过UNIX的缓冲区,数据在ORACLE的数据缓冲区(BUFFER CACHE)和磁盘之间直接传递,所以使用裸设备在一定程度上能够提高I/O性能,适合I/O量大的系统。另外OPS/RAC (Oracle Parallel Server/Real Application Cluster)环境下,多个节点同时访问同一个数据库,所以CONTROL FILE、DATA FILE、REDO LOG都必须建在RAW DEVICE上。
2、裸设备的可用空间
   不同的UNIX对裸设备的管理不完全相同,特别要注意的是某些UNIX在每个裸设备的头部要保留一定的空间,应用程序在使用裸设备时不可以覆盖这一部分,否则会对裸设备造成损坏。所以一个裸设备的实际可用空间是分配给裸设备的空间再减去这部分操作系统保留空间。下面是常用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上读写裸设备不能使用cp, cpio, tar等命令,必须用dd,下面是几个dd常用参数的简单说明,更详细的信息请参考UNIX使用手册或用命令man dd。
dd [ operand=value ... ]
if=file 指定输入文件,缺省值是标准输入
of=file 指定输出文件,缺省值是标准输出
bs=n 设置输入和输出的块大小为n字节,也可以用“k”作单位
skip=n 在拷贝之前跳过n个输入块,缺省值是0
seek=n 在拷贝之前从输出文件首部跳过n块,缺省值是0
count=n 指定拷贝的块数,缺省拷贝到输入文件结束 

4、在raw上创建数据文件可用空间

SQL> CREATE TABLESPACE ts_test DATAFILE '/dev/rlv_data' SIZE 8180k;  SIZE指定的数值必须小于或等于8180k,否则语句将会失败:  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”,里面保存有这个文件的逻辑块大小和文件块数等信息。这一点并不是在RAW DEVICE上建DATAFILE特有的,如果你在文件系统上建一个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  创建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 修改设备属性 [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 创建表空间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,不能全部用来创建表空间(最少要留有2X8k)

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网页名称:OracleStudy--RAWDevice在Oracle下的应用-创新互联
浏览地址:http://hbruida.cn/article/dgjeso.html