自动存储管理ASM日常维护一Word文件下载.docx
《自动存储管理ASM日常维护一Word文件下载.docx》由会员分享,可在线阅读,更多相关《自动存储管理ASM日常维护一Word文件下载.docx(13页珍藏版)》请在冰豆网上搜索。
oracle建议优先使用文件系统和asm,尽量不用裸设备,因为裸设备难于管理,但对于数据的I/o。
洛裸设备还是有优势的
什么是ASM实例
在oracle10g中,有两种实例,分别是ASM实例和数据库实例,ASM实例对磁盘组进行管理,增加或删除磁盘设备时,会重新平衡磁盘组
中的存储
asm实例工作原理
asm实例是在数据库实例启动前就启动的,asm实例启动过程中必须确认数据库的磁盘组和文件,然后asm实例装载(mount)磁盘组
然后再创建一个区位图(extentmap),再将区位图传递到数据库实例,然后asm就处于修状态;
当在创建和删除文件,增加或删除
磁盘时,asm实例才会被调用,用于重新平衡磁盘组的存储,并刷新数据库实例SGA的区位图;
asm实例不处理事务,对数据库实例影响
很小,在SGA中占用的内存大小不超过60MB
如何配置asm磁盘组
asm磁盘组是多个可管理的磁盘设备的逻辑集合,组成足够大的磁盘组,当磁盘组采用数据数据冗余时,可以实现数据的镜像和数据的
分散存储,创建磁盘组时要考虑众多因素,如磁盘的块数,控制器及冗余级别,数据库的性能和可恢复性
创建磁盘组时,考虑的因素
1.asm的磁盘组中的磁盘大小及型号要相同,如果是不同型号,可以创建不同的磁盘组
2.磁盘阵列和asm共存时,尽量不要是磁盘阵列,因为阵列隐藏了磁盘的物理结构,对asm优化磁盘系统的I/0是不利的
3.asm将数据分散在磁盘组中的不同磁盘中,以实现负载平衡,,所以磁盘的存取性能相同很重要
4.在增加或删除磁盘时,asm自动重新负载平衡,删除磁盘时,直到数据从磁盘中移动并完成重新平衡后,磁盘才会被释放
5.可以在数据库运行时,增加或删除磁盘,但是会影响I/O
asm实例重要的参数
instance_type
db_unique_name
asm_power_limit
asm_diskstring
asm_diskgroups
asm实例的创建
我用的windows2003做的测试,这个比较简单,安装os系统,安装oracle数据库,然后用DBCA创建ASM实例
然后用vmware创建磁盘,我记得在挂盘的时候,我刚开始遇到个小问题,就是在创建了物理分区,逻辑分区
之后,用asmtoolg工具对于磁盘标识时,找不到磁盘,原来是我在创建磁盘后,没有挂载,所以系统没有
识别到
只要执行如下语句,然后重启系统,就ok了
C:
\DocumentsandSettings\Administrator>
diskpart
MicrosoftDiskPartCopyright(C)1999-2001MicrosoftCorporation.
Oncomputer:
ASM
DISKPART>
help
MicrosoftDiskPart版本5.2.3790.1830
ADD-将镜像添加到一个简单卷。
ACTIVE-将当前基本分区标记为活动的分区。
ASSIGN-给所选卷指派一个驱动器号或装载点。
AUTOMOUNT-启用和禁用基本卷的自动装载。
BREAK-中断镜像集。
CLEAN-从磁盘清除配置信息或所有信息。
CONVERT-在不同的磁盘格式之间转换。
CREATE-创建卷或分区。
DELETE-删除对象。
DETAIL-提供对象详细信息。
ATTRIBUTES-操纵卷属性。
EXIT-退出DiskPart
EXTEND-扩展卷。
GPT-给选择的GPT分区分配属性。
HELP-打印命令列表。
IMPORT-导入磁盘组。
INACTIVE-将当前的基本分区标为不活动。
LIST-打印对象列表。
ONLINE-使当前标为脱机的磁盘联机。
REM-不起任何作用。
用来注解脚本。
REMOVE-删除驱动器号或装载点指派。
REPAIR-用失败的成员修复一个RAID-5卷。
RESCAN-重新扫描计算机,查找磁盘和卷。
RETAIN-在一个简单卷下放置一个保留分区。
SELECT-将焦点移到一个对象。
automountenable
已经启用自动装载新卷。
asm实例的维护
sqlplus维护磁盘组
asmcmd维护磁盘组
1.创建磁盘组
2.删除磁盘组
3.磁盘组增加磁盘成员
4.磁盘组删除磁盘成员
5.挂载/卸载磁盘组
6.创建目录
1.1创建外部冗余磁盘组
SQL>
creatediskgroupdg_skate1externalredundancy
2disk'
\\.\orcldiskdisk10'
;
磁盘组已创建。
selectname,type,total_mb,free_mbfromv$asm_diskgroup;
NAMETYPE
------------------------------------------------------------------------
TOTAL_MBFREE_MB
--------------------
DG_SKATE1EXTERN
1019969
1.2创建常规冗余磁盘组
creatediskgroupdg2normalredundancy
2failgroupfdisk1disk'
\\.\orcldiskdisk11'
namedisk11
3failgroupfdisk2disk'
\\.\orcldiskdisk12'
namedisk12;
selectname,failgroup,path,disk_numberfromv$asm_disk;
NAMEFAILGROUPPATHDISK_NUMBER
DISK11FDISK1\\.\ORCLDISKDISK110
DISK12FDISK2\\.\ORCLDISKDISK121
1.3创建高冗余磁盘组
creatediskgroupdg3highredundancy
\\.\orcldiskdisk13'
namedisk13
\\.\orcldiskdisk14'
namedisk14
4failgroupfdisk3disk'
\\.\orcldiskdisk15'
namedisk15;
1DG_SKATE1_0000DG_SKATE1_0000\\.\ORCLDISKDISK100
2DISK11FDISK1\\.\ORCLDISKDISK110
3DISK12FDISK2\\.\ORCLDISKDISK121
4DISK13FDISK1\\.\ORCLDISKDISK130
5DISK14FDISK2\\.\ORCLDISKDISK141
6DISK15FDISK3\\.\ORCLDISKDISK152
首先确认数据库是否使用磁盘组
select*fromv$asm_client;
未选定行
没有数据库实例使用asm实例中的磁盘组,然后就可以删除与该实例连接的磁盘组
selectname,type,state,total_mb,free_mbfromv$asm_diskgroup;
STATETOTAL_MBFREE_MB
------------------------------------------
MOUNTED1019969
DG2NORMAL
MOUNTED1004902
DG3HIGH
MOUNTED15271374
dropdiskgroupdg3includingcontents;
磁盘组已删除。
selectname,type,state,total_mb,free_mbfromv$asm_diskgroup;
1\\.\ORCLDISKDISK130
2\\.\ORCLDISKDISK141
3\\.\ORCLDISKDISK152
4DG_SKATE1_0000DG_SKATE1_0000\\.\ORCLDISKDISK100
5DISK11FDISK1\\.\ORCLDISKDISK110
6DISK12FDISK2\\.\ORCLDISKDISK121
alterdiskgroupdg2dropdiskdisk13;
磁盘组已变更。
selectname,statefromv$asm_diskgroup;
NAME
------------------------------------------------------------
STATE
----------------------
DG_SKATE1
MOUNTED
DG2
alterdiskgroupdg_skate1dismount;
DISMOUNTED
alterdiskgroupallmount;
alterdiskgroupallmount
*
第1行出现错误:
ORA-15032:
?
?
ORA-15017:
"
DG2"
ORA-15030:
alterdiskgroupalldismount;
alterdiskgroupdg_skate1mount;
alterdiskgroupdg2adddirectory'
+dg2/test/'
;
+dg2/test/datafile'
在数据库实例中使用asm磁盘组创建表空间和数据文件
createtablespacetbs1datafile
2'
+dg2/test/datafile/tbs01.dbf'
size1m
3autoextendonnext1mmaxsize2m;
表空间已创建。
asm相关视图:
v$asm_disk
v$asm_diskgroup
v$asm_client
v$asm_template
维护asm磁盘组除了用sqlplus维护之外,还可以用asmcmd,他很类似linux的命令
asmcmd-p
ASMCMD[+]>
ls
DG2/
DG_SKATE1/
asmcmd[-p][command]
TheenvironmentvariablesORACLE_HOMEandORACLE_SIDdeterminethe
instancetowhichtheprogramconnects,andASMCMDestablishesa
bequeathconnectiontoit,inthesamemannerasaSQLPLUS/AS
SYSDBA.TheusermustbeamemberoftheSYSDBAgroup.
Specifyingthe-poptionallowsthecurrentdirectorytobedisplayed
inthecommandprompt,likeso:
ASMCMD[+DATAFILE/ORCL/CONTROLFILE]>
[command]specifiesoneofthefollowingcommands,alongwithits
parameters.
Type"
help[command]"
togethelponaspecificASMCMDcommand.
commands:
--------
cd
du
find
lsct
lsdg
mkalias
mkdir
pwd
rm
rmalias
cddg2
ASMCMD[+dg2]>
ORCL/
test/
Used_MBMirror_used_MB
24
DB_NameStatusSoftware_VersionCompatible_versionInstance_Name
orclCONNECTED10.2.0.1.010.2.0.1.0orcl
StateTypeRebalUnbalSectorBlockAUTotal_MBFree_MBReq_mi
r_free_MBUsable_file_MBOffline_disksName
MOUNTEDNORMALNN512409610485761004896
04480DG2/
MOUNTEDEXTERNNN512409610485761019969
09690DG_SKATE1/
mkdirtest1
test1/
rmtest1
+dg2
mkaliastest1
usage:
mkalias<
filename>
<
alias>
mkaliastesttest_alias
ORA-15046:
ASM?
'
+dg2/test'
(DBDERROR:
OCIStmtExecute)
helpmkalias
Createthespecified<
forthe<
.Auser-defined
aliasmustresideinthesamediskgroupasthesystem-createdfilename,
andonlyoneuser-definedaliasispermittedperfile.TheSQL
equivalentisALTERDISKGROUP<
dg_name>
ADDALIAS<
FOR
.
lstest
datafile/
lstest/datafile
tbs01.dbf
mkalias+dg2/test/datafile/tbs01.dbftbs_alias.dbf
OCIStm
tExecute)
lsorcl
DATAFILE/
lsorcl/datafile
TBS1.256.704247841
TBS2.257.704248559
ASMCMD[+dg2/orcl/datafile]>
mkaliastbs1.256.704247841tbsa_alias
ORA-15176:
+dg2/orcl/datafile/tbs1.256.704247841'
OCIS
tmtExecute)
mkaliastbs2.257.704248559tbsa_alias
tbsa_alias
rmaliastbsa_alias
-----end---