需求:因為需要從RAC的多實例遷移至單虛擬機的多實例。因此,簡要概述一下,如何安裝數據庫的多實例。
不管是Oracle 11g還是10g的多實例,其基本思路都是一致的。
1.調用dbca
在root賬號,運行:
[root@db u01]# xhost +
在oracle賬號,運行:
[oracle@db ~]$ export LANG=en_US
[oracle@db ~]$ dbca
出現如下頁面:
安裝新的數據庫實例,實踐環境名字分別為:
irc3db
,managedb
,servdb
。
開始創建數據庫:
輸入指定的數據庫實例名稱:
后面的界面是配置:字符集,內存,進程數等,就不一一列出,可以參看以前我寫的數據庫【Oracle11g和Oracle10g】安裝的文檔。
安裝完畢之后,可以繼續調用dbca
,看到三個實例是否安裝成功。
2.環境變量配置
由於數據庫是多實例。因此,需要對應的sid才能進入對應的數據庫實例里面,配置的環境變量如下:
[root@arprac02 expbackup]# su - oracle
[oracle@arprac02 ~]$ pwd
/home/oracle
[oracle@arprac02 ~]$ cat .bash_profile
###添加如下內容
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export NLS_LANG="AMERICAN_AMERICA.zhs16gbk"
export ORACLE_SID=irc3db
export PATH=$ORACLE_HOME/bin:$PATH:$ORA_CRS_HOME/bin:/usr/bin:/usr/X11R6/bin:/bin:/sbin
export LD_LIBRARY_PATH=$ORA_CRS_HOME/lib:$ORACLE_HOME/lib:/usr/lib:/usr/local/lib
export TNS_ADMIN=$ORACLE_HOME/network/admin
其中export ORACLE_SID=irc3db
,根據指定不同的實例進行修改。
3.修改SGA內存
新建的虛擬機,增加內存。可能會報如下錯誤:
- 使用dbca安裝數據庫時報錯"SGA size can not be greater than、ORA-27102"
- ORA-27102: out of memory
雖然服務器增加了內存,但是內存要達到最大功效,需要修改內核參數,這是重點,要記得,考試會考
kernel.shmmax
是核心參數中最重要的參數之一,用於定義單個共享內存段的最大值。設置應該足夠大,能在一個共享內存段下容納下整個的 SGA , 設置的過低可能會導致需要創建多個共享內存段,這樣可能導致系統性能的下降。至於導致系統下降的主要原因為在實例啟動以及 ServerProcess 創建的時候,多個小的共享內存段可能會導致當時輕微的系統性能的降低 ( 在啟動的時候需要去創建多個虛擬地址段,在進程創建的時候要讓進程對多個段進行“識別”,會有一些影響 ) ,但是其他時候都不會有影響。
官方建議值:
1 內存為 12G 時,該值為 12*1024*1024*1024-1 = 12884901887
2 內存為 16G 時,該值為 16*1024*1024*1024-1 = 17179869183
3 內存為 32G 時,該值為 32*1024*1024*1024-1 = 34359738367
4 內存為 64G 時,該值為 64*1024*1024*1024-1 = 68719476735
5 內存為 128G 時,該值為 128*1024*1024*1024-1 = 137438953471
kernel.shmall
:
該參數控制可以使用的共享內存的總頁數。 Linux 共享內存頁大小為 4KB, 共享內存段的大小都是共享內存頁大小的整數倍。一個共享內存段的最大大小是16G ,那么需要共享內存頁數是 16GB/4KB==4194304 (頁),
官方建議值:
1 當內存為 12G 時, kernel.shmall = 3145728
2 當內存為 16G 時, kernel.shmall = 4194304
3 當內次為 32G 時, kernel.shmall = 8388608
4 當內存為 64G 時, kernel.shmall = 16777216
5 當內存為 128G 時, kernel.shmall = 33554432
因此,修改SGA
的時候,要考慮的內核參數的修改。