通过asm来存储数据库文件,在linux下可以通过asmlib的方式来管理块设备,也可以直接使用裸设备来建立asm磁盘。在asmlib方式下,磁盘设备启动顺序和名称的改变不会影响到asm的使用,但如果直接使用裸设备会怎么样那?我们知道asm会在磁盘中存储与asm有关的元数据,通过这些元数据asm可以了解磁盘的相关信息,因此理论上裸设备名称的改变不会影响asm的正常使用。下面,通过实验来验证一下。
在centos 6.4下安装oracle 11gr2(x64)
oracle 11gr2 在vmware虚拟机中安装步骤
debian 下 安装 oracle 11g xe r2
oracle 11g从入门到精通 pdf+光盘源代码
rhel6 asm方式安装oracle 11g r2
oracle 10g 手工创建asm数据库
oracle 10g r2创建asm实例step by step
首先看以下,裸设备的配置文件
node1
[root@node1 ~]# cat /etc/udev/rules.d/60-raw.rules # enter raw device bindings here. # # an example would be: # action==add, kernel==sda, run+=/bin/raw /dev/raw/raw1 %n # to bind /dev/raw/raw1 to /dev/sda, or # action==add, env{major}==8, env{minor}==1, run+=/bin/raw /dev/raw/raw2 %m %m # to bind /dev/raw/raw2 to the device with major 8, minor 1.
action==add, kernel==sdb1, run+=/bin/raw /dev/raw/raw1 %n action==add, kernel==sdb2, run+=/bin/raw /dev/raw/raw2 %n action==add, kernel==sdb5, run+=/bin/raw /dev/raw/raw3 %n action==add, kernel==sdb6, run+=/bin/raw /dev/raw/raw4 %n action==add, kernel==sdb7, run+=/bin/raw /dev/raw/raw5 %n action==add, kernel==sdb8, run+=/bin/raw /dev/raw/raw6 %n action==add, kernel==sdb9, run+=/bin/raw /dev/raw/raw7 %n
node2:
[root@node2 rules.d]# cat 60-raw.rules # enter raw device bindings here. # # an example would be: # action==add, kernel==sda, run+=/bin/raw /dev/raw/raw1 %n # to bind /dev/raw/raw1 to /dev/sda, or # action==add, env{major}==8, env{minor}==1, run+=/bin/raw /dev/raw/raw2 %m %m # to bind /dev/raw/raw2 to the device with major 8, minor 1.
action==add, kernel==sdb1, run+=/bin/raw /dev/raw/raw1 %n action==add, kernel==sdb2, run+=/bin/raw /dev/raw/raw2 %n action==add, kernel==sdb5, run+=/bin/raw /dev/raw/raw3 %n action==add, kernel==sdb6, run+=/bin/raw /dev/raw/raw4 %n action==add, kernel==sdb7, run+=/bin/raw /dev/raw/raw5 %n action==add, kernel==sdb8, run+=/bin/raw /dev/raw/raw6 %n action==add, kernel==sdb9, run+=/bin/raw /dev/raw/raw7 %n
asm下的磁盘信息如下:
[oracle@node1 ~]$ export oracle_sid=+asm1 [oracle@node1 ~]$ sqlplus / as sysdba
sql*plus: release 10.2.0.5.0 - production on sun aug 31 12:55:25 2014
copyright (c) 1982, 2010, oracle. all rights reserved.
connected to: oracle database 10g enterprise edition release 10.2.0.5.0 - 64bit production with the partitioning, real application clusters, olap, data mining and real application testing options
sql> col name for a30 sql> col label for a30 sql> col path for a30 sql> set linesize 200 sql> /
name label path ------------------------------ ------------------------------ ------------------------------ dg1_0000 /dev/raw/raw3 dg2_0000 /dev/raw/raw4 dg3_0000 /dev/raw/raw5 dg3_0001 /dev/raw/raw6 dg4_0000 /dev/raw/raw7 /dev/raw/raw2 /dev/raw/raw1
7 rows selected.
sql> ho ssh node2 last login: sat aug 30 17:56:54 2014 from node1 [oracle@node2 ~]$ export oracle_sid=+asm2 [oracle@node2 ~]$ sqlplus / as sysdba
sql*plus: release 10.2.0.5.0 - production on sun aug 31 12:56:38 2014
copyright (c) 1982, 2010, oracle. all rights reserved.
connected to: oracle database 10g enterprise edition release 10.2.0.5.0 - 64bit production with the partitioning, real application clusters, olap, data mining and real application testing options
sql> col name for a30 sql> col label for a30 sql> col path for a30 sql> set linesize 200 sql> select name,label,path from v$asm_disk order by 1;
name label path ------------------------------ ------------------------------ ------------------------------ dg1_0000 /dev/raw/raw3 dg2_0000 /dev/raw/raw4 dg3_0000 /dev/raw/raw5 dg3_0001 /dev/raw/raw6 dg4_0000 /dev/raw/raw7 /dev/raw/raw2 /dev/raw/raw1
7 rows selected.
创建测试表:
sql> select file_name,tablespace_name from dba_data_files;
file_name tablespace_name -------------------------------------------- ------------------------------ +dg4/easy/datafile/system.272.856543875 system +dg4/easy/datafile/undotbs1.273.856543885 undotbs1 +dg4/easy/datafile/sysaux.274.856543891 sysaux +dg4/easy/datafile/undotbs2.276.856543901 undotbs2 +dg4/easy/datafile/users.277.856543905 users
sql> create table t1 (id number,name varchar2(20)) tablespace users;
table created.
sql> insert into t1 values(1,111);
1 row created.
sql> insert into t1 select * from t1;
1 row created.
sql> /
2 rows created.
sql> /
4 rows created.
sql> /
8 rows created.
sql> /
16 rows created.
sql> /
32 rows created.
sql> /
64 rows created.
sql> commit;
commit complete.
sql> select count(*) from t1;
count(*) ---------- 128
sql> update t1 set id=rownum,name=rownum;
128 rows updated.
sql> commit;
commit complete.
修改裸设备的路径名称并重起集群
