oracle asm管理
1、asm优点
概念:
auto storage manage
db+instance<=====> raw裸设备
性能比较:raw > asm > filesystem
管理方便性 filesystem > asm > raw
逻辑结构
数据库<--表空间(tablespace)<---段(segment)<----区(extend)<---数据块(block)
物理结构:SAN存储 NFS存储
数据文件()
ASM结构::
ASM磁盘组《---ASM磁盘《---ASM分配单元《---磁盘物理块
|
ASM文件
asm功能和特点
对文件而不是逻辑卷进行条带化,更加细粒化
提供联机磁盘重新配置和动态重新平衡
允许调整重新平衡速度
与每一个文件为基础提供冗余
可识别支持集群环境
可自动安装
asm优点:
可以让ASM免除如下:
I/O性能优化
数据文件移动和重新组织
文件名管理
逻辑卷管理
文件系统管理
集群文件系统管理
裸设备管理
raid 0 1 (卷)
raid1 2快盘 内容一模一样
raid0 2块盘 各一半
raid5 3块盘 一半 一半 全部
raid 1 和 raid 0 4块盘分成2组 2组对称
2、管理asm实例
asm实例是asm进程和内存组件的结合
asm后台进程:
arcn归档进程
ckpt检查点进程
dbwn数据写进程
diag诊断进程
jnnn作业队列进程
lgwr日志写进程
pmon进程监视器
pspo进程衍生进程
qmnn 队列监视器
reco恢复器进程
smon系统监视器
mman内存管理器进程
vktm虚拟计时器进程
如果集群还有如下进程:
lmon全局入队服务监视器进程
lmdn全局入队服务守护进程
lmsn 全局高速缓存服务进程
lckn锁定进程
ps -ef | grep asm --colour
asm前台进程创建一个持续操作目录(COD)条目并在磁盘组中为新的文件分配空间
前台进程清除cod条目并将文件的acd信息写入磁盘,为将磁盘标记为已经创建。
asm动态性能视图
v$asm_alias v$asm_attribute
v$asm_client
v$asm_disk
v$asm_disk_iostat
v$asm_disk_stat
v$asm_operation
v$asm_template
asm系统权限:
sysasm osasm
sysdba osdba
sysoper osoper
命令行登录:
sqlplus / as sysasm
sql> show parameter spfile;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string +DATA/asm/asmparameterfile/reg
istry.253.943292165
sql> create pfile from spfile;
File created.
目录: /u01/app/oracle/product/11.2.0/grid/dbs/
startup pfile='/u01/app/oracle/product/11.2.0/grid/dbs/init+ASM.ora';
asm实例的启动及关闭
sql> show parameter name;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_unique_name string +ASM
instance_name string +ASM
lock_name_space string
service_names string +ASM
查看asm组
sql> select name,state from v$asm_diskgroup;
NAME STATE
------------------------------ -----------
DATA MOUNTED
FRA MOUNTED
sql> select GROUP_NUMBER,INSTANCE_NAME,DB_NAME from v$asm_client;
GROUP_NUMBER INSTANCE_N DB_NAME
------------ ---------- ----------
########## +ASM +ASM
########## orcl orcl
########## orcl orcl
su - oracle
sql> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
sql> shutdown immediate
ASM diskgroups volume disabled
ASM diskgroups dismounted
ASM instance shutdown
asm启动到nomount状态
sql> startup nomount
ASM instance started
Total System Global Area 283930624 bytes
Fixed Size 2212656 bytes
Variable Size 256552144 bytes
ASM Cache 25165824 bytes
查看目前磁盘组:
sql> show parameter asm_diskgroup
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
asm_diskgroups string FRA
sql> select name,state from v$asm_diskgroup;
NAME STATE
------------------------------ -----------
FRA DISMOUNTED
DATA DISMOUNTED
挂着磁盘组:
alter diskgroup data mount;
alter diskgroup fra mount;
sql> alter diskgroup data mount;
Diskgroup altered.
sql> alter diskgroup fra mount;
Diskgroup altered.
sql>
查看磁盘组状态:
sql> select name,state from v$asm_diskgroup;
NAME STATE
------------------------------ -----------
FRA MOUNTED
DATA MOUNTED
sql>
############
sql> shutdown immediate
ASM diskgroups volume disabled
ASM diskgroups dismounted
ASM instance shutdown
sql> startup
ASM instance started
Total System Global Area 283930624 bytes
Fixed Size 2212656 bytes
Variable Size 256552144 bytes
ASM Cache 25165824 bytes
ASM diskgroups mounted
ASM diskgroups volume enabled
sql> show parameter diskgroup
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
asm_diskgroups string FRA,DATA
sql> select name,state from v$asm_diskgroup;
NAME STATE
------------------------------ -----------
DATA MOUNTED
FRA MOUNTED
startup 与 startup mount 、 startup open 在asm上面 是一样的
#卸载磁盘组
alter diskgroup data dismount;
另外一种 保护模式:(修复模式)
startup restrict;
sql> startup restrict;
ASM instance started
Total System Global Area 283930624 bytes
Fixed Size 2212656 bytes
Variable Size 256552144 bytes
ASM Cache 25165824 bytes
ASM diskgroups mounted
ASM diskgroups volume enabled
sql> select name,state from v$asm_diskgroup;
NAME STATE
------------------------------ -----------
DATA RESTRICTED
FRA RESTRICTED
这时启动数据库报错 因为asm保护模式
sql> startup
ORA-01078: failure in processing system parameters
ORA-01565: error in identifying file '+DATA/orcl/spfileorcl.ora'
ORA-17503: ksfdopn:2 Failed to open file +DATA/orcl/spfileorcl.ora
ORA-15056: additional error message
ORA-17503: ksfdopn:DGOpenFile05 Failed to open file +DATA/orcl/spfileorcl.ora
ORA-17503: ksfdopn:2 Failed to open file +DATA/orcl/spfileorcl.ora
ORA-15236: diskgroup DATA mounted in restricted mode
ORA-06512: at line 4
############
srvctl stop asm -f 强制关闭磁盘组
crs_stat -t
srvctl start asm 启动磁盘组,但是没有mount
把磁盘组打开到mount状态
srvctl start diskgroup -g data
srvctl start diskgroup -g fra
srvctl stop diskgroup -g data
srvctl stop diskgroup -g fra
##############
asmcmd
[oracle@oel ~]$ asmcmd
ASMCMD>
ASMCMD> shutdown --help
Unknown option: help
usage: shutdown [--immediate] [--abort]
help: help shutdown
ASMCMD> shutdown --immediate
ASM diskgroups volume disabled
ASM diskgroups dismounted
ASM instance shutdown
Connected to an idle instance.
有这么多命令???????
ASMCMD> -- help
commands:
--------
md_backup,md_restore
lsattr,setattr
cd,cp,du,find,help,ls,lsct,lsdg,lsof,mkalias
mkdir,pwd,rm,rmalias
chdg,chkdg,dropdg,iostat,lsdsk,lsod,mkdg,mount
offline,online,rebal,remap,umount
dsget,dsset,lsop,shutdown,spbackup,spcopy,spget
spmove,spset,startup
chtmpl,lstmpl,mktmpl,rmtmpl
chgrp,chmod,chown,groups,grpmod,lsgrp,lspwusr,lsusr
mkgrp,mkusr,orapwusr,passwd,rmgrp,rmusr
volcreate,voldelete,voldisable,volenable,volinfo
volresize,volset,volstat
ASMCMD>
ASMCMD> startup --help
Unknown option: help
usage: startup [--nomount] [--restrict] [--pfile <pfile.ora>]
help: help startup
3、管理ASM磁盘组
8个2G
2个磁盘组 DATA FRA
sql> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
+DATA/orcl/datafile/system.256.943301251
+DATA/orcl/datafile/sysaux.257.943301251
+DATA/orcl/datafile/undotbs1.258.943301251
+DATA/orcl/datafile/users.259.943301251
+DATA/orcl/datafile/example.265.943301433
sql> select name from v$controlfile;
NAME
--------------------------------------------------------------------------------
+DATA/orcl/controlfile/current.260.943301383
+FRA/orcl/controlfile/current.256.943301385
磁盘组的冗余度:
外部冗余:asm不提供如何数据镜像
正常冗余:asm提供数据双向镜像
高冗余:asm提供3向镜像
fdisk -l
fdisk /dev/sdj
fdisk /dev/sdk
fdisk /dev/sdl
fdisk /dev/sdm
fdisk /dev/sdn
fdisk /dev/sdo
fdisk /dev/sdp
fdisk /dev/sdq
vim /etc/udev/rules.d/60-raw.rules
start_udev
raw -aq
ll /dev/raw
chown oracle.oinstall /dev/raw/raw1*
chmod 660 /dev/raw/raw1*
sqlplus / as sysasm
set lines 180;
col name for a20;
col path for a50;
select name,path from v$asm_disk order by 1;
sql> select name,path from v$asm_disk order by 1;
NAME PATH
-------------------- --------------------------------------------------
DATA_0000 /dev/raw/raw1
DATA_0001 /dev/raw/raw2
DATA_0002 /dev/raw/raw3
DATA_0003 /dev/raw/raw4
FRA_0000 /dev/raw/raw5
FRA_0001 /dev/raw/raw6
FRA_0002 /dev/raw/raw7
FRA_0003 /dev/raw/raw8
/dev/raw/raw12
/dev/raw/raw11
/dev/raw/raw15
NAME PATH
-------------------- --------------------------------------------------
/dev/raw/raw16
/dev/raw/raw18
/dev/raw/raw17
/dev/raw/raw13
/dev/raw/raw14
创建磁盘组:
create diskgroup test normal redundancy failgroup fg1 disk '/dev/raw/raw11' name test_1,'/dev/raw/raw12' name test_2 failgroup fg2 disk '/dev/raw/raw13' name test_3,'/dev/raw/raw14' name test_4;
sql> create diskgroup test normal redundancy failgroup fg1 disk '/dev/raw/raw11' name
test_1,'/dev/raw/raw14' name test_4;
Diskgroup created.
sql> select name,state from v$asm_diskgroup;
NAME STATE
-------------------- -----------
DATA MOUNTED
FRA MOUNTED
TEST MOUNTED
查看磁盘组及单前大小及空闲大小
set pages 1000;
sql> select group_number,name,state,total_mb,free_mb from v$asm_diskgroup;
GROUP_NUMBER NAME STATE TOTAL_MB FREE_MB
------------ -------------------- ----------- ---------- ----------
1 DATA MOUNTED 8188 4557
2 FRA MOUNTED 8188 7954
3 TEST MOUNTED 2044 1938
select a.group_number,a.name,b.name,b.path from v$asm_diskgroup a,v$asm_disk b where a.group_number=b.group_number order by 1,2,3,4;
GROUP_NUMBER NAME NAME PATH
------------ -------------------- -------------------- --------------------
1 DATA DATA_0000 /dev/raw/raw1
1 DATA DATA_0001 /dev/raw/raw2
1 DATA DATA_0002 /dev/raw/raw3
1 DATA DATA_0003 /dev/raw/raw4
2 FRA FRA_0000 /dev/raw/raw5
2 FRA FRA_0001 /dev/raw/raw6
2 FRA FRA_0002 /dev/raw/raw7
2 FRA FRA_0003 /dev/raw/raw8
3 TEST TEST_1 /dev/raw/raw11
3 TEST TEST_2 /dev/raw/raw12
3 TEST TEST_3 /dev/raw/raw13
3 TEST TEST_4 /dev/raw/raw14
12 rows selected.
修改磁盘组:
删除磁盘组:
drop diskgroup test including contents;
往磁盘组中添加磁盘:
alter diskgroup test add disk '/dev/raw/raw15' name A5,'/dev/raw/raw16' name A6,'/dev/raw/raw17' name A7,'/dev/raw/raw18' name A8;
从磁盘组中删除磁盘:
alter diskgroup test drop disk A5;
取消磁盘操作undrop
alter diskgroup test undrop disk A5;
查看asm的兼容性:
sql> select name,DATABASE_COMPATIBILITY,COMPATIBILITY from v$asm_diskgroup where name='FRA';
NAME DATABASE_COMPATIBILITY COMPATIBILITY
-------------------- ------------------------------------------------------------ -----------------
-------------------------------------------FRA 10.1.0.0.0 11.2.0.0.0
sql> select name,COMPATIBILITY from v$asm_diskgroup where name='TEST';
NAME
------------------------------
DATABASE_COMPATIBILITY
------------------------------------------------------------
COMPATIBILITY
------------------------------------------------------------
TEST
10.1.0.0.0
10.1.0.0.0
修改asm兼容性(asm和rdbms)
alter diskgroup test set attribute 'compatible.asm'='11.2.0.0.0';
alter diskgroup test set attribute 'compatible.rdbms'='11.2.0.0.0';
sql> select name,COMPATIBILITY from v$asm_diskgroup where name='TEST';
NAME
------------------------------
DATABASE_COMPATIBILITY
------------------------------------------------------------
COMPATIBILITY
------------------------------------------------------------
TEST
11.2.0.0.0
11.2.0.0.0
select name,path from v$asm_disk order by 1,2;
#drop test_1;不记录磁盘变化
alter diskgroup test offline disk test_1 drop after 0 h;
select name,repair_timer,state from v$asm_disk_stat;
select name,2;
重新上线:
alter diskgroup test add disk '/dev/raw/raw11' name test_1;
sql> alter diskgroup test add disk '/dev/raw/raw11' name test_1;
alter diskgroup test add disk '/dev/raw/raw11' name test_1
*
ERROR at line 1:
ORA-15032: not all alterations performed
ORA-15033: disk '/dev/raw/raw11' belongs to diskgroup "TEST"
清空磁盘:
dd if=/dev/zero of=/dev/raw/raw11 bs=1M count=10;
重新添加:
sql> alter diskgroup test add disk '/dev/raw/raw11' name test_1;
Diskgroup altered.
###repair_timer小于3.6小时
alter diskgroup test offline disk test_1 drop after 3.6 h;