时间:2021-07-01 10:21:17 帮助过:40人阅读
ASM:AutomaticStorageManagement 是Oracle主推的一种面向Oracle的存储解决方案,ASM和RDBMS非常相,ASM也是由实例和文件组成,也可以通过sqlplus工具来维护。 ASM实例的创建和删除也可以用DBCA这个命令来操作 。在dbca的第一个界面选择 配置自动存储管理 就
是Oracle 主推的一种面向Oracle的存储解决方案, ASM 和 RDBMS 非常相似,ASM 也是由实例和文件组成, 也可以通过sqlplus 工具来维护。
ASM 实例的创建和删除也可以用DBCA 这个命令来操作。在dbca 的第一个界面选择配置自动存储管理就可以了。 ASM 实例需要CSS 进程, 如果是非RAC 环境, 在启动ASM 实例之前会提示用脚本
$ORACLE_HOME/bin/localconfig add 启动CSS。
ASM 实例的SGA包括Buffer Cache, Share Pool, Large Pool等。 需要注意的是Share Pool, 因为Extent Map 要放在这部分的内存中,需要更具数据量来估计Extent Map 的大小做相应的调整。
Extent Map 的大小可以根据所有文件大小的和来估算,使用下面的语句来计算所有文件和:
Select sum(bytes)/(1024*1024*1024) from v$datafile;
Select sum(bytes)/(1024*1024*1024) from v$logfile a, v$log b where a.Group#=b.Group#;
Select sum(bytes)/(1024*1024*1024) from v$tempfile where status='ONLINE';
这3个sum 的总和对应着数据库存放ASM中所有文件大小总和, 对于使用External Redundancy 的磁盘组, 每100G 需要1MB 的Extent Map, 根据这个比例计算Extent Map 所需要的空间,在加上额外的2MB就可以了。 在实际工作中一般不需要考虑ASM SGA的配置, 使用Oracle 提供的缺省值就可以了。
ASM 实例比RDBMS 实例多2个进程: RBAL 和 ABRn。
RBAL: 这个进程也叫Rebalancer进程, 负责规划ASM 磁盘组的Reblance活动。
ABRn:是RBAL进程的子进程,这个进程在数量上可以有多个, n从1~9, 这组进程负责真正完成Reblance活动。
使用ASM 作为存储的RDBMS 实例也会多出2个进程: RBAL 和 ASMB
RBAL: 这个进程的主要功能是打开每个磁盘的所有磁盘和数据的Rebalance。
ASMB: 这个进程作为ASM 实例和数据库实例之间的信息通道。 这个进程负责与ASM 实例的通信, 它先利用Diskgroup Name 从CSS 获得管理该Diskgroup 的ASM 实例的连接串, 然后建立到ASM 的持久连接, 两个实例之间通过这条连接定期交换信息,同时也是一种心跳机制。
RDBMS 实例要想使用ASM 作为存储, RDBMS 实例必须在启动时从ASM 实例获得Extent Map, 以后发生磁盘组的维护操作, ASM 实例还要把Extent Map的更新信息通知给RDBMS 实例, 这2个实例间的信息交换就是由ASMB 进程完成的。 这也就为什么: ASM 实例必须要先于数据库实例启动,和数据库实例同步运行,迟于数据库实例关闭。
注意: ASM 实例和数据库实例的关系可以是1:1, 也可以是1:n,即一个ASM实例对应多个库。如果是1:n, 最好为ASM 安装单独的ASM_HOME。
ASMLib和udev都解决了设备名固定的问题。在linux中,设备的检测和枚举的顺序并不是固定的。这和在Solaris中不一样,举个例子,除非一个磁盘在阵列中从物理上移动了,否则设备名(例如c0t0d1p1)不会改变。没做多路径的存储阵列的重新配置在linux中会有很大的问题:一个设备原先在操作系统中显示为/dev/sda可能会在重启后被重新映射为/dev/sdg,仅仅是因为操作系统检测到它比上一次启动时晚了一点。基于设备名的裸设备映射注定是要失败的。
首先看看udev的解决方法。一个SCSI设备的world-wide-ID(WWID)不会发生改变,在udev中利用了这一点制定一个规则,这个规则创建一个映射,它定义设备/dev/raw/raw1总是指向SCSI ID是xxxx的LUN中。udev的主要问题是,它的配置不够直观和易用。由于udev不能复制配置,在集群中的每个节点上管理员都需要去维护udev配置。(我们可以使用udevinfo -q path -n /dev/sda1 来查看/dev/sda1对应的udev设备名,该路径在/sys下)
配置了多路径的存储则不会有这个问题,因为另一个软件层(比如,devicemapper-multipath包)或供货商指定的软件会创建一个逻辑设备。
ASMLib提供了另一种方式。ASMLib工具可以在http://oss.oracle.com中免费下载,它使ASM磁盘的管理变得非常简单。ASMLib由3个RPM包组成:一个内核模块、实际ASMLib和支持工具。在使用一个LUN作为ASM disk前,你可以使用ASMLib工具通过将元数据信息添加到磁盘头部来标记它,然后ASMLib就可以识别出这个新的LUN,将其作为添加到ASM disk group的一个可能的候选。重启的时候,ASMLib将扫描磁盘头部的信息来识别ASM disk,不管物理设备名在启动过程中变成了什么。它保证了设备名的稳定性,而且成本非常低。ASMLib是一个内核模块,在内部分配自己的内存结构,它可以在单路径和多路径下配置。
ASM 可以使用裸设备 或者ASMLib 方式或者UDEV绑定, 因为裸设别的维护比较复杂,在此只讲解ASMLib 方式和UDEV方式。
---推荐UDEV方式
对应不同的操作系统, 需要不同的包,下载的时候一定要和操作系统内核一致。 我的操作系统是 Red hat 4 update 7. 内核版本是2.6.9-78.ELSMP。
oracleasmlib-2.0.4-1.el4.i386.rpm
oracleasm-support-2.1.3-1.el4.i386.rpm
oracleasm-2.6.9-78.EL-2.0.5-1.el4.i686.rpm
http://www.oracle.com/technology/tech/linux/asmlib/index.html
该页面有下载地址,注意选择CPU 类型。 asmlib 和 support,在同一个页面下载。
安装包:
#rpm -ivh *.rpm
安装完之后进行配置:
#/etc/init.d/oracleasm configure
会有相应的提示, 回答 oracle , dba, y, y 就可以了
分别对应默认用户, 默认组,随系统自启动, 启动时设置权限。
/etc/init.d/oracleasm createdisk VOL1 /dev/sdc1
/etc/init.d/oracleasm scandisks
/etc/init.d/oracleasm listdisks
关于oracleasm 的更多用法参考help:
[root@node1 ~]# /etc/init.d/oracleasm --help
Usage: /etc/init.d/oracleasm {start|stop|restart|enable|disable|configure
|createdisk|deletedisk|querydisk|listdisks|scandisks|status}
使用一个FOR脚本来实现查询磁盘的信息,我这里有8个盘,并且盘符是sd b-i. 这里盘符可以通过fdisk -l来查询
所以脚本也是b-i. 如果创建的盘没这么多,比如是盘符从sdc-sdf,就根据实际情况修改这个脚本。
脚本如下:echo到done之间是一句话,注意避免自动换行影响语句执行等问题。
for i in b c d e f g h i ;
do
echo "KERNEL==\"sd*\", BUS==\"scsi\",PROGRAM==\"/sbin/scsi_id -g -u -s %p\", RESULT==\"`scsi_id -g -u-s /block/sd$i`\", NAME=\"asm-disk$i\",OWNER=\"grid\",GROUP=\"asmadmin\",MODE=\"0660\""
done
运行结果如下:
[root@bysrac1 ~]# for i in b c d e f g h i ; do echo"KERNEL==\"sd*\", BUS==\"scsi\",PROGRAM==\"/sbin/scsi_id -g -u -s %p\", RESULT==\"`scsi_id -g -u-s /block/sd$i`\", NAME=\"asm-disk$i\",OWNER=\"grid\", GROUP=\"asmadmin\",MODE=\"0660\""; done
KERNEL=="sd*", BUS=="scsi",PROGRAM=="/sbin/scsi_id -g -u -s %p",RESULT=="SATA_VBOX_HARDDISK_VBb19dd60c-dc412d96_",NAME="asm-diskb", OWNER="grid", GROUP="asmadmin",MODE="0660"
KERNEL=="sd*", BUS=="scsi",PROGRAM=="/sbin/scsi_id -g -u -s %p",RESULT=="SATA_VBOX_HARDDISK_VBfc1c280c-e7283ea1_",NAME="asm-diskc", OWNER="grid", GROUP="asmadmin",MODE="0660"
KERNEL=="sd*", BUS=="scsi",PROGRAM=="/sbin/scsi_id -g -u -s %p",RESULT=="SATA_VBOX_HARDDISK_VB7c002099-e4ff7950_",NAME="asm-diskd", OWNER="grid", GROUP="asmadmin",MODE="0660"
KERNEL=="sd*", BUS=="scsi",PROGRAM=="/sbin/scsi_id -g -u -s %p",RESULT=="SATA_VBOX_HARDDISK_VB86fa23a3-2e2ed9dc_", NAME="asm-diske",OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", BUS=="scsi",PROGRAM=="/sbin/scsi_id -g -u -s %p",RESULT=="SATA_VBOX_HARDDISK_VBa1d0725b-dda35f5d_",NAME="asm-diskf", OWNER="grid", GROUP="asmadmin",MODE="0660"
KERNEL=="sd*", BUS=="scsi",PROGRAM=="/sbin/scsi_id -g -u -s %p",RESULT=="SATA_VBOX_HARDDISK_VB229bebfa-cf3ab9c1_",NAME="asm-diskg", OWNER="grid", GROUP="asmadmin",MODE="0660"
KERNEL=="sd*", BUS=="scsi",PROGRAM=="/sbin/scsi_id -g -u -s %p",RESULT=="SATA_VBOX_HARDDISK_VB4cec8c01-47cce08d_",NAME="asm-diskh", OWNER="grid", GROUP="asmadmin",MODE="0660"
KERNEL=="sd*", BUS=="scsi",PROGRAM=="/sbin/scsi_id -g -u -s %p",RESULT=="SATA_VBOX_HARDDISK_VB44e8df01-253c8b5a_",NAME="asm-diski", OWNER="grid", GROUP="asmadmin",MODE="0660"
把脚本得出的内容复制到新建的文件中
[root@bysrac1 ~]# cd /etc/udev/rules.d/
[root@bysrac1 rules.d]# vi 99-oracle-asmdevices.rules
[root@bysrac1 rules.d]# cat 99-oracle-asmdevices.rules
NEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id-g -u -s %p", RESULT=="SATA_VBOX_HARDDISK_VBb19dd60c-dc412d96_",NAME="asm-diskb", OWNER="grid", GROUP="asmadmin",MODE="0660"
KERNEL=="sd*", BUS=="scsi",PROGRAM=="/sbin/scsi_id -g -u -s %p",RESULT=="SATA_VBOX_HARDDISK_VBfc1c280c-e7283ea1_", NAME="asm-diskc",OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", BUS=="scsi",PROGRAM=="/sbin/scsi_id -g -u -s %p",RESULT=="SATA_VBOX_HARDDISK_VB7c002099-e4ff7950_",NAME="asm-diskd", OWNER="grid", GROUP="asmadmin",MODE="0660"
KERNEL=="sd*", BUS=="scsi",PROGRAM=="/sbin/scsi_id -g -u -s %p",RESULT=="SATA_VBOX_HARDDISK_VB86fa23a3-2e2ed9dc_",NAME="asm-diske", OWNER="grid", GROUP="asmadmin",MODE="0660"
KERNEL=="sd*", BUS=="scsi",PROGRAM=="/sbin/scsi_id -g -u -s %p",RESULT=="SATA_VBOX_HARDDISK_VBa1d0725b-dda35f5d_",NAME="asm-diskf", OWNER="grid", GROUP="asmadmin",MODE="0660"
KERNEL=="sd*", BUS=="scsi",PROGRAM=="/sbin/scsi_id -g -u -s %p",RESULT=="SATA_VBOX_HARDDISK_VB229bebfa-cf3ab9c1_",NAME="asm-diskg", OWNER="grid", GROUP="asmadmin",MODE="0660"
KERNEL=="sd*", BUS=="scsi",PROGRAM=="/sbin/scsi_id -g -u -s %p",RESULT=="SATA_VBOX_HARDDISK_VB4cec8c01-47cce08d_",NAME="asm-diskh", OWNER="grid", GROUP="asmadmin",MODE="0660"
KERNEL=="sd*", BUS=="scsi",PROGRAM=="/sbin/scsi_id -g -u -s %p", RESULT=="SATA_VBOX_HARDDISK_VB44e8df01-253c8b5a_",NAME="asm-diski", OWNER="grid", GROUP="asmadmin",MODE="0660"
[root@bysrac1 ~]# start_udev
Starting udev: [ OK ]
[root@bysrac1 rules.d]# ls -l /dev/asm*
brw-rw---- 1 grid asmadmin 8, 16 Jun19 22:13 /dev/asm-diskb
brw-rw---- 1 grid asmadmin 8, 32 Jun19 22:13 /dev/asm-diskc
brw-rw---- 1 grid asmadmin 8, 48 Jun19 22:13 /dev/asm-diskd
brw-rw---- 1 grid asmadmin 8, 64 Jun19 22:13 /dev/asm-diske
brw-rw---- 1 grid asmadmin 8, 80 Jun19 22:13 /dev/asm-diskf
brw-rw---- 1 grid asmadmin 8, 96 Jun19 22:13 /dev/asm-diskg
brw-rw---- 1 grid asmadmin 8, 112 Jun 19 22:13 /dev/asm-diskh
brw-rw---- 1 grid asmadmin 8, 128 Jun 19 22:13 /dev/asm-diski
把上面建的文件传到第二个节点上去
[root@bysrac1 rules.d]# scp 99-oracle-asmdevices.rules bysrac2:/etc/udev/rules.d/
Warning: Permanently added 'bysrac2,192.168.1.222' (RSA) to the list ofknown hosts.
root@bysrac2's password:
99-oracle-asmdevices. 100% 1429 1.4KB/s 00:00
到第二个节点上执行start_udev命令
[root@bysrac2 ~]# date
Wed Jun 19 22:17:32 CST 2013
[root@bysrac2 ~]# ls /etc/udev/rules.d/99-oracle-asmdevices.rules
/etc/udev/rules.d/99-oracle-asmdevices.rules
[root@bysrac2 ~]# start_udev
Starting udev: [ OK ]
[root@bysrac2 ~]# ls -l /dev/asm*
brw-rw---- 1 grid asmadmin 8, 16 Jun19 22:18 /dev/asm-diskb
brw-rw---- 1 grid asmadmin 8, 32 Jun19 22:18 /dev/asm-diskc
brw-rw---- 1 grid asmadmin 8, 48 Jun19 22:18 /dev/asm-diskd
brw-rw---- 1 grid asmadmin 8, 64 Jun19 22:18 /dev/asm-diske
brw-rw---- 1 grid asmadmin 8, 80 Jun19 22:18 /dev/asm-diskf
brw-rw---- 1 grid asmadmin 8, 96 Jun19 22:18 /dev/asm-diskg
brw-rw---- 1 grid asmadmin 8, 112 Jun 19 22:18 /dev/asm-diskh
brw-rw---- 1 grid asmadmin 8, 128 Jun 19 22:18 /dev/asm-diski
至次,克隆虚拟机节点2并配置ASM共享盘的操作已经完成。
[oracle@node1 bin]$ export ORACLE_SID=+ASM1
[oracle@node1 bin]$ sqlplus / as sysdba
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options
SQL> create pfile from spfile;
File created.
SQL> show parameter asm
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
asm_diskgroups string FLASH_RECOVERY_AREA, DATA
asm_diskstring string
asm_power_limit integer 1
[oracle@node2 dbs]$ pwd
/u01/app/oracle/product/10.2.0/db_1/dbs
[oracle@node2 dbs]$ ls
ab_+ASM2.dat hc_rac2.dat initrac2.ora orapwrac2
hc_+ASM2.dat init+ASM2.ora orapw+ASM2
[oracle@node2 dbs]$ more init+ASM1.ora
+ASM2.asm_diskgroups='FLASH_RECOVERY_AREA'#Manual Dismount
+ASM1.asm_diskgroups='FLASH_RECOVERY_AREA','DATA'#Manual Mount
*.asm_diskgroups='FLASH_RECOVERY_AREA','DATA'
*.background_dump_dest='/u01/app/oracle/admin/+ASM/bdump'
*.cluster_database=true
*.core_dump_dest='/u01/app/oracle/admin/+ASM/cdump'
+ASM2.instance_number=2
+ASM1.instance_number=1
*.instance_type='asm'
*.large_pool_size=12M
*.remote_login_passwordfile='exclusive'
*.user_dump_dest='/u01/app/oracle/admin/+ASM/udump'
相关说明:
SHARED_POOL_SIZE = 48M
LARGE_POOL_SIZE = 12M
SHARED_POOL_RESERVED_SIZE = 24M
SGA_MAX_SIZE = 88M
这些默认值可以在sqlplus 中通过show parameter 查看。
Instance_type: 对于ASM 实例, 这个应该设置成ASM, 如果是数据库实例,则是RDBMS.
DB_UNIQUE_NAME: 这个参数使用缺省值+ASM即可
SQL> show parameter asm_power_limit
NAME TYPE VALUE
----------------------- --------- ---------------
asm_power_limit integer 1
当在磁盘组中添加删除磁盘时,磁盘组会自动对数据在新旧磁盘间重新分配, 从而实现分散IO, 这个过程就叫再平衡(Rebalance);
这个动作会在磁盘间移动数据,因此虽然是联机操作,仍然会影响部分性能,所以要在系统空闲的时候进行。 该参数控制Rebalance速度, 取值范围0-11. 最小值0 代表不做Rebalance, 最大值11 代表最快的速度,也意味着严重影响性能, 1 代表最慢的速度和最小的性能影响。 除了在初始化参数中定义该参数, 也可以在操作时指定。
比如:SQL> alter diskgroup DATA rebalance power 5;
Disk groups can be rebalanced manually using the REBALANCE clause of the ALTER DISKGROUP statement. If the POWER clause is omitted the ASM_POWER_LIMIT parameter value is used. Rebalancing is only needed when the speed of the automatic rebalancing is not appropriate.
ASM_DISKSTRING:
定义哪些磁盘可以被ASM 使用, ASM 实例启动时就根据这个参数值扫描发现ASM磁盘,配置了这个参数以后,还必须确认ORACLE 用户对这些磁盘有操作的权限
1. 如果使用裸设备, 用逗号分隔每个设备名:
Asm_diskstring='/dev/raw/raw1','/dev/raw/raw2','/dev/raw/raw3'
2. 如果使用ASMLib时,就需要使用"ORCL:磁盘名"
Asm_diskstring='ORCL:VOL1'
3. 使用ASMLib 时, 也可以使用通配符
Asm_diskstring='ORCL:VOL*'
ASM_DISKGROUPS:
这个参数用于定义ASM 实例启动后自动挂载的磁盘组, 如果不自动挂载, 也可以使用命令挂载。
注意: ASM 实例启动即可以通过pfile, 也可以通过spfile,如果使用spfile启动,那么如果创建新的磁盘组, 这个参数会被自动修改, 下次启动时会自动挂载这个新建的磁盘组,如果是使用pfile, 这个参数不会自动更新, 需要手工的更新。
无论是否在RAC 环境下, ASM 实例都是需要CSS 进程的, 所以,如果是非RAC 环境, 在启动ASM 实例之前用脚本
$ORACLE_HOME/bin/localconfig add 启动CSS, 否则ASM 实例启动时会报ORA-29701: unable to connect to Cluster Manager, 并提示执行该脚本
[oracle@node2 dbs]$ export ORACLE_SID=+ASM2
[oracle@node2 dbs]$ sqlplus / as sysdba
SQL> startup
SQL> shutdown immediate;
检查disk group信息的SQL:
SQL> col state format a10
SQL> col name format a15
SQL> col failgroup format a20
SQL> set line 200
SQL> select STATE,REDUNDANCY,TOTAL_MB,FREE_MB,NAME,FAILGROUP
from v$asm_disk;
SQL>select GROUP_NUMBER,NAME,STATE,TYPE,TOTAL_MB,FREE_MB,
UNBALANCED from v$asm_diskgroup;
SQL> create diskgroup dgtest normal redundancy
2 failgroup DATA1 disk '/dev/oracleasm/VOL5' name DATA1
3 failgroup DATA2 disk '/dev/oracleasm/VOL6' name DATA2;
SQL> drop diskgroup DATA including contents;
-- 对于多结点的diskgroup, 只能有在一个asm实例上挂载之后才能被dorp, 其他结点必须dismount。
ALTER DISKGROUP ALL DISMOUNT;
ALTER DISKGROUP ALL MOUNT;
ALTER DISKGROUP DATA DISMOUNT;
ALTER DISKGROUP DATA MOUNT;
SQL> alter diskgroup DATA add disk '/dev/oracleasm/VOL5' name
VOL5,'/dev/oracleasm/VOL6' name VOL6;
SQL> alter diskgroup DATA drop disk VOL5;
取消删除disk的命令,只能在上述命令没执行完成的时候有效
ALTER DISKGROUP DATA UNDROP DISKS;
The UNDROP DISKS clause of the ALTER DISKGROUP statement allows pending disk drops to be undone. It will not revert drops that have completed, or disk drops associated with thedropping of a disk group.
Aliases allow you to reference ASM files using user-friendly names, rather than the fully
qualified ASM filenames.
-- Create an alias using the fully qualified filename.
ALTER DISKGROUP disk_group_1 ADD ALIAS '+disk_group_1/my_dir/my_file.dbf'
FOR '+disk_group_1/mydb/datafile/my_ts.342.3';
-- Create an alias using the numeric form filename.
ALTER DISKGROUP disk_group_1 ADD ALIAS '+disk_group_1/my_dir/my_file.dbf'
FOR '+disk_group_1.342.3';
-- Rename an alias.
ALTER DISKGROUP disk_group_1 RENAME ALIAS '+disk_group_1/my_dir/my_file.dbf'
TO '+disk_group_1/my_dir/my_file2.dbf';
-- Delete an alias.
ALTER DISKGROUP disk_group_1 DELETE ALIAS '+disk_group_1/my_dir/my_file.dbf';
-- Drop file using an alias.
ALTER DISKGROUP disk_group_1 DROP FILE '+disk_group_1/my_dir/my_file.dbf';
-- Drop file using a numeric form filename.
ALTER DISKGROUP disk_group_1 DROP FILE '+disk_group_1.342.3';
-- Drop file using a fully qualified filename.
ALTER DISKGROUP disk_group_1 DROP FILE '+disk_group_1/mydb/datafile/my_ts.342.3';
-- create datafile
SQL> create tablespace users2 datafile '+TESTDB_DATA1' size 100m;
注意事项:
1. ASM 实例在配置好并且创建了ASM磁盘组之后,还必须保证已经注册到Listener中后才能在数据库实例中使用,否则就需要手工注册ASM 实例:
SQL>alter system register;
2. 一旦数据库实例使用ASM 作为存储, 那么在数据库实例运行时是无法关闭ASM实例的。 否则会报 ORA-15097:cannot SHUTDOWN ASM instance with connected RDBMS instance. 错误。
删除自动存储管理实例+ASM实例+ASM的删除是在数据库被卸载之后完成的,并删除/ORACLE_HOME/dbs目录下的所有文件(除了与ASM相关的)。因此必须完成下列步骤:
4.1在命令提示符中,设置oracle_sid环境变量为+ASM实例:
# export oracle_sid=+ASM
4.2启动SQL*Plus并以sys用户连接到自动存储管理+ASM实例:
# sqlplus / as sysdba
4.3使用下列命令来确定是否有数据库实例正在使用自动存储管理实例+ASM:
SQL>select instance_name from v$asm_client;
该命令结果列出所有正在运行并使用+ASM实例的数据库实例。只要+ASM包含正在支持的数据库实例,就不能删除该+ASM实例。(其实可以先shutdown对应的数据库实例,然后从asmcmd进入磁盘组所在目录,删掉对应的数据库目录和文件就可以了)。
4.4 如果没有与+ASM相关联的数据库实例,则删除与该实例相关联的磁盘组。
首先,识别与+ASM相关联的磁盘组:
SQL>select name from v$asm_diskgroup;
其次,用下列命令删除每个要删除的磁盘组:
SQL>drop diskgroup
4.5 关闭+ASM实例并退出SQL*Plus:
SQL>shutdown
SQL>exit
4.6 在命令提示符中输入下列命令,删除+ASM服务(我没找到这个命令,所以没有运行):
oradim -delete -asmsid +ASM
ASM 实例的管理除了sqlplus, Oracle 还提供了asmcmd 命令, 具体参考help。
[oracle@node1 bin]$ which asmcmd
/u01/app/oracle/product/10.2.0/db_1/bin/asmcmd
[oracle@node1 bin]$ cd /u01/app/oracle/product/10.2.0/db_1/bin/
[oracle@node1 bin]$ ./asmcmd
ASMCMD> ls
DATA/
FLASH_RECOVERY_AREA/
ASMCMD> help
asmcmd [-p] [command]
The environment variables ORACLE_HOME and ORACLE_SID determine the
instance to which the program connects, and ASMCMD establishes a
bequeath connection to it, in the same manner as a SQLPLUS / AS
SYSDBA. The user must be a member of the SYSDBA group.
Specifying the -p option allows the current directory to be displayed
in the command prompt, like so:
ASMCMD [+DATAFILE/ORCL/CONTROLFILE] >
[command] specifies one of the following commands, along with its
parameters.
Type "help [command]" to get help on a specific ASMCMD command.
commands:
--------
cd
du
find
help
ls
lsct
lsdg
mkalias
mkdir
pwd
rm
rmalias
ASMCMD>
----- 2010年9月23日补充--------
刚查阅了一下Oracle 的联机文档, 删除别名用的也是drop。
Example 7-5 Dropping an alias name for an Oracle ASM filename
ALTER DISKGROUP data DROP ALIAS '+data/payroll/compensation.dbf';
地址:
http://download.oracle.com/docs/cd/E11882_01/server.112/e16102/asmfiles.htm#CHDDHIGG
这里面有对ASM 有详细的说明。 可以参考。
C:/Users/Administrator.DavidDai>sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on 星期四 9月
Copyright (c) 1982, 2010, Oracle. All rights reserved
SQL> conn sys/oracle@rac2 as sysdba;
已连接。
SQL> select file_name from dba_data_files;
FILE_NAME
------------------------------------------------------
+DATA/orcl/datafile/users.279.730181053
+DATA/orcl/datafile/sysaux.277.730181053
+DATA/orcl/datafile/undotbs1.278.730181053
+DATA/orcl/datafile/system.276.730181051
+DATA/orcl/datafile/undotbs2.284.730181347
ASM文件名字的格式是固定的:+group/dbname/file type/tag.file.incarnation
在创建db时系统自动创建的几个表空间(system,undotbs,sysaux,users)对应的都是真实的数据文件,即ASM 文件默认的命名格式。而且这个信息都写到了控制文件里。 如果我们使用别名的话,会方便很多。 对于这些创建数据库时自动创建的表空间,我们要他们使用别名,除了手工创建对应别名外,还需要重建控制文件,并且在重建时,datafile 里写别名的信息。 这样数据库也就使用别名了。