1.查看當前磁盤
[root@std u01]# fdisk -l Disk /dev/sda: 42.9 GB, 42949672960 bytes 255 heads, 63 sectors/track, 5221 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 4698 37736653+ 83 Linux /dev/sda2 4699 5220 4192965 82 Linux swap / Solaris Disk /dev/sdb: 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 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 Disk /dev/sdd: 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 Disk /dev/sde: 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/sdb
/dev/sdc
/dev/sdd
/dev/sde
2.對磁盤進行分區
[root@std u01]# 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@std u01]# ll /dev/sd* brw-r----- 1 root disk 8, 0 Jan 30 09:10 /dev/sda brw-r----- 1 root disk 8, 1 Jan 30 09:10 /dev/sda1 brw-r----- 1 root disk 8, 2 Jan 30 09:10 /dev/sda2 brw-r----- 1 root disk 8, 16 Jan 30 13:30 /dev/sdb brw-r----- 1 root disk 8, 17 Jan 30 13:30 /dev/sdb1 brw-r----- 1 root disk 8, 32 Jan 30 13:37 /dev/sdc brw-r----- 1 root disk 8, 33 Jan 30 13:37 /dev/sdc1 brw-r----- 1 root disk 8, 48 Jan 30 13:38 /dev/sdd brw-r----- 1 root disk 8, 49 Jan 30 13:38 /dev/sdd1 brw-r----- 1 root disk 8, 64 Jan 30 13:39 /dev/sde brw-r----- 1 root disk 8, 65 Jan 30 13:39 /dev/sde1
3.綁定裸設備
[root@std u01]# vi /etc/sysconfig/rawdevices [root@std u01]# cat /etc/sysconfig/rawdevices # raw device bindings # format: <rawdev> <major> <minor> # <rawdev> <blockdev> # example: /dev/raw/raw1 /dev/sda1 # /dev/raw/raw2 8 5 /dev/raw/raw1 /dev/sdb1 /dev/raw/raw2 /dev/sdc1 /dev/raw/raw3 /dev/sdd1 /dev/raw/raw4 /dev/sde1 [root@std u01]# service rawdevices restart Assigning devices: /dev/raw/raw1 --> /dev/sdb1 /dev/raw/raw1: bound to major 8, minor 17 /dev/raw/raw2 --> /dev/sdc1 /dev/raw/raw2: bound to major 8, minor 33 /dev/raw/raw3 --> /dev/sdd1 /dev/raw/raw3: bound to major 8, minor 49 /dev/raw/raw4 --> /dev/sde1 /dev/raw/raw4: bound to major 8, minor 65 done [root@std u01]# raw -qa /dev/raw/raw1: bound to major 8, minor 17 /dev/raw/raw2: bound to major 8, minor 33 /dev/raw/raw3: bound to major 8, minor 49 /dev/raw/raw4: bound to major 8, minor 65
3.更改裸設備的權限
[root@std u01]# cd /dev/raw [root@std raw]# ll total 0 crw------- 1 root root 162, 1 Jan 30 13:42 raw1 crw------- 1 root root 162, 2 Jan 30 13:42 raw2 crw------- 1 root root 162, 3 Jan 30 13:42 raw3 crw------- 1 root root 162, 4 Jan 30 13:42 raw4 [root@std raw]# chown oracle:dba raw* [root@std raw]# ll total 0 crw------- 1 oracle dba 162, 1 Jan 30 13:42 raw1 crw------- 1 oracle dba 162, 2 Jan 30 13:42 raw2 crw------- 1 oracle dba 162, 3 Jan 30 13:42 raw3 crw------- 1 oracle dba 162, 4 Jan 30 13:42 raw4
為方便我們把"chown oracle:dba raw*"寫入/etc/rc.local
[root@std raw]# cat /etc/rc.local |grep chown chown oracle:dba /dev/raw/raw[1-4] [root@std raw]#
4.安裝配置ASM驅動
[root@std u01]# uname -ra Linux std 2.6.18-194.el5 #1 SMP Tue Mar 16 21:52:43 EDT 2010 i686 i686 i386 GNU/Linux [root@std u01]# ll oracleasm* -rw-r--r-- 1 root root 130018 Jul 24 2013 oracleasm-2.6.18-194.el5-2.0.5-1.el5.i686.rpm -rw-r--r-- 1 root root 130966 Jul 24 2013 oracleasm-2.6.18-194.el5debug-2.0.5-1.el5.i686.rpm -rw-r--r-- 1 root root 2844 Jul 24 2013 oracleasm-2.6.18-194.el5-debuginfo-2.0.5-1.el5.i686.rpm -rw-r--r-- 1 root root 130595 Jul 24 2013 oracleasm-2.6.18-194.el5PAE-2.0.5-1.el5.i686.rpm -rw-r--r-- 1 root root 128392 Jul 24 2013 oracleasm-2.6.18-194.el5xen-2.0.5-1.el5.i686.rpm -rw-r--r-- 1 root root 13929 Jul 24 2013 oracleasmlib-2.0.4-1.el5.i386.rpm -rw-r--r-- 1 root root 85303 Jul 24 2013 oracleasm-support-2.1.8-1.el5.i386.rpm [root@std u01]# rpm -ivh oracleasm* --這些包之前我們以安裝過 warning: oracleasm-2.6.18-194.el5-2.0.5-1.el5.i686.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159 Preparing... ########################################### [100%] package oracleasm-support-2.1.8-1.el5.i386 is already installed package oracleasm-2.6.18-194.el5xen-2.0.5-1.el5.i686 is already installed package oracleasm-2.6.18-194.el5-2.0.5-1.el5.i686 is already installed package oracleasm-2.6.18-194.el5debug-2.0.5-1.el5.i686 is already installed package oracleasm-2.6.18-194.el5-debuginfo-2.0.5-1.el5.i686 is already installed package oracleasm-2.6.18-194.el5PAE-2.0.5-1.el5.i686 is already installed package oracleasmlib-2.0.4-1.el5.i386 is already installed
配置驗證ASM驅動:
[root@std u01]# /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 [ ]:oinstall Start Oracle ASM library driver on boot (y/n) [y]: Scan for Oracle ASM disks on boot (y/n) [y]: Writing Oracle ASM library driver configuration: done Initializing the Oracle ASMLib driver: [ OK ] Scanning the system for Oracle ASMLib disks: [ OK ] [root@std u01]# lsmod |grep asm oracleasm 46356 1
5.初始化ASM參數
[root@std u01]# su - oracle [oracle@std ~]$ cd $ORACLE_HOME/dbs [oracle@std dbs]$ mkdir -p $ORACLE_BASE/admin/+ASM/{b,c,u}dump [oracle@std dbs]$ touch init+ASM.ora [oracle@std dbs]$ vi init+ASM.ora [oracle@std dbs]$ cat init+ASM.ora *.asm_diskstring='/dev/raw/raw*' *.instance_type='asm' *.large_pool_size=24M *.remote_login_passwordfile='SHARED' *.background_dump_dest='/u02/app/admin/+ASM/bdump' *.core_dump_dest='/u02/app/admin/+ASM/cdump' *.user_dump_dest='/u02/app/admin/+ASM/bdump' [oracle@std dbs]$
6.為ASM實例創建密碼文件
[oracle@std dbs]$ orapwd file=orapw+ASM password=oracle1
[oracle@std dbs]$
7.以root身份啟動CSS進程
[oracle@std ~]# /u02/app/product/10.2.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 Adding to inittab Startup will be queued to init within 90 seconds. Checking the status of new Oracle init process... Expecting the CRS daemons to be up within 600 seconds. CSS is active on these nodes. localhost CSS is active on all nodes. Oracle CSS service is installed and running under init(1M)
驗證CSS進程是否啟動;
[oracle@std dbs]$ crsctl check css
CSS appears healthy
[oracle@std dbs]$ crsctl check crs
CSS appears healthy
Cannot communicate with CRS
Cannot communicate with EVM
8.啟動ASM實例
[oracle@std dbs]$ export ORACLE_SID=+ASM [oracle@std dbs]$ sqlplus '/as sysdba' SQL*Plus: Release 10.2.0.4.0 - Production on Fri Jan 30 14:34:00 2015 Copyright (c) 1982, 2007, Oracle. All Rights Reserved. Connected to an idle instance. SQL> startup ASM instance started Total System Global Area 96468992 bytes Fixed Size 1265984 bytes Variable Size 70037184 bytes ASM Cache 25165824 bytes ORA-15110: no diskgroups mounted
可以看到我們的ASM實例已經正常啟動,最后報出ORA-15110錯誤說明沒有掛載任何磁盤組,
因為此時我們還沒有創建任何磁盤組,所以忽略這個錯誤。
9.創建spfile
使用spfile以后,在節下來的我們創建磁盤組時,ASM_DISKGROUPS這個參數會被自動更新。
而如果使用pfile,這個參數值不會自動更新。
SQL> create spfile from pfile; File created. SQL> shutdown abort ASM instance shutdown SQL> startup ASM instance started Total System Global Area 96468992 bytes Fixed Size 1265984 bytes Variable Size 70037184 bytes ASM Cache 25165824 bytes ORA-15110: no diskgroups mounted SQL> show parameter spfile NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ spfile string /u02/app/product/10.2.0/db_1/d bs/spfile+ASM.ora
10.查看磁盤及創建磁盤組
--查看磁盤asm_diskstring參數指定的磁盤
SQL> select path from v$asm_disk; PATH -------------------------------------------------------------------------------- /dev/raw/raw4 /dev/raw/raw3 /dev/raw/raw2 /dev/raw/raw1
--創建磁盤組
CREATE DISKGROUP diskgroup_name [ { HIGH | NORMAL | EXTERNAL } REDUNDANCY ] [ FAILGROUP failgroup_name ] DISK [ NAME disk_name ] [ SIZE size_clause ] [ FORCE | NOFORCE ] ...;
注意:冗余度有三個選擇:HIGH(高度冗余>三路)、NORMAL(標准冗余--雙路)和EXTERNAL(外部存儲冗余)
SQL> create diskgroup DATA external redundancy 2 disk '/dev/raw/raw1','/dev/raw/raw2'; Diskgroup created. SQL> create diskgroup FLA external redundancy 2 disk '/dev/raw/raw3','/dev/raw/raw4'; Diskgroup created. SQL> select GROUP_NUMBER,NAME,TOTAL_MB,FREE_MB from v$asm_diskgroup; GROUP_NUMBER NAME TOTAL_MB FREE_MB ------------ ------------------------------ ---------- ---------- 1 DATA 4094 4042 2 FLA 4094 4042
11.把ASM實例注冊到監聽中
創建好ASM實例后,一般會系統會把ASM實例自動注冊到監聽中,如果沒有自動注冊,可以手動注冊。
[oracle@std bdump]$ export ORACLE_SID=+ASM [oracle@std bdump]$ sqlplus '/as sysdba' SQL*Plus: Release 10.2.0.4.0 - Production on Fri Jan 30 15:21:00 2015 Copyright (c) 1982, 2007, Oracle. All Rights Reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> alter system register; System altered.
[oracle@std ~]$ lsnrctl status LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 30-JAN-2015 15:19:33 Copyright (c) 1991, 2007, 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.4.0 - Production Start Date 30-JAN-2015 15:19:15 Uptime 0 days 0 hr. 0 min. 18 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Log File /u02/app/product/10.2.0/db_1/network/log/listener.log Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=std)(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
12.遠程訪問ASM實例
要想從遠程訪問ASM實例,TNS配置需加上UR屬性
asm= (DESCRIPTION= (ADDRESS= (PROTOCOL=tcp)(HOST=192.168.1.172)(PORT=1521)) (CONNECT_DATA= (SERVICE_NAME=+ASM) (UR=A)))
C:\Users\Administrator>sqlplus sys/oracle1@asm as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 1月 30 15:27:08 2015 Copyright (c) 1982, 2005, Oracle. All rights reserved. 連接到: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> select group_number,name from v$asm_diskgroup; GROUP_NUMBER NAME ------------ ------------------------------------------------------------ 1 DATA 2 FLA