概述
ASM可以条带化和镜像磁盘,因此可以在数据库被加载的情况下添加、删除磁盘、以及自动平衡IO。
ASM不是一个文件系统,所以无法从操作系统访问ASM存储的文件,对于使用ASM的数据库只能用RMAN进行备份和恢复。
ASM作为单独的ORACLE实例实施,只有ASM运行时数据库才能访问。
一、磁盘组
ASM提供了三种磁盘组类型
-
1 normal redundacy 支持的映像等级有 2-WAY、3-WAY、不保护 ,缺省的2-WAY 标准冗余度要求提供双向镜像,并且要求在一个磁盘组中至少有2个故障组(failure groups),故障组中的一个磁盘出现故障不会导致磁盘组停止工作,也不会丢失数据,对查询磁盘组的对象有些性能影响,这个时候就需要管理员调整 2
high redundancy 支持的映像等级 3-WAY 高冗余度提供三向镜像,并且在一个磁盘组至少有3个故障组。故障组中任何其中两组出现故障,对用户来说就象标准冗余一样 3 external redundancy 不保护 表面冗余,仅要求有一个故障组, 在配置磁盘组时,尽量把同一类型的磁盘放到一个组里,避免不同类型的磁盘在一个组里以免影响性能
二、文件
写在ASM磁盘上的文件称之为ASM文件,他们的名字是由ASM自动生成的,你可以指定一个别名对应一个ASM文件,你可以创建一个目录 SQL> select name,type,total_mb,free_mb from v$asm_diskgroup;
NAME
TYPE TOTAL_MB FREE_MB ——————————
—— ———- ———- DA
TA EXTERN 7248 5489 比如说我在DA
TA磁盘组上创建一个BOSON目录 alter diskgroup da
ta add directory ‘ da ta/boson’; SQL> alter diskgroup da
ta add directory ‘ da ta/boson’; Diskgroup altered.
看一下我的数据文件
SQL> select name from v$datafile;
NAME
——————————————————————————–
DA
TA/rac/datafile/system.269.636854893 DA
TA/rac/datafile/undotbs1.268.636854911 DA
TA/rac/datafile/sysaux.261.636854917 DA
TA/rac/datafile/undotbs2.259.636855011 DA
TA/rac/datafile/users.258.636855023 我门现在利用刚创建的目录给users.258.636855023创建一个别名
SQL> alter diskgroup da
ta add alias ‘ da ta/boson/users.dbf’ 2 for ‘ da ta/rac/datafile/users.258.636855023′; Diskgroup altered.
三、模板
ASM支持数据库所有的文件,并提供了控制文件、数据文件、在线日志文件等模板,具体的可以查看官方的资料
四、安装
确定所需的 ASMLib 版本
ASMLib 以三个 Linux 程序包组成的程序包集提供:
oracleasmlib - ASM 库
oracleasm-support - 用于管理 ASMLib 的实用程序
oracleasm - ASM 库的内核模块
每个 Linux 发行套件都有其自己的 ASMLib 程序包集。在每个发行套件中,每个内核版本都有一个相应的 oracleasm 程序包。以下部分介绍如何确定所需的程序包集。
首先,以 root 用户身份登录并运行以下命令来确定所使用的内核:
uname -rm
例如:
oracle:/home/oracle # uname -rm
2.6.16.21-0.8-default i686
使用此信息在 OTN 上查找相应的 ASMLib 程序包:
将 Web 浏览器指向 http://www.oracle.com/technology/global/cn/tech/linux/asmlib
1, 选择适用于您的 Linux 版本的链接。
2, 下载适用于您的 Linux 版本的 oracleasmlib 和 oracleasm-support 程序包
3, 下载与您的内核相对应的 oracleasm 程序包。
oracle:/home/oracle # ls
.Xauthority .fonts .pro
file .xinitrc.template oracleasm-2.6.16.21-0.8-default-2.0.3-1.i586.rpm .bash_history .gnu-emacs .urlview .xtalkrc oracleasm-support-2.0.3-1.i386.rpm
.bashrc .inputrc .viminfo 10201_database_linux32.zip oracleasmlib-2.0.2-1.i386.rpm
.dvipsrc .kermrc .xcoralrc Documents public_html
.emacs .mozilla .xemacs bin
.exrc .muttrc .xim.template database
oracle:/home/oracle # rpm -aq oracleasm*
oracle:/home/oracle # rpm -ivh oracleasm*.rpm
Preparing… ########################################### [100%]
1:oracleasm-support ########################################### [ 33%]
2:oracleasm-2.6.16.21-0.8########################################### [ 67%]
3:oracleasmlib ########################################### [100%]
oracle:/home/oracle #
配置 ASMLib
使用 ASMLib 之前,必须运行配置脚本以准备驱动程序。以 root 用户身份运行以下命令,并响应如下示例中所显示的提示。
oracle:/home/oracle # /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 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
Fix permissions of Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: done
Creating /dev/oracleasm mount point: done
Loading module “oracleasm”: done
Mounting ASMlib driver filesystem: done
Scanning system for ASM disks: done
oracle:/home/oracle #
现在,如下所示启用 ASMLib 驱动程序。
oracle:/home/oracle # /etc/init.d/oracleasm enable
Writing Oracle ASM library driver configuration: done
Scanning system for ASM disks: done
oracle:/home/oracle #
为 ASM 配置磁盘
接下来,告诉 ASM 驱动程序您要使用的磁盘。请注意,这些磁盘是不包含任何内容(甚至不包含分区)的空磁盘。可以将磁盘分区用于 ASM,但建议您不要这样做。
通过以 root 用户身份运行以下命令来标记由 ASMLib 使用的磁盘:
/etc/init.d/oracleasm createdisk DISK_NAME device_name
(提示:DISK_NAME 应由大写字母组成。当前版本有一个错误,即如果使用小写字母,ASM 实例将无法识别磁盘。)
例如:
# /etc/init.d/oracleasm createdisk VOL1 /dev/sdb
Marking disk “/dev/sdb” as an ASM disk [ OK ]
不过我按照上面说的运行
oracle:/home/oracle # /etc/init.d/oracleasm createdisk VOL1 /dev/sdb
Marking disk “/dev/sdb” as an ASM disk: asmtool: Device “/dev/sdb” is not a partition
failed
然后我把/dev/sdb重新分区了就可以
oracle:/home/oracle # /etc/init.d/oracleasm createdisk VOL1 /dev/sdb1
Marking disk “/dev/sdb1″ as an ASM disk: done
oracle:/home/oracle # /etc/init.d/oracleasm createdisk VOL2 /dev/sdb2
Marking disk “/dev/sdb2″ as an ASM disk: done
oracle:/home/oracle # /etc/init.d/oracleasm createdisk VOL3 /dev/sdb3
Marking disk “/dev/sdb3″ as an ASM disk: done
oracle:/home/oracle # /etc/init.d/oracleasm createdisk VOL4 /dev/sdb5
Marking disk “/dev/sdb5″ as an ASM disk: done
以下示例演示了如何列出标记为由 ASMLib 使用的所有磁盘。
oracle:/home/oracle # /etc/init.d/oracleasm listdisks
VOL1
VOL2
VOL3
VOL4
oracle:/home/oracle #
既然已经安装了 ASMLib,且已将磁盘标记为可用,下面,您便可以创建一个 ASM 实例,并构建一个使用 ASM 进行磁盘存储的数据库。最容易的方法就是使用数据库配置助手 (DBCA) 来完成此操作。
五、ASM的参数文件
[oracle@rac1 dbs]$ cat init ASM1.ora
##############################################################################
# Copyright (c) 1991, 2001, 2002 by Oracle Corporation
##############################################################################
###########################################
# Cluster Database
###########################################
cluster_database=true
###########################################
# Diagnostics and Statistics
###########################################
background_dump_dest=/u01/app/oracle/admin/ ASM/bdump
core_dump_dest=/u01/app/oracle/admin/ ASM/cdump
user_dump_dest=/u01/app/oracle/admin/ ASM/udump
###########################################
# Miscellaneous
###########################################
instance_type=asm 必须为ASM
###########################################
# Pools
###########################################
large_pool_size=12M
###########################################
# Security and Auditing
###########################################
remote_login_passwordfile=exclusive 启用了远程管理,所以必须有密码文件
asm_diskgroups=’DA
TA’ ASM2.instance_number=2
ASM1.instance_number=1
还有一些参数比如说
asm_power_limit,这个是设置磁盘重新平衡的速度缺省为1 可以取值0-11
当你往ASM磁盘组添加磁盘时,修改此参数为较大值能更快让磁盘数据更块的平均分布,但是由此也待来了性能影响,
所以在做此项操作时要估计对数据库性能的影响,选择合适的值。
可以通过查询 v$asm_operation视图查看
SQL> desc v$asm_operation;
Name Null? Type —————————————————– ——– ———————————— GROUP_NUMBER NUMBER OPERATION VARCHAR2(5) STATE VARCHAR2(4) POWER NUMBER ACTUAL NUMBER SOFAR NUMBER EST_WORK NUMBER EST_RATE NUMBER EST_MINUTES NUMBER 参数文件错误有 ORA-15021
六、启动ASM实例
要连接ASM实例,需要设置ORACLE_SID,比说单实例的数据库缺省的为 ASM
集群环境为 ASMnode#
SQL> shutdown
ORA-15097: cannot SHUTDOWN ASM instance with connected RDBMS instance
oerr ora 15097 15097, 00000, “cannot SHUTDOWN ASM instance with connected RDBMS instance”
// *Cause:
A SHUTDOWN command was issued to an ASM instance that had on e or //
more connected RDBMS instances. // *Act
ion: Connect to each RDBMS instance and shut it down, and then reissue //
the SHUTDOWN command to the ASM instance. Alternatively, use the //
SHUTDOWN ABORT command. Note that issuing the SHUTDOWN ABORT //
command to an ASM instance results in abormal termination of all //
RDBMS instances connected to that ASM instance. //
要关闭ASM实例,首先要关闭每一个数据库实例
% sqlplus /nolog
SQL> CONNECT / AS sysdba
Connected to an idle instance.
SQL> STARTUP
ASM instance started
Total System Global Area
71303168 bytes Fixed Size
1069292 bytes Variable Size
45068052 bytes ASM Cache
25165824 bytes ASM diskgroups mounted
CRS 根据配置管理 Oracle 的群集资源,包括资源的启动、停止、监视和故障切换。
CSS 可管理 Oracle 群集成员并将其自身的组成员服务提供给 RAC 实例
[oracle@rac2 ~]$ crsctl check cssd
CSS appears healthy
七、ASM限制
ASM imposes the following limits:
63 disk groups in a storage system
10,000 ASM disks in a storage system
4 petabyte maximum storage for each ASM disk
40 exabyte maximum storage for each storage system
1 million files for each disk group
Maximum files sizes as shown in the following table:
Disk Group Type Maximum File Size
External redundancy 35 TB
Normal redundancy 5.8 TB
High redundancy 3.9 TB
八、磁盘组管理
1、创建磁盘组
SQL> STARTUP NOMOUNT
SQL> CREATE DISKGROUP dgroup1 NORMAL REDUNDANCY
2 FAILGROUP controller1 DISK 3 ‘/devices/diska1′, 4 ‘/devices/diska2′, 5 ‘/devices/diska3′, 6 ‘/devices/diska4′ 7 FAILGROUP controller2 DISK 8 ‘/devices/diskb1′, 9 ‘/devices/diskb2′, 10 ‘/devices/diskb3′, 11 ‘/devices/diskb4′; 2、添加磁盘
ALTER DISKGROUP dgroup1 ADD DISK
‘/devices/diska5′ NAME diska5, ‘/devices/diska6′ NAME diska6; 没有指定故障组,所以两个磁盘分别添加到自己的故障组
ASM中,创建一个目录
alter diskgroup boson add directory ‘ da
ta/backup’; 在已经创建的目录中在创建目录
alter diskgroup boson add directory ‘ da
ta/backup/archivelog’; 重命名一个目录
alter diskgroup boson rename directory ‘ da
ta/backup’ to ‘ da ta/bak’; 删除一个目录
alter diskgroup boson drop directory ‘ da
ta/bak’force ASM文件别名的管理,相关视图v$asm_alias
ALTER DISKGROUP dgroup1 ADD ALIAS ‘ dgroup1/mydir/second.dbf’
FOR ‘ dgroup1/sample/datafile/mytable.342.3′; 重命名一个别名
ALTER DISKGROUP dgroup1 RENAME ALIAS ‘ dgroup1/mydir/datafile.dbf’
TO ‘ dgroup1/payroll/compensation.dbf’; 删除一个别名
ALTER DISKGROUP dgroup1 DROP ALIAS ‘ dgroup1/payroll/compensation.dbf’;
删除一个ASM文件
ALTER DISKGROUP dgroup1 DROP FILE ‘ dgroup1/payroll/compensation.dbf’;
删除一个磁盘从磁盘组中
ALTER DISKGROUP dgroup1 DROP DISK diska5;
ALTER DISKGROUP dgroup1 DROP DISK diska5
ADD FAILGROUP failgrp1 DISK ‘/devices/diska9′ NAME diska9; 修改磁盘组中的磁盘大小
修改一个磁盘组中所有的磁盘:
ALTER DISKGROUP dgroup1
RESIZE DISKS IN FAILGROUP failgrp1 SIZE 100G 手动调整字盘平衡速度
ALTER DISKGROUP dgroup2 REBALANCE POWER 5 WAIT
挂载所有磁盘组
ALTER DISKGROUP ALL DISMOUNT;
ALTER DISKGROUP dgroup1 DISMOUNT;
检查所有磁盘组的一致性
ALTER DISKGROUP dgroup1 CHECK ALL;
删除磁盘组
DROP DISKGROUP dgroup1;
转自:http://jiangweibj.blog.163.com/blog/static/722835902009877333335/
最后
以上就是繁荣香氛为你收集整理的Oracle ASM 详解(其四)的全部内容,希望文章能够帮你解决Oracle ASM 详解(其四)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复