杂货-扭
ASM
(自动存储管理)
是一个专门为
Oracle
数据库服务的数据文件存储机制,
通过
ASM
管理
数据文件,
DBA
不用再担心
I/O
性能问题,也不需要知道文件的名称,同时
ASM
也提供了文<
/p>
件系统到卷管理器的集成,下面依次介绍。
一、
ASM
的特点
(
1
)自动调整
I/O
负载
ASM
可以在所有可用的磁盘中自动调整
p>
I/O
负载,不但避免了人工调整
I/O<
/p>
的难度,而且也
优化了性能,同时,利用
ASM
可以在线增加数据库的大小,而无需关闭数据库。
p>
(
2
)条带化存储
ASM
将文件分为多个分配单元(
Al
location Units
,
AU
)进行存储,并在所有磁盘间平均
分配每个文件的
AU
。
(
3
)在线自动负载均衡
当共享存储设备有变化时,
ASM
中的数据会自动均匀分配到现有存储设备中。同时,还可
以
调节数据的负载均衡速度。
(
p>
4
)自动管理数据库文件
在
ASM
存储管理中,
Ora
cle
数据文件是
ASM
自动管理的。
ASM
创建的任何文件一旦不再需要,
就会被自动删除。但是,
ASM
不管理二进制文件、跟踪文件、
预警日志和口令文件。
(
5
)数据冗余
ASM
通
过磁盘组镜像可以实现数据冗余,不需要第三方工具。
(
p>
6
)支持各种
Oracle
数据文件
ASM
存储支持<
/p>
Oracle
数据文件、日志文件、控制文件、归档日志、
RMAN
备份集等。
二、
ASM
的体系结构与后台进程
图
1
显示了
A
SM
的物理构成。
从图
1
可以
看出,
在顶层是
ASM
磁盘组,
ASM
实例和数据库实例可以直接访问这些磁盘组;
< br>然后是
ASM
文件,每个
ASM
文件只能包含在一个磁盘组中,不过,一个磁盘组中可以包含
属
于多个数据库的多个
ASM
文件,并且单个数据库可以使用来自
多个磁盘组的存储空间;
第三部分是
ASM
磁盘,多个
ASM
磁盘组成了
AS
M
磁盘组,但每个
ASM
磁盘只能属于
一个
磁盘组;接着是
AU
(分配单元)
,
AU
是
AS
M
磁盘组分配的最小连续磁盘空间,
ASM
磁盘按
照
AU
进行分区,
每个
AU
的大小为
1M
B
;
这个结构的底层是
Oracle<
/p>
数据块,
由于
AU
是
ASM
分配的最小连续磁盘空间,因此,
< br>ASM
是不允许跨分配单元拆分一个
Oracle
数据块的。
要使用
ASM
,需要在启动数据库实例之前,先
启动一个名为“
+ASM
”的实例,
A
SM
实例不会装载数据库,启动它的目的是为了管理磁盘组和保护其中的数据。同时,<
/p>
ASM
实
例还可以向数据库实例传递有关
文件布局的信息。
通过这种方式,
数据库实例就可以直接访
p>
问磁盘组中存储的文件。图
2
显示了
ASM
的一般体系结构。
从图
2
可以看出,
ASM
< br>实例与数据库实例进行通信的桥梁是
ASMB
进程,此进
程运行在每
个数据库实例上,是两个实例间信息交换的通道。
A
SMB
进程先利用磁盘组名称通过
CSS
获
得管理该磁盘组的
ASM
实例连接
串,
然后建立一个到
ASM
的持久连接
,
这样两个实例之间就
可以通过这条连接定期交换信息,同时这
也是一种心跳监控机制。
另外,在
ASM
实例中还存在另外一个新的进程,即<
/p>
RBAL
,此进程负责规划和协调
磁盘组
的重新平衡活动。除此之外,
ASM
实例还有一些与数据库实例
中的进程相同的后台进
程,例如
LGWR
、
SMON
、
PMON
、
DBWR
、
CKPT<
/p>
等。
如果一个数据库实例使用
ASM
作为存储,
那么它将多出两个后台进程,
即
RBAL
和
ASMB
。
RBAL
负责打开磁盘组
中所有磁盘和数据,而
ASMB
负责和
ASM
实例进程通信。
三、管理
p>
ASM
实例
<
/p>
在使用
ASM
作为数据存储时,
ASM
实例管理显得非常重要,
Oracle<
/p>
提供了丰富的管理功能,
对
ASM
实例进行管理需要具备
SYSDBA
权限,在
Oracle
11g
中可以使用一个新角色
,即<
/p>
SYSASM
,此角色只用于管理
ASM
实例。
1
.
创建
ASM
实例
创建
ASM
实例有两种方法,第一种是利用
dbca
创建,这种方法只需运行
Database
Configuration Assistant
(
DBCA
),然后根据提示即可创建一个
ASM
实例,此种方式在前
面已有讲述,
这里
不再多说。
第二中方法是用命令行方式创建
ASM
实例,
下面进行简单介绍。
(
1
)创建
ASM
< br>磁盘
可以使用
RAID
划分的
LUN
、
分区
和裸设备等来创建
ASM
磁盘,
但是在
使用
LUN
、
分区或裸设
备时,要注意将属主和属组改为
Oracle
用户及
其对应的组,这个在前面节已经讲述过,另
外一种简单的方法就是使用
< br>Oracle
提供的
ASMLib
来完成
ASM
磁盘的创建,
下面将讲
述这种
方法。
在创建
ASM
实例之前,
首先应该确保节点上已经安装了
p>
ASMlib
包,
同时确认
ASMLib
是否已
经自动加载:
[root@node1 ~]# lsmod | grep
oracleasm
oracleasm 46356
1
然后,通过
ASMlib
提供的<
/p>
oracleasm
将已经划分好的磁盘分区转化为
ASM
磁盘,例如:
[root@node1 ~]#/etc/init.d/oracleasm
createdisk ASMDISK1 /dev/sdc5
Marking
disk
[root@node1
~]#/etc/init.d/oracleasm createdisk ASMDISK2
/dev/sdc6
Marking disk
[root@node1 ~]#/etc/init.d/oracleasm
createdisk ASMDISK3 /dev/sdc7
Marking
disk
[root@node1
~]#/etc/init.d/oracleasm createdisk ASMDISK4
/dev/sdc8
Marking disk
[root@node1 ~]#/etc/init.d/oracleasm
createdisk ASMdisk5 /dev/sdc9
Marking
disk
创建完
ASM
磁盘后,
p>
可以查看系统的
/dev/oracleasm/disks/
p>
目录下是否已经生成磁盘设备,
可以采用的命令如如下:
[root@node1 ~]# ll
/dev/oracleasm/disks/ASMDISK*
brw-
rw---- 1 oracle oinstall 8, 21 Sep 10 23:40
/dev/oracleasm/disks/ASMDISK1
brw-
rw---- 1 oracle oinstall 8, 22 Sep 10 23:40
/dev/oracleasm/disks/ASMDISK2
brw-
rw---- 1 oracle oinstall 8, 23 Sep 10 23:36
/dev/oracleasm/disks/ASMDISK3
brw-
rw---- 1 oracle oinstall 8, 24 Sep 10 23:40
/dev/oracleasm/disks/ASMDISK4
brw-
rw---- 1 oracle oinstall 8, 25 Sep 10 23:40
/dev/oracleasm/disks/ASMDISK5
也可以通过如下方式查看:
[root@node1 ~]#service oracleasm
listdisks
ASMDISK1
ASMDISK2
ASMDISK3
ASMDISK4
ASMDISK5
如果要删除
ASM
磁盘可通过以下命令:
[root@node1 ~]#/etc/init.d/oracleasm
deletedisk ASMDISK5
Removing ASM disk
在
RAC
环境中,
要注意另外一个节点是否能够发现对应的
ASM
磁盘,
p>
执行如下命令,
让另外
一个节点来获取这种
变化。
[root@node2
~]#/etc/init.d/oracleasm scandisks
到此位
置,
ASM
磁盘已经创建完毕了。
<
/p>
(
2
)初始化参数
启动
ASM
实例只需要如下几个参
数即可,
利用这些参数可以实现
ASM
实例的内存的自动分配
和自动管理。
下面介绍
ASM
实例初始化参数:
instance_type=asm
cluster_database=true
DB_UNIQUE_NAME=+ASM
ASM_POWER_LIMIT=1
large_pool_size=60M
asm_disk
groups='FLASH_DISK','ARCH_DISK','DATA_DISK'
asm_diskstring='/dev/oracleasm/disks/*'
每个参数的含义如下:
insta
nce_type
,指定实例的类型,对于
ASM
实例,应设置为
ASM
cluster_dat
abase
,指定是否是数据库集群,
true
表示是
ASM
集群
DB_UNIQUE_NAME
,指定
ASM
实例的名称,默认是
+ASM
ASM_POWER_LIMIT
,该参数用来控制
ASM
中数据的负载均衡速度
large_pool_size
,设置大池的大小,由于<
/p>
ASM
文件的分配单元映射是从
larg
e_pool
分
配的,因此
large
_pool_size
至少要
8MB
,
建议越大越好
asm_diskgroups
,指定实例启动时可用的
ASM
磁盘组,
ASM
实例将在启动时自动挂载这
些磁盘组
asm_diskstring
,用于限
制
ASM
实例可用于创建磁盘组的磁盘设备。如果该值为
NULL
,
则
ASM
实例可见的所有磁盘都可以成为创建磁盘组的可选磁盘
(
3
)创建密码文件
[oracle@node1 ~]$$su - oracle
[oracle@node1 ~]$$ cd $$ORACLE_HOME/dbs
[oracle@node1 ~]$$orapwd file=orapw+ASM
password=oracle
(
4
)创建目录结构
[oracle@node
1~]$$su
–
oracle
[oracle@node1 ~]$$cd $$ORACLE_HOME/dbs
[oracle@node1 ~]$$mkdir
–
p
$$ORALCE_BASE/admin/+ASM/udump
[oracle@node1 ~]$$ mkdir
–
p
$$ORALCE_BASE/admin/+ASM/bdump
[oracle@node1 ~]$$mkdir
–
p
$$ORALCE_BASE/admin/+ASM/adump
[oracle@node1~]$$ mkdir
–
p
$$ORALCE_BASE/admin/+ASM/cdump
2
.启动
ASM
实例
无论在
RAC
环境中还是单实例环境,
ASM
实例都需要用到
CSS
进程,在
RAC
环境
中,启动
CRS
后
CSS
已经运行,而在单实例环境下,需要以
root
用户
运行脚本,初始化
CSS
服务,
否则,
在启动
ASM
实例时会报如下错误:
ORA-29701
:
unable
to connect to Cluster Manager
执行初始化脚本的过程如下:
[root@node1
~]#$$ORACLE_HOME/bin/localconfig add
/etc/oracle does not exist. Creating it
now.
Successfully accumulated necessary
OCR keys.
Creating OCR keys for user
'root', privgrp 'root'..
Operation
successful.
Configuration for local CSS
has been initialized
Cleaning up
Network socket directories
Setting up
Network socket directories
Adding to
inittab
Startup will be queued to init
within 30 seconds.
Checking the status
of new Oracle init process...
Expecting
the CRS daemons to be up within 600 seconds.
Cluster Synchronization Services is
active on these nodes.
node1
Cluster Synchronization Services is
active on all the nodes.
Oracle CSS
service is installed and running under init(1M)
p>
然后启动
ASM
实例:
[oracle@node1 ~]$$export
ORACLE_SID=+ASM
[oracle@node1
~]$$sqlplus / as sysdba
SQL> startup
ASM instance started
Total
System Global Area 134217728 bytes
Fixed Size 1218124
bytes
Variable Size
107833780 bytes
ASM Cache
25165824 bytes
ORA-15110: no diskgroups
mounted
因为首次启动
ASM
实例并没有创建
ASM
磁盘组,所以显示
15110
错误是正常的。
3
.管理
ASM
磁盘组
ASM
磁盘组是作为逻辑单元进行统一管理的一组
磁盘,在
ASM
实例中,可以创建和添加新
的磁盘组,
可以修改现有的磁盘组,
在其中添加一个磁盘或
者删除一个磁盘,
也可以删除现
有的磁盘组。
< br>
(
1
)添加磁盘组
SQL> create diskgroup FLASH_DISK
external redundancy disk
'/dev/oracleasm/disks/ASMDISK1' name
flashdisk;
Diskgroup created.
SQL> create diskgroup ARCH_DISK
external redundancy disk
'/dev/oracleasm/disks/ASMDISK2' name
archdisk1;
Diskgroup created.
SQL> create diskgroup DATA_DISK normal
redundancy disk
'/dev/oracleasm/disks/ASMDISK4' name
datadisk1, '/dev/oracleasm/disks/ASMDISK5'
name datadisk2;
Diskgroup
created.
(
2
)查看磁盘组
状态
SQL> select name,state
from v$$asm_diskgroup;
NAME
STATE
杂货-扭
杂货-扭
杂货-扭
杂货-扭
杂货-扭
杂货-扭
杂货-扭
杂货-扭
-
上一篇:化妆品词汇翻译
下一篇:钢板厚度允许尺寸偏差英文翻译