Oracle在linux上使用裸设备.docx

上传人:b****7 文档编号:11208879 上传时间:2023-02-25 格式:DOCX 页数:23 大小:21.74KB
下载 相关 举报
Oracle在linux上使用裸设备.docx_第1页
第1页 / 共23页
Oracle在linux上使用裸设备.docx_第2页
第2页 / 共23页
Oracle在linux上使用裸设备.docx_第3页
第3页 / 共23页
Oracle在linux上使用裸设备.docx_第4页
第4页 / 共23页
Oracle在linux上使用裸设备.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

Oracle在linux上使用裸设备.docx

《Oracle在linux上使用裸设备.docx》由会员分享,可在线阅读,更多相关《Oracle在linux上使用裸设备.docx(23页珍藏版)》请在冰豆网上搜索。

Oracle在linux上使用裸设备.docx

Oracle在linux上使用裸设备

 

Linux裸设备(RAW)

1、

裸设备的概念

 

裸设备,也叫裸分区(原始分区),是一种没有经过格式化,不被unix通过文件系统来读取的特殊字符设备。

本文收集裸设备和oracle问答20例。

1.什么叫做裸设备?

裸设备,也叫裸分区(原始分区),是一种没有经过格式化,不被unix通过文件系统来读取的特殊字符设备。

它由应用程序负责对它进行读写操作。

不经过文件系统的缓冲。

2.如何辨别裸设备?

在unix的/dev目录下,有许多文件,其中有两个大类:

字符设备文件和块设备文件。

字符设备特殊文件进行i/o操作不经过操作系统的缓冲区,而块设备特殊文件用来同外设进行定长的包传输。

字符特殊文件与外设进行i/o操作时每次只传输一个字符。

而对于块设备特殊文件来说,它用了cache机制,在外设和内存之间一次可以传送一整块数据。

裸设备使用字符特殊文件。

在/dev目录下,你可以看到许多这样的文件。

3.使用裸设备的好处

因为使用裸设备避免了再经过unix操作系统这一层,数据直接从disk到oracle进行传输,所以使用裸设备对于读写频繁的数据库应用来说,可以极大地提高数据库系统的性能。

当然,这是以磁盘的i/o非常大,磁盘i/o已经称为系统瓶颈的情况下才成立。

如果磁盘读写确实非常频繁,以至于磁盘读写成为系统瓶颈的情况成立,那么采用裸设备确实可以大大提高性能,最大甚至可以提高至40%,非常明显。

而且,由于使用的是原始分区,没有采用文件系统的管理方式,对于unix维护文件系统的开销也都没有了,比如不用再维护i-node,空闲块等,这也能够导致性能的提高。

4.如何决定是否应该使用裸设备?

判断是否使用裸设备要从以下方面进行考虑:

首先,数据库系统本身需要已经被比较好的经过了优化。

优化是一门很有些技术的话题,很难简单地讲述。

其次,使用unix命令来辨别是否存在磁盘读写瓶颈。

比如unix的vmstat,sar等命令都可以较好的进行鉴别。

如果决定采用裸设备,需要磁盘上还有空闲的分区。

否则,就要新添磁盘,或者对原有系统重新规划。

5.什么系统必须使用裸设备?

如果使用了oracle并行服务器选项,则必须采用裸设备来存放所有的数据文件,控制文件,重做日志文件。

只有把这些文件放到裸设备上,才能保证所有oracle实例都可以读取这个数据库的文件。

这是由unix操作系统的特性决定的。

还有一种情况是,如果你想使用异步i/o,那么在有些unix上也必须采用裸设备。

这个需要参考具体unix的相关文档。

6.能够使用一个磁盘的第一个分区作为裸设备吗?

可以,但是不推荐。

在unix的比较旧的版本是银行,磁盘的第一个分区常常包含这个磁盘的一些信息,以及逻辑卷的一些控制信息。

若这些部分被裸设备覆盖的话,磁盘就会变得不可识别,导致系统崩溃。

较新的unix版本不会发生这样的情况,因为它们采用了更复杂的技术来管理磁盘,逻辑卷的一些信息。

但是,除非很确信不要使用磁盘的第一个分区来作为裸设备。

7.我可以把整个裸设备都作为oracle的数据文件吗?

不行。

必须让数据文件的大小稍微小于该裸设备的实际大小。

至少要空出两个oracle块的大小来。

8.裸设备应该属于那个用户?

应该由root来创建裸设备,然后再分配给oracle用户以供使用。

同时还要把它归入oracle用户所在的那个组里边(通常都是dba)。

9.在创建数据文件时如何指定裸设备?

和普通文件没有什么太大的区别,一样都是在单引号里边写上裸设备的详细路径就可以了。

举一个例子:

要在创建一个表空间,使用两个裸设备,每个分别为30m的大小,oracle块的大小为4k,可以用下面的命令:

createtablespaceraw_ts

datafile'/dev/raw1'size30712k

datafile'/dev/raw2'size30712k;

10.oracle块的大小和裸设备有什么关系吗?

oracle块必须是裸设备上物理块大小的倍数。

11.如何在裸设备上进行备份?

在裸设备上,不能使用unix实用程序来进行备份,唯一的办法是使用最基本的unix命令:

dd来进行备份。

比如:

ddif=/dev/raw1of=/dev/rmt0bs=16k。

dd的具体语法可以参考unix手册,或者联机帮助。

你也可以先用dd把裸设备上的数据文件备份到磁盘上,然后再利用unix实用程序进一步处理。

12.如果我没有使用oracle并行服务器选项,我可以在数据库上让一部分数据文件使用文件系统,另一部分使用裸设备吗?

可以。

但是这样的话,会使备份过程更加复杂。

13.我应该把联机重做日志文件放到裸设备上吗?

这是一个极好的选择。

联机重做日志文件是写操作非常频繁的文件,放到裸设备上非常合适。

如果你使用了并行服务器选项,那么联机重做日志文件必须放到裸设备上面。

14.可以把归档日志文件放到裸设备上吗?

不行。

归档日志文件必须放到常规的unix文件系统上面,或者直接放到磁带上面去。

15.我可以在裸设备上边放置多个数据文件吗?

不行。

所以你必须在设置裸设备时非常小心。

太小的话,会导致空间很快用完,太大的话,空间就白白浪费了。

16.因应该把几个裸设备放到同一个物理磁盘上吗?

这样做不好。

因为使用裸设备就是为了提高磁盘读写速度。

而把多个裸设备放到同一个物理磁盘上会导致读写竞争,这样对于提高i/o速度是不利的。

应该尽量分散裸设备到不同的物理磁盘上,最好是分散到不同的磁盘控制器上。

这是最佳选择。

17.需要把所有裸设备都定义成同样的大小吗?

这不是必须得,但是划分成同样的大小对于管理数据库比较有利。

18.为了在unix上使用裸设备,我需要改变unix核心参数吗?

不需要。

但可以选择减小缓冲区的大小,如果没有别的应用也在同一台unix机器上运行。

因为运用了裸设备以后,不再使用unix的系统缓冲区。

19.为了提高读写速度,在操作系统级别上,还有什么办法可以采取吗?

使用raid(廉价冗余磁盘阵列)也是非常有效的办法,尤其实那种读写非常频繁的系统。

20.在考虑了以上所有方面后,还能有什么办法可以提高性能的吗?

这就需要对oracle进行优化,并且购买更多的磁盘和磁盘控制器,来分散i/o到不同的磁盘上。

 

源文档<

 

2、

Linux裸设备管理

 

1、什么是Linux裸设备?

字符设备?

块设备?

 

裸设备:

也叫裸分区(原始分区),是一种没有经过格式化,不被Unix/Linux通过文件系统来读取的特殊字符设备。

裸设备可以绑定一个分区,也可以绑定一个磁盘。

 

字符设备:

对字符设备的读写不需要通过OS的buffer。

它不可被文件系统mount。

 

块设备:

对块设备的读写需要通过OS的buffer,它可以被mount到文件系统中。

 

2、一个系统可以有多少个裸设备?

 

这个与linux的版本相关,在旧版本中,最多只可以有256个裸设备,Linux4下做多可以绑定8192个裸设备。

 

但是在linux下,最多只能有255个分区,所以,如果用裸设备绑定分区,最多只能绑定255个裸设备。

 

如果是用lvm,则没有这个限制。

 

3、Linux下单个磁盘最多可以有多少个分区?

 

15个。

3个主分区+1个扩展分区+11个逻辑分区。

 

建议的分区方法是:

先分3个主分区,第四个分区为扩展分区,然后在扩展分区中再分成11个逻辑分区。

 

注意,裸设备不要绑定在扩展分区上。

 

4、linux下是否需要绑定裸设备?

unix呢?

 

linux下如果需要使用裸设备,则需要手工进行绑定。

 

unix下则不用。

 

因为Unix中每一个块设备都会有一个对应的字符设备用于非缓存(unbuffered)I/O,这就是他对应的裸设备了。

 

而Linux中rawio的则实现了一套非绑定(unbound)的裸设备/dev/rawN或者/dev/raw/rawN和一个控制设备/dev/rawct用来把他们绑定到块设备上。

所以当需要使用一个裸设备的时候,就需要把他和一个真实存在的块设备对应起来,这一个步骤实际上就是完成了Unix里的自动对应一个非缓存字符设备。

 

5、linux如何绑定裸设备?

 

两种方式:

 

1)命令绑定

 

raw/dev/raw/raw[n]/dev/xxx

 

其中n的范围是0-8191。

raw目录不存在可以创建。

 

执行这个命令,就会在/dev/raw下生成一个对应的raw[n]文件

 

用命令方式绑定裸设备在系统重启后会失效。

 

2)修改文件

 

修改/etc/sysconfig/rawdevices文件如下,以开机时自动加载裸设备,如:

 

/dev/raw/raw1/dev/sdb1

 

这种方式是通过启动服务的方式来绑定裸设备。

 

也可以把这个命令写在/etc/rc.local上,使每次启动都执行这些命令。

 

6、如何把裸设备作为oracle数据文件?

有什么需要注意的?

 

1)绑定裸设备

 

参考上文

 

2)改变裸设备属主

 

两种方法:

 

.把命令卸载/etc/rc.local上

 

chownoracle:

oinstall/dev/raw/raw1

 

.修改/etc/udev/permissions.d/50-udev.permissions文件

 

将/etc/udev/permissions.d/50-udev.permissions的113行

 

 

raw/*:

root:

disk:

0660

 

修改为

 

raw/*:

oracle:

oinstall:

0660

 

这个的意思是修改裸设备的默认属主为oracle:

oinstall,默认的mode是0660。

 

如果是用lvm,也需要把逻辑卷绑定到裸设备上,过程和绑定到普通分区类似。

 

7、使用裸设备作为oracle数据文件有什么需要注意的?

 

使用裸设备作为oracle的数据文件必须注意以下几点:

 

1)一个裸设备只能放置一个数据文件

 

2)数据文件的大小不能超过裸设备的大小

 

如果是日志文件,则裸设备最大可用大小=裸设备对应分区大小-1*512(保留一个redolock)

 

如果是数据文件,则裸设备最大可用大小=裸设备对应分区大小-2*db_block_size(保留两个block)

 

为了简单起见,对所有的文件设置称比裸设备小1M即可。

 

3)数据文件最好不要设置称自动扩展,如果设置称自动扩展,一定要把maxsize设置设置为比裸设备小

 

8、是否可以直接用逻辑卷作为oracle数据文件?

 

linux下oracle不能直接把逻辑卷作为裸设备,也要进行绑定。

unix下就不需要。

 

9、如何知道当前绑定了什么裸设备?

 

raw-qa命令列出当前绑定的所有裸设备。

 

10、如何知道某个裸设备的大小

 

比较笨的办法是,找出看裸设备对应的是那个实际的块设备,然后用fdisk-l/dev/[h,s]dXN看那个块设备的大小就好了。

 

比较简单的办法是用blockdev命令来计算,如:

 

#blockdev--getsize/dev/raw/raw1

 

11718750

 

11718750表示有多少OSBLIOCK。

 

一般一个OSBLOCK大小是512字节,所以11718750*512/1024/1024/1024=5722(m)就是裸设备的大小。

 

 

3、

LinuxLVM裸设备

 

一:

这部分是网上搜到的,扫盲,我的操作在第二部分。

1.创建pv

pvcreate-M2--metadatasize100M/dev/sda

pvcreate-M2--metadatasize100M/dev/sdb1

pvcreate-M2--metadatasize100M/dev/sdb2

pvcreate-M2--metadatasize100M/dev/sdc

物理卷可以是整个硬盘(lun),也可以是硬盘上的一个分区

 

补充:

元数据(MetaData)是关于数据仓库的数据,指在数据仓库建设过程中所产生的有关数据源定义,目标定义,转换规则等相关的关键数据。

元数据(metadata),关于数据库中表的定义、字段的定义,元组的定义等等,是数据库中最基础的描述,所以称之为元数据。

又称为数据目录,关于数据库的数据库。

一个数据存储在共享卷里时,我们可以直接看到它是一个文档、或图片、或视频、或数据库文件,这些都是数据本身。

然而在存储该数据时,文件系统还会产生很多无法直接看到的,与该数据有关的数据,如文件系统中文件检索表,路径信息、地址信息等,而这些数据就称之为文档、图片、视频等在共享卷中的元数据。

SAN网络存储共享软件管理的主要内容就是元数据,控制元数据在多主机之间的传输。

我们可以在很多地方看到元数据的存储,网上DOWN下来的电影本身一个视频文件数据,而点击右键查到看的视频文件属性,如存储路径、码率、文件大小、及导演、演员、制作单位等就是视频文件的元数据。

-M2指定metadata使用lvm2格式?

 

2.创建vg

vgcreatevg_db/dev/sda/dev/sdb1/dev/sdb2/dev/sdc-s128m

-s,--physicalextentsizePhysicalExtentSize[kKmMgGtT]

Setsthephysicalextentsizeonphysicalvolumesofthisvolumegroup.

 

 

3.创建lv

lvcreate-L2048m-i4-I64kvg_db-nlv_2g_001

lvcreate-L2048m-i4-I64kvg_db-nlv_2g_002

 

4.绑定

raw/dev/raw/raw1/dev/mapper/vg_db-lv_2g_001

raw/dev/raw/raw2/dev/mapper/vg_db-lv_2g_002

要注意的是lv的命名方式,命名方式分解如下:

/dev/mapper/vgname'-'lvname.

 

使用raw命令绑定的裸设备在重启后会失效。

*对于AS4

所以需要修改/etc/sysconfig/rawdevices配置文件,在文件中加入如下内容(每个裸设备一行):

/dev/raw/raw1/dev/mapper/vg_db-lv_2g_001

/dev/raw/raw2/dev/mapper/vg_db-lv_2g_002

执行/etc/init.d/rawdevicesrestart使配置文件中的裸设备生效

执行/sbin/chkconfigrawdeviceson保证机器启动的时候裸设备能够加载

*对于AS5

raw设备映射

raw设备接口在红帽企业Linux5里已经被取消了;raw设备映射现在通过udev规则进行配置。

要配置raw设备映射,可以在/etc/udev/rules.d/60-raw.rules里加入以下格式的条目:

设备名称:

ACTION=="add",KERNEL="",RUN+="raw/dev/raw/rawX%N"

主/次号码:

ACTION=="add",ENV{MAJOR}="A",ENV{MINOR}="B",RUN+="raw/dev/raw/rawX%M%m"

用你需要绑定的设备名称替换(如:

/dev/sda1)。

"A"和"B"是设备的主/次号码,X是系统使用的raw设备号码。

 

另外关于此处的配置有一点非常奇怪,我看到redhat官方文档中关于raw.rule的示例中说KERNEL==..或ENV{MAJOR}...只需要任意配置一个就可以,但我在具体配置过程中发现百试不爽,我尝试了各种组合发现都不生效,必须二者同时配置才可以

 

 

 

5.授权

chown-Roracle.dba/dev/mapper

 

修改配置文件/etc/udev/permissions.d/50-udev.permissions

注释掉raw/*:

root:

disk:

0660

添加新行raw/*:

oracle:

dba:

0660

 

6.链接(可选)

ln-s/dev/raw/raw1/oradata/ningoo/system01.dbf

ln-s/dev/raw/raw2/oradata/ningoo/undo01.dbf

 

 

 

二我的操作

注:

查看pv,vg,lv命令:

pvdisplay,vgdisplay,lvdisplay

创建pv

[root@RHEL5opt]#pvcreatepvcreate-M2--metadatasize100M/dev/hdc

Devicepvcreatenotfound(orignoredbyfiltering).

Physicalvolume"/dev/hdc"successfullycreated

创建vg

[root@RHEL5opt]#vgcreatevg_oradata/dev/hdc-s128m

Volumegroup"vg_oradata"successfullycreated

创建LV

[root@RHEL5opt]#lvcreate-L384m-I64kvg_oradata-ncontrol_1

Ignoringstripesizeargumentwithsinglestripe

Logicalvolume"control_1"created

另外还需要创建的裸设备有:

lvcreate-L384M-ncontrol_2-I64kvg_oradata

lvcreate-L384M-ncontrol_3-I64kvg_oradata

lvcreate-L128M-nredo01_1-I64kvg_oradata

lvcreate-L128M-nredo01_2-I64kvg_oradata

lvcreate-L128M-nredo02_1-I64kvg_oradata

lvcreate-L128M-nredo02_2-I64kvg_oradata

lvcreate-L128M-nredo03_1-I64kvg_oradata

lvcreate-L128M-nredo03_2-I64kvg_oradata

lvcreate-L1024M-nsystem-I64kvg_oradata

lvcreate-L1024M-nsysaux-I64kvg_oradata

lvcreate-L1024M-ntemp-I64kvg_oradata

lvcreate-L2048M-nundodbs-I64kvg_oradata

lvcreate-L1024M-ntools-I64kvg_oradata

lvcreate-L3072M-ndata-I64kvg_oradata

绑定

raw/dev/raw/raw1/dev/mapper/vg_oradata-control_1

raw/dev/raw/raw2/dev/mapper/vg_oradata-control_2

raw/dev/raw/raw3/dev/mapper/vg_oradata-control_3

raw/dev/raw/raw4/dev/mapper/vg_oradata-redo01_1

raw/dev/raw/raw5/dev/mapper/vg_oradata-redo01_2

raw/dev/raw/raw6/dev/mapper/vg_oradata-redo02_1

raw/dev/raw/raw7/dev/mapper/vg_oradata-redo02_2

raw/dev/raw/raw8/dev/mapper/vg_oradata-redo03_1

raw/dev/raw/raw9/dev/mapper/vg_oradata-redo03_2

raw/dev/raw/raw10/dev/mapper/vg_oradata-system

raw/dev/raw/raw11/dev/mapper/vg_oradata-sysaux

raw/dev/raw/raw12/dev/mapper/vg_oradata-temp

raw/dev/raw/raw13/dev/mapper/vg_oradata-undodbs

raw/dev/raw/raw14/dev/mapper/vg_oradata-tools

raw/dev/raw/raw15/dev/mapper/vg_oradata-data

 

使用裸设备作为oracle数据文件有什么需要注意的?

使用裸设备作为oracle的数据文件必须注意以下几点:

1)一个裸设备只能放置一个数据文件

2)数据文件的大小不能超过裸设备的大小

如果是日志文件,则裸设备最大可用大小=裸设备对应分区大小-1*512(保留一个redolock)

如果是数据文件,则裸设备最大可用大小=裸设备对应分区大小-2*db_block_size(保留两个block)

为了简单起见,对所有的文件设置称比裸设备小1M即可。

3)数据文件最好不要设置称自动扩展,如果设置称自动扩展,一定要把maxsize设置设置为比裸设备小

 

如创建错了,删除!

lvremove/dev/vg_oradata/lv_10g_02

绑定

[root@RHEL5opt]#raw/dev/raw/raw1/dev/mapper/vg_oradata-lv_10g_01

/dev/raw/raw1:

boundtomajor253,minor3

[root@RHEL5opt]#raw/dev/raw/raw2/dev/mapper/vg_oradata-lv_10g_02

/dev/raw/raw2:

boundtomajor253,minor2

避免重起失效:

编辑/etc/udev/rules.d/60-raw.rules,添加

ACTION=="add",KERNEL=="/dev/mapper/vg_oradata-lv_10g_01",RUN+="/bin/raw/dev/raw/raw1

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1