Oracle ASM 详解(其一)
来源:互联网 发布:知否小说全文免费阅读 编辑:程序博客网 时间:2024/05/24 15:41
Oracle ASM 详解
ASM:Automatic Storage Management, 是Oracle 主推的一种面向Oracle的存储解决方案, ASM和 RDBMS 非常相似,ASM 也是由实例和文件组成,也可以通过sqlplus 工具来维护。
ASM 实例的创建和删除也可以用DBCA 这个命令来操作。在dbca 的第一个界面选择配置自动存储管理就可以了。 ASM实例需要CSS 进程, 如果是非RAC 环境, 在启动ASM 实例之前会提示用脚本
$ORACLE_HOME/bin/localconfig add 启动CSS。
1. ASM 实例由SGA 和后台进程组成。
1.1 SGA 组成:
ASM 实例的SGA包括Buffer Cache, Share Pool, Large Pool等。 需要注意的是SharePool, 因为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 wherea.Group#=b.Group#;
Select sum(bytes)/(1024*1024*1024) from v$tempfile wherestatus='online';
这3个sum 的总和对应着数据库存放ASM中所有文件大小总和, 对于使用External Redundancy 的磁盘组, 每100G需要1MB 的Extent Map, 根据这个比例计算Extent Map 所需要的空间,在加上额外的2MB就可以了。在实际工作中一般不需要考虑ASM SGA的配置, 使用Oracle 提供的缺省值就可以了。
1.2 后台进程
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。如果是1:n, 最好为ASM 安装单独的ASM_HOME。
2. ASM 配置
ASM 可以使用裸设备或者ASMLib方式, 因为裸设备的维护比较复杂,在此只讲解ASMLib 方式。
对应不同的操作系统,需要不同的包,下载的时候一定要和操作系统内核一致。 我的操作系统是 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}
3. ASM 实例配置
3.1 初始化参数
[oracle@node1 bin]$ export ORACLE_SID= ASM1
[oracle@node1 bin]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Sun Feb 21 19:10:512010
Copyright (c) 1982, 2005, Oracle. Allrights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 -Production
With the Partitioning, Real Application Clusters, OLAP and DataMining options
SQL> create pfile from spfile;
File created.
SQL> show parameterasm
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 initASM2.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'
相关说明:
ASM 实例的SGA 需要的内存很小, 一般默认值即可, 无需修改。 ASMSGA的默认值如下:
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
ASM_POWER_LIMIT:当在磁盘组中添加或删除磁盘时,磁盘组会自动对数据在新旧磁盘间重新分配, 从而实现分散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 clauseof the ALTER DISKGROUP statement. If the POWER clause is omittedthe ASM_POWER_LIMIT parameter value is used. Rebalancing is onlyneeded when the speed of the automatic rebalancing is notappropriate.
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, 这个参数不会自动更新,需要手工的更新。
3.2 CSS 进程
无论是否在RAC 环境下, ASM 实例都是需要CSS 进程的, 所以,如果是非RAC 环境, 在启动ASM实例之前用脚本
$ORACLE_HOME/bin/localconfig add 启动CSS, 否则ASM 实例启动时会报ORA-29701:unable to connect to Cluster Manager, 并提示执行该脚本
3.3 ASM 实例的相关操作
ASM 管理 登录,启动,关闭:
[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> selectSTATE,REDUNDANCY,TOTAL_MB,FREE_MB,NAME,FAILGROUP fromv$asm_disk;
SQL>selectGROUP_NUMBER,NAME,STATE,TYPE,TOTAL_MB,FREE_MB,UNBALANCED fromv$asm_diskgroup;
创建新的diskgroup
SQL> create diskgroup dgtest normal redundancy
2 failgroupDATA1 disk '/dev/oracleasm/VOL5' name DATA1
3 failgroupDATA2 disk '/dev/oracleasm/VOL6' name DATA2;
删除diskgroup
SQL> drop diskgroup DATA including contents;
-- 对于多结点的diskgroup, 只能有在一个asm实例上挂载之后才能被dorp, 其他结点必须dismount。
手动mount命令
ALTER DISKGROUP ALL DISMOUNT;
ALTER DISKGROUP ALL MOUNT;
ALTER DISKGROUP DATA DISMOUNT;
ALTER DISKGROUP DATA MOUNT;
为diskgroup增加disk
SQL> alter diskgroup DATA add disk'/dev/oracleasm/VOL5' name VOL5,'/dev/oracleasm/VOL6' nameVOL6;
从diskgroup删除disk
SQL> alter diskgroup DATA drop disk VOL5;
取消删除disk的命令,只能在上述命令没执行完成的时候有效
ALTER DISKGROUP DATA UNDROP DISKS;
The UNDROP DISKS clause of the ALTER DISKGROUP statement allowspending disk drops to be undone. It will not revert drops that havecompleted, or disk drops associated with the dropping of a diskgroup.
数据文件的管理
Aliases allow you to reference ASM files using user-friendly names,rather than the fully qualified ASM filenames.
-- Create an alias using the fully qualifiedfilename.
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 formfilename.
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 formfilename.
ALTER DISKGROUP disk_group_1 DROP FILE ' disk_group_1.342.3';
-- Drop file using a fully qualifiedfilename.
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 RDBMSinstance. 错误。
4. Oracle 中删除 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 including contents;
4.5 关闭 ASM实例并退出SQL*Plus:
SQL>shutdown
SQL>exit
4.6 在命令提示符中输入下列命令,删除 ASM服务(我没找到这个命令,所以没有运行):
oradim -delete -asmsid ASM
5. ASMCMD 工具
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 theinstance to which the program connects, and ASMCMD establishes abequeath connection to it, in the same manner as a SQLPLUS / ASSYSDBA. The user must be a member of theSYSDBA group.
Specifying the -p option allows the current directory to bedisplayed in the command prompt, like so:
ASMCMD [ DATAFILE/ORCL/CONTROLFILE] >
[command] specifies one of the following commands, along with itsparameters.
Type "help [command]" to get help on a specific ASMCMDcommand.
commands:
--------
cd
du
find
help
ls
lsct
lsdg
mkalias
mkdir
pwd
rm
rmalias
ASMCMD>
----- 2010年9月23日补充--------
里面有删除别名的语法, 现在已经不支持了。 之前没有测试,写文章不严禁。在google上搜这个问题的时候,发现有人转载了我的文章,但是这个错误还是没有发现。
刚查阅了一下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. Allrights 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里写别名的信息。 这样数据库也就使用别名了。
ASM:Automatic Storage Management, 是Oracle 主推的一种面向Oracle的存储解决方案, ASM和 RDBMS 非常相似,ASM 也是由实例和文件组成,也可以通过sqlplus 工具来维护。
ASM 实例的创建和删除也可以用DBCA 这个命令来操作。在dbca 的第一个界面选择配置自动存储管理就可以了。 ASM实例需要CSS 进程, 如果是非RAC 环境, 在启动ASM 实例之前会提示用脚本
$ORACLE_HOME/bin/localconfig add 启动CSS。
1. ASM 实例由SGA 和后台进程组成。
1.1 SGA 组成:
ASM 实例的SGA包括Buffer Cache, Share Pool, Large Pool等。 需要注意的是SharePool, 因为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 wherea.Group#=b.Group#;
Select sum(bytes)/(1024*1024*1024) from v$tempfile wherestatus='online';
这3个sum 的总和对应着数据库存放ASM中所有文件大小总和, 对于使用External Redundancy 的磁盘组, 每100G需要1MB 的Extent Map, 根据这个比例计算Extent Map 所需要的空间,在加上额外的2MB就可以了。在实际工作中一般不需要考虑ASM SGA的配置, 使用Oracle 提供的缺省值就可以了。
1.2 后台进程
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。如果是1:n, 最好为ASM 安装单独的ASM_HOME。
2. ASM 配置
ASM 可以使用裸设备或者ASMLib方式, 因为裸设备的维护比较复杂,在此只讲解ASMLib 方式。
对应不同的操作系统,需要不同的包,下载的时候一定要和操作系统内核一致。 我的操作系统是 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
3. ASM 实例配置
3.1 初始化参数
[oracle@node1 bin]$ export ORACLE_SID= ASM1
[oracle@node1 bin]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Sun Feb 21 19:10:512010
Copyright (c) 1982, 2005, Oracle.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 -Production
With the Partitioning, Real Application Clusters, OLAP and DataMining options
SQL> create pfile from spfile;
File created.
SQL> show parameterasm
NAME
------------------------------------ -----------------------------------------
asm_diskgroups
asm_diskstring
asm_power_limit
[oracle@node2 dbs]$ pwd
/u01/app/oracle/product/10.2.0/db_1/dbs
[oracle@node2 dbs]$ ls
ab_ ASM2.dat
hc_ ASM2.dat
[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'
相关说明:
ASM 实例的SGA 需要的内存很小, 一般默认值即可, 无需修改。 ASMSGA的默认值如下:
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
----------------------- --------- ---------------
asm_power_limit
ASM_POWER_LIMIT:当在磁盘组中添加或删除磁盘时,磁盘组会自动对数据在新旧磁盘间重新分配, 从而实现分散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 clauseof the ALTER DISKGROUP statement. If the POWER clause is omittedthe ASM_POWER_LIMIT parameter value is used. Rebalancing is onlyneeded when the speed of the automatic rebalancing is notappropriate.
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, 这个参数不会自动更新,需要手工的更新。
3.2 CSS 进程
无论是否在RAC 环境下, ASM 实例都是需要CSS 进程的, 所以,如果是非RAC 环境, 在启动ASM实例之前用脚本
$ORACLE_HOME/bin/localconfig add 启动CSS, 否则ASM 实例启动时会报ORA-29701:unable to connect to Cluster Manager, 并提示执行该脚本
3.3 ASM 实例的相关操作
ASM 管理 登录,启动,关闭:
[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> selectSTATE,REDUNDANCY,TOTAL_MB,FREE_MB,NAME,FAILGROUP fromv$asm_disk;
SQL>selectGROUP_NUMBER,NAME,STATE,TYPE,TOTAL_MB,FREE_MB,UNBALANCED fromv$asm_diskgroup;
创建新的diskgroup
SQL> create diskgroup dgtest normal redundancy
删除diskgroup
SQL> drop diskgroup DATA including contents;
-- 对于多结点的diskgroup, 只能有在一个asm实例上挂载之后才能被dorp, 其他结点必须dismount。
手动mount命令
ALTER DISKGROUP ALL DISMOUNT;
ALTER DISKGROUP ALL MOUNT;
ALTER DISKGROUP DATA DISMOUNT;
ALTER DISKGROUP DATA MOUNT;
为diskgroup增加disk
SQL> alter diskgroup DATA add disk'/dev/oracleasm/VOL5' name VOL5,'/dev/oracleasm/VOL6' nameVOL6;
从diskgroup删除disk
SQL> alter diskgroup DATA drop disk VOL5;
取消删除disk的命令,只能在上述命令没执行完成的时候有效
ALTER DISKGROUP DATA UNDROP DISKS;
The UNDROP DISKS clause of the ALTER DISKGROUP statement allowspending disk drops to be undone. It will not revert drops that havecompleted, or disk drops associated with the dropping of a diskgroup.
数据文件的管理
Aliases allow you to reference ASM files using user-friendly names,rather than the fully qualified ASM filenames.
-- Create an alias using the fully qualifiedfilename.
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 formfilename.
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 formfilename.
ALTER DISKGROUP disk_group_1 DROP FILE ' disk_group_1.342.3';
-- Drop file using a fully qualifiedfilename.
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 RDBMSinstance. 错误。
4. Oracle 中删除 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 including contents;
4.5 关闭 ASM实例并退出SQL*Plus:
SQL>shutdown
SQL>exit
4.6 在命令提示符中输入下列命令,删除 ASM服务(我没找到这个命令,所以没有运行):
oradim -delete -asmsid ASM
5.
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 theinstance to which the program connects, and ASMCMD establishes abequeath connection to it, in the same manner as a SQLPLUS / ASSYSDBA.
Specifying the -p option allows the current directory to bedisplayed in the command prompt, like so:
ASMCMD [ DATAFILE/ORCL/CONTROLFILE] >
[command] specifies one of the following commands, along with itsparameters.
Type "help [command]" to get help on a specific ASMCMDcommand.
commands:
--------
cd
du
find
help
ls
lsct
lsdg
mkalias
mkdir
pwd
rm
rmalias
ASMCMD>
----- 2010年9月23日补充--------
里面有删除别名的语法, 现在已经不支持了。 之前没有测试,写文章不严禁。在google上搜这个问题的时候,发现有人转载了我的文章,但是这个错误还是没有发现。
刚查阅了一下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.
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里写别名的信息。 这样数据库也就使用别名了。
0 0
- Oracle ASM 详解(其一)
- Oracle ASM 详解(其二)
- Oracle ASM 详解(其三)
- Oracle ASM 详解(其四)
- Oracle工具——DBVERIFY (其一)
- Oracle RAC Cache Fusion 机制详解
- Oracle offline 表空间详解
- sqlserver 连接oracle 配置详解 .
- Oracle 后台进程详解
- asm add disk to diskgroup
- Oracle Rman 命令详解(L…
- Linux下Oracle安装 详解
- 【转载】Oracle 监听配置详解…
- oracle pctfree和pctused详解
- oracle Bug 8833280
- oracle with check option
- Oracle “CONNECT BY” 使用
- Oracle Alerts 与…
- Oracle表介绍--簇表
- 索引组织表中的MAPPING TABLE
- Oracle COALESCE函数
- action定义request response直接重定向页面方法
- 第十三周项目三函数模版
- Oracle ASM 详解(其一)
- Oracle ASM 详解(其四)
- 如何实现利用EL表达式去获取用户头像
- oracle:ASM相关视图
- ASM文件类型和模板
- DB_nK_cache_size研究
- UVA 10720
- Oracle专用服务器与共享服务器的区…
- oracle设置共享服务器模式