Oracle11gR2——关于ASM

来源:互联网 发布:数码印刷软件 编辑:程序博客网 时间:2024/05/01 20:35

1、ASM的定义


Oracle ASM is a high-performance, ease-of-management storage solution for Oracle Database files. Oracle ASM is a volume manager and provides a file system designed exclusively for use by the database.

2、ASM的优势

Simplifies storage-related tasks such as creating and laying out databases and managing disk space

Distributes data across physical disks to eliminate hot spots and to provide uniform performance across the disksA

Rebalances data automatically after storage configuration changes


3、ASM的组件

ASM所包含的组件及它们的关系如图:

ASM_Components


ASM磁盘:可以是物理磁盘、分区、逻辑单元号(LUN),或者是逻辑卷或网络附加文件;

ASM磁盘组:一组ASM磁盘的集合,被作为一个逻辑卷来管理;

ASM文件:它可以是数据库中的数据文件、控制文件、联机重做日志文件和其他类型文件(参数文件、rman备份文件、数据泵dmp文件、闪回恢复区、闪回日志等)。

ASM扩展区(ASM extent):组成ASM文件的单元;

ASM分配单元(ASM Unit):组成ASM扩展区的单元,ASM管理的最小的连续磁盘空间。


4、ASM实例

ASM实例管理磁盘组的元数据,并提供对数据库实例的文件布局信息。

注意:数据库实例直接与ASM磁盘进行I/O,而不需要通过ASM实例。

ASM实例与数据库实例关系如图:

ASMIN_DATABASEIN



5、创建ASM

可以使用ASMLib或者udev来绑定ASM磁盘;

使用udev绑定ASM磁盘的过程:

在安装OGI和Oracle之前,使用root用户执行下面脚本(此例中使用sdb~sdfg6块磁盘作为ASM磁盘):

for i in b c d e f g;
do
echo "KERNEL==\"sd*\", BUS==\"scsi\", PROGRAM==\"/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/\$name\", RESULT==\"`/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/sd$i`\", NAME=\"asm-disk$i\", OWNER=\"grid\", GROUP=\"asmadmin\", MODE=\"0660\""      >> /etc/udev/rules.d/99-oracle-asmdevices.rules
done

然后重启udev

/sbin/start_udev

查看ASM磁盘是否绑定成功

[root@node1 ~]# cd /dev
[root@node1 dev]# ls -l |grep asm
brw-rw----  1 grid asmadmin   8,  16 11月 20 09:41 asm-diskb
brw-rw----  1 grid asmadmin   8,  32 11月 20 09:41 asm-diskc
brw-rw----  1 grid asmadmin   8,  48 11月 20 09:41 asm-diskd
brw-rw----  1 grid asmadmin   8,  64 11月 17 15:30 asm-diske
brw-rw----  1 grid asmadmin   8,  80 11月 17 15:30 asm-diskf
brw-rw----  1 grid asmadmin   8,  80 11月 17 15:30 asm-diskg

然后就可以创建ASM磁盘组了。


6、ASM的条带、镜像、冗余级别及故障组

ASM条带:ASM总是跨越磁盘组的所有磁盘条带化文件(提高写入速度);

ASM镜像:ASM在ASM Extent级别进行镜像,处于安全考虑,镜像将不会放到同一个故障组;

ASM镜像级别:

NORMAL:对于ASM文件,另外保存一个拷贝副本,即单镜像;

HIGH REDUNDANCY:另外保存二个拷贝副本;

EXTERNAL REDUNDANCY:ASM本身不提供保护,一般由外部RAID进行保护;


7、ASMCMD实用程序

lsct 列出ASM与Oracle实例相关的信息

ASMCMD> lsct
DB_Name  Status     Software_Version  Compatible_version  Instance_Name  Disk_Group
+ASM     CONNECTED        11.2.0.1.0          11.2.0.1.0  +ASM1          ASM_DG    
orarac   CONNECTED        11.2.0.1.0          11.2.0.0.0  orarac1        ASM_DG

lsdg 列出磁盘组

ASMCMD> lsdg
State    Type    Rebal  Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
MOUNTED  NORMAL  N         512   4096  1048576     15360     6067             3101            1483              0             N  ASM_DG/

在这里可以看到ASM磁盘组的可用空间

lsdsk 列出磁盘

ASMCMD> lsdsk
Path
/dev/asm-diskb
/dev/asm-diskc
/dev/asm-diskd

查看ASM磁盘中的数据文件

ASMCMD> cd +ASM_DG/orarac/datafile
ASMCMD> ls -l
Type      Redund  Striped  Time             Sys  Name
DATAFILE  MIRROR  COARSE   NOV 20 04:00:00  Y    SYSAUX.263.863369285
DATAFILE  MIRROR  COARSE   NOV 17 15:00:00  Y    SYSTEM.262.863369279
DATAFILE  MIRROR  COARSE   NOV 20 08:00:00  Y    TEST_TS.273.864116555
DATAFILE  MIRROR  COARSE   NOV 17 15:00:00  Y    UNDOTBS1.264.863369291
DATAFILE  MIRROR  COARSE   NOV 17 15:00:00  Y    UNDOTBS2.266.863369299
DATAFILE  MIRROR  COARSE   NOV 17 15:00:00  Y    USERS.267.863369301
                                            N    test_ts01.dbf => +ASM_DG/ORARAC/DATAFILE/TEST_TS.273.864116555
                                            
其中最后一个数据文件是手工创建的,可以看出手动输入的文件名只是一个连接。

        
关于ASM元数据的备份:

md_backup命令与md_restore,它们仅备份ASM磁盘组的元数据,并且可以重新创建ASM磁盘组。它们不备份任何ASM文件。备份ASM元数据在灾难恢复时是必要的。

它们的用法如下:

ASMCMD> md_backup -h
Unknown option: h
usage: md_backup <backup_file>
                  [-G '<diskgroup_name>,<diskgroup_name>,...']
help:  help md_backup
ASMCMD> md_restore -h
Unknown option: h
usage: md_restore  <backup_file> [--silent]
                   [--full|--nodg|--newdg] [-S <sql_script_file>]
                   [-G '<diskgroup_name>,<diskgroup_name>,...']
                   [-o '<old_diskgroup_name>:<new_diskgroup_name>,...']
help:  help md_restore

       
8、使用sqlplus管理ASM

连接ASM实例,这里使用grid用户

[grid@node1 ~]$ export ORACLE_SID=+ASM1
[grid@node1 ~]$ sqlplus "/as sysasm"

SQL*Plus: Release 11.2.0.1.0 Production on 星期四 11月 20 10:32:56 2014

Copyright (c) 1982, 2009, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options

SQL>

添加磁盘组

首先查询可用的且未分配给ASM的磁盘

SQL> col path format a20
SQL> col header_status format a20
SQL> select path,header_status from v$asm_disk;

PATH                 HEADER_STATUS
-------------------- --------------------
/dev/random          UNKNOWN
/dev/asm-diske       CANDIDATE
/dev/asm-diskg       CANDIDATE
/dev/asm-diskf       CANDIDATE
/dev/asm-diskb       MEMBER
/dev/asm-diskc       MEMBER
/dev/asm-diskd       MEMBER

7 rows selected.


可以看出,asm_diske、f、g三个磁盘可以用来创建新的磁盘组(HEADER_STATUS列值为MEMBER表示已经使用的,为CANDIDATE表示为可以使用的)。

SQL> create diskgroup ASM_DG1 normal redundancy
  2  failgroup diske disk '/dev/asm-diske'
  3  failgroup diskf disk '/dev/asm-diskf';

Diskgroup created.

为磁盘组添加磁盘

SQL> alter diskgroup ASM_DG1 add disk '/dev/asm-diskg';

Diskgroup altered.

查看结果

SQL> col disk_name format a15
SQL> select b.name group_name, a.path disk_name, a.header_status from v$asm_disk a ,v$asm_diskgroup b where a.group_number=b.group_number order by 1;

GROUP_NAME DISK_NAME       HEADER_STATUS
---------- --------------- --------------------
ASM_DG     /dev/asm-diskb  MEMBER
ASM_DG     /dev/asm-diskc  MEMBER
ASM_DG     /dev/asm-diskd  MEMBER
ASM_DG1    /dev/asm-diskg  MEMBER
ASM_DG1    /dev/asm-diskf  MEMBER
ASM_DG1    /dev/asm-diske  MEMBER

6 rows selected.

在磁盘组中增加数据文件

SQL> create tablespace new_tbs datafile '+ASM_DG1' size 2G
  2  autoextend off;

Tablespace created.

SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------
+ASM_DG/orarac/datafile/system.262.863369279
+ASM_DG/orarac/datafile/sysaux.263.863369285
+ASM_DG/orarac/datafile/undotbs1.264.863369291
+ASM_DG/orarac/datafile/undotbs2.266.863369299
+ASM_DG/orarac/datafile/users.267.863369301
+ASM_DG/orarac/datafile/test_ts01.dbf
+ASM_DG1/orarac/datafile/new_tbs.256.864139497

7 rows selected.

如果create tablespace语句中的datafile选项直接输入文件名,则该文件名仅仅为一个到实际数据文件的连接,如果datafile只指定磁盘组,则由oracle实际创建数据文件,推荐使用后者。


9、将操作系统中的数据库文件迁移到ASM

迁移过程大致如下:

迁移控制文件

SQL> alter system set controlfiles='+ASM_DG','+ASM_DG1' scope=spfile;
SQL> shutdown immediate;
SQL> startup nomount;
RMAN> restore controlfile from '/u01/app/oracle/oradata/orcl/control01.ctl';

迁移数据文件

SQL> shutdown immediate;
SQL> startup mount;
RMAN> backup as copy database format '+ASM_DG1';
RMAN> switch database to copy;
SQL> alter database open;

迁移redolog

SQL> alter database add logfile member '+ASM_DG1','+ASM_DG2' to group 1;
SQL> alter database drop logfile member '/u01/app/oracle/oradata/orcl/redo01a.log','/u01/app/oracle/oradata/orcl/redo01b.log';

迁移临时表空间临时文件

SQL> create temporary tablespace tempasm tempfile '+ASM_DG1' size 1g;
SQL> alter database default temporary tablespace tempasm;
SQL> drop tablespace temp including contents and datafiles;


10、ASM实例的参数

instance_type  对于ASM实例,其值必定为ASM
instance_name  前缀为+,默认值是ORACLE_SID环境变量
asm_power_limit  控制用于在平衡操作的ASMB进程的数量,默认值为最小数量1
asm_diskstring  表示分配给ASM的磁盘的路径列表

asm_diskgroups  启动时要加载的磁盘组,默认为NULL


查看asm_diskgroups参数:

SQL> col type format a10
SQL> col string format a20
SQL> show parameter asm_diskgroups

NAME                                 TYPE       VALUE
------------------------------------ ---------- ------------------------------
asm_diskgroups                       string     ASM_DG1




0 0
原创粉丝点击