第 4 部分:配置存储
为了使用文件系统或 ASM,您必须有未分配的磁盘分区。该部分将介绍如何创建新文件系统或 ASM 使用的分区。
使用 /dev/sda(/dev/sdb,/dev/sdc)(一个没有分区的空磁盘)为整个磁盘创建一个分区。
Oracle 建议每个磁盘仅包含一个分区
[root@db ~]# fdisk /dev/sdb
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-261, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-261, default 261):
Using default value 261
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@db ~]# fdisk /dev/sdc
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-261, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-261, default 261):
Using default value 261
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@db ~]# fdisk /dev/sdd
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-261, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-261, default 261):
Using default value 261
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
现在验证新分区:
Ex:
[root@db ~]# fdisk -l /dev/sdc
Disk /dev/sdc: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdc1 1 261 2096451 83 Linux
对每个要分区的磁盘重复上述步骤。
第 5 部分: 安装Oracle ASMLib
安装:
$su –
# rpm -Uvh oracleasm-support-2.0.4-1.el5.i386.rpm
# rpm -Uvh oracleasm-2.6.18-53.el5xen-2.0.4-1.el5.i686.rpm
# rpm -Uvh oracleasmlib-2.0.3-1.el5.i386.rpm
配置ASMLib:
[root@db Server]# /etc/init.d/oracleasm configure
Configuring the Oracle ASM library driver.
This will configure the on-boot properties of the Oracle ASM library
driver. The following questions will determine whether the driver is
loaded on boot and what permissions it will have. The current values
will be shown in brackets ('[]'). Hitting <ENTER> without typing an
answer will keep that current value. Ctrl-C will abort.
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) [y]:
Fix permissions of Oracle ASM disks on boot (y/n) [y]:
Writing Oracle ASM library driver configuration: [ OK ]
Scanning system for ASM disks: [ OK ]
以上操作将加载oracleasm.o 驱动,并且mount 上ASM 文件系统,同时我们可以通过以
下命令来手工的卸载和加载ASMLib
[root@db Server]# /etc/init.d/oracleasm disable
Writing Oracle ASM library driver configuration: [ OK ]
Unmounting ASMlib driver filesystem: [ OK ]
Unloading module "oracleasm": [ OK ]
[root@db Server]# /etc/init.d/oracleasm enable
Writing Oracle ASM library driver configuration: [ OK ]
Loading module "oracleasm": [ OK ]
Mounting ASMlib driver filesystem: [ OK ]
Scanning system for ASM disks: [ OK ]
[root@db Server]#
添加init 文件使系统启动时自动加载ASMLib
$ su –
# cd /etc/rc3.d
# ln -s ../init.d/oracleasm S99oracleasm
# ln -s ../init.d/oracleasm K01oracleasm
注意:如果系统启动是自动进入图形界面,也就是系统的init level 是5,那么上面生成链
接的命令应该在/etc/rc5.d 目录中操作。
重新启动系统,确认ASMLib 已经可以自动加载
#lsmod | grep oracleasm
oracleasm 14224 1
#dmesg | grep oracleasm
ASM: oracleasmfs mounted with options: <defaults>
通过以 root 用户身份运行以下命令来标记 ASMLib 使用的磁盘:
/etc/init.d/oracleasm createdisk DISK_NAME device_name
提示:DISK_NAME 应由大写字母组成。
[root@db ~]# /etc/init.d/oracleasm createdisk VOL1 /dev/sdc1
Marking disk "/dev/sdc1" as an ASM disk: [ OK ]
[root@db ~]# /etc/init.d/oracleasm createdisk VOL2 /dev/sdd1
Marking disk "/dev/sdd1" as an ASM disk: [ OK ]
[root@db ~]# /etc/init.d/oracleasm listdisks
VOL1
VOL2
如果要删除ASM 磁盘通过以下命令:
# /etc/init.d/oracleasm deletedisk VOL4
注意:如果是在RAC 环境中的某一个节点中添加了ASM 磁盘,那么需要在其它的节点上
运行scandisk 来获取这种变化。
[root@db ~]# /etc/init.d/oracleasm scandisks
Scanning system for ASM disks: [ OK ]
第 6 部分:安装 Oracle
配置ORACLE环境变量
双击打开 .bash_profile添加以下行,将 ORACLE_BASE 添加到登录配置文件:
#su - oracle
$vi .bash_profile
ORACLE_BASE=/u01/app/oracle;
export ORACLE_BASE
ORACLE_SID=oradb;
export ORACLE_SID
ORACLE_HOME=$ORACLE_BASE/product/11.1.0/db_1;
export ORACLE_HOME
PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin;
export PATH
umask 022
安装Oracle10g
在安装Oracle10g 的时候,我们选择不创建数据库,只安装软件的方式,在软件安装结束
以后再通过dbca 来创建ASM 实例和数据库。
以 oracle 身份登录并启动 runInstaller:
$ ./runInstaller
1. 选择安装方式
选择 Advanced Installation。
单击 Next
2. 指定清单目录和凭证
清单目录:/u01/app/oraInventory
操作系统组名:oinstall
单击 Next
3. 选择安装类型
选择 Enterprise Edition
单击 Next
4. 安装位置
Oracle Base:/u01/app/oracle
名称: OraDB11gASM
路径:/u01/app/oracle/product/11.1.0/asm
注意:为了便于管理,Oracle 建议 ASM 使用与数据库不同的 ORACLE_HOME。
单击 Next
5. 产品特定的前提条件检查
如果您一直在依循本指南中的步骤,则所有检查都应顺利通过。如果一个或多个检查失败,应在继续操作前纠正该问题。
单击 Next
6. 选择配置选项
选择 Install Software Only
单击 Next
7. 特权操作系统组
数据库操作员 (OSDBA) 组:dba
数据库操作员 (OSOPER) 组:dba
ASM 管理员 (OSASM) 组:dba
单击 Next
8. 总结
显示已安装产品的摘要。
单击 Install。
9. 安装
将显示安装进度
10. 执行配置脚本
在安装的结尾,将弹出一个窗口,提示需要以 root 用户身份运行脚本。以 root 用户身份登录,运行提示的脚本。
[root@db /]# /u01/app/oraInventory/orainstRoot.sh
[root@db /]# /u01/app/oracle/product/11.1.0/db_1/root.sh
完成后单击 OK。
11. 安装结束
单击 Exit
创建ASM 实例
1. 创建初始化文件
$ su – oracle
$ cd $ORACLE_HOME/dbs
$ vi init+ASM.ora
创建asm 实例的初始化脚本,脚本内容如下所示:
说明 /u01/app/oracle 是$ORACLE_BASE目录
# ******Below is init script for asm instance******
*.asm_diskstring='ORCL:VOL*'
*.background_dump_dest='/u01/app/oracle/admin/+ASM/bdump'
*.core_dump_dest='/u01/app/oracle/admin/+ASM/cdump'
*.instance_type='asm'
*.large_pool_size=12M
*.remote_login_passwordfile='SHARED'
*.user_dump_dest='/u01/app/oracle/admin/+ASM/udump'
# ******Above is init script for asm instance******
说明:
1. dump 目录指向$ORACLE_BASE/<sid>,本文中ASM 实例的SID 是+ASM。最好
不要修改这个实例名,否则在下一步用dbca 创建数据库的时候,dbca 将找不到可用的磁
盘组,我想这应该是dbca 的一个bug,手工创建ASM 类型的数据库就应该没有这个限制
了。
2. asm_diskstring 用于实例启动的时候检查可用的ASM 磁盘,由于我们前面创建ASM
磁盘的名称是VOL1 到VOL4,所以我们此处使用*通配符,前面的’ORCL:’不可以省略,
否则ASM 实例将无法检查到磁盘。
2. 创建密码文件
$ su – oracle
$ cd $ORACLE_HOME/dbs
[oracle@db dbs]$ orapwd file=orapw+ASM password=dba
[oracle@db dbs]$ ls -l
total 36
-rw-r--r-- 1 oracle oinstall 272 Apr 18 21:04 init+ASM.ora
-rw-r--r-- 1 oracle oinstall 12920 May 3 2001 initdw.ora
-rw-r--r-- 1 oracle oinstall 8385 Sep 11 1998 init.ora
-rw-r----- 1 oracle oinstall 1536 Apr 18 21:08 orapw+ASM
3. 创建目录结构
$ su – oracle
$ cd $ORACLE_HOME/dbs
[oracle@db dbs]$ mkdir -p $ORACLE_BASE/admin/+ASM/udump
[oracle@db dbs]$ mkdir -p $ORACLE_BASE/admin/+ASM/bdump
[oracle@db dbs]$ mkdir -p $ORACLE_BASE/admin/+ASM/cdump
4. 启动实例
$ export ORACLE_SID=+ASM
$ sqlplus / as sysdba
SQL> startup
ASM instance started
Total System Global Area 100663296 bytes
Fixed Size 777616 bytes
Variable Size 99885680 bytes
Database Buffers 0 bytes
Redo Buffers 0 bytes
--说明下面的解决办法是10G里面有效
--如果启动实例的时候碰到如下报错:
--ORA-29701: unable to connect to Cluster Manager
--那么请检查/etc/inittab 文件,看看是否有下面这行
--h1:35:respawn:/etc/init.d/init.cssd run >/dev/null 2>&1 </dev/null
--如果没有请添加,如果被注释了请取消注释。
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORA-29701: unable to connect to Cluster Manager
你先用dbca创建asm类型的数据库,做到第六步是生成init.cssd的,你生成后退出
[root@db etc]# /u01/app/oracle/product/11.1.0/db_1/bin/localconfig add
/etc/oracle does not exist. Creating it now.
Successfully accumulated necessary OCR keys.
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
Configuration for local CSS has been initialized
Cleaning up Network socket directories
Setting up Network socket directories
Adding to inittab
Startup will be queued to init within 30 seconds.
Checking the status of new Oracle init process...
Expecting the CRS daemons to be up within 600 seconds.
Cluster Synchronization Services is active on these nodes.
db
Cluster Synchronization Services is active on all the nodes.
Oracle CSS service is installed and running under init(1M)
11g中ASM SYS应该用sqlplus / as sysasm进行连接
[oracle@db ~]$ sqlplus / as sysdba
Connected to an idle instance.
SQL> startup
ORA-32004: obsolete and/or deprecated parameter(s) specified
ASM instance started
Total System Global Area 284565504 bytes
Fixed Size 1299428 bytes
Variable Size 258100252 bytes
ASM Cache 25165824 bytes
ORA-15110: no diskgroups mounted
解决错误ORA-32004: obsolete and/or deprecated parameter(s) specified
SQL> shutdown
ORA-15100: invalid or missing diskgroup name
ASM instance shutdown
SQL> startup pfile=$ORACLE_HOME/dbs/init+ASM.ora
ORA-32006: BACKGROUND_DUMP_DEST initialization parameter has been deprecated
ORA-32006: USER_DUMP_DEST initialization parameter has been deprecated
ASM instance started
Total System Global Area 284565504 bytes
Fixed Size 1299428 bytes
Variable Size 258100252 bytes
ASM Cache 25165824 bytes
ORA-15110: no diskgroups mounted
修改参数文件
[oracle@db ~]$ cd $ORACLE_HOME/dbs
[oracle@db dbs]$ vi 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'
*.instance_type='asm'
*.large_pool_size=12M
*.remote_login_passwordfile='SHARED'
#*.user_dump_dest='/u01/app/oracle/admin/+ASM/udump'
关闭数据库后再启动
SQL> shutdown
ORA-15100: invalid or missing diskgroup name
ASM instance shutdown
SQL> startup
ASM instance started
Total System Global Area 284565504 bytes
Fixed Size 1299428 bytes
Variable Size 258100252 bytes
ASM Cache 25165824 bytes
ORA-15110: no diskgroups mounted
因为我们是首次启动asm 实例,还没有创建diskgroup,所以显示15110 错误是正常的。
5. 创建spfile,重新启动
SQL> create spfile from pfile;
File created.
SQL> shutdown immediate;
ORA-15100: invalid or missing diskgroup name
ASM instance shutdown
SQL> startup
ASM instance started
Total System Global Area 284565504 bytes
Fixed Size 1299428 bytes
Variable Size 258100252 bytes
ASM Cache 25165824 bytes
ORA-15110: no diskgroups mounted
6. 创建diskgroup
--这里第一次我创建不成功重启动系统
[root@db ~]# su - oracle
[oracle@db ~]$ lsnrctl start
[oracle@db ~]$ export ORACLE_SID=+ASM
[oracle@db ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.1.0.6.0 - Production on Fri Apr 18 23:50:09 2008
Copyright (c) 1982, 2007, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ORA-29701: unable to connect to Cluster Manager
SQL> conn / as sysasm
Connected to an idle instance.
SQL> startup
ASM instance started
Total System Global Area 284565504 bytes
Fixed Size 1299428 bytes
Variable Size 258100252 bytes
ASM Cache 25165824 bytes
ORA-15110: no diskgroups mounted
SQL> create diskgroup dgroup1 normal redundancy
2 failgroup fgroup1 disk 'ORCL:VOL1','ORCL:VOL2'
3 failgroup fgroup2 disk 'ORCL:VOL3','ORCL:VOL4';
Diskgroup created.
SQL>
SQL> col name for a10
SQL> select name,state from v$asm_diskgroup;
NAME STATE
------------------------------ -----------
DGROUP1 MOUNTED
如果上述命令返回的state 是DISMOUNTED,那么我们需要手工将挂载diskgroup
SQL> ALTER DISKGROUP dgroup1 MOUNT;
Diskgroup altered.
此时检查数据库初始化参数,发现asm_diskgroups 参数值已经自动设置为DGROUP1,
这表明在下次启动asm 实例的时候,这个diskgroup 会被自动挂载。
SQL> col name for a10
SQL> col type for a10
SQL> col value for a20
SQL> show parameter asm_diskgroups
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
asm_diskgroups string DGROUP1
SQL>
如果要卸载diskgroup,使用下面的命令:
ALTER DISKGROUP ALL DISMOUNT;
创建ASM 数据库
用dbca 创建数据库,一直到选择数据类型的画面以前都跟创建普通数据库没有区别。
1. 选择配置选项
选择 Create a Database
单击 Next
2. 选择数据库配置
选择 General Purpose or Transaction Processing
单击 Next
3. 指定数据库配置选项
输入全局数据库名称和 SID (asmdemo)
单击 Next
4. 选择数据库管理选项
选择 configure enterprise manager
选择 Use Database Control for Database Management
单击 Next
5. 指定数据库模式口令
选择 Use the same password for all the accounts
输入口令并确认
单击 Next
6. 指定数据库存储选项
选择 Automatic Storage Management (ASM)
单击 Next
7. 指定 ASM的SYS密码(sys)
单击 Next
单击 OK
这里要把数据库关闭状态。才可以进行下一步。
SQL> shutdown
ORA-15100: invalid or missing diskgroup name
ASM instance shutdown
SQL> conn / as sysasm
Connected.
SQL> ALTER DISKGROUP dgroup1 MOUNT;
7. 选择 ASM 磁盘组
选择在前一部分中创建的 DATA 磁盘组
如果没有MOUNTED磁盘组,这点击mount按钮
单击 Next
在数据文件的位置管理设定界面,通常应该使用OMF,由oracle 自己管理数据文件的命名,
这样才算是进一步解放了DBA 对于物理存储方面的繁琐工作。
继续往下的步骤,基本是默认值。跟创建普通数据库已经没有什么区别了
8。 选择Use Oracle-Managed Files +DGROUP1
9. 选择Specify flash recovery area 和enable archiving 其他的默认。
10. 选择 sample schemas
11. 在character sets里面选择 use unicode(AL32UTF8)
12. 选择keep the enhanced 11g default security settings
13. 选择enable automatic maintenance tasks
14. 缺省
15. 选择create database
选择finish 安装
启动ASM 数据库的步骤
由于启动ASM 数据库必须要先启动ASM 实例,所以基本上启动步骤如下。
1. 以oracle 用户进入操作系统
2. $ export ORACLE_SID=+ASM
3. SQL> sqlplus / as sysdba
4. SQL> startup
5. SQL> exit
6. $ export ORACLE_SID=<your_real_db_sid>
7. SQL> sqlplus / as sysdba
8. SQL> startup