分类: Oracle
2013-08-16 14:57:00
创建自动存储管理磁盘组
启动自动存储管理实例与启动数据库实例非常相似。不过不是使用“SYSDBA”,而是
使用“SYASM”。
ORACLE_SID=+ASM
SQLPLUS /NOLOG
SQL> connect SYS as SYSASM
Enter password: sys_password
Connected to an idle instance.
SQL> STARTUP
ASM instance started
实例的关闭也与数据库实例关闭类似,但是“IMMEDIATE”从句会检查是否仍然存在
连接到自动存储管理实例的数据库,如果有则会返回一个错误。任何在关闭过程中连接到
自动存储管理实例的数据库都会被关闭:
SQL> SHUTDOWN NORMALIMMEDIATEABORT
“DISKGROUP”的冗余类型是在组创建的时候指定的,创建以后不能修改。然而,新的组可以使用不同的冗余类型创建,然后迁移。有三种冗余类型:EXTERNAL,NORMAL 和HIGH。在“EXTERNAL”类型中,自动存储管理不提供任何冗余,它假定外部源就像是一个提供了容错机制的存储阵列。“NORMAL”类型需要两个组来支持故障切换,可以处理一个组出现故障的情况。“HIGH”类型冗余提供了三种故障切换方式,需要三个组。“NORMAL” 冗余和“HIGH”冗余也消除了自动存储管理磁盘的单点故障。即使是大一点的数据库,较少数量的磁盘组一般也就能满足了。
创建磁盘组
接下来将给出采用外部冗余或者正常冗余创建磁盘组的命令。一旦创建了组,就可以用他们来创建表空间。
一步一步跟我学使用如下命令创建磁盘组:
SQL> create diskgroup DGEXT1 external redundancy disk '/dev/rdsk1/disk1';
SQL> create diskgroup DGNORM1 normal redundancy disk
FAILGROUP controller1 DISK
'/dev/rdsk/disk1' name disk1,
'/dev/rdsk/disk2' name disk2
FAILGROUP controller2 DISK
'/dev/rdsk/disk3' name disk3,
'/dev/rdsk/disk4' name disk4;
现在你已经创建了磁盘组,你可以通过查询视图,查看磁盘和磁盘组信息,来验证它们是否已经被创建:
V$ASM_DISKS 可用磁盘在参数 ASM_DISKSTRING 中反射的值;
V$ASM_DISKGROUPS 关于冗余类型的可用磁盘组及其明细;
select name, state from v$asm_diskgroups;
NAME STATE
---------------------- -------------------DGEXT1 MOUNTED
DGNORM1 MOUNTED
给磁盘组添加磁盘可以根据数据库可能增长的空间需要进行:
alter DISKGROUP DGNORM1 add DISK
'/dev/rdsk/disk5' name disk5,
'/dev/rdsk/disk6' name disk6;
自动存储管理已启动并且磁盘组创建以后,创建表空间就非常简单了,一句话的事“CREATE TABLESPACE ts_data1”,或者磁盘组名称可以用数据文件名称替代,就像在非自动存储管理数据库中使用的一样:
Create tablespace DATATBS1 datafile '+DGNORM1' size 1024M;