分类: Oracle
2009-10-08 08:30:49
本例是基于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
# /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
附启用或禁用oracleasm自动启动方法:
# /etc/init.d/oracleasm disable
# /etc/init.d/oracleasm enable
对用来做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
/dev/sdb1
这些磁盘是不包含任何内容的空磁盘, 创建时物理磁盘要带分区号如sdb1.
ASM磁盘名可以为大写字母,数字和下划线, 且以字母开始:
# /etc/init.d/oracleasm createdisk VOL1 /dev/sdb1
Marking disk "VOL1" as an ASM disk:
如果提示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
注意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'
$ vi /etc/oratab
+ASM:/u01/app/oracle/product/10.2.0/db_1:Y
$ $ORACLE_HOME/bin/orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password='iamENCY000' force=y
$ mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/bdump
mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/cdump
mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/udump
# su -
# /u01/app/oracle/product/10.2.0/db_1/bin/localconfig add
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 错误是正常的.
如果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实例创建完毕.
$ dbca &
用 dbca 创建数据库, 一直到选择数据类型的画面以前都跟创建普通数据库没有区别. 到第6 步时, 普通的数据库我们通常选择File System, 而ASM类型的数据库我们则要选择"Automatic Storage Management"(会提示输入ASM实例的sys密码).
下 一步, oracle 将自动检查出已经加载的Diskgroup, 在这个界面我们可以通过Create New 按钮创建新的Diskgroup, 也可以通过Add Disks 按钮向当前的磁盘组中添加额外的磁盘, 当然这些磁盘必须是先用oracleasm createdisk 过的.
在数据文件的位置管理设定界面, 通常应该使用OMF, 由oracle 自己管理数据文件的命名,
继续往下的步骤, 跟创建普通数据库已经没有什么区别了.
由于启动 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;