Oracle Linux 4.7 配置Oracle ASM的文檔在
http://blog.csdn.net/liumengcheng/article/details/37358567
Oracle Linux 6安裝Oracle11g R2和Oracle Linux 4.7安裝Oracle10g R2不一樣的地方是:
需要的rpm包:
binutils-2.20.51.0.2-5.11.el6.i686
compat-libcap1-1.10-1.i686
compat-libstdc++-33-3.2.3-69.el6.i686
gcc-4.4.4-13.el6.i686
gcc-c++-4.4.4-13.el6.i686
glibc-2.12-1.7.el6.i686
glibc-devel-2.12-1.7.el6.i686
ksh( 這個不要安裝)
libgcc-4.4.4-13.el6.i686
libstdc++-4.4.4-13.el6.i686
libstdc++-devel-4.4.4-13.el6.i686
libaio-0.3.107-10.el6.i686
libaio-devel-0.3.107-10.el6.i686
make-3.81-19.el6.i686
sysstat-9.0.4-11.el6.i686
另外還要
unixODBC-2.2.14-11.el6.i686
unixODBC-devel-2.2.14-11.el6.i686
pdksh-5.2.14( 要裝這個)
核心參數:
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
提升shell限制
在檔案/etc/security/limits.conf中添加如下內容:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 4096
oracle hard nofile 65536
其他都一樣
root使用者掛載oracle安裝介質iso,
mount /dev/cdrom /mnt/cdrom
然後oracle使用者在家目錄執行/mnt/cdrom/runInstaller
選擇僅安裝資料庫軟體,按提示一步步做,這樣oracle資料庫軟體就裝好了
ASM disk的建立:
ASM的磁碟我在這裡使用udev,而不是ASMLib(紅帽企業版6以後的系統貌似不能用ASMLib了)。
使用udev的好處是不管磁碟和sda,sdb,sdc這些怎麼變都沒問題,因為udev只看磁碟的uuid;
當你頻繁的給系統添加,刪除磁碟,或者兩個節點公用一組磁碟的時候,udev的好處就體現出來了。
說得再簡單點,通過udev,可以把指定的磁碟(通過uuid唯一確定磁碟)映射到/dev/asm-diskb,/dev/asm-diskc,/dev/asm-diskd這樣的裝置檔案
其實你看/etc/fstab檔案裡的內容,掛載的目錄對應的裝置並不是/dev/sda1,/dev/sdb1這些,而是uuid
Oracle Linux 6如下:
1,查看磁碟的uuid
scsi_id --whitelisted --replace-whitespace --device=/dev/sdb
注意:由於我做實驗用的是VirtualBox虛擬機器,添加磁碟的時候要注意,要把磁碟載入現有的磁碟機下,不能建立磁碟機再添加磁碟,否
則uuid會查看不到。現有的磁碟機就是在安裝虛擬機器的時候系統磁碟所對應的那個SATA磁碟機
2,建置規則檔案
我這裡新增了3個磁碟,所以指令碼如下所示,用root使用者執行這個指令碼(指令碼中的owner和group可以改成其他的,這裡只是為了簡單,所以直接用了oracle使用者和dba組),會建置規則檔案/etc/udev/rules.d/99-oracle-asmdevices.rules
for i in b c d ;
do
echo "KERNEL==\"sd*\", BUS==\"scsi\", PROGRAM==\"/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/\$name\",
RESULT==\"`/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/sd$i`\", NAME=\"asm-disk$i\", OWNER=\"oracle\",
GROUP=\"dba\", MODE=\"0660\"" >> /etc/udev/rules.d/99-oracle-asmdevices.rules
done
3,重啟udev裝置
/sbin/udevadm control --reload-rules
/sbin/start_udev
4,檢查udev裝置
ls -lsa /dev/asm*
5,測試udev裝置
udevadm info --query=all --path=/sys/block/sdb
udevadm info --query=all --name=asm-diskb
機器重啟後,使用fdisk -l查看不到原來的硬碟了
此時執行start_udev,然後fdisk -l又能看到原來的磁碟了
在安裝好oracle資料庫軟體後,用oracle使用者執行dbca,發現無法配置ASM(這時候才知道要裝
Oracle Grid Infrastructure
)。為了圖省力。我用oracle使用者裝了Oracle Grid Infrastructure,且僅安裝軟體,
在安裝軟體完後按照提示用root使用者執行
[root@ole ~]# /u01/app/11.2.0/grid/crs/install/roothas.pl
2014-07-08 12:57:33: Checking for super user privileges
2014-07-08 12:57:33: User has super user privileges
2014-07-08 12:57:33: Parsing the host name
Using configuration parameter file: /u01/app/11.2.0/grid/crs/install/crsconfig_params
Creating trace directory
LOCAL ADD MODE
Creating OCR keys for user 'oracle', privgrp 'oinstall'..
Operation successful.
CRS-4664: Node ole successfully pinned.
Adding daemon to inittab
CRS-4124: Oracle High Availability Services startup failed.
CRS-4000: Command Start failed, or completed with errors.
ohasd failed to start: 對裝置不適當的 ioctl 操作
ohasd failed to start: 對裝置不適當的 ioctl 操作 at /u01/app/11.2.0/grid/crs/install/roothas.pl line 296.
遇到這種情況不用急,執行 /u01/app/11.2.0/grid/crs/install/roothas.pl -delete -force -verbose來清除之前的資訊,
然後啟動另一個終端,我們稱作終端2,用root執行輸入 /bin/dd if=/var/tmp/.oracle/npohasd of=/dev/null bs=1024 count=1,別按斷行符號鍵
這時我們再執行roothas.pl這個指令碼,
當出現 Adding daemon to inittab這條資訊的時候,終端2執行命令:
/bin/dd if=/var/tmp/.oracle/npohasd of=/dev/null bs=1024 count=1
則能成功:
[root@ole grid]# /u01/app/11.2.0/grid/perl/bin/perl -I/u01/app/11.2.0/grid/perl/lib -I/u01/app/11.2.0/grid/crs/install
/u01/app/11.2.0/grid/crs/install/roothas.pl
2014-07-08 14:44:45: Checking for super user privileges
2014-07-08 14:44:45: User has super user privileges
2014-07-08 14:44:45: Parsing the host name
Using configuration parameter file: /u01/app/11.2.0/grid/crs/install/crsconfig_params
LOCAL ADD MODE
Creating OCR keys for user 'oracle', privgrp 'oinstall'..
Operation successful.
CRS-4664: Node ole successfully pinned.
Adding daemon to inittab
CRS-4123: Oracle High Availability Services has been started.
ohasd is starting
ADVM/ACFS is not supported on oraclelinux-release-6Server-0.0.5.i686
ole 2014/07/08 14:45:04 /u01/app/11.2.0/grid/cdata/ole/backup_20140708_144504.olr
Successfully configured Oracle Grid Infrastructure for a Standalone Server
用oracle使用者執行crs_stat -t,如果出來資訊則說明has啟動成功。
用oracle使用者修改.bash_profile(本來這個檔案的內容是針對oracle資料庫的,現在要建ASM執行個體,所以我在這裡改了其中的兩個環境變數):
export ORACLE_HOME=/u01/app/11.2.0/grid
export ORACLE_SID=+ASM
在Xmanager的Xshell終端中輸入asmca,這時候就能建立ASM執行個體,配置磁碟組了
記得asm_diskstring和發現路徑都是/dev/asm*
ASM執行個體建立好後再輸入crs_stat -t
[oracle@ole ~]$ crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora.DGROUP1.dg ora....up.type ONLINE ONLINE ole
ora.asm ora.asm.type ONLINE ONLINE ole
ora.cssd ora.cssd.type ONLINE ONLINE ole
ora.diskmon ora....on.type ONLINE ONLINE ole
進入sqlplus執行select name||header_status||path from v$asm_disk;也能查詢出在asmca中建立的磁碟
sqlplus / as sysasm登入(如果是sysdba會出現錯誤ORA-15260: permission denied on ASM disk group)
然後建立磁碟組
create diskgroup dgtest normal redundancy
failgroup fg1 disk '/dev/asm-diskc' name DISKC
failgroup fg2 disk '/dev/asm-diskd' name DISKD;
查看磁碟和磁碟組資訊:
col state format a10
col name format a15
col failgroup format a20
set line 200
select STATE,REDUNDANCY,TOTAL_MB,FREE_MB,NAME,FAILGROUP from v$asm_disk;
select GROUP_NUMBER,NAME,STATE,TYPE,TOTAL_MB,FREE_MB from v$asm_diskgroup;
效果如下:
刪除diskgroup:
drop diskgroup dgtest including contents;
mount:
ALTER DISKGROUP dgtest DISMOUNT;
ALTER DISKGROUP dgtest MOUNT;
ALTER DISKGROUP ALL DISMOUNT;
ALTER DISKGROUP ALL MOUNT;
為diskgroup增加disk:
alter diskgroup dgtest add disk '/dev/asm-diske' name
DISKE,'/dev/asm-diskf' name DISKF;
從diskgroup刪除disk:
alter diskgroup dgtest drop disk DISKF;
用grid軟體下的netca建立監聽程式
用dbca建立基於ASM的資料庫:
前5步和普通的dbca建庫都一樣,從第六步開始,
下面的和普通的dbca建庫一樣,在此就省略了。
注意:
重啟作業系統後ohasd服務無法自動重啟了。
由於Oracle Linux 6 已經廢棄了inittab這種機制,所以無法自動啟動ohasd了,
11.2.0.1不支援Oracle Linux 6,11.2.0.3才支援Oracle Linux 6
用root使用者手動執行/etc/init.d/init.ohasd run &
這樣oracle asm和rdbms就能順利啟動了
記得將oracle使用者的環境變數切換回資料庫的環境變數,比如ORACLE_SID改為orcl,ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1