ASM学习.docx
- 文档编号:18621932
- 上传时间:2023-08-20
- 格式:DOCX
- 页数:14
- 大小:22KB
ASM学习.docx
《ASM学习.docx》由会员分享,可在线阅读,更多相关《ASM学习.docx(14页珍藏版)》请在冰点文库上搜索。
ASM学习
ASM
自动存储管理(ASM)通过创建磁盘组减少了人们手工管理成千上万个数据文件方面的潜在负担。
磁盘组由一系列磁盘设备以及其上驻留的文件组成,可以作为一个逻辑单元来管理。
ASM具有如下优点:
1)ASM能够利用OMF,并且将它与镜像功能和条带技术结合起来,形成一种强健的文件系统和逻辑管理器,甚至可以支持RAC中的多个节点。
2)ASM不再要求人们购买第三方逻辑管理器软件
3)ASM能够自动负载平衡文件的分发,能够对文件进行条带化处理
1ASM结构
ASM将数据文件以及其它数据库结构分解成区(extent),再将区分解为磁盘组中的各个磁盘,以提高性能和可用性。
ASM并不是对整个磁盘进行镜像,而是对数据库对象进行镜像处理。
自动负载平衡是ASM另一个关键功能。
当人们需要增加磁盘空间时,你可以向磁盘组中添加磁盘设备,ASM会把一定比例的文件从一个或多个现有的磁盘中转移到新的磁盘中,并保持所有磁盘在总体I/O上的负载平衡。
ASM使用一种特殊类型的Oracle实例来提供传统Oracle实例与文件系统之间的接口。
有两个新的后台进程支持ASM实例:
RBAL和ORBn。
RBAL用于协调磁盘组中各个磁盘之间的活动,而ORBn用于在实际磁盘之间执行实际的区移动。
N可以从0到9。
对于使用ASM的数据库,也有两个新的后台进程:
OSMB和RBAL。
OSMB负责数据库与ASM实例之间的通讯。
2创建ASM实例
要注意要有裸设备。
如果是WINDOWS平台,要求磁盘是基本磁盘,不要升级成动态磁盘,创建扩展分区,然后创建逻辑分区,但是一定不要格式化,否则创建ASM的过程中将无法找到设备。
创建步骤:
(1)创建管理目录:
MicrosoftWindows
mkdir%ORACLE_BASE%\admin\+ASM\bdump
mkdir%ORACLE_BASE%\admin\+ASM\cdump
mkdir%ORACLE_BASE%\admin\+ASM\hdump
mkdir%ORACLE_BASE%\admin\+ASM\pfile
mkdir%ORACLE_BASE%\admin\+ASM\udump
(2)创建初始化参数文件:
%ORACLE_BASE%\admin\+ASM\pfile\init.ora
###########################################
#AutomaticStorageManagement
###########################################
#_asm_allow_only_raw_disks=false
#asm_diskgroups='TESTDB_DATA1'
#Defaultasm_diskstringvaluesforsupportedplatforms:
#Solaris(32/64bit)/dev/rdsk/*
#WindowsNT/XP\\.\orcldisk*
#Linux(32/64bit)/dev/raw/*
#HPUX/dev/rdsk/*
#HPUX(Tru64)/dev/rdisk/*
#AIX/dev/rhdisk/*
#asm_diskstring=''
###########################################
#DiagnosticsandStatistics
###########################################
background_dump_dest=C:
\oracle\product\10.1.0\admin\+ASM\bdump
core_dump_dest=C:
\oracle\product\10.1.0\admin\+ASM\cdump
user_dump_dest=C:
\oracle\product\10.1.0\admin\+ASM\udump
###########################################
#Miscellaneous
###########################################
instance_type=asm
compatible=10.1.0.4.0
###########################################
#Pools
###########################################
large_pool_size=12M
###########################################
#SecurityandAuditing
###########################################
remote_login_passwordfile=exclusive
(3)添加CSS服务:
在操作系统命令行下执行localconfigadd命令,然后到服务下察看,是否多了OracleCSService服务
(4)识别裸设备:
在操作系统命令行下执行asmtoolg命令,给磁盘加标识。
然后用asmtool-list命令查看。
注:
asmtool是windows下特有的命令
(5)手工创建实例:
MicrosoftWindows
C:
\>oradim-new-asmsid+ASM-syspwdchange_on_install
-pfileC:
\oracle\product\10.1.0\admin\+ASM\pfile\init.ora-spfile
-startmodemanual-shutmodeimmediate
Instancecreated.
C:
\>oradim-edit-asmsid+ASM-startmodea
C:
\>setoracle_sid=+ASM
C:
\>sqlplus"/assysdba"
SQL>startuppfile='C:
\oracle\product\10.1.0\admin\+ASM\pfile\init.ora';
ASMinstancestarted
TotalSystemGlobalArea125829120bytes
FixedSize769268bytes
VariableSize125059852bytes
DatabaseBuffers0bytes
RedoBuffers0bytes
ORA-15110:
nodiskgroupsmounted
SQL>createspfilefrompfile='C:
\oracle\product\10.1.0\admin\+ASM\pfile\init.ora';
Filecreated.
SQL>shutdown
ASMinstanceshutdown
SQL>startup
ASMinstancestarted
YouwillnoticewhenstartingtheASMinstance,wereceivedtheerror:
ORA-15110:
nodiskgroupsmounted
Thiserrorcanbesafelyignored
(6)查看是否发现了该裸设备:
SQL>SELECTgroup_number,disk_number,mount_status,header_status,state,path
FROMv$asm_disk;
(7)创建磁盘组:
SQL>CREATEDISKGROUPtestdb_data1NORMALREDUNDANCY
FAILGROUPcontroller1DISK'\\.\ORCLDISKDISK_DATA1','\\.\ORCLDISKDISK_DATA3'
FAILGROUPcontroller2DISK'\\.\ORCLDISKDISK_DATA2','\\.\ORCLDISKDISK_DATA4';
注:
ORCLDISKDISK_DATA1和ORCLDISKDISK_DATA2等是在做asmtoolg命令时加的磁盘标识。
条带+镜像
(8)查询新建的磁盘组和磁盘的信息:
SQL>selectgroup_number,name,total_mb,free_mb,state,type
fromv$asm_diskgroup;
SQL>selectgroup_number,disk_number,mount_status,header_status,state,path,failgroup
fromv$asm_disk;
(9)使用磁盘组:
SQL>conn/@hwjassysdba(我用户数据库实例为hwj)
SQL>createtablespaceusers2datafile'+TESTDB_DATA1'size10m;
SQL>selectTABLESPACE_NAME,FILE_NAME,BYTESfromdba_data_files;
可以发现该表空间的数据文件已经创建在testdb_data1磁盘组内了。
3ASM实例的一些与众不同的特点
1)ASM没有数据字典,因此所有指向ASM实例的连接都通过SYS和SYSTEM实现,并且只使用操作系统进行身份验证。
2)ASM实例总是处于NOMOUNT状态,因为它没有控制文件。
4访问ASM实例
因为ASM实例没有数据字典,因此对其实例的访问限制在能够通过操作系统身份验证的用户,也就是说,需要由属于DBA组的操作系统用户以SYSDBA或者SYSOPER的身份连接。
例如,如果要连接ASM实例,首先设置ORACLE_SID,然后连接:
cmd>SETORACLE_SID=+ASM
cmd>sqlplus/nolog
sql>connect/assysdba
已连接
sql>selectinstance_namefromv$instance;
+asm
以SYSDBA的身份连接ASM的用户可以进行所有操作,但是以SYSOPER用户连接只能进行下列操作:
1)启动和关闭ASM实例
2)安装或者卸载磁盘组
3)将磁盘组的状态改为ONLINE或者OFFLINE
4)调整磁盘组负载平衡
5)对磁盘组进行完整性检查。
6)访问V$ASM_*动态性能视图
5ASM初始化参数
ASM有一些专用的初始化参数,而有些则是针对ASM实例而扩展了新的值。
1)INSTANCE_TYPE
对于ASM实例而言,这个参数值是ASM。
对于传统的Oracle实例,值是RDBMS
2)DB_UNIQUE_NAME
DB_UNIQE_NAME默认是+ASM,它是一个群集或者一个节点中的一组ASM实例中的唯一名称;只有当人们视图在一个节点上运行多个ASM实例时,它的默认值才需要修改。
3)ASM_POWER_LIMIT
ASM_POWER_LIMIT负责控制负载平衡操作进行的速度。
取值范围是1到11,11表示速度最快,默认是1。
这是一个动态参数,可以在白天设置较低,而晚上设置较高。
4)ASM_DISKSTRING
参数ASM_DISKSTRING用于指定一个或多个字符串,具体与操作系统有关,来限制可以用来创建磁盘组的磁盘设备。
如果这个值为NULL,那么ASM实例能够发现的所有磁盘都可以成为创建磁盘组的候选者。
5)ASM_DISKGROUPS
这个参数规定了一个列表,其中包含将由ASM实例或者ALTERDISKGROUPALLMOUNT命令在启动的时候自动安装进来的磁盘组的名称。
我们也可以手工安装任何现有的磁盘组。
6)LARGE_POOL_SIZE
这个参数即可以用于常规实例,也可以用于ASM实例;不过这个缓冲池由ASM实例使用的时候与其它情况不同,所有的内部ASM包都将从这个缓冲池运行,这个参数至少要设置8M。
6ASM实例的启动和关闭
ASM实例上运行与其它数据库相似,不过用默认的STARTUPMOUNT命令代替了STARTUP命令。
此外,我们还可以用STARTUPRESTRICT来暂时阻止数据库实例连接到ASM实例上并安装磁盘组。
如果人们在ASM实例上使用SHUTDOWN命令,在ASM完成关机操作之前,他会等待所有的相关的数据库都关闭。
唯一的例外是,如果使用SHUTDOWNABORT,则ASM实例并不将ABORT命令传送到相关的数据库,而是所有的相关数据库都会立即执行一条SHUTDOWNABORT命令。
7.ASM动态性能视图
有一些新的动态性能视图与ASM实例有关。
这些视图的内容在ASM实例和数据库实例中内容各不相同,见下表:
视图ASM实例中的内容RDBMS实例中内容
V$ASM_DISK每一行记录ASM实例发现的一个磁盘,不论是否用于磁盘组每一行记录实例使用的每一个磁盘
V$ASM_DISKGROUP每一行记录一个磁盘组信息,包含该磁盘组的一般特征每一行记录使用的每一个磁盘组,不管它是否已经安装了
V$ASM_FILE每一行记录在每个安装过的磁盘组中的每一个文件未用
V$ASM_OPERATION每一行记录ASM实例中正在运行的一个长时间运行的操作未用
V$ASM_TEMPLATE每一行记录ASM实例中每个安装过的磁盘组中的一个模板每一行记录每个安装过的磁盘中的一个模板
V$ASM_CLIENT每一行记录每一个使用ASM实例管理的磁盘组的每一个数据库如果由任何ASM文件打开了,那么为ASM实例添加一行
V$ASM_ALIAS每一行记录每个安装过的磁盘组的每一个别名未用
8ASM文件名
所有的ASM文件都是OMF,因此在大多数管理工作中不用关心使用的实际文件名是什么。
当人们从一个ASM磁盘删除对象时,对应的文件也会删除。
ASM文件可以采用6种不同的格式
1)全名称
例如:
+DSG1/ora10g/datafile/system.264.584793233
在上面这个例子中,磁盘组名称是+DSG1,数据库名称是ora10g,它是system表空间的一个数据文件,文件号/实现(incarnation)对应的是264.584793233。
2)数字名称
数字名称仅用于引用现有的ASM文件,它允许只使用磁盘组名称以及文件号/实现来对应ASM文件。
例如对于上面的例子,数字名称就是:
+DSG1.264.584793233
3)别名
我们可以在ASM实例中通过ALTERDISKGROUPADDALIAS来为现有的或者新的ASM文件创建一个更友好的名称。
首先要创建一个目录
alterdiskgrouptestdb_data1adddirectory'+testdb_data1\redempt';
然后创建别名:
alterdiskgrouptestdb_data1addalias'+testdb_data1\redempt\users.dbf'
for'+TESTDB_DATA1/hwj/datafile/users2.256.621914259';
4)带模板的别名
只有在创建新的ASM文件时可以使用带模版的别名。
模版为我们在创建新的ASM文件时,提供了一种简化文件类型的办法和标记。
5)不完全名称
不完全文件名格式即可以用于创建单个文件,也可以用于创建多个文件。
我们可以只指定磁盘组名称,然后根据文件的类型使用一个默认模版。
例如:
CREATETABLESPACEusers4DATAFILE'+DATA1';
6)带模版的不完全名称。
创建文件时可以指定磁盘组和模版名。
例如:
CREATETABLESPACEusers4DATAFILE'+DATA1(tempfile)';
9磁盘组结构
磁盘组就是作为一个单位而管理的一组物理磁盘。
每个ASM磁盘作为整个磁盘组的一部分,都有一个ASM磁盘名,要么是DBA指定的,要么是在将它分配到此磁盘组时自动指派的。
磁盘组中的文件经过条带化(strip)处理后存储在各个磁盘上,可能使用粗条带(coarsestripping)处理,也可能使用细条带化(finestripping)处理。
粗条带化以1M为单位,细条带化处理适合用于数据仓库环境或者带有低并行处理和各I/O请求拥有最大响应时间的OLTP系统(?
)系统模板中只有CONTROLFILE、ONLINELOG、FLASHBACK是细条带化,其它的都是粗条带化。
10失效组合磁盘组镜像
在定义磁盘组的镜像处理类型之前,必须将磁盘组成失效组(failuregroup)。
失效组是指属于一个磁盘组的一块活多块磁盘组成的一部分资源,例如磁盘控制器。
它如果失效将引起磁盘组的一部分磁盘不可用。
大多数情况下,ASM实例不知道某个磁盘的硬件和软件的依赖关系。
因此,除非人们明确将一个磁盘指定到一个失效组,否则磁盘组的每一个磁盘都属于只包含自身的一个失效组。
定义了失效组之后,我们就可以定义磁盘组的镜像处理了。
磁盘组中可用失效组数量会限制该磁盘组可用的镜像类型,下面是三中可用的类型:
1)外部冗余:
Externalredundancy要求只有一个失效组,并且认为该磁盘组对于数据库运行并不重要,或者改磁盘由外部的一个高可用性硬件,如RAID控制器管理
2)普通冗余
普通冗余要求有两个失效组,提供双路镜像。
3)高冗余
高冗余要求至少三个失效组,提供三路镜像,即使有两路失效,仍然可以使用。
11磁盘组动态负载平衡
每当磁盘组的配置发生改变时,不论是向其中加入、删除一个失效组还是在一个失效组中添加、删除一块磁盘,系统都会自动进行动态负载平衡处理。
这种负载平衡处理是在数据库联机状态下进行的,而且始终保持对用于的可用性。
可以通过调整ASM_POWER_LIMIT参数的值来改变负载平衡操作对系统的影响。
12管理ASM磁盘组:
创建和删除磁盘组举例
我们可以通过V$ASM_DISK视图,来查看ASM_DISKSTRING发现的所有的磁盘以及磁盘的状态信息,也就是说看看那些磁盘还没有使用。
SQL>selectgroup_number,disk_number,name,
failgroup,create_date,pathfromv$asm_disk;
GROUP_DISK_
NUMBERNUMBERNAMEFAILGROUPCREATE_DAPATH
--------------------------------------------------
00/dev/raw/raw6
01/dev/raw/raw5
02/dev/raw/raw4
03/dev/raw/raw3
11DATA1_0001DATA1_000118-APR-04/dev/raw/raw2
10DATA1_0000DATA1_000018-APR-04/dev/raw/raw1
6rowsselected.
从上面的例子可以看出,只有两个磁盘被指派到一个磁盘组,这两个磁盘组各自构成一个失效组。
我们可以从V$ASM_DISKGROUP中查到磁盘组的信息。
SQL>selectgroup_number,name,type,total_mb,free_mb
fromv$asm_diskgroup;
GROUP_NUMBERNAMETYPETOTAL_MBFREE_MB
-------------------------------------------------------------
1DATA1NORMAL1637814024
接下来用下面的命令来创建磁盘组:
SQL>creatediskgroupdata2highredundancy
failgroupfg1disk'/dev/raw/raw3'named2a
failgroupfg2disk'/dev/raw/raw4'named2b
failgroupfg3disk'/dev/raw/raw5'named2c
failgroupfg4disk'/dev/raw/raw6'named2d;
Diskgroupcreated.
下面,我们来查看经过上面操作后的信息:
SQL>selectgroup_number,name,type,total_mb,free_mb
fromv$asm_diskgroup;
GROUP_NUMBERNAMETYPETOTAL_MBFREE_MB
-----------------------------------------------------------------
1DATA1NORMAL1637814024
2DATA2HIGH2457224420
SQL>selectgroup_number,disk_number,name,
failgroup,create_date,pathfromv$asm_disk;
GROUP_DISK_NUMBERNUMBERNAMEFAILGROUPCREATE_DAPATH
----------------------------------------------------------------------------
23D2DFG411-MAY-04/dev/raw/raw6
22D2CFG311-MAY-04/dev/raw/raw5
21D2BFG211-MAY-04/dev/raw/raw4
20D2AFG111-MAY-04/dev/raw/raw3
11DATA1_0001DATA1_000118-APR-04/dev/raw/raw2
10DATA1_0000DATA1_000018-APR-04/dev/raw/raw1
6rowsselected.
如果想从某个磁盘组中删除磁盘,则可以先删除磁盘组,然后重建磁盘组:
DROPDISKGROUPDATA2;DROPDISKGROUPTESTDB_DATA1INCLUDINGCONTENTS;
也可以从磁盘组中删除某个磁盘,这样不会影响现有的数据。
例如:
ALTERDISKGROUPDATA2DROPDISKD2D;
修改磁盘组
我们可以向一个磁盘组中添加磁盘,或者从中删除磁盘;同时我们也可以更改磁盘中的大部分特征,并且不需要重新创建该磁盘组,而且也不会影响用户使用该磁盘组中存储的对象进行事务处理。
添加一个失效组举例:
alterdiskgroupdata1addfailgroupd1fg3disk'/dev/raw/raw6'named1c;
命令完成后,格式化处理和负载平衡处理则在后台继续进
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ASM 学习