oracle asm管理
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功能和特点 对文件而不是逻辑卷进行条带化,更加细粒化 提供联机磁盘重新配置和动态重新平衡 允许调整重新平衡速度 与每一个文件为基础提供冗余 只支持oracle DB文件 可识别支持集群环境 可自动安装 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 数据库实例请求创建oracle DB文件的过程: 数据库请求创建文件 asm前台进程创建一个持续操作目录(COD)条目并在磁盘组中为新的文件分配空间 asmb数据库进程接收新文件的区映射 现在文件处于打开状态,数据库进程直接初始化该文件 初始化后,数据库进程请求提交文件创建,这会导致asm 前台进程清除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; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |