讲了关于如何在NT 2000上使用裸设备的用法

  • 格式:doc
  • 大小:308.50 KB
  • 文档页数:6

如何在Win2000上创建一个裸设备,给Oracle使用:

在大型的UNIX机器上,很多都使用裸设备来提高系统的读写性能。其实不仅在UNIX上面可以使用裸设备,在NT上同样可以。下面用实例来讲述如何创建一个裸设备,并把Oracle的数据文件或者重做日志文件放到这个裸设备上。

但是使用裸设备也不是没有代价的。使用裸设备会带来维护上的不方便,比如备份和恢复等。每个裸设备都对应于一个磁盘分区,放置一个单独的Oracle数据文件或者重做日志文件。在NT上,就对应于一个驱动器盘符。

如何在Win2000上创建一个裸分区:

1.首先在Win2000上安装Oracle Server。然后创建一个数据库。这个数据库用来待会儿做测试。

进入Win2000的控制面板的计算机管理选项,打开“存储”选项,再打开其中的“磁盘管理”,呈现下图样子:

这里已经创建了一个裸设备,就是G盘。大小为102M。

接着再示范如何创建一个裸分区:

首先要保证磁盘上还有空余的没有分区的空间,如上图,有可用空间,可用空间是绿色表示的。如果没有的话,需要删除一些现有分区来腾出空间。

接着用右键单击可用空间部分,弹出如图的对话框,选择“创建逻辑驱动器”:

然后打开如下图对话框:

单击“下一步”,

继续向下进行:

这里需要指定这个分区的大小。

记住,一个裸设备只能分配给一个数据文件或者联机重做日志文件,因此,要选择合适的大小。太小不能创建分区,太大浪费磁盘空间。我希望这个表空间的大小为100M,就把磁盘空间大小设定为101M。之所以多加1M,是因为裸设备不能使用全部磁盘空间,需要留出1M的空间用户额外的管理上面的开销。(但是好像Win2000已经替你考虑了这个问题,后面自动给这个分区分配了102M)

继续单击“下一步”,打开下一个窗口,这里需要为这个裸设备指定一个文件名:

我们指定她为J盘。

下面这一步非常重要,这才是裸设备和普通逻辑驱动器的最最关键的区别;

如果要指定为裸设备,就必须把它保留为原始分区。不能格式化。

单击下一步完成裸设备的创建:

我们注意到,NT自动为这个裸分区加上了1M的额外空间,用来为裸设备提供支持,请参考下面这幅图:

创建了裸设备之后,我们开始在Oracle里边使用这个裸设备:

SQL> create tablespace rawtablespace

2 datafile '\\.\j:' size 101m;

Tablespace created.

然后就可以往这个表空间上面创建表、索引了。

SQL> create table testabc (name char(8)) tablespace rawtablespace ;

Table created.

SQL> create tablespace rawtest datafile '\\.\g:' size 100m;

Tablespace created.

SQL> alter user chaos default tablespace rawtest;

User altered.

SQL> show user

USER is "CHAOS"

SQL> create table table_on_raw file

2

SQL> create table table_on_raw (name char(8), age number);

Table created.

SQL> drop tablespace rawtest including contents;

Tablespace dropped.

这里,如果指定的大小超过了实际的分区大小的话,会出错。

SQL> create tablespace rawtest datafile '\\.\g:' size 105m;

create tablespace rawtest datafile '\\.\g:' size 105m

*

ERROR at line 1:

ORA-19505: failed to identify file "\\.\g:"

ORA-27047: unable to read the header block of file

OSD-04006: ReadFile() failure, unable to read from file

O/S-Error: (OS 87) 参数错误。

SQL> select default_tablespace from dba_users where username='CHAOS';

DEFAULT_TABLESPACE

------------------------------------------------------------

RAWTEST

SQL> show user

USER is "CHAOS"

SQL> create table testtable (name char(8));

create table testtable (name char(8))

*

ERROR at line 1:

ORA-00959: tablespace 'RAWTEST' does not exist

SQL> create tablespace rawtest datafile '\\.\g:' size 99m;

Tablespace created.

SQL> create table testtable (name char(8));

Table created.