本例是基于ASMLib创建, 也可以基于裸设备创建.
1.1 安装ASMLib
# cd /orahome/wangnc/asmlib
# rpm -Uvh
oracleasm-support-2.1.3-1.el4.i386.rpm
oracleasm-2.6.9-55.ELsmp-2.0.3-1.i686.rpm
oracleasmlib-2.0.4-1.el4.i386.rpm
1.2 配置ASMLib
# /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
...
# df -ha | grep oracleasm
oracleasmfs 0 0 0 - /dev/oracleasm
附启用或禁用oracleasm自动启动方法:
# /etc/init.d/oracleasm disable
# /etc/init.d/oracleasm enable
1.3 物理磁盘分区
对用来做ASM的硬盘要进行分区(只分一个区, 此处采用硬盘sdb):
# fdisk -l | grep Disk
Disk /dev/sda: 250.0 GB, 250059350016
bytes
Disk /dev/sdb: 250.0 GB, 250059350016
bytes
# fdisk /dev/sdb
Command (m for help): n
p
Partition number (1-4): 1
First cylinder (1-30401, default 1):
Last cylinder or +size or +sizeM or +sizeK
(1-30401, default 30401):
Command (m for help): w
# fdisk -l /dev/sdb
Disk /dev/sdb: 250.0 GB, 250059350016
bytes
255 heads, 63 sectors/track, 30401
cylinders
Units = cylinders of 16065 * 512 = 8225280
bytes
Device
Boot Start End Blocks Id System
/dev/sdb1 1 30401 244196001 83 Linux
1.4 创建ASM磁盘
这些磁盘是不包含任何内容的空磁盘,
创建时物理磁盘要带分区号如sdb1.
ASM磁盘名可以为大写字母,数字和下划线, 且以字母开始:
# /etc/init.d/oracleasm createdisk VOL1
/dev/sdb1
Marking disk "VOL1" as an ASM
disk: [ OK ]
如果提示Failed, 可以跟踪日志:
# tail -f /var/log/oracleasm
附删除磁盘语句:
# /etc/init.d/oracleasm deletedisk
VOL1
检查配置情况:
# /etc/init.d/oracleasm querydisk
VOL1
# /etc/init.d/oracleasm querydisk
/dev/sdb1
# /etc/init.d/oracleasm listdisks
# ls -l /dev/oracleasm/disks/*
# /etc/init.d/oracleasm status
1.5 建初始化参数文件
注意asm_diskstring必需配置成'ORCL:'开头.
# su - oracle
$ export ORACLE_SID=+ASM
$ vi $ORACLE_HOME/dbs/init$ORACLE_SID.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'
1.6 增加实例信息到/etc/oratab
$ vi /etc/oratab
+ASM:/u01/app/oracle/product/10.2.0/db_1:Y
1.7 建立密码文件
$ $ORACLE_HOME/bin/orapwd
file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password='iamENCY000'
force=y
1.8 建立需要的目录
$ mkdir -p
$ORACLE_BASE/admin/$ORACLE_SID/bdump
mkdir -p
$ORACLE_BASE/admin/$ORACLE_SID/cdump
mkdir -p
$ORACLE_BASE/admin/$ORACLE_SID/udump
1.9 开启CSS服务
# su -
#
/u01/app/oracle/product/10.2.0/db_1/bin/localconfig add
1.10 启动ASM实例
SQL> create spfile from
pfile; (会自动读取pfile:$ORACLE_HOME/dbs/init$ORACLE_SID.ora)
SQL> shutdown
immediate;
SQL> startup;
...
ORA-15110: no diskgroups mounted
因为我们是首次启动ASM实例, 还没有创建diskgroup, 所以显示15110
错误是正常的.
1.11 创建磁盘组
如果ASM磁盘是基于已经做了RAID的阵列,
那么这里选择external方式即可.
SQL> create diskgroup
DG1 external redundancy disk 'ORCL:VOL1';
SQL> select name,state from
v$asm_diskgroup;
SQL> show parameter
asm_diskgroups
至此ASM实例创建完毕.
1.12 基于ASM实例建库说明
$ dbca &
用 dbca 创建数据库, 一直到选择数据类型的画面以前都跟创建普通数据库没有区别. 到第6
步时, 普通的数据库我们通常选择File System, 而ASM类型的数据库我们则要选择"Automatic Storage
Management"(会提示输入ASM实例的sys密码).
下 一步, oracle 将自动检查出已经加载的Diskgroup,
在这个界面我们可以通过Create New 按钮创建新的Diskgroup, 也可以通过Add Disks
按钮向当前的磁盘组中添加额外的磁盘, 当然这些磁盘必须是先用oracleasm createdisk 过的.
在数据文件的位置管理设定界面, 通常应该使用OMF, 由oracle
自己管理数据文件的命名, 这样才算是进一步解放了DBA
对于物理存储方面的繁琐工作.
继续往下的步骤,
跟创建普通数据库已经没有什么区别了.
1.13 启动 ASM 数据库的步骤
由于启动 ASM 数据库必须要先启动ASM 实例,
所以基本上启动步骤如下.
1) 先启动ASM实例
$ export ORACLE_SID=+ASM
$ sqlplus / as sysdba
SQL> startup;
SQL> exit;
2) 再启动数据库
$ export ORACLE_SID=EUIS
$ sqlplus / as sysdba
SQL> startup;
SQL> exit;
--End--