ASM之建立ASM磁碟

Michael_DD發表於2014-12-04
ASM之建立ASM磁碟


(三種方法)

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
a.配置裸裝置對映,修改/etc/udev/rules.d/60-raw.rules檔案
使用root帳戶修改/etc/udev/rules.d/60-raw.rules

按如下方式新增磁碟
[root@oradb ~]# cat /etc/udev/rules.d/60-raw.rules --檢視新增的內容
ACTION=="add",
KERNEL=="sdd1",
RUN+="/bin/raw /dev/raw/raw1 %N" ACTION=="add",
ENV{MAJOR}=="8",
ENV{MINOR}=="1",
RUN+="/bin/raw /dev/raw/raw1 %M %m" ACTION=="add",
KERNEL=="sde1",
RUN+="/bin/raw /dev/raw/raw2 %N" ACTION=="add",
ENV{MAJOR}=="8", ENV{MINOR}=="17",
RUN+="/bin/raw /dev/raw/raw2 %M %m"

[root@oradb ~]# start_udev        #重啟udev服務
Starting udev: [ OK ]

[root@oradb ~]# ll /dev/raw
total 0 crw------- 1 root root 162,
1 Nov 10 18:50 raw1 crw------- 1 root root 162,
2 Nov 10 18:50 raw2
[root@oradb ~]# chown oracle:dba /dev/raw/raw[1-2] --修改屬主,否則建立磁碟組時提示許可權不夠


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
b.也可以採用下面的方式來增加磁碟,即直接修改/etc/sysconfig/rawdevices (root帳戶)
[root@oradb ~]# vim /etc/sysconfig/rawdevices
[root@oradb ~]# cat /etc/sysconfig/rawdevices --檢視增加的內容為raw3,raw4 /dev/raw/raw3 /dev/sdf1 /dev/raw/raw4 /dev/sdg1
[root@oradb ~]# chown oracle:dba /dev/raw/raw[3-4] --修改屬主,否則建立磁碟組時提示許可權不夠
[root@oradb ~]# ll /dev/raw/
total 0 crw------- 1 oracle dba 162,
1 Nov 10 20:12 raw1 crw------- 1 oracle dba 162,
2 Nov 10 20:12 raw2 crw------- 1 oracle dba 162,
3 Nov 10 20:12 raw3 crw------- 1 oracle dba 162,
4 Nov 10 20:12 raw4

重啟裸裝置服務
[root@oradb ~]# /sbin/service rawdevices restart
Assigning devices: /dev/raw/raw3 --&gt /dev/sdf1 /dev/raw/raw3: bound to major 8,
minor 81 /dev/raw/raw4 --&gt /dev/sdg1 /dev/raw/raw4: bound to major 8,
minor 97 done

SQL> select instance_name,status from v$instance;
INSTANCE_NAME STATUS ---------------- ------------ +ASM STARTED

SQL> create diskgroup DG1 normal redundancy disk '/dev/raw/raw1','/dev/raw/raw2'; --建立磁碟組DG1
SQL> select * from v$fixed_table where name like '%ASM%'; --檢視和asm相關的檢視
SQL> select name,allocation_unit_size,state,type, free_mb,required_mirror_free_mb req_mi_fr_mb,usable_file_mb from v$asm_diskgroup;

NAME  ALLOCATION_UNIT_SIZE STATE    TYPE            FREE_MB    REQ_MI_FR_MB   USABLE_FILE_MB
DG1           1048576           MOUNTED NORMAL      296          0                     148


SQL> create diskgroup DG2 normal redundancy disk '/dev/raw/raw3','/dev/raw/raw4'; --建立磁碟組DG2
SQL> select name,state,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup; --檢視磁碟組的狀態及資訊

NAME STATE FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
DG1 MOUNTED 296 0 148
DG2 MOUNTED 296 0 148

SQL> select disk_number,total_mb,free_mb from v$asm_disk;
DISK_NUMBER TOTAL_MB FREE_MB
1 199 148 0 199 148
1 199 148 0 199 148

重新啟動Linux 主機後
SQL> startup --重新啟動ASM例項,收到了磁碟組insufficient資訊
ASM instance started
ORA-15032: not all alterations performed
ORA-15063: ASM discovered an insufficient number of disks for diskgroup "DG2"
ORA-15063: ASM discovered an insufficient number of disks for diskgroup "DG1"

SQL> ho ls -hlt /dev/raw # LINUX主機重新啟動之後屬主性質已發生變化
total 0 crw------- 1 root root 162,
4 Nov 10 20:28 raw4 crw------- 1 root root 162,
3 Nov 10 20:28 raw3 crw------- 1 root root 162,
2 Nov 10 20:28 raw2 crw------- 1 root root 162,
1 Nov 10 20:28 raw1

原因:原始裝置在引導時會重新對映。預設情況下,在引導時原始裝置的擁有者將更改為root 使用者
將下面的內容增加到/etc/rc.local檔案(root帳戶),重新啟動主機,使得屬主變為oracle,則不再出現類似的提示
chown oracle:dba /dev/raw/raw1 chown oracle:dba /dev/raw/raw2
chown oracle:dba /dev/raw/raw3 chown oracle:dba /dev/raw/raw4
chmod 660 /dev/raw/raw1 chmod 660 /dev/raw/raw2
chmod 660 /dev/raw/raw3 chmod 660 /dev/raw/raw4

SQL> drop diskgroup dg1; --將剛才建立的兩個磁碟組刪除
SQL> drop diskgroup dg2;


使用root帳戶清除/etc/udev/rules.d/60-raw.rules /etc/sysconfig/rawdevices 以及/etc/rc.local剛剛增加的記錄 便於下面使用asmlib來建立asm磁碟


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
c.使用root帳戶配置ASMLib驅動及建立ASM磁碟,Oracle建議使用ASMLIB驅動來配置ASM磁碟
[root@oradb ~]# /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 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) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: done
Initializing the Oracle ASMLib driver: [ OK ]
Scanning the system for Oracle ASMLib disks: [ OK ]

--注意下面建立磁碟前本人重新對磁碟分過區
[root@oradb ~]# ls /dev/oracleasm/disks
[root@oradb ~]# /etc/init.d/oracleasm createdisk VOL1 /dev/sdd1
Marking disk "VOL1" as an ASM disk: [ OK ]
[root@oradb ~]# /etc/init.d/oracleasm createdisk VOL2 /dev/sdd2
Marking disk "VOL2" as an ASM disk: [ OK ]
[root@oradb ~]# /etc/init.d/oracleasm createdisk VOL3 /dev/sde1
Marking disk "VOL3" as an ASM disk: [ OK ]
[root@oradb ~]# /etc/init.d/oracleasm createdisk VOL4 /dev/sde2
Marking disk "VOL4" as an ASM disk: [ OK ]
[root@oradb ~]# /etc/init.d/oracleasm listdisks VOL1 VOL2 VOL3 VOL4

[root@oradb ~]# su - oracle
[oracle@oradb ~]$ export ORACLE_SID=+ASM
[oracle@oradb ~]$ sqlplus /nolog
SQL> conn / as sysdba
SQL> startup ASM instance started
ORA-15110: no diskgroups mounted
SQL>
create diskgroup DG1 normal redundancy failgroup
FG1 disk '/dev/oracleasm/disks/VOL1' name VOL1 failgroup
FG2 disk '/dev/oracleasm/disks/VOL2' name VOL2;

create diskgroup DG1 normal redundancy * ERROR at line 1: ORA-15018:
diskgroup cannot be created --下面提示磁碟路徑未在discovery set中設定
ORA-15031: disk specification '/dev/oracleasm/disks/VOL2' matches no disks
ORA-15014: location '/dev/oracleasm/disks/VOL2' is not in the discovery set
ORA-15031: disk specification '/dev/oracleasm/disks/VOL1' matches no disks
ORA-15014: location '/dev/oracleasm/disks/VOL1' is not in the discovery set


SQL> show parameter asm_diskstring NAME TYPE VALUE;
NAME                                 TYPE
------------------------------------ ----------------------
VALUE
------------------------------
asm_diskstring                       string


SQL> alter system set asm_diskstring='/dev/oracleasm/disks/VOL*';
SQL>
create diskgroup DG1 normal redundancy
failgroup FG1 disk '/dev/oracleasm/disks/VOL1' name VOL1
failgroup FG2 disk '/dev/oracleasm/disks/VOL2' name VOL2;
--設定asm_diskstring後重新建立磁碟DG1成功

SQL> select name,state,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup;
NAME
------------------------------------------------------------
STATE                     FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
---------------------- ---------- ----------------------- --------------
BACK
MOUNTED                        26                       0             26

DATA
MOUNTED                         0                       0              0

OCR
MOUNTED                      5215                    2047           1584

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29500582/viewspace-1356554/,如需轉載,請註明出處,否則將追究法律責任。

相關文章