ASM测试
shadowfalao | 04 七月, 2007 10:20
原文出自:
http://www.idevelopment.info/data/Oracle/DBA_tips/
Automatic_Storage_Management/ASM_22.shtml
ASM简介
ASM是oracle10G的新增加的一个功能,是一个高级的自动存储管理组件,用来解放DBA在大容量数据库环境中的对存储的管理。为了测试
学习ASM的特性,必须有空闲的磁盘或者磁盘分区(针对Windows平台)充当ASM裸盘,还可以在虚拟机的环境模拟,今天发现可以通过一种新的方式来模拟,
在没有空闲磁盘的情况下可以通过文件来模拟磁盘.根据上面网站的介绍在windows平台下做了个小测试
要做的第一步是我们首先必须配置一个ASM实例。
1、配置CSS服务
在产品环境中可以通过DBCA来自动创建一个ASM实例,或者手动构建一个ASM实例。在构建前呢需要了解ASM的工作特征,ASM在实际的工作中需要
一个Oracle Cluster Synchronization Services在数据库和ASM之间同步数据和消息,所以在创建ASM实例之前,必须配置Oracle Cluster Synchronization Services 。
这个服务就是平常我们在安装完oracle10g后windows服务里的css服务或者linux下的init.cssd服务。在单节点服务器上,css作为一个单独的服务存在,在RAC
环境中,被包括在CRS(Oracle Cluster Ready Services )服务中。在ORACLE10GR1版本中,我们在安装oracle时,在linux平台下我们执行root.sh脚本时,CSS被包含在了root.sh
脚本中,会自动安装CSS并启动;windows平台下会自动添加到windows的服务里。在ORACLE10GR2版本中,只有我们在创建数据库的同时选择采用ASM管理数据存储时oracle才会自动安装CSS,负责
ORACLE不会自动配置CSS服务。但如果选择手动配置ASM时, 相应的也必须手动配置CSS服务。linux/unix平台下,在$ORACLE_HOME/bin下提供了一个localconfig工具
用来手动配置CSS服务,windows平台为%ORACLE_HOME%inlocalconfig.bat
linux平台下配置CSS
su - root
$ORACLE_HOME/bin localconfig all
windows平台
%ORACLE_HOME%inlocalconfig.bat all
下面为localconfig的帮助信息
E:oracleproduct10.2.0db_1BIN>localconfig
usage: crssetup <config | add | del | deconfig | ldel | lres
| ladd | shutdown | upgrade | help>
config - configure and startup the cluster on nodes
add - add specified nodes to the cluster
del - delete the specified nodes from the cluster
deconfig - wipe out all cluster configuration information
ldel - local css delete from oracle home
lres - local css home reset to new oracle home
ladd - local css add to oracle home
shutdown - shutdown the selected nodes
upgrade - upgrade the specified nodes
help - print out this information
.............
2、创建ASM实例
1)为ASM实例准备管理目录
UNIX
mkdir -p $ORACLE_BASE/admin/+ASM/bdump
mkdir -p $ORACLE_BASE/admin/+ASM/cdump
mkdir -p $ORACLE_BASE/admin/+ASM/hdump
mkdir -p $ORACLE_BASE/admin/+ASM/pfile
mkdir -p $ORACLE_BASE/admin/+ASM/udump
Windows
mkdir %ORACLE_BASE%admin+ASMdump
mkdir %ORACLE_BASE%admin+ASMcdump
mkdir %ORACLE_BASE%admin+ASMhdump
mkdir %ORACLE_BASE%admin+ASMpfile
mkdir %ORACLE_BASE%admin+ASMudump
2)创建+ASM参数文件
Unix平台
###########################################
# Automatic Storage Management
###########################################
# Default asm_diskstring values for supported platforms:
# Solaris (32/64 bit) /dev/rdsk/*
# Windows NT/XP .orcldisk*
# Linux (32/64 bit) /dev/raw/*
# HPUX /dev/rdsk/*
# HPUX(Tru 64) /dev/rdisk/*
# AIX /dev/rhdisk/*
# asm_diskstring=''
###########################################
# Diagnostics and Statistics
###########################################
background_dump_dest=/u01/app/oracle/admin/+ASM/bdump
core_dump_dest=/u01/app/oracle/admin/+ASM/cdump
user_dump_dest=/u01/app/oracle/admin/+ASM/udump
###########################################
# Miscellaneous
###########################################
instance_type=asm
compatible=10.1.0.4.0
###########################################
# Pools
###########################################
large_pool_size=12M
###########################################
# Security and Auditing
###########################################
remote_login_passwordfile=exclusive
_asm_allow_only_raw_disks=false
Windows 平台
###########################################
# Automatic Storage Management
###########################################
# Default asm_diskstring values for supported platforms:
# Solaris (32/64 bit) /dev/rdsk/*
# Windows NT/XP .orcldisk*
# Linux (32/64 bit) /dev/raw/*
# HPUX /dev/rdsk/*
# HPUX(Tru 64) /dev/rdisk/*
# AIX /dev/rhdisk/*
# asm_diskstring=''
###########################################
# Diagnostics and Statistics
###########################################
background_dump_dest=C:oracleproduct10.1.0admin+ASMdump
core_dump_dest=C:oracleproduct10.1.0admin+ASMcdump
user_dump_dest=C:oracleproduct10.1.0admin+ASMudump
###########################################
# Miscellaneous
###########################################
instance_type=asm
compatible=10.1.0.4.0
###########################################
# Pools
###########################################
large_pool_size=12M
###########################################
# Security and Auditing
###########################################
remote_login_passwordfile=exclusive
_asm_allow_only_raw_disks=false
因为我们这里是通过文件模拟磁盘,这里用到了ASM的一个隐含参数_asm_allow_only_raw_disks默认情况下这个参数的值为true,仅仅允许裸盘作为ASM的母盘。
我们将该参数设置为false,可以用一个文件模拟ASM母盘。
3)创建ASM实例
unix平台
export ORACLE_SID=+ASM
startup pfile='/u01/app/oracle/admin/+ASM/pfile/init.ora';
然后创建spfile
create spfile from pfile='/u01/app/oracle/admin/+ASM/pfile/init.ora';
windows平台
首先必须用oradim创建一个实例
oradim -new -asmsid +ASM -syspwd change_on_install
-pfile E:oracleproduct10.2.0admin+ASMpfileinit.ora -spfile
-startmode manual -shutmode immediate
set ORACLE_SID=+ASM
startup pfile='E:oracleproduct10.2.0admin+ASMpfileinit.ora';
create spfile from pfile='E:oracleproduct10.2.0admin+ASMpfileinit.ora';
修改+ASM服务自动启动
oradim -edit -asmsid +ASM -startmode a
3、 创建asm磁盘组
我的试验环境之windows,所以我这里的所有操作都以windows平台为主
首先为asm磁盘文件创建一个目录
mkdir d:asmdisks
通过以下perl脚本创建空文件,这里我们准备4个500的文件
my $s='0' x 2**20;
open(DF1,">d:/asmdisks/_file_disk1") || die "Cannot create file - $! ";
open(DF2,">d:/asmdisks/_file_disk2") || die "Cannot create file - $! ";
open(DF3,">d:/asmdisks/_file_disk3") || die "Cannot create file - $! ";
open(DF4,">d:/asmdisks/_file_disk4") || die "Cannot create file - $! ";
for (my $i=1; $i<500; $i++) {
print DF1 $s;
print DF2 $s;
print DF3 $s;
print DF4 $s;
}
exit
将以上脚本保存为CreateTextFiles.pl 然后执行
perl CreateTextFiles.pl
没有学过perl 所以脚本目前还没有看明白 嘿嘿
修改ASM的磁盘搜索目录
alter system set asm_diskstring='d:asmdisks_FILE*' scope=both;
下面我创建asm磁盘组,利用新建的文件代替裸硬盘,ASM可以创建三种类型的磁盘组:
NORMAL REDUNDANCY :这是ASM默认的磁盘创建模式,他为ASM提供了一个冗余盘组;
EXTERNAL REDUNDANCY:另一种磁盘组模式,不提供任何的冗余功能,这类磁盘组可以用在数据级别不是很高的场合,比如FLASHBACK AREA区域;
HIGH REDUNDANCY:最高级的一种磁盘组,可以提供多个冗余磁盘组;
创建EXTERNAL磁盘组
CREATE DISKGROUP DATA EXTERNAL REDUNDANCY DISK
'D:asmdisks_file_disk1',
'D:asmdisks_file_disk2',
'D:asmdisks_file_disk3',
'D:asmdisks_file_disk4';
或者创建一个normal磁盘组
CREATE DISKGROUP DATA NORMAL REDUNDANCY
FAILGROUP group1 DISK 'D:asmdisks_file_disk1','D:asmdisks_file_disk2'
FAILGROUP group2 DISK 'D:asmdisks_file_disk3','D:asmdisks_file_disk4';
4、 ASM实例启动测试
C:Documents and Settingsshadow>set ORACLE_SID=+ASM
C:Documents and Settingsshadow>sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 7月 4 10:27:37 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> shutdown immediate
ASM 磁盘组已卸装
ASM 实例已关闭
SQL> startup
ASM 实例已启动
Total System Global Area 83886080 bytes
Fixed Size 1247420 bytes
Variable Size 57472836 bytes
ASM Cache 25165824 bytes
ASM 磁盘组已装载
SQL>
5、查看磁盘组、磁盘信息
SQL> select group_number,name,total_mb,free_mb,type,state from v$asm_diskgroup;
GROUP_NUMBER NAME TOTAL_MB FREE_MB TYPE STATE
------------ ---------- ---------- ---------- ------------ -------
1 DATA 1996 1940 EXTERN MOUNTED
SQL> select disk_number,group_number,state,redundancy,path from v$asm_disk;
DISK_NUMBER GROUP_NUMBER STATE REDUNDANCY PATH
----------- ------------ ------- -------------- -------------------------
0 1 NORMAL UNKNOWN D:ASMDISKS_FILE_DISK1
1 1 NORMAL UNKNOWN D:ASMDISKS_FILE_DISK2
2 1 NORMAL UNKNOWN D:ASMDISKS_FILE_DISK3
3 1 NORMAL UNKNOWN D:ASMDISKS_FILE_DISK4