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/oracleORACLE_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