知识大全 探索ORACLE之ASM概念(完整版)
Posted 知
篇首语:丈夫志四海,万里犹比邻。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 探索ORACLE之ASM概念(完整版)相关的知识,希望对你有一定的参考价值。
探索ORACLE之ASM概念(完整版) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
一 ASM(自动存储管理)的来由
ASM是Oracle g R 中为了简化Oracle数据库的管理而推出来的一项新功能 这是Oracle自己提供的卷管理器 主要用于替代操作系统所提供的LVM 它不仅支持单实例 同时对RAC的支持也是非常好 ASM可以自动管理磁盘组并提供有效的数据冗余功能 使用ASM(自动存储管理)后 数据库管理员不再需要对ORACLE中成千上万的数据文件进行管理和分类 从而简化了DBA的工作量 可以使得工作效率大大提高
二 什么是ASM
ASM它提供了以平台无关的文件系统 逻辑卷管理以及软RAID服务 ASM可以支持条带化和磁盘镜像 从而实现了在数据库被加载的情况下添加或移除磁盘以及自动平衡I/O以删除 热点 它还支持直接和异步的I/O并使用Oracle i中引入的Oracle数据管理器API(简化的I/O系统调用接口)
ASM是做为单独的Oracle实例实施和部署 并且它只需要有参数文件 不需要其它的任何物理文件 就可以启动ASM实例 只有它在运行的时候 才能被其它数据访问 在Linux平台上 只有运行了OCSSD服务(Oracle安装程序默认安装)了才能和访问ASM
三 使用ASM的好处
将I/O平均分部到所有可用磁盘驱动器上以防止产生热点 并且最大化性能
配置更简单 并且最大化推动数据库合并的存储资源利用
内在的支持大文件
在增量增加或删除存储容量后执行自动联系重分配
维护数据的冗余副本以提高可用性
支持 g g的数据存储及RAC的共享存储管理
支持第三方的多路径软件
使用OMF方式来管理文件
四 ASM冗余
ASM使用独特的镜像算法 不镜像磁盘 而是镜像盘区 作为结果 为了在产生故障时提供连续的保护 只需要磁盘组中的空间容量 而不需要预备一个热备(hot spare)磁盘 不建议用户创建不同尺寸的故障组 因为这将会导致在分配辅助盘区时产生问题 ASM将文件的主盘区分配给磁盘组中的一个磁盘时 它会将该盘区的镜像副本分配给磁盘组中的另一个磁盘 给定磁盘上的主盘区将在磁盘组中的某个伙伴磁盘上具有各自的镜像盘区 ASM确保主盘区和其镜像副本不会驻留在相同的故障组中 磁盘组的冗余可以有如下的形式 双向镜像文件(至少需要两个故障组)的普通冗余(默认冗余)和使用三向镜像(至少需要 个故障组)提供较高保护程度的高冗余 一旦创建磁盘组 就不可以改变它的冗余级别 为了改变磁盘组的冗余 必须创建具有适当冗余的另一个磁盘组 然后必须使用RMAN还原或DBMS_FILE_TRANSFER将数据文件移动到这个新创建的磁盘组
三种不同的冗余方式如下
外部冗余(external redundancy) 表示Oracle不帮你管理镜像 功能由外部存储系统实现 比如通过RAID技术 有效磁盘空间是所有磁盘设备空间的大小之和
默认冗余(normal redundancy) 表示Oracle提供 份镜像来保护数据 有效磁盘空间是所有磁盘设备大小之和的 / (使用最多)
高度冗余(high redundancy) 表示Oracle提供 份镜像来保护数据 以提高性能和数据的安全 最少需要三块磁盘(三个failure group) 有效磁盘空间是所有磁盘设备大小之和的 / 虽然冗余级别高了 但是硬件的代价也最高
五 ASM进程
ASM实例除了传统的DBWR LGWR CKPT SMON PMON等进程还包含如下四个新后台进程
RBAL 负责协调磁盘组的重新平衡活动(负责磁盘组均衡)
ARB ARBn 在同一时刻可以存在许多此类进程 它们分别名为ARB ARB 以此类推 执行实际的重新平衡分配单元移动进程
GMON 用于ASM磁盘组监控
O nn 这组进程建立到ASM实例的连接 某些长时间操作比如创建数据文件 RDBMS会通过这些进程向ASM发送信息
ASMB与ASM 实例的前台进程连接 周期性的检查两个instance的健康状况 每个数据库实例同时只能与一个ASM实例连接 因此数据库只会有一个ASMB后台进程 如一个节点上有多个数据库实例 它们只能共享一个ASM实例
RBAL用来进行全局调用 以打开某个磁盘组内的磁盘 ASMB进程与该节点的CSS守护进程进行通信 并接收来自ASM实例的文件区间映射信息 ASMB还负责为ASM实例提供I/O统计数据
CSS集群同步服务 要使用ASM 必须确保已经运行了CSS集群同步服务 CSS负责ASM实例和数据库实例之间的同步
注意 ASM实例必须要先于数据库实例启动 和数据库实例同步运行 迟于数据库实例关闭 ASM 实例和数据库实例的关系可以是 也可以是 n 如果是 n 最好为ASM 安装单独的ASM_HOME
六 ASM支持datafile logfiles control files archivelogs RMAN backup sets等自动的数据库文件管理
七 ASM实例和数据库实例对应关系
八 Cluster ASM 架构
如需了解更详细信息请参见Oracle数据库管理员指南(Oracle首次放出)
好了 现在开始谈谈有关于ASM安装的相关内容 ASM的安装必须建立在操作系统和数据库软件已经安装完成的及实例未创建之前来进行安装 之后再进行选择ASM方式建库 ASM不仅可以应用于单实例的数据库 同时更适用于RAC集群方式的数据库 并且ASM只被Oracle所认 同时也是ORACLE最佳的存储解决方案 可以有效的替代RAID技术和卷管理技术 比裸设备的管理更加方便 所以现在大部分企业都在迅速的向ASM技术迁移
在上面我们已经探讨过了ASM的三种模式 及其的一些应用 在这里我们就不对其进行过多的累述 正式进入这篇的主题 如何安装ASM软件 安装ASM需要具备哪些条件
ASM安装步骤
一 基础环境准备
检查操作系统和数据库软件是否安装完成
Installation in progress (Mon Apr : : CST )
% Done
% Done
% Done
% Done
% Done
Install successful
Linking in progress (Mon Apr : : CST )
Link successful
Setup in progress (Mon Apr : : CST )
% Done
Setup successful
End of install phases (Mon Apr : : CST )
WARNING:A new inventory has been created in this session However it has not yet been registered as the central inventory of this system
To register the new inventory please run the script /oracle/oraInventory/orainstRoot sh with root privileges
If you do not register the inventory you may not be able to update or patch the products you installed
The following configuration scripts
/oracle/orahome/ /db_ /root sh
need to be executed as root for configuring the system If you skip the execution of the configuration tools the configuration will not be plete and the product wont function properly In order to get the product to function properly you will be required to execute the scripts and the configuration tools after exiting the OUI
The installation of Oracle Database g was successful
从如上信息我们可以看到数据库已经安装完成 操作系统肯定也是没有问题的
检查数据库和操作系统版本
[oracle@ db_ ]$ lsb_release a
LSB Version: :core ia :core noarch:graphics ia :graphics noarch
Distributor ID: EnterpriseEnterpriseServer
Description: Enterprise Linux Enterprise Linux Server release (Carthage)
Release:
Codename: Carthage
[oracle@ db_ ]$
[oracle@ db_ ]$ uname a
Linux wwl el # SMP Thu Sep : : EDT i i i GNU/Linux
操作系统版本为 X 内核版本为 el 后面下载ASM包必须要对应
[oracle@ db_ ]$ sqlplus / as sysdba
SQL*Plus: Release Production on Mon Apr : :
Copyright (c) Oracle All rights reserved
Connected to an idle instance
SQL>
数据库版本是
我们已经知道了这些信息后 我们就可以有针对性的下载ASM了:
ASM下载地址 版本不一样 用的ASM包也不一样
l
找到Intel IA (x ) Architecture系列中的这个包下载下来
Drivers for kernel el· oracleasm el el i rpm
· 以及如下两个包下载下来就可以了
Library and Tools· oracleasm support el i rpm
· oracleasmlib el i rpm
·
下载完了之后开始安装asm的rpm包 用root用户安装 注意安装顺序 如下:
[root@wwl asmpark]# ls
oracleasm el el i rpm
oracleasmlib el i rpm
oracleasm support el i rpm
[root@wwl asmpark]# rpm ivh oracleasm support el i rpm
warning: oracleasm support el i rpm: Header V DSA signature: NOKEY key ID e e
Preparing ########################################### [ %]
:oracleasm support ########################################### [ %]
[root@wwl asmpark]# rpm ivh oracleasm el el i rpm
warning: oracleasm el el i rpm: Header V DSA signature: NOKEY key ID e e
Preparing ########################################### [ %]
:oracleasm el########################################### [ %]
[root@wwl asmpark]# rpm ivh oracleasmlib el i rpm
warning: oracleasmlib el i rpm: Header V DSA signature: NOKEY key ID e e
Preparing ########################################### [ %]
:oracleasmlib ########################################### [ %]
[root@wwl asmpark]#
好了 现在ASM相关包已经安装完成 现在来开始创建用于ASM的磁盘分区(不是一定要做 裸盘也可以做ASM)
[root@wwl asmpark]# fdisk l
Disk /dev/sda: GB bytes
heads sectors/track cylinders
Units = cylinders of * = bytes
Device Boot Start End Blocks Id System
/dev/sda * Linux
/dev/sda + e Linux LVM
Disk /dev/sdb: GB bytes
heads sectors/track cylinders
Units = cylinders of * = bytes
Disk /dev/sdb doesn t contain a valid partition table
Disk /dev/sdc: GB bytes
heads sectors/track cylinders
Units = cylinders of * = bytes
Disk /dev/sdc doesn t contain a valid partition table
[root@wwl asmpark]#
我们从上图可以看出系统中有两块空闲的磁盘没有使用 我们首先需要对磁盘创建分区 但不能格式化 命令如下:
fdisk /dev/sdb /n/p/ /回车/回车/w
fdisk /dev/sdc /n/p/ /回车/回车/w
如下就已经创建好了分区
[root@wwl asmpark]# fdisk l
Disk /dev/sda: GB bytes
heads sectors/track cylinders
Units = cylinders of * = bytes
Device Boot Start End Blocks Id System
/dev/sda * Linux
/dev/sda + e Linux LVM
Disk /dev/sdb: GB bytes
heads sectors/track cylinders
Units = cylinders of * = bytes
Device Boot Start End Blocks Id System
/dev/sdb Linux
Disk /dev/sdc: GB bytes
heads sectors/track cylinders
Units = cylinders of * = bytes
Device Boot Start End Blocks Id System
/dev/sdc Linux
二 ASM配置
以上已将准备环境准备好 下一步骤就是开始配置了 这里面配置包括如下几个步骤
开始创建ASM实例 创建ASM实例的方式有两种 一种是通过命令行 还有一种是通过图形界面 执行DBCA后有一步是创建ASM实例 图形界面实在太简单了 跟创建DB是一样的 在这里就不累赘了
在使用ASM之前首先要配置ASMLib驱动程序 如下
我们首先可以看下asm的配置工具 oracleasm的语法和功能 如下
[root@wwl asmpark]# /etc/init d/oracleasm help
Usage: /etc/init d/oracleasm start|stop|restart|enable|disable|configure|createdisk|deletedisk|querydisk|listdisks|scandisks|status
[root@wwl asmpark]#
开始配置ASMLib
[root@wwl asmpark]# /etc/init d/oracleasm configure
Configuring the Oracle ASM library driver
This will configure the on boot properties of the Oracle ASM library
driver The following questions will determine whether the driver is
loaded on boot and what permissions it will have The current values
will be shown in brackets ( [] ) Hitting <ENTER> without typing an
answer will keep that current value Ctrl C will abort
Default user to own the driver interface []: oracle
Default group to own the driver interface []: dba
Start Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: done
Initializing the Oracle ASMLib driver: [ OK ]
Scanning the system for Oracle ASMLib disks: [ OK ]
启用ASMLib驱动程序
[root@wwl asmpark]# /etc/init d/oracleasm enable
Writing Oracle ASM library driver configuration: done
Initializing the Oracle ASMLib driver: [ OK ]
Scanning the system for Oracle ASMLib disks: [ OK ]
通过以root用户身份运行以下命令来标记由 ASMLib 使用的磁盘
[root@wwl asmpark]# /etc/init d/oracleasm createdisk VOL /dev/sdb
Marking disk VOL as an ASM disk: [ OK ]
[root@wwl asmpark]# /etc/init d/oracleasm createdisk VOL /dev/sdc
Marking disk VOL as an ASM disk: [ OK ]
[root@wwl asmpark]#
通过如下命令查看ASM所能使用的磁盘及状态 一切显示都是正常的
[root@wwl asmpark]# oracleasm querydisk VOL
Disk VOL is a valid ASM disk
[root@wwl asmpark]# oracleasm querydisk /dev/sdb
Device /dev/sdb is marked an ASM disk with the label VOL
[root@wwl asmpark]# oracleasm querydisk VOL
Disk VOL is a valid ASM disk
[root@wwl ~]# oracleasm querydisk /dev/sdc
Device /dev/sdc is marked an ASM disk with the label VOL
[root@wwl asmpark]# oracleasm listdisks
VOL
VOL
[root@wwl asmpark]# ls l /dev/oracleasm/disks/*
brw rw oracle dba Apr : /dev/oracleasm/disks/VOL
brw rw oracle dba Apr : /dev/oracleasm/disks/VOL
[root@wwl asmpark]# oracleasm status
Checking if ASM is loaded: yes
Checking if /dev/oracleasm is mounted: yes
如上ASMLib已经安装完成 并且也将磁盘标记为可用 接下来要做的就是创建ASM实例 并构建一个使用ASM磁盘来存储数据的数据库 可以使用DBCA 当然也可以使用手工的方式来创 在这里 我就采用手工方式创建ASM实例 步骤如下
创建初始化参数文件 信息如下
[oracle@ dbs]$ vi $ORACLE_HOME/dbs/init$ORACLE_SID ora
asm_diskstring= WWL:VOL*
background_dump_dest= /oracle/admin/+ASM/bdump
core_dump_dest= /oracle/admin/+ASM/cdump
user_dump_dest= /oracle/admin/+ASM/udump
instance_type= asm
large_pool_size= M
remote_login_passwordfile= SHARED
增加实例信息到/etc/oratab
$ vi /etc/oratab
+ASM:/u /app/oracle/product/ /db_ :Y
创建ASM实例密码文件
[oracle@ dbs]$ $ORACLE_HOME/bin/orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password= oracle force=y;
[oracle@ dbs]$
创建ASM实例相应的目录:
[oracle@ dbs]$ mkdir p $ORACLE_BASE/admin/$ORACLE_SID/bdump
[oracle@ dbs]$ mkdir p $ORACLE_BASE/admin/$ORACLE_SID/cdump
[oracle@ dbs]$ mkdir p $ORACLE_BASE/admin/$ORACLE_SID/udump
[oracle@ dbs]$
开启CSS服务
$ su root
[root@wwl ~]# /oracle/orahome/ /db_ /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
Adding to inittab
Startup will be queued to init within seconds
Checking the status of new Oracle init process
Expecting the CRS daemons to be up within seconds
CSS is active on these nodes
wwl
CSS is active on all nodes
Oracle CSS service is installed and running under init( M)
启动ASM实例 并创建ASM磁盘组
[oracle@ dbs]$ sqlplus / as sysdba
SQL*Plus: Release Production on Tue Apr : :
Copyright (c) Oracle All rights reserved
Connected to:
Oracle Database g Enterprise Edition Release Production
With the Partitioning OLAP and Data Mining options
SQL> startup nomount;
ASM instance started
Total System Global Area bytes
Fixed Size bytes
Variable Size bytes
ASM Cache bytes
SQL> select instance_name status from v$instance;
INSTANCE_NAME STATUS
+ASM STARTED
SQL>
现在实例我已经将其启动到nomount状态 下一步开始创建ASM磁盘组
创建ASM组并将其启动到MOUNT状态
SQL> create diskgroup ASMGROUP normal redundancy disk /dev/oracleasm/disks/VOL /dev/oracleasm/disks/VOL ;
Diskgroup created
好了 磁盘组已经创建好了 并且也已经挂载了
SQL> select name state from v$asm_diskgroup;
NAME STATE
ASMGROUP MOUNTED
SQL>
可以看到如下 参数文件也随着更新了
SQL> show parameter asm_diskgroups;
NAME TYPE VALUE
asm_diskgroups string ASMGROUP
检查ASM进程是否都正常启动了 我们之前提到的几个进程名称 这里面都有了 说明现在ASM已经是正常运行状态
[oracle@ ~]$ ps ef | grep asm
oracle : ? : : asm_pmon_+ASM
oracle : ? : : asm_psp _+ASM
oracle : ? : : asm_mman_+ASM
oracle : ? : : asm_dbw _+ASM
oracle : ? : : asm_lgwr_+ASM
oracle : ? : : asm_ckpt_+ASM
oracle : ? : : asm_smon_+ASM
oracle : ? : : asm_rbal_+ASM
oracle : ? : : asm_gmon_+ASM
一 通过ASM方式建立单实例库
二 检查通过ASM建库后 文件存储的状态
SQL>select file_name tablespace_name from dba_data_files;
FILE_NAME TABLESPACE_NAME
+ASMGROUP /wwl/datafile/users USERS
+ASMGROUP /wwl/datafile/sysaux SYSAUX
+ASMGROUP /wwl/datafile/undotbs UNDOTBS
+ASMGROUP /wwl/datafile/system SYSTEM
SQL>
我们由如上可以看出 现在数据都是存储在ASM新建的+ASMGROUP 的组里面 并且文件名后面跟了一大串的数字 这是因为我们在新建表空间的时候直接采用就是Oracle OMF规范来进行创建的(OMF实际上是 i里面就已经推出来的功能了) 在ASM中创建表空间和添加数据文件我们就没有必要指定数据文件的存放路径了 当然他跟db_create_file_dest这个参数是相关联的
如下通过OMF方式创建表空间和添加数据文件的方式 可以看到很方便 默认大小就是 M 会自动扩展
我们通过查看db_create_file_dest参数 发现了数据文件默认创建路径是在+ASMGROUP
SQL> show parameter db_create_file_dest
NAME TYPE VALUE
db_create_file_dest string +ASMGROUP
使用OMF特性来进行表空间的创建
SQL> create tablespace asm;
Tablespace created
SQL> alter tablespace asm add datafile;
Tablespace altered
检查表空间是否已创建好
通过如下 我们可以看到 表空间已经创建成功 并且已经开启了数据文件自动扩展功能
SQL> selectFILE_NAME tablespace_name bytes/ / AUTOEXTENSIBLE MAXBYTES/ / from dba_data_files where TABLESPACE_NAME= ASM ;
FILE_NAME TABLESPACE_NAMEBYTES/ / AUT MAXBYTES/ /
+ASMGROUP /wwl/datafile/asm ASM YES
+ASMGROUP /wwl/datafile/asm ASM YES
可以动态的修改数据库创建文件的位置
SQL> alter system set db_create_file_dest= /oracle/oradata/wwl ;
System altered
一 ASM实例相关操作
ASM实例的管理 启动 关闭
ASM实例的启动和数据库实例的启动有严格的先后关系 ASM启动一定早于数据库实例 关闭一定晚于ASM实例 因为它是数据库数据文件存储位置 如果ASM没有起来 起数据库将会报ORA ORA 的错误 错误信息如下:
SQL>startup
ORA :failure in processing system parameters
ORA :error in identifying file +ASMGROUP /WWL/spfileWWL ora
ORA :ksfdopn: Failed to open file +ASMGROUP /WWL/spfileWWL ora
ORA :could not locate ASM instance serving a required diskgroup
SQL>
ASM启动的方法:
SQL>startup
ASMinstance started
TotalSystem Global Area bytes
FixedSize bytes
VariableSize bytes
ASMCache bytes
ASMdiskgroups mounted
SQL>select instance_name status from v$instance;
INSTANCE_NAME STATUS
+ASM STARTED
SQL>
ASM关闭的方法 (必须先关闭数据库)
没有关闭RDBMS实例关闭ASM将报错ORA 提示已连接RDBMS实例 无法关闭ASM实例
$ export Oracle_SID=+ASM
$ sqlplus / as sysdba
SQL> shutdown immediate
ORA : cannot SHUTDOWNASM instance with connected RDBMS instance
关闭RDBMS实例状态ASM是可以正常关闭的
$export ORACLE_SID=WWL 先关闭在ASM上运行的RDBMS实例
$sqlplus / as sysdba
SQL> shutdown immediate
Database closed
Database dismounted
ORACLE instance shut down
SQL>
$export ORACLE_SID=+ASM 再关闭ASM实例
$ sqlplus / as sysdba
SQL> shutdown immediate
ASM diskgroups dismounted
ASM instance shutdown
SQL>
二 ASM三种磁盘组及磁盘的添加和维护
ASM磁盘的添加及删除
添加这个步骤所需的磁盘(/dev/sdd /dev/sdm 共 块 G的盘)
通过root用户查看下当前有几个ASM磁盘 磁盘状态 实例状态
# oracleasm listdisks
VOL
VOL
# oracleasm querydisk VOL
Disk VOL is a valid ASM disk
# oracleasm querydisk VOL
Disk VOL is a valid ASM disk
# ls l /dev/oracleasm/disks/*
brw rw oracle dba Apr : /dev/oracleasm/disks/VOL
brw rw oracle dba Apr : /dev/oracleasm/disks/VOL
# oracleasm status
Checking if ASMis loaded: yes
Checking if /dev/oracleasm is mounted: yes
我们已知数据库当有两块通过ASMLiB已经标记了的磁盘 并且状态是正常的
开始通过ASMLib来标记新的磁盘 用于后面的实验:
l 报错了 很经典 是由于没有创建分区导致
# /etc/init d/oracleasm createdisk VOL /dev/sdd
Marking disk VOL as an ASM disk: [FAILED]
l 先创建分区方法:fdisk /dev/sdd /n/p/ /回车/回车/w 将所有磁盘都创建分区
# /etc/init d/oracleasmcreatedisk VOL /dev/sdd
Marking disk VOL as anASM disk: [ OK ] 可以看到 能正常创建
# sh oracleasm 通过执行脚本命令 新建 个磁盘已全部完成标记
Marking disk VOL as an ASM disk: [ OK ]
Marking disk VOL as an ASM disk: [ OK ]
Marking disk VOL as an ASM disk: [ OK ]
Marking disk VOL as an ASM disk: [ OK ]
Marking disk VOL as an ASM disk: [ OK ]
Marking disk VOL as an ASM disk: [ OK ]
Marking disk VOL as an ASM disk: [ OK ]
Marking disk VOL as an ASM disk: [ OK ]
Marking disk VOL as an ASM disk: [ OK ]
为ASMGROUP 磁盘组添加删除磁盘
l 查看磁盘组的状态
SQL> selectGROUP_NUMBER NAME STATE TYPE from v$asm_diskgroup;
GROUP_NUMBER NAME STATE TYPE
ASMGROUP CONNECTED NORMAL
SQL> SELECT a name GRPNAME b group_number GR_NUMBER b disk_numberDK_NUMBER b name ASMFILE b path b mount_status b state FROM v$asm_diskgroupa v$asm_disk b;
GRPNAME GR_NUMBER DK_NUMBER ASMFILE PATH MOUNT_S STATE
ASMGROUP ASMGROUP _ /dev/oracleasm/disks/VOL OPENED NORMAL
ASMGROUP ASMGROUP _ /dev/oracleasm/disks/VOL OPENED NORMAL
l 查看磁盘组ASMGROUP 中的成员
SQL> selectgroup_number disk_number failgroup name path from v$asm_disk where FAILGROUPlike ASMGROUP % ;
GROUP_NUMBERDISK_NUMBER FAILGROUP NAME PATH
ASMGROUP _ ASMGROUP _ /dev/oracleasm/disks/VOL
ASMGROUP _ ASMGROUP _ /dev/oracleasm/disks/VOL
SQL>
l 添加为ASMGROUP 添加磁盘
SQL> alterdiskgroup ASMGROUP add disk /dev/oracleasm/disks/VOL ;
Diskgroupaltered
l 我们可以看到已经添加成功了
SQL> select group_number disk_number failgroup name path from v$asm_disk where FAILGROUP like ASMGROUP % ;
GROUP_NUMBERDISK_NUMBER FAILGROUP NAME PATH
ASMGROUP _ ASMGROUP _ /dev/oracleasm/disks/VOL
ASMGROUP _ ASMGROUP _ /dev/oracleasm/disks/VOL
ASMGROUP _ ASMGROUP _ /dev/oracleasm/disks/VOL
ASM三种磁盘组的创建及删除(High Normal Extermal)
创建High级别的ASM磁盘组 最少需要三块磁盘来创建
SQL> create diskgroup asmhigh high redundancy disk /dev/oracleasm/disks/VOL /dev/oracleasm/disks/VOL /dev/oracleasm/disks/VOL ;
Diskgroupcreated
创建Normal级别的ASM磁盘 最少需要两个磁盘来创建
SQL> creatediskgroup asmnormal normal redundancy disk /dev/oracleasm/disks/VOL /dev/oracleasm/disks/VOL ;
Diskgroupcreated
创建Extermal级别的ASM磁盘 最少需要一个磁盘来创建
SQL> creatediskgroup asmexternal external redundancy disk /dev/oracleasm/disks/VOL ;
Diskgroupcreated
查看刚才创建的磁盘状态
SQL> select name state type fromv$asm_diskgroup;
NAME STATE TYPE
ASMGROUP MOUNTED NORMAL
ASMHIGH MOUNTED HIGH
ASMNORMAL MOUNTED NORMAL
ASMEXTERNAL MOUNTED EXTERN
为ASM磁盘组添加成员 在这里我们就以Normal磁盘组来进行成员添加的例子
SQL> alter diskgroup ASMNORMAL add disk /dev/oracleasm/disks/VOL ;
Diskgroup altered
SQL> select group_number disk_number failgroup name path from v$asm_disk where FAILGROUP like ASMNORMAL% ;
GROUP_NUMBER DISK_NUMBER FAILGROUP NAME PATH
ASMNORMAL_ ASMNORMAL_ /dev/oracleasm/disks/VOL
ASMNORMAL_ ASMNORMAL_ /dev/oracleasm/disks/VOL
ASMNORMAL_ ASMNORMAL_ /dev/oracleasm/disks/VOL
SQL>
删除磁盘组成员 在这里我们同样以NORMAL磁盘组来进行成员删除的例子
SQL> alter diskgroup ASMNORMAL drop disk ASMNORMAL_ ;
Diskgroup altered
SQL> select group_number disk_number failgroup name path fromv$asm_disk where FAILGROUP like ASMNORMAL% ;
GROUP_NUMBER DISK_NUMBER FAILGROUP NAME PATH
ASMNORMAL_ ASMNORMAL_ /dev/oracleasm/disks/VOL
ASMNORMAL_ ASMNORMAL_ /dev/oracleasm/disks/VOL
SQL>
三 模拟磁盘故障
在AMSGROUP (NORMAL类型)磁盘组中写数据
SQL> selecttablespace_name file_name bytes/ / M from dba_data_files;
TABLESPACE_NAMEFILE_NAME M
USERS +ASMGROUP /wwl/datafile/users
SYSAUX +ASMGROUP /wwl/datafile/sysaux
UNDOTBS +ASMGROUP /wwl/datafile/undotbs
SYSTEM +ASMGROUP /wwl/datafile/system
ASM +ASMGROUP /wwl/datafile/asm
ASM +ASMGROUP /wwl/datafile/asm
rowsselected
如上我们可以看到 我们所有的表空间均是放在ASMGROUP 中的 一会儿我们将对表空间写如数据 并删除一磁盘
我们查看下该表空间的默认用户
SQL> selectusername default_tablespace from dba_users where DEFAULT_TABLESPACE= ASM ;
USERNAME DEFAULT_TABLESPACE
WWL ASM
在ASM表空间写入数据
通过WWL用户登录到系统创建一张表 用来测试
SQL> connwwl/wwl
Connected
SQL> createtable wwl (id varchar( ) name varchar( ));
Table created
SQL> begin
fori in loop
insert into wwl values ( wwl );
endloop;
end;
/
PL/SQLprocedure successfully pleted
我们创建了一张wwl的表 并且插入了 行数据
SQL> selectcount(*) from wwl;
COUNT(*)
模拟磁盘突然损坏
[root@wwl ~]#oracleasm deletedisk VOL ;
Clearing diskheader: done
Dropping disk:done
[root@wwl ~]#
仔细看下面 我们通过如上的命令删除了VOL 后 现在只认到一个磁盘了
SQL> selectgroup_number disk_number failgroup name path from v$asm_disk where FAILGROUPlike ASMGROUP% ;
GROUP_NUMBERDISK_NUMBER FAILGROUP NAME PATH
ASMGROUP _ ASMGROUP _ /dev/oracleasm/disks/VOL
SQL>
但是我们的实例和我们刚才创建的表数据都没有丢失 这就是冗余的好处 NORMAL模式它是用牺牲一块磁盘的空间来保障数据的安全性的 hight模式是至少牺牲一块硬盘来保障数据的安全性
SQL> selectcount(*) from wwl;
COUNT(*)
而且业务是不会中断的 但是在日志和硬盘指示灯上会有告警
ASM日志信息如下
WARNING:offlining disk (ASMGROUP _ ) with mask x
NOTE: PSTupdate: grp = dsk = mode = x
NOTE: cacheclosing disk of grp : ASMGROUP _
NOTE: PSTupdate: grp =
NOTE: erasingheader on grp disk ASMGROUP _
这个时候我们需要尽快更换新的硬盘 因为发生这问题之后如果另外一个磁盘再损坏的话那将是不可弥补的数据丢失 更换新硬盘后 数据将会再次进行同步
四 ASM别名管理
别名就是外号 比如说当系统自动产生的名称太过复杂不怎么好记 DBA可以通过别名 为它创建一个简单化的名称 而又不会对其现有名称造成任何影响 ASM中创建别名是通过alter diskgroup的alias子句实现 支持增加/修改/删除等多项操作 V$ASM_ALIAS视图中可以查询到当前实例中创建的别名
添加别名
SQL> alter diskgroup ASMGROUP add alias +ASMGROUP /wwl/datafile/asm dbf for +ASMGROUP /wwl/datafile/asm ;
Diskgroup altered
修改别名
SQL> alter diskgroup ASMGROUP renamealias +ASMGROUP /wwl/datafile/asm dbf for +ASMGROUP /wwl/datafile/asm ;
Diskgroup altered
删除别名
SQL> alter diskgroup ASMGROUP dropalias +ASMGROUP /wwl/datafile/asm dbf for +ASMGROUP /wwl/datafile/asm ;
Diskgroup altered
无论是添加 删除或是修改别名 对原文件路径均不会有影响
五 目录及目录文件管理
创建目录
SQL> alter diskgroup ASMGROUP add directory +ASMGROUP /WWL ;
Diskgroupaltered
修改目录
SQL> alterdiskgroup ASMGROUP rename directory +ASMGROUP /WWL to +ASMGROUP /WWL ;
Diskgroupaltered
删除目录
SQL> alter diskgroup ASMGROUP drop directory +ASMGROUP /WWL ;
Diskgroupaltered
六 手动平衡磁盘组
一般情况下ASM都会自动对其下的磁盘组进行平衡 不过ORACLE也提供了手动平衡磁盘组的方式 通过alter diskgroup power 语句 前面提到过磁盘组的平衡度有 到 多个级别 默认是按照ASM_POWER_LIMIT初始化参数中设置的值 手动平衡的话 设置的平衡度可以与初始化参数中并不相同 例如 设置磁盘组平衡度为 语句如下
SQL>alter diskgroup asmgroup rebalance power ;
Diskgroup altered
七 通过ASMCMD工具管理ASM
[oracle@wwl ~]$ which asmcmd
/oracle/orahome/ /db_ /bin/asmcmd
[oracle@wwl ~]$ cd/oracle/orahome/ /db_ /bin/
ASMCMD> ls
ASMEXTERNAL/
ASMGROUP /
ASMHIGH/
ASMNORMAL/
ASMCMD>
ASMCMD> help
asmcmd [ p] [mand]
The environment variables ORACLE_HOME and ORACLE_SID determine the
instance to which the program connects and ASMCMD establishes a
bequeath connection to it in the same manner as a SQLPLUS / AS
SYSDBA The user must be a memberof the SYSDBA group
Specifying the p option allows the current directory to be displayed
in the mand prompt like so:
ASMCMD [+DATAFILE/ORCL/CONTROLFILE] >
[mand] specifies one of the following mands along with its
parameters
Type help [mand] to get help on a specific ASMCMDmand
mands:
cd 进入下级目录或进入所需要的目录
du 显示指定的ASM目录下ASM文件占用的所有磁盘空间
find 查找所需的文件
help 显示帮助信息
ls 列出ASM目录下的内容及其属性
lsct 列出当前ASM客户端的信息
lsdg 列出所有磁盘组及其属性
mkalias 为系统生成的文件名创建别名
mkdir 创建新目录
pwd 显示当前目录路径
rm 删除ASM目录下的某个文件或文件夹
rmalias 删除别名
ASMCMD>
要查看某个命令的相信通过在命令前添加help来查看 如下:
ASMCMD> help cd
cd <dir>
Change the current directory to <dir>
ASMCMD> help du
du [ H] [dir]
Display total space used for files located recursively under [dir]
similar to du s under UNIX; default is the currentdirectory Two
values are returned both in units of megabytes The first value does
not take into account mirroring of the diskgroup while the second does
For instance if a file occupies MB of space then it actually
takes up MB of space on a normal redundancy diskgroup and MB
of space on a high redundancy diskgroup
[dir] can also contain wildcards
The H flag suppresses the column headers from the output
ASMCMD> help find
find [ t <type>] <dir> <pattern>
Find the absolute paths of all occurrences of <pattern> under<dir>
<pattern> can be a directory and may include wildcards <dir> may also
include wildcards Note thatdirectory names in the results have the
/ suffix to clarify their identity
The t option allows searching by file type For instance one can
search for all the control files at once <type> must be one of the
valid values in V$ASM_FILE TYPE
ASMCMD>
八 oracleasm工具的使用和语法介绍
[root@wwl ~]# oracleasm help
Usage: oracleasm[ exec path=<exec_path>] <mand> [ <args> ]
oracleasm exec path
oracleasm h
oracleasm V
The basic oracleasm mands are:
configure Configure the OracleLinux ASMLib driver
init Load andinitialize the ASMLib driver
exit Stop the ASMLibdriver
scandisks Scan the systemfor Oracle ASMLib disks
status Display thestatus of the Oracle ASMLib driver
listdisks List known OracleASMLib disks
querydisk Determine if adisk belongs to Oracle ASMlib
createdisk Allocate a devicefor Oracle ASMLib use
deletedisk Return a deviceto the operating system
renamedisk Change the labelof an Oracle ASMlib disk
update driver Download thelatest ASMLib driver
[root@wwl ~]#
九 ASM相关视图(V$)和数据字典(X$)
ASM由于其高度的封装性 使得我们很难知道窥探其内部的原理 可以通过一下视图和数据字典来来查看ASM 的信息
相关视图和数据字典
View Name
X$ Table name
Description
V$ASM_DISKGROUP
X$KFGRP
performs disk discovery and lists diskgroups
V$ASM_DISKGROUP_STAT
X$KFGRP_STAT
diskgroup stats without disk discovery
V$ASM_DISK
X$KFDSK X$KFKID
performs disk discovery lists disks and their usage metrics
V$ASM_DISK_STAT
X$KFDSK_STAT X$KFKID
lists disks and their usage metrics
V$ASM_FILE
X$KFFIL
lists ASM files including metadata/asmdisk files
V$ASM_ALIAS
X$KFALS
lists ASM aliases files and directories
V$ASM_TEMPLATE
X$KFTMTA
lists the available templates and their properties
V$ASM_CLIENT
X$KFNCL
lists DB instances connected to ASM
V$ASM_OPERATION
X$KFGMG
lists rebalancing operations
N A
X$KFKLIB
available libraries includes asmlib path
N A
X$KFDPARTNER
lists disk to partner relationships
N A
X$KFFXP
extent map table for all ASM files
N A
X$KFDAT
extent list for all ASM disks
N A
X$KFBH
describes the ASM cache (buffer cache of ASM in blocks of K (_asm_blksize)
N A
X$KFCCE
a linked list of ASM blocks to be further investigated
This list isobtained querying v$fixed_view_definitionwhere view_name like %ASM% whichexposes all the v$ and gv$ views with theirdefinition Fixed tables are exposedby querying v$fixed_table where name like x$kf% (ASM fixed tables use the X$KF prefix)
SQL>select* fromv$fixed_view_definition whereview_name like %ASM% ;
SQL>select* from sys v$fixed_tablewhere name like X$KF% ;
十 ASM常见的错误处理
错误一
ORA cannotSHUTDOWN ASM instance with connected RDBMS instance
解决办法
发生这个问题 唯一的一个原因就是Oracle实例没有关闭 或ORACLE实例正在关闭或处于挂起状态 导致ASM实例无法关闭 解决办法 关闭RDBMS实例后再关闭ASM实例
错误二
[root@wwl ~]# /etc/init d/oracleasm createdisk VOL /dev/sdd
Marking disk VOL as an ASM disk: [FAILED]
报这个错的原因在于磁盘为分区导致 在创建ASM的之前必须线将磁盘分区 但不能格式化 后执行创建就不会有问题了
十一 ASM 扩展性
最多支持 个磁盘组 最多支持 个磁盘 最大支持 pb/磁盘 最大支持 exabyte/ASM存储 最大支持 百W个文件/磁盘组 外部冗余时单个文件最大 tb 标准冗余时单个文件最大 tb 高冗余度时单个文件最大 tb
cha138/Article/program/Oracle/201405/30855相关参考
Oracle安全全接触(完整版)一 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 随着计算机的普
知识大全 求穿越之农家生活TXT完整版及类似穿越后温馨种田文系列,谢谢
求穿越之农家生活TXT完整版及类似穿越后温馨种田文系列,谢谢! 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来
亲有《没有钱》小说版完整版吗已上传 请快速下载 三天后取消分享求《没有钱》完整版动漫。土豆上查找没有钱求没有钱动漫完整版我有,需要的可以私信喔求哈利波特的小说1-7中文要完整版的。
求韩语教学百度云盘!完整版免费的没有.我们开发的是首尔大学韩国语和庆熙大学新标准韩国语教材配套的韩国语教程,由资深韩语讲师录制讲解的,无需在线学习,直接手机播放的,比较实惠方便.求韩剧学校2015百度
知识大全 Delphi深度探索之PItemIDList的基本概念
Delphi深度探索之PItemIDList的基本概念 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧
Powerdesigner使用建议(完整版) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! .P
知识大全 rhel4+oracle10g ASM配制及ASM与文件系统之间迁移
rhel4+oracle10gASM配制及ASM与文件系统之间迁移 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一
在哪里可以看到霜花店的完整版链接::pan.baidu./s/1nvOu0Tb密码:fi8t霜花店完整,高清,中文字幕,百度云链接望采纳霜花店完整版在哪里可以看你可以搜搜百度云的,微博上也有在哪里才可
求好心人给肚脐高清完整版下载地址有么?感激不尽!肚脐高清完整版下载地址:ed2k:|file|肚脐DVD中字[80dyy.].rmvb|393935257|5EE7310ED795936047ED42