ASM管理实践

ASM管理实践(转)

http://hi.baidu.com/zwfha/blog/item/af96d8119bf376c2a7ef3f0f.html

asmcmd实用程序是Oracle 10g版本2的新增特性,它是一个命令行实用工具,提供了一种简单的方法,可以使用类似于Linux外壳命令(例如ls和mkdir)的命令集,浏览和维 护ASM磁盘组中的对象。ASM实例所维护对象的分层性质适合于采用类似Linux文件系统中浏览和维护文件所使用的命令集。

http://hi.baidu.com/zwfha/blog/item/af96d8119bf376c2a7ef3f0f.html

[@more@]

在使用asmcmd之前,必须确保将环境变量ORACLE_BASE、ORACLE_HOME和ORACLE_SID设置为指向ASM实例。对于本章所使用的ASM实例,这些环境变量的设置如下所示:

ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1
ORACLE_SID=+ASM

注意包含+DATA/purch/users.dbf的这一行:find命令查找所有ASM对象。在此例中,它查找一个别名以及与此模式相匹配的数据文件。

最后可以对外部文件系统甚至其他ASM实例进行文件备份。在此示例中,使用cp命令将数据库的SPFILE备份到主机文件系统的/tmp目录中:

ASMCMD> pwd
+data/DW
ASMCMD> ls
CONTROLFILE/
DATAFILE/
ONLINELOG/
PARAMETERFILE/
TEMPFILE/
spfiledw.ora
ASMCMD> cp spfiledw.ora /tmp/BACKUPspfiledw.ora
source +data/DW/spfiledw.ora
target /tmp/BACKUPspfiledw.ora
copying file(s)...
file, /tmp/BACKUPspfiledw.ora, copy committed.
ASMCMD> exit
[oracle@dw ~]$ ls -l /tmp/BACKUP*
-rw-r----- 1 oracle oinstall 2560 Jul 13 09:47 /tmp/BACKUPspfiledw.ora
[oracle@dw ~]$

***********************************************
安装ASMLib.
ASMLib是操作系统与数据库之间的一个接口.

ASM instance的认证
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
与正常数据库一样.要访问ASM实例有两种方法认证.
1.操作系统认证.用户属于OSDBA组
2.密码文件认证.

ASM相关参数
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
INSTANCE_TYPE
ASM_POWER_LIMIT
ASM_DISKSTRING
ASM_DISKGROUPS

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

准备:

添加一块新硬盘,准备为ASM磁盘使用.
先创建LVM,再在LVM基础之上创建ASM

root:
fdisk /dev/sdb
创建sdb1,将类型更改为lvm文件类型

pvcreate /dev/sdb1
vgcreate /dev/sdb1 oradata
lvcreate -L4G -nlv_asm01 oradata

/bin/chgrp -R disk /dev/mapper /dev/oradata
/bin/chmod -R 670 /dev/mapper /dev/oradata

安装ASMLib,此处与通常情况不太一样,我在这里不创建ASM磁盘

rpm -Uvh ..

/etc/init.d/oracleasm configure
/etc/init.d/oracleasm status
/etc/init.d/oracleasm disable
/etc/init.d/oracleasm enable
/etc/init.d/oracleasm listdisks

下面准备创建ASM实例:

1.

要使用ASM,必须先配置启动ORACLE Cluster Synchronization Service(css).
查看是否已经有css

   1:  test@linux:~> ps -ef|grep d.bin
   2:  oracle    4446  4354  0 Aug24 ?        00:00:00 /oracle/app/10.1.0.2/bin/ocssd.bin
   3:  这样就表示css已经在运行了。
   4:  也可以查看/etc/inittab最后一行看是否为:
   5:  h1:35:respawn:/etc/init.d/init.cssd run >/dev/null 2>&1 null
   6:  如果没有css服务则需要添加

root用户执行:

   1:  std:/opt/oracle/app/10.2.0.1/bin # ./localconfig add
   2:  /etc/oracle does not exist. Creating it now.
   3:  Successfully accumulated necessary OCR keys.
   4:  Creating OCR keys for user 'root', privgrp 'root'..
   5:  Operation successful.
   6:  Configuration for local CSS has been initialized
   7:   
   8:  Adding to inittab
   9:  Startup will be queued to init within 90 seconds.
  10:  Checking the status of new Oracle init process...
  11:  Expecting the CRS daemons to be up within 600 seconds.
  12:  CSS is active on these nodes.
  13:          std
  14:  CSS is active on all nodes.
  15:  Oracle CSS service is installed and running under init(1M)

2.参数与密码文件

   1:  $ORACLE_HOME/dbs/init+ASM.ora
   2:   
   3:  asm_diskstring='/dev/oradata/*'
   4:  asm_power_limit=1
   5:  instance_type='asm'
   6:  remote_login_passwordfile=shared
   7:  background_dump_dest=/opt/oracle/+ASM/bdump
   8:  core_dump_dest=/opt/oracle/+ASM/cdump
   9:  user_dump_dest=/opt/oracle/+ASM/udump
  10:  shared_pool_size=40m
  11:  large_pool_size=12m

创建密码

   1:  orapwd file=$ORACLE_HOME/dbs/pwd+ASM password=admin

3.启动实例

   1:  export ORACLE_SID=+ASM
   2:  sqlplus / as sysdba
   3:  create spfile from pfile;
   4:  startup nomount

至此,ASM实例创建完成,下面注重ASM磁盘:

   1:  SQL> select name from v$fixed_table where name like 'V%ASM%';
   2:   
   3:  NAME
   4:  ------------------------------
   5:  V$ASM_TEMPLATE
   6:  V$ASM_ALIAS
   7:  V$ASM_FILE
   8:  V$ASM_CLIENT
   9:  V$ASM_DISKGROUP
  10:  V$ASM_DISKGROUP_STAT
  11:  V$ASM_DISK
  12:  V$ASM_DISK_STAT
  13:  V$ASM_OPERATION
  14:   
  15:  9 rows selected.
  16:   
  17:  select * from v$asm_diskgroup;
  18:   
  19:  no rows selected
  20:   
  21:  SQL> show parameter diskstring
  22:   
  23:  NAME                                 TYPE        VALUE
  24:  ------------------------------------ ----------- ------------------------------
  25:  asm_diskstring                       string      /dev/oradata/*
  26:  SQL>

查看可用ASM磁盘

   1:  SQL> select NAME,HEADER_STATUS,MOUNT_STATUS,STATE,TOTAL_MB,FREE_MB,path from v$asm_disk;
   2:   
   3:  NAME                 HEADER_STATU MOUNT_S STATE      TOTAL_MB    FREE_MB PATH
   4:  -------------------- ------------ ------- -------- ---------- ---------- ------------------------------
   5:                       CANDIDATE    CLOSED  NORMAL         4096          0 /dev/oradata/lv_asm01

创建DISKGROUP 外部冗余

   1:  create diskgroup dgroup01 external redundancy disk '/dev/oradata/lv_asm01';

查看可用asm磁盘

   1:  SQL> select NAME,HEADER_STATUS,MOUNT_STATUS,STATE,TOTAL_MB,FREE_MB,path from v$asm_disk
   2:   
   3:  NAME                 HEADER_STATU MOUNT_S STATE      TOTAL_MB    FREE_MB PATH
   4:  -------------------- ------------ ------- -------- ---------- ---------- ------------------------------
   5:  DGROUP01_0000        MEMBER       CACHED  NORMAL         4096       4046 /dev/oradata/lv_asm01

查看ASM磁盘组

   1:  SQL> select group_number gno,name,block_size,state,type,total_mb,free_mb,usable_file_mb,unbalanced from v$asm_diskgroup;
   2:   
   3:   GNO NAME       BLOCK_SIZE STATE       TYPE     TOTAL_MB    FREE_MB USABLE_FILE_MB U
   4:  ---- ---------- ---------- ----------- ------ ---------- ---------- -------------- -
   5:     1 DGROUP01         4096 MOUNTED     EXTERN       4096       4096           4096 N

创建数据库

   1:  SQL> show parameter spfile;
   2:   
   3:  NAME                                 TYPE        VALUE
   4:  ------------------------------------ ----------- ------------------------------
   5:  spfile                               string      +DGROUP01/orcl/spfileorcl.ora
   6:   
   7:  SQL> select name from v$controlfile;
   8:   
   9:  NAME
  10:  --------------------------------------------------------------------------------
  11:  +DGROUP01/orcl/controlfile/current.256.639064571
  12:   
  13:  SQL> select name from v$datafile;
  14:   
  15:  NAME
  16:  --------------------------------------------------------------------------------
  17:  +DGROUP01/orcl/datafile/system.260.639064589
  18:  +DGROUP01/orcl/datafile/undotbs1.261.639064633
  19:  +DGROUP01/orcl/datafile/sysaux.262.639064639
  20:  +DGROUP01/orcl/datafile/users.264.639064683
  21:   
  22:  SQL> select * from v$logfile
  23:   
  24:      GROUP# STATUS  TYPE    MEMBER                                             IS_
  25:  ---------- ------- ------- -------------------------------------------------- ---
  26:           1         ONLINE  +DGROUP01/orcl/onlinelog/group_1.257.639064573     NO
  27:           2         ONLINE  +DGROUP01/orcl/onlinelog/group_2.258.639064579     NO
  28:           3         ONLINE  +DGROUP01/orcl/onlinelog/group_3.259.639064583     NO

查看ASM DISK中可用空间

   1:  SQL> select name,state,type,total_mb,free_mb,usable_file_mb,offline_disks from v$asm_diskgroup;
   2:   
   3:  NAME                           STATE       TYPE     TOTAL_MB    FREE_MB USABLE_FILE_MB OFFLINE_DISKS
   4:  ------------------------------ ----------- ------ ---------- ---------- -------------- -------------
   5:  DGROUP01                       MOUNTED     EXTERN       4096       3215           3215             0
   6:   
   7:  SQL> alter database datafile '+DGROUP01/orcl/datafile/system.260.639064589' resize 500m;
   8:   
   9:  Database altered.
  10:   
  11:  SQL> alter database datafile '+DGROUP01/orcl/datafile/users.264.639064683' resize 100m;
  12:   
  13:  Database altered.
  14:   
  15:  SQL> alter database tempfile '+DGROUP01/orcl/tempfile/temp.263.639064645' resize 200m;
  16:   
  17:  Database altered.

再次查看ASM DISK中可用空间

   1:  SQL> select name,state,type,total_mb,free_mb,usable_file_mb,offline_disks from v$asm_diskgroup;
   2:   
   3:  NAME                           STATE       TYPE     TOTAL_MB    FREE_MB USABLE_FILE_MB OFFLINE_DISKS
   4:  ------------------------------ ----------- ------ ---------- ---------- -------------- -------------
   5:  DGROUP01                       MOUNTED     EXTERN       4096       2738           2738             0
   6:   
   7:  SQL> select name,bytes/1024/1024 mb from v$datafile
   8:    2  union all
   9:    3  select name,bytes/1024/1024 mb from v$tempfile;
  10:   
  11:  NAME                                                       MB
  12:  -------------------------------------------------- ----------
  13:  +DGROUP01/orcl/datafile/system.260.639064589              500
  14:  +DGROUP01/orcl/datafile/undotbs1.261.639064633            200
  15:  +DGROUP01/orcl/datafile/sysaux.262.639064639              120
  16:  +DGROUP01/orcl/datafile/users.264.639064683               100
  17:  +DGROUP01/orcl/tempfile/temp.263.639064645                200

ASM的一些测试:

   1:  col g# for 99
   2:  col d# for 99
   3:  SQL> select group_number g#,disk_number d#,name,mount_status,header_status,total_mb,free_mb,path from v$asm_disk;
   4:   
   5:   G#  D# NAME            MOUNT_S HEADER_STATU   TOTAL_MB    FREE_MB PATH
   6:  --- --- --------------- ------- ------------ ---------- ---------- ------------------------------
   7:    1   0 DGROUP01_0000   CACHED  MEMBER             4096       2738 /dev/oradata/lv_asm01

创建新磁盘:

   1:  pri:~ # lvs
   2:    LV       VG      Attr   LSize   Origin Snap%  Move Log Copy%
   3:    lv_asm01 oradata -wi-ao   4.00G
   4:    ro