Oracle的ASM是一个高性能的,易于管理Oracle数据库文件的存储解决方案。 Oracle ASM是卷管理器,并提供了专为数据库设计使用的文件系统。
Oracle ASM提供了如下几点比传统的文件系统和存储管理人员优势的地方:
- 简化存储相关的任务,如创建和布局数据库和管理磁盘空间
- 跨物理磁盘分发数据,以消除热点,并提供统一整个磁盘的性能
- 存储配置更改后自动重新平衡数
使用Oracle ASM,你要为Oracle数据库分配带有条带化和镜像参数的磁盘分区。 Oracle ASM管理磁盘空间,可以跨越所有可用资源地分配I / O负载 以优化性能,同时消除了手动I/ O优化的需要。例如,您可以为数据库磁盘增加大小或移动数据库部件到新的设备,而不用关闭数据库
安装步骤:
--1.准备:软件包、磁盘空间
# rpm -qa |grep oracleasm
# fdisk -l
--2.建目录 --> oracle
$ cd $ORACLE_BASE/admin
$ mkdir +ASM
$ cd !$
$ mkdir {a,b,c,u}dump
--3.参数文件&口令文件
$ vim $ORACLE_HOME/dbs/init+ASM.ora
*.asm_diskstring='ORCL:VOL*'
*.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'
*.instance_type='asm'
*.large_pool_size=12M
*.remote_login_passwordfile='SHARED'
rac1->orapwd file=$ORACLE_HOME/dbs/orapw+ASM password=oracle
--4.加载本地配置
# ./localconfig add
rac1->export ORACLE_SID=+ASM
rac1->sqlplus / as sysdba
SQL> startup nomount
SQL> create spfile from pfile;
SQL> startup force nomount
--5.配置
# /etc/init.d/oracleasm configure
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
--6.创建asm磁盘组
# /etc/init.d/oracleasm createdisk VOL1 /dev/sdc1
# /etc/init.d/oracleasm createdisk VOL2 /dev/sdd1
# /etc/init.d/oracleasm createdisk VOL3 /dev/sde1
# /etc/init.d/oracleasm listdisks
VOL1
VOL2
VOL3
SQL> create diskgroup dg1 external redundancy disk 'ORCL:VOL1'; -->这里 ORCL:VOL1 与参数文件第一行对应
SQL> select NAME,TYPE,STATE from v$asm_diskgroup;
NAME TYPE STATE
------------------------------ ------ -----------
DG1 EXTERN MOUNTED
如果上述命令返回的 state是 DISMOUNTED,那么我们需要手工将挂载 diskgroup
SQL> alter diskgroup dg1 mount;
SQL> show parameter asm_diskgroups
NAME TYPE VALUE
------------------------------------ ---------- ------------------------------
asm_diskgroups string DG1
--7.创建ASM数据库
接下来,创建ASM数据库的工作就非常的简单了。执行dbca实用程序,在第六步“storage options”部分选择“Automatic Storage Management ”,在接下来的“ASM Disk Groups”步骤中,选择之前创建的“DGROUP1”,再按照普通建库的方式完成数据库的创建就OK了。
[root@rac1 soft]# /etc/init.d/oracleasm createdisk VOL4 /dev/sdb1
Marking disk "VOL4" as an ASM disk: [ OK ]
SQL> alter diskgroup dg2 add disk 'ORCL:VOL4';
Diskgroup altered.
SQL> select NAME,TOTAL_MB,STATE from v$asm_diskgroup;
NAME TOTAL_MB STATE
------------------------------ ---------- -----------
DG1 3067 MOUNTED
DG2 5625 MOUNTED
rac1->export ORACLE_SID=+ASM
rac1->sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Thu Aug 12 22:36:22 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> show parameter instance_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string +ASM
SQL> show parameter asm_diskg
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
asm_diskgroups string DG1, DG2
SQL> show parameter ins
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
active_instance_count integer
cluster_database_instances integer 1
instance_groups string
instance_name string +ASM
instance_number integer 0
instance_type string asm
open_links_per_instance integer 4
parallel_instance_group string
parallel_server_instances integer 1
rac1->export ORACLE_SID=up
rac1->sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Thu Aug 12 22:38:48 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
+DG2/up/datafile/system.256.726865819
+DG2/up/datafile/undotbs1.258.726865825
+DG2/up/datafile/sysaux.257.726865821
+DG2/up/datafile/users.259.726865827
+DG2/up/datafile/tb1.268.726875891
SQL> create tablespace tb2 datafile '+dg2' size 30m ;
Tablespace created.
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
+DG2/up/datafile/system.256.726865819
+DG2/up/datafile/undotbs1.258.726865825
+DG2/up/datafile/sysaux.257.726865821
+DG2/up/datafile/users.259.726865827
+DG2/up/datafile/tb1.268.726875891
+DG2/up/datafile/tb2.269.726878421
6 rows selected.
SQL> alter database add logfile;
Database altered.
SQL> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
+DG2/up/onlinelog/group_3.263.726866059
+DG1/up/onlinelog/group_3.259.726866065
+DG2/up/onlinelog/group_2.262.726866045
+DG1/up/onlinelog/group_2.258.726866055
+DG2/up/onlinelog/group_1.261.726866037
+DG1/up/onlinelog/group_1.257.726866041
+DG1/up/onlinelog/group_4.260.726875773
+DG2/up/onlinelog/group_4.266.726875777
+DG1/up/onlinelog/group_5.261.726875799
+DG2/up/onlinelog/group_5.267.726875803
+DG1/up/onlinelog/group_6.262.726878635
MEMBER
--------------------------------------------------------------------------------
+DG2/up/onlinelog/group_6.270.726878639
12 rows selected.
SQL> alter database add logfile;
Database altered.
ASM service stop, then database service must stop ;
when start asm service ,then database servicer have been stop
must to manual to start database ;
echo ORACLE_SID
+ASM
SQL> shutdown abort
ASM instance shutdown
SQL> ho lsnrctl stat
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 12-AUG-2010 22:47:20
Copyright (c) 1991, 2005, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date 12-AUG-2010 21:27:19
Uptime 0 days 1 hr. 20 min. 1 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Log File /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=rac1.mycorpdomain.com)(PORT=1521)))
The listener supports no services
The command completed successfully
SQL> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
rac1->lsnrctl stat
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 12-AUG-2010 22:47:33
Copyright (c) 1991, 2005, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date 12-AUG-2010 21:27:19
Uptime 0 days 1 hr. 20 min. 14 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Log File /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=rac1.mycorpdomain.com)(PORT=1521)))
The listener supports no services
The command completed successfully
rac1->sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Thu Aug 12 22:47:38 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ASM instance started
Total System Global Area 83886080 bytes
Fixed Size 1217836 bytes
Variable Size 57502420 bytes
ASM Cache 25165824 bytes
ASM diskgroups mounted
SQL> ho lsnrctl stat
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 12-AUG-2010 22:48:05
Copyright (c) 1991, 2005, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date 12-AUG-2010 21:27:19
Uptime 0 days 1 hr. 20 min. 46 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Log File /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=rac1.mycorpdomain.com)(PORT=1521)))
Services Summary...
Service "+ASM" has 1 instance(s).
Instance "+ASM", status BLOCKED, has 1 handler(s) for this service...
Service "+ASM_XPT" has 1 instance(s).
Instance "+ASM", status BLOCKED, has 1 handler(s) for this service...
The command completed successfully
SQL> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
rac1->export ORACLE_SID=up
rac1->sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Thu Aug 12 22:48:19 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 188743680 bytes
Fixed Size 1218436 bytes
Variable Size 67111036 bytes
Database Buffers 117440512 bytes
Redo Buffers 2973696 bytes
Database mounted.
Database opened.
SQL> ho lsnrctl stat
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 12-AUG-2010 22:49:27
Copyright (c) 1991, 2005, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date 12-AUG-2010 21:27:19
Uptime 0 days 1 hr. 22 min. 7 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Log File /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=rac1.mycorpdomain.com)(PORT=1521)))
Services Summary...
Service "+ASM" has 1 instance(s).
Instance "+ASM", status BLOCKED, has 1 handler(s) for this service...
Service "+ASM_XPT" has 1 instance(s).
Instance "+ASM", status BLOCKED, has 1 handler(s) for this service...
Service "up" has 1 instance(s).
Instance "up", status READY, has 1 handler(s) for this service...
Service "upXDB" has 1 instance(s).
Instance "up", status READY, has 1 handler(s) for this service...
Service "up_XPT" has 1 instance(s).
Instance "up", status READY, has 1 handler(s) for this service...
The command completed successfully
<asmcmd>
rac1->export ORACLE_SID=+ASM
rac1->asmcmd
ASMCMD> ls
DG1/
DG2/
ASMCMD> cd DG1/
ASMCMD> ls
UP/
ASMCMD> cd UP/
ASMCMD> ls
CONTROLFILE/
ONLINELOG/
ASMCMD> cd CONTROLFILE/
ASMCMD> ls
Current.256.726866029
ASMCMD> pwd
+DG1/UP/CONTROLFILE
ASMCMD> du
Used_MB Mirror_used_MB
8 8
ASMCMD> cd ..
ASMCMD> ls
CONTROLFILE/
ONLINELOG/
ASMCMD> help
asmcmd [-p] [command]
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 member of the SYSDBA group.
Specifying the -p option allows the current directory to be displayed
in the command prompt, like so:
ASMCMD [+DATAFILE/ORCL/CONTROLFILE] >
[command] specifies one of the following commands, along with its
parameters.
Type "help [command]" to get help on a specific ASMCMD command.
commands:
--------
cd
du
find
help
ls
lsct
lsdg
mkalias
mkdir
pwd
rm
rmalias
ASMCMD> ls
CONTROLFILE/
ONLINELOG/
ASMCMD> mkdir mydir
ASMCMD> ls
CONTROLFILE/
ONLINELOG/
mydir/
ASMCMD> rm mydir
ASMCMD> cd ..
ASMCMD> ls
UP/
ASMCMD> cd up
ASMCMD> ls
CONTROLFILE/
ONLINELOG/
ASMCMD> cd onlinelog
ASMCMD> ls
group_1.257.726866041
group_2.258.726866055
group_3.259.726866065
group_4.260.726875773
group_5.261.726875799
group_6.262.726878635
group_7.263.726878669
ASMCMD> cd ..
ASMCMD> ls
CONTROLFILE/
ONLINELOG/
ASMCMD> cd ..
ASMCMD> ls
UP/
ASMCMD> cd ..
ASMCMD> ls
DG1/
DG2/
ASMCMD> cd dg2
ASMCMD> ls
UP/
ASMCMD> cd up
ASMCMD> ls
CONTROLFILE/
DATAFILE/
ONLINELOG/
PARAMETERFILE/
TEMPFILE/
spfileup.ora
ASMCMD> cd DATAFILE/
ASMCMD> ls
SYSAUX.257.726865821
SYSTEM.256.726865819
TB1.268.726875891
TB2.269.726878421
UNDOTBS1.258.726865825
USERS.259.726865827
ASMCMD> pwd
+dg2/up/DATAFILE
ASMCMD> ls
SYSAUX.257.726865821
SYSTEM.256.726865819
TB1.268.726875891
TB2.269.726878421
UNDOTBS1.258.726865825
USERS.259.726865827
ASMCMD> ls
SYSAUX.257.726865821
SYSTEM.256.726865819
TB1.268.726875891
TB2.269.726878421
UNDOTBS1.258.726865825
USERS.259.726865827
ASMCMD> cd ..
ASMCMD> ls
CONTROLFILE/
DATAFILE/
ONLINELOG/
PARAMETERFILE/
TEMPFILE/
spfileup.ora
ASMCMD> find +dg2 sys*
+dg2/UP/DATAFILE/SYSAUX.257.726865821
+dg2/UP/DATAFILE/SYSTEM.256.726865819
SQL> select NAME,STATE,TYPE,TOTAL_MB from v$asm_diskgroup;
NAME STATE TYPE TOTAL_MB
------------------------------ ----------- ------ ----------
DG1 MOUNTED EXTERN 3067
DG2 MOUNTED NORMAL 5625
SQL> SQL> alter diskgroup dg2 drop disk vol4;
Diskgroup altered.
SQL> select NAME,STATE,TYPE,TOTAL_MB from v$asm_diskgroup;
NAME STATE TYPE TOTAL_MB
------------------------------ ----------- ------ ----------
DG1 MOUNTED EXTERN 3067
DG2 MOUNTED NORMAL 5625
SQL> select NAME,STATE,TYPE,TOTAL_MB from v$asm_diskgroup;
NAME STATE TYPE TOTAL_MB
------------------------------ ----------- ------ ----------
DG1 MOUNTED EXTERN 3067
DG2 MOUNTED NORMAL 5625
SQL> create diskgroup dg3 external redundance 'ORCL:VOL4'
SQL> DROP DISKGROUP DG3 ;