Username: Password:

裸设备和Oracle问答20例-数据库专栏,ORACLE
来源:作者: 发布时间:2007-12-25 13:43:32

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,能够用下面的命令:
  create tablespace raw_ts
  datafile /dev/raw1 size 30712k
  datafile /dev/raw2 size 30712k;

10.oracle块的大小和裸设备有什么关系吗?
  oracle会必须是裸设备上物理块大小的倍数。

11.怎样在裸设备上进行备份?
  在裸设备上,不能使用unix实用程式来进行备份,唯一的办法是使用最基本的unix命令:dd来进行备份。比如:dd if=/dev/raw1 of=/dev/rmt0 bs=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到不同的磁盘上。


喜欢本文,那就收藏到:

    Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪ViVi 365Key网摘 天极网摘 和讯网摘 博拉网 POCO网摘 添加到饭否 QQ书签 Digbuzz我挖网
相关评论  我也要评论
还没有关于此文章的相关评论!
  • 昵称: (为空则显示guest)
  • 评论分数: ★ ★ ★★★ ★★★★ ★★★★★
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
  • 导航
    赞助商
    文章类别
    订阅