Oracle 10GR2 安裝手冊-整理版

前言

前提和假設

如非特別說明,本規範敘述的產品特性、操作命令、用戶界面均基於Oracle
10G,可能有不適用於其它版本的情況。

預期讀者

項目基礎設施可行性研究、設計和實施人員,應用系統設計人員,相關運行維護技術人員。

數據庫規劃部署

數據庫類型特點分析

在創建和規劃一個Oracle數據庫之前,首要任務應確定將來投產的數據庫屬於何種業務類型。目前的應用業務有以下類型:

  • OLTP(Online Transaction Processing)

  • OLAP(Online Analytiacl Processing)

  • BATCH

  • DSS(Decision Support System)

  • Hybrid

OLTP(聯機事務處理)

OLTP系統是一個包含繁重及頻繁執行的DML應用,其面向事務的活動主要包括更新,同時也包括一些插入和刪除。經典的例子是預定系統或在線實時交易系統,例如網上銀行和ATM自動取款機系統。OLTP系統可以允許有很高的併發性(在這種情況下,高併發性通常表示許多用戶可以同時使用一個數據庫系統)。

OLAP(聯機分析處理)

OLAP系統可提供分析服務。這意味着數學、統計學、集合以及大量的計算,一個OLAP系統並不永遠適合OLTP或DSS模型,有時它是兩者之間的交叉。另外,也可以把OLAP看作是在OLTP系統或DSS之上的一個擴展或一個附加的功能層次。例如,地理信息系統或有關空間的數據庫和OLAP數據庫相集成,提供圖表的映射能力。用於社會統計的人口統計數據庫也是一個很好的例子。

BATCH(批處理系統)

批作業處理系統是作用於數據庫的非交互性的自動應用。它通常含有繁忙DML語句並有較低的併發性(在這種情況下,較低的併發性通常表示少數幾個用戶能夠同時使用一個數據庫系統),該業務系統會在某一時段,大批量數據(少則幾萬,多則幾十萬,幾百萬條數據)更新/插入/刪除該數據庫。事務查詢的比率決定了如何物理地設計它,經典的例子是與DW有關的成品數據庫和可操作數據庫,如:操作型數據存儲系統(ODS)。

DSS(決策支持系統)

DSS系統通常是一個大型的、包含歷史性內容的只讀數據庫,通常用於簡單的固定查詢或特別查詢。DSS常常按某種方式變成一個VLDB(Very
Large Database)或DW(Data
Warehouse)。VLDB的例子如:企業資源管理財務系統(ERP)數據庫,該數據庫是一個長期存儲數據庫的歷史數據庫;DW的例子如:整個集團的工資和人事數據庫。

Hybrid(混合類型系統)

同時數據庫系統的應用類型可能是OLTP、OLAP、BATCH等的混合體。也意味着同時擁有上述業務類型特徵,這就要求數據庫管理員、應用系統分析員、操作系統管理員整體統籌考慮各種業務性能需求及功能需求,對這個系統制定出滿足各種業務類型需求的規劃,如:企業客戶信息整合(ECIF)系統。

數據庫高可用模式

在Oracle 10g 第 1 版,Oracle 的集羣件產品可用於所有操作系統,成爲了 Oracle RAC
所需的集羣技術。隨着 Oracle 數據庫 10g 第 2 版 (10.2) 的發佈,Cluster Ready
Services 被重命名爲 Oracle Clusterware。如果使用 Oracle 10g 或更高版本,Oracle
Clusterware 是大多數運行 Oracle RAC 的平臺所需的唯一集羣件(不包括 Tru
集羣,在這種情況下,您需要供應商集羣件)。我們仍然可以使用其他供應商的集羣件(如果該集羣件通過了認證),但是請記住,**Oracle
RAC 仍然需要 Oracle Clusterware**,因爲它與數據庫軟件完全集成。

由於Oracle
RAC已經是成熟產品,安裝時都應選擇RAC模式,除非有特殊情況,可以採用HA模式。

安裝必要條件

參見文檔《169706.1》

網絡規劃原則

物理網卡需求

管理網絡:1個網卡

業務網絡:每個服務器2個網卡。需要爲業務網絡配置2*節點數量。業務網絡建議採用BONDING技術。每個業務網絡適配器**必須支持
TCP/IP**。

心跳網絡:每個服務器2個網卡。心跳網絡建議經過交換機互聯,不建議使用交叉線互聯。**對於心跳網絡應採用BONDING技術,互連必須支持用戶數據報協議
(UDP),**使用支持
TCP/IP的高速網絡適配器和交換機。UDP被用來RAC之間的通信,TCP被用來CLUSTER之間的通信。心跳網絡建議使用10G網絡,最小配置爲1G網絡。

每個網絡中網絡適配器的相關業務接口名稱在所有節點上都應相同,網絡適配器的相關心跳接口名稱在所有節點上都應相同。

所有的IP地址都應該是靜態配置,不應該是DHCP方式獲取。

**如果使用網卡綁定技術,不要使用模式3和
6,模式3會造成通信性能的下降,模式6會造成虛擬IP漂移時出現網絡問題。**

所用的網卡名稱不可以包含“.”;

在10g及其之前,我們必須使用IPv4協議。

主機名命名規則

RAC機器需要在/etc/hosts中配置各節點IP的別名,命名規則如下**(主機名中包含”_”是不被建議和支持的)**:

Public IP:如無特殊需求,建議使用dbxx的格式,其中xx爲主機序列號;

Private IP: 如無特殊需求,建議使用dbxx-pri的格式,其中xx爲主機序列號。

Virtual IP:如無特殊需求,建議使用dbxx-vip的格式,其中xx爲主機序列號。

監聽端口選擇

網絡監聽建議不要使用默認端口,該規範建議使用同一端口1815.

磁盤佈局原則

存儲類型選擇

建議選擇SAN存儲網絡,作爲共享存儲。

由於ORACLE數據庫需要確認對數據文件的寫操作已經完全寫入的磁盤,因此不建議使用NFS文件系統,除非NFS存儲廠商已經通過ORACLE認證(如REDHAT,NETAPP)。如果使用NFS,rsize和wsize至少爲16384,ORACLE
的建議指爲32768.

集羣設備不支持directnfs。

磁盤IO調度算法

對於數據庫系統建議使用Deadline調度算法。

Deadline調度算法對一個請求的多方面特性進行權衡來進行調度,以期即能滿足塊設備扇區的順尋訪問又兼顧到一個請求不會在隊列中等待太久導致餓死。Deadline調度算法爲了兼顧這兩個方面,引入了四個隊列,這四個隊列可分爲兩類,每一類都由讀和寫兩種隊列組成。一類隊列用來對請求按起始扇區序號進行排序,通過紅黑樹來組織,稱爲sort_list;另一類對請求按它們的生成時間進行排序,由鏈表來組織,稱爲fifo_list。

如果數據庫安裝在虛擬化環境下,建議使用noop調度算法,該算法利用少量的CPU資源進行基礎排序和整合操作。在虛擬化環境下,分爲主機系統和客戶機系統,應該使磁盤調度算法儘量在主機層面完成,因此我們建議在虛擬客戶機內使用noop調度算法。

RAID級別規劃

在數據庫服務器磁盤空間充分冗餘的條件下,Raid
(1+0)+HotSpare作爲優先第一配置選項;如果磁盤空間不是很充足,Raid
5作爲第二配置選項。

說明:

★越多表示在本組(Disk*N)範圍內推薦級別越高

Raid\磁盤 Disk*2 Disk*3 Disk*4 Disk*5 Disk*6 Disk*7 Disk*8 Disk*9
Raid 1
Raid 1+HotSpare ★★
Raid 5
Raid 5+HotSpare ★★ ★★ ★★ ★★ ★★ ★★
Raid (1+0) ★★★ ★★★ ★★★
Raid (1+0)+HotSpare ★★★ ★★★ ★★★

Raid磁盤組往往會在多個物理磁盤之間對數據進行條帶化處理,例如,一般情況下條帶大小爲64K。當磁盤分區和條帶化大小可以對齊時,可以改善磁盤性能,尤其是在開啓了DIRECTIO特性數據庫系統下。

基於磁盤容量和條帶化對齊的考慮,我們建議使用parted工具進行磁盤分區。因爲fdisk工具默認情況下會分配前63個sector用於保存磁盤元數據分分區表數據,緊隨其後是分區數據,顯然此時分區不是從64k開始的,因爲每個sector的大小默認爲512字節。通過使用parted可以手工指定分區開始位置,因此我們建議使用如下方式進行分區

/sbin/parted /dev/mapper/asm1 mklabel msdos unit s mkpart primary “128 -1”

本地磁盤規劃

爲保證軟件安裝過程順利進行,需要保證本地磁盤具有足夠的存儲空間。具體要求如下:

本地磁盤空間需求
序號 用途 目錄 大小
1 CRS_HOME /u01/app/ oracle/product/10.2.0/crs_1 /u01 不小於10G,建議 > 50G 建議爲/u01創建單獨分區,不要使用LVM
2 ORACLE_HOME /u01/app/ oracle/product/10.2.0/db_1
3 SOFTWARE_DIR /u01/software
4 臨時目錄 /tmp 最小1G,建議10G

共享磁盤規劃

Oracle
10g中引入了ASM技術,相對於裸設備ASM帶來了不少的管理便利性。如果安裝最新版本的ORACLE10GR2,建議可以使用ASM,如果是較早版本,可能會存在bug較多的情況。本文以ORACLE10GR2最新版本爲基礎,因此使用ASM作爲存儲文件系統。

雖然Oracle
10GR2支持使用O_DIRECT訪問塊設備,但是在安裝過程中使用塊設備OUI會報錯,需要使用RAW設備進行安裝,安裝完成後可以通過命令替換爲塊設備,詳細參加文檔《401132.1》。因此,我們建議:在10G中,表決盤等磁盤仍然使用裸設備,數據文件等使用ASM。使用ASM時,建議不要使用過多的磁盤組,通常爲數據文件創建磁盤組DATA1,爲閃回恢復期創建磁盤組FRA1。建議閃回區大小爲數據區大小的兩倍

不管採用何種技術,強烈建議對使用到的磁盤先分區在使用。

裸設備磁盤空間規劃

存儲組件 裸設備 建議大小 最小大小 存儲內容
VOTE1 /dev/raw/raw1 300M 280M VOTEDISK
VOTE2 /dev/raw/raw2 300M 280M VOTEDISK
VOTE3 /dev/raw/raw3 300M 280M VOTEDISK
OCR1 /dev/raw/raw4 300M 280M OCR
COR2 /dev/raw/raw5 300M 280M OCR
ASM磁盤空間規劃
存儲組件 ASM卷組 卷大小 冗餘級別 AU SIZE 存儲內容
數據庫文件 +DATA1 EXTERNAL DATAFILE LOG CONTROL OCR
快速恢復區 +FRA1 EXTERNAL ARCHIVELOG CONTROL OCR
磁盤命名規劃
存儲組件 ASM卷組 ASM_磁盤名 DM多路徑 UDEV設備 ASMLIB設備
VOTE1 RACVOTE1 ORADISK/RACVOTE1 RACVOTE1
VOTE2 RACVOTE2 ORADISK/RACVOTE2 RACVOTE2
VOTE3 RACVOTE3 ORADISK/RACVOTE3 RACVOTE3
OCR1 RACOCR1 ORADISK/RACOCR1 RACOCR1
COR2 RACOCR2 ORADISK/RACOCR1 RACOCR2
數據庫文件 +DATA1 DATA1P1 RACDATA1 ORADISK/RACDATA1 RACDATA1
快速恢復區 +FRA1 DATA2P1 RACDATA2 ORADISK/RACDATA2 RACDATA2

內存使用原則

ASM內存分配原則

由於ASM實例業務簡單,內存參數的設置值大於其所需內存空間的和,提供一定的備用內存,通常建議內存總大小爲256M

該參數的設置需要考慮冗餘性配置和可用磁盤空間。

DB內存分配原則

ORACLE數據庫專用主機中內存使用包括:

  • SGA,共享內存全局區:數據庫一啓動就ORACLE就申請佔用,可以通過ipcs
    -a查看其大小。查看SGA_MAX_SIZE參數可以得到其設置值。這部分內存在數據庫實例運行期間不會改變;

  • PGA,進程全局區:查看PGA_AGGREGATE_TARGET可以得到其設置值。這部分內存並非一啓動就分配,而是隨着應用的使用變化而變化,有排序、並行、HASH
    JOIN時會增大,甚至會突破設置值,而長時間不使用時又會返回給操作系統;

  • 連接到數據庫的每個TCP連接本身會佔用~左右內存。對於使用中間件共享連接池的應用,連接數基本固定,內存佔用也就固定;對於直接連接數據庫的應用,這部分內存佔用隨着數據庫session數的增減而增減;

  • 操作系統自身內存的佔用,包括常用軟件的內存佔用。這部分佔用無法給出固定值,簡單計算可以按30%物理內存計算。

新系統性能測試時初始計劃內存分配辦法:總物理內存扣除連接數佔用的內存及操作系統、常用軟件佔用的內存之後,剩餘的內存按3:1的比例分配給數據庫的SGA、PGA,
也即SGA佔其中的3/4,PGA佔1/4。SGA中SHARED POOL分1/4(且不大於,不小於),DB
BUFFER和其他內存池共用其餘的1/2。

注意:

RAC系統中需要考慮節點故障時,單節點接過所有負載連接的情況,因此每節點內存需求量都按最大全部連接數考慮。

此處連接數佔用內存的估計都是按照上限值進行的估算,因此比較保守,也預留了日後擴展的需求。實際可連接數比上述數值要大。

交換空間分配原則

根據ORACLE官方文檔(Doc ID 225451.1),建議配置linux下SWAP空間遵循如下原則。

RHEL5
Amount of RAM in the System Recommended Amount of Swap Space
4GB of RAM or less a minimum of 2GB of swap space
4GB to 16GB of RAM a minimum of 4GB of swap space
16GB to 64GB of RAM a minimum of 8GB of swap space
64GB to 256GB of RAM a minimum of 16GB of swap space
256GB to 512GB of RAM a minimum of 32GB of swap space
RHEL6
Amount of RAM in the System Recommended swap space Recommended swap space if allowing for hibernation
⩽ 2GB 2 times the amount of RAM 3 times the amount of RAM
> 2GB – 8GB Equal to the amount of RAM 2 times the amount of RAM
> 8GB – 64GB 0.5 times the amount of RAM 1.5 times the amount of RAM
> 64GB 4GB of swap space No extra space needed

Hugepage使用原則

在 Linux 環境中實施 HugePage
能夠極大地提高內核性能。對於內存較大的系統,效果尤其明顯。一般而言,**所有 RAM
大於 12GB或者SGA空間超過8G的系統都適合使用 Hugepage**。系統中的 RAM
越大,系統啓用 Hugepage
後獲得的好處也越大。這是因爲內核爲映射和維護內存頁表所要做的工作量會隨着系統內存的增大而增加。啓用
Hugepage
能夠顯著地降低內核要管理的頁面數,而且能提高系統的效率。經驗表明,如果未啓用
Hugepage,內核擠佔關鍵的 Oracle Clusterware 或 Real Application Clusters
守護進程的情況會很常見,而這會導致實例或節點驅逐出現。

對於ASM實例可以不使用Hugepage技術。

Linux信號量設置

可以將Semaphores理解爲計數器,該計數器用於進程或者線程之間對共享資源的訪問同步。根據ORACLE文檔《184821.1》,對ORACLE數據庫系統的信號量設置,遵循如下計算方法:

信號量設置
SEMMNI 128 Maximum number of semaphore sets in the entire system.
SEMMSL 250 Minimum recommended value. SEMMSL should be 10 plus the largest PROCESSES parameter of any Oracle database on the system.
SEMMNS 32000 Maximum semaphores on the system. This setting is a minimum recommended value. SEMMNS should be set to the sum of the PROCESSES parameter for each Oracle database, add the largest one twice, plus add an additional 10 for each database. This value shoud be equal (SEMMSL*SEMMNI)
SEMOPM 100 Maximum number of operations per semop call.SEMOPM should be equal SEMMSL

數據庫選項規劃

隨着Oracle數據庫版本的不斷升級,Oracle的功能也越來越多,因此安全檢查點也越來越多。因此最好根據需求只安裝所需內容。如:不需要web
功能,就不要安裝相應組件。

在安裝數據庫軟件時,定製安裝並僅選擇如下組件:

Oracle Database

Enterprise Edition options

Oracle partitioning

Oracle Net Services

Oracle Net Listeners

Oracle Call Interface(OCI)

對如下組件,除非開發中心有特殊需求,否則不安裝:

Advanced Security

OLAP

Spatial

Oracle Enterprise Manager Console DB

Programmer

XML Development

利用dbca創建數據庫時,在advance
component選項頁中,點擊解除對其中所有選項的選中,包括JVM、SPATIAL、XDB,除非開發中心有特殊需求

數據庫物理結構規劃

數據庫實例的命名規則

普通使用模式的Oracle數據庫的服務名和實例名(SID)是相同的;RAC模式下的Oracle數據庫的服務名與實例名不同。

數據庫服務名的命名格式爲:XXXXYY{m},不得超過8個字符

數據庫的SID的命名格式爲:XXXXYY{m}{n}

說明:

其中XXXX表示長度爲4個字符的應用項目縮寫;

  • YY:代表數據庫用途,pd代表生產庫,hi代表歷史庫,rp代表報表庫,cf代表配置庫,st代表Standby災備庫,其他可自行定義,不得超過2個字符;

  • m表示數據庫序號,從0-9,根據項目的數據庫數量進行編號;

  • n表示RAC節點實例序號1,2,3……。用以區分多節點的RAC數據庫的不同實例。對於普通模式的數據庫,該位不指定。

表空間設計

生產數據庫不得有如TOOLS、XDB、EXAMPLE等oracle默認安裝表空間。本文推薦使用ASM,不得使用文件系統和裸設備。

數據文件使用固定大小,不得設置爲自動擴展,自動擴展語句會造成數據文件的自動增長,在使用ASM的情況下可能造成ASM系統無空閒空間。

數據庫管理員必須使用本地管理中的自動分配(Autoallocate)的方式創建表空間,Segment的管理使用ASSM方式。默認Storage設置Minextents爲1M。

OLTP系統:每個數據文件最大不超過(Oracle理論上限:BLOCK_SIZE爲8K時,數據文件最大,16K爲,32K爲),超過的表空間擴容需要新增數據文件,不足的表空間擴容可以直接resize增大數據文件大小。

OLAP系統:由於數據量大,空間需求多,單個數據文件的大小允許設置爲。如果單個表空間預期大小超過2T,可以直接使用BigFile表空間。此時該表空間只能有一個文件,需要增加表空間大小時,直接resize文件大小即可,該文件的最大大小可達到32T(8k
Blocks)、64T(16k Blocks)、128T(32k Blocks)。

Undo/temp表空間的估算

Undo設置原則:oracle9i以後的版本,推薦使用UNDO
TABLESPACE,讓系統自動管理回滾段。須考慮以下幾個問題:

系統併發事務數有多少?

系統是否存在大查詢或者大是事務?頻繁與否?

能提供給系統的回滾段表空間的磁盤空間是多少?

UNDO表空間初始設置不小於,SGA_MAX_SIZE大於的,至少爲SGA_MAX_SIZE*1.2。

Temp設置原則:可創建缺省臨時表空間TEMP,取數據庫的缺省參數。業務用戶默認使用的TEMP表空間初始設置爲總空間的5%,且不小於,通常不大於。

控制文件設計

每個數據庫實例應至少有兩個控制文件,且每個文件存儲在獨立的物理磁盤上。如果有一個磁盤失效而導致控制文件不可用,與其相關的數據庫實例必須關閉。一旦失效的磁盤得到修復,可以把保存在另一磁盤上的控制文件複製到該盤上。這樣數據庫實例可重新啓動。並通過非介質恢復操作使數據庫得到恢復。

爲了使整個系統的高可靠地運行,要求至少設置3個控制文件

日誌文件設計

重做日誌文件的尺寸會對數據庫的性能產生重要影響,因爲它的尺寸大小決定着數據庫的寫進程(DBWn)和日誌歸檔進程(ARCn)。一般情況下,較大的日誌文件提供較好的數據庫性能,較小的重做日誌文件會增加覈查點(checkpoint)的活動,從而導致性能的降低。當然爲了防止I/O爭用,還應把各個重做日誌文件分佈到不同的物理磁盤上。

不可能爲重做日誌文件提供特定大小的建議,重做日誌文件在幾百兆字節到幾GB字節都被認爲是合理的。欲確定數據庫重做日誌文件的大小,應根據該系統產生重做日誌的數量,並依據每二十分鐘發生一次日誌切換這個大致原則來決定,業務高峯時段,日誌切換頻率不高於五分鐘一次。在系統運行後,我們從alert文件獲取日誌的切換時間,並根據切換的間隔來調整重組日誌的大小。

歸檔日誌

Oracle可以將聯機日誌文件保存到多個不同的位置,將聯機日誌轉換爲歸檔日誌的過程稱之爲歸檔,相應的日誌被稱爲歸檔日誌。歸檔日誌(archivelog
)文件存儲方法:

放在ASM單獨的磁盤組+FRA1,獨立於+DATA1磁盤組。對RAC系統來說,各自實例使用相同的ASM磁盤組,方便RMAN進行歸檔日誌備份。

要求歸檔日誌的ARCH磁盤組大小可以保證容納2天產生的歸檔日誌。

安裝先決條件準備

檢查操作系統兼容性

ORACLE 10g操作系統認證列表
./media/image1.png

如果使用EL4系列的操作系統,建議升級到4.7之後,以避免如下bug:6116137、6125546、5041764、5136660等。

檢查集羣軟件兼容性

ORACLE 10g RAC 認證列表
./media/image2.png

用戶及組

執行以下過程,驗證在安裝節點上存在用戶
nobody,nobody用戶會用於執行oracle的某些任務:

[root\@localhost \~]# id nobody

uid=99(nobody) gid=99(nobody) 組=99(nobody)

如果該命令顯示了 nobody 用戶的信息。如果用戶 nobody
不存在,則輸入以下命令進行創建:

[root\@localhost \~]# useradd -M -u 99 -g nobody -s /sbin/nologin nobody

創建Oracle用戶,命令如下:

groupadd -g 1000 oinstall

groupadd -g 1300 dba

groupadd -g 1301 oper

useradd -m -u 1100 -g oinstall -G dba,oper -d /home/oracle -s /bin/bash
oracle

設置 Oracle 帳戶的口令:

echo oracle | passwd –stdin oracle

配置HugePage

配置/etc/security/limits.conf,設置memlock值(KB),該值可略小於物理內存。重啓系統後配置生效。

cat > /tmp/limits.sh \< \< EOF

#!/bin/bash

memtotal_kb=`grep ‘MemTotal’ /proc/meminfo | awk ‘{print \$2 }’`

#the total amount of memory pages that can be used system wide,in pages

memlock=\$(( \$memtotal_kb * 4 / 5 ))

softml=\`grep -v “\^#” /etc/security/limits.conf | grep “memlock” |
grep “soft” | wc -c\`

hardml=\`grep -v “\^#” /etc/security/limits.conf | grep “memlock” |
grep “hard” | wc -c\`

if [ \$softml != 0 ]

then

sed -i “s/.*soft.*memlock.*/\* soft memlock \$memlock/”
/etc/security/limits.conf

else

echo “* soft memlock \$memlock” > > /etc/security/limits.conf

fi

if [ \$hardml != 0 ]

then

sed -i “s/.*hard.*memlock.*/\* hard memlock \$memlock/”
/etc/security/limits.conf

else

echo “* hard memlock \$memlock” > > /etc/security/limits.conf

fi

EOF

使用oracle用戶通過如下命令查看,配置是否生效。

ulimit –l

配置/etc/sysctl.conf,修改vm.nr_hugepages參數值爲SGA/hugepagesize+4。hugepagesize在linux下默認爲2M。

在kernel2.4下,需要使用參數vm.hugetlb_pool。

查看transparent_hugepage是否啓用,如果目錄不存在或者返回結果爲never,則表示transparent_hugepage沒有啓用,否則我們需要禁用transparent_hugepage。

cat /sys/kernel/mm/transparent_hugepage/enabled

修改/etc/grub.conf在kenel後添加如下選項transparent_hugepage=never,以禁用transparent_hugepage。

對於RHEL7如果上述方法行不通,可以在/usr/lib/tuned/throughput-performance/tuned.conf文件中添加如下選項來禁用transparent_hugepage.

[vm]

transparent_hugepage=never

配置臨時目錄/TMP

Oracle的安裝要求/tmp目錄至少有400MB以上的空餘空間,安裝RAC時,臨時目錄不可以使用共享目錄。可以用以下語句檢查/tmp目錄的空間:

# df /tmp

Filesystem 1K-blocks Used Available Use% Mounted on

/dev/hda2 113836004 40094512 67958896 38% /

如果沒發現/tmp目錄沒有足夠的空間了,可以在另外創建一個目錄,並修改ORACLE的環境變量,方法如下:

su - root

mkdir /u01/tmp

chown root.root /u01/tmp

chmod 777 /u01/tmp

export TEMP=/u01/tmp       # used by Oracle

export TMPDIR=/u01/tmp     # used by Linux programs like the linker “ld”

當完成了Oracle安裝後,可以先關閉Oracle服務器,然後移除剛纔創建的目錄,並復位相關環境變量。

su - root

rmdir /u01/tmp

unset TEMP

unset TMPDIR

配置SWAP

根據交換空間分配原則,檢查當前系統的SWAP空間分配是否合理。

  檢查系統內存:

# grep MemTotal /proc/meminfo

MemTotal: 511940 kB (1034688 kB=1G)

檢查系統交換區:

# cat /proc/swaps

Filename Type Size Used Priority

/dev/hda3 partition 1044216 256584 -1

 
如果發現交換空間太小,可以有兩種方式增加交換區,一種是採用文件方式,一種是採用新建分區的方式。

使用文件增加交換區:

# cat /proc/swaps

Filename Type Size Used Priority

/dev/hda3 partition 1044216 256584 -1

# dd if=/dev/zero of=tmpswap bs=1k count=524288

524288+0 records in

524288+0 records out

# chmod 600 tmpswap

# mkswap tmpswap

Setting up swapspace version 1, size = 536866 kB

# swapon tmpswap

# cat /proc/swaps

Filename Type Size Used Priority

/dev/hda3 partition 1044216 263628 -1

/tmpswap file 524280 0 -2

# 刪除交換區:

# swapoff tmpswap

# rm -f tmpswap

# cat /proc/swaps

Filename Type Size Used Priority

/dev/hda3 partition 1044216 263624 -1

配置內核參數

cat > /tmp/sysctl.sh \< \< EOF

#!/bin/bash

function setSysCtl(){

echo “set sysctl variable: ” \$1,”to: ” \$2

ccnt=\`grep -v “\^#” /etc/sysctl.conf | grep “\$1” | wc -c\`

if [ \$ccnt != 0 ]

then

sed -i “s/[\^#]*\$1.*/\$1=\$2/” /etc/sysctl.conf

else

echo “\$1=\$2” > > /etc/sysctl.conf

fi

}

pagesize=\`getconf PAGE_SIZE\`

memtotal_kb=\`grep ‘MemTotal’ /proc/meminfo | awk ‘{print \$2 }’\`

memtotal=\$(( 1024 * \$memtotal_kb ))

shmmni=4096

#the total amount of memory pages that can be used system wide,in pages

shmall=\$(( \$memtotal * 3 / 5 / \$pagesize ))

if [ \$shmall -lt 2097152 ]

then

shmall=2097152

fi

#the maximum shared memory segment allowed by the kernel,in bytes

shmmax=\$(( \$shmall * \$pagesize ))

setSysCtl “kernel.shmmax” “\$shmmax”

setSysCtl “kernel.shmall” “\$shmall”

setSysCtl “kernel.shmmni” “\$shmmni”

echo “Please input the processes count:”

read process

SEMMNI=142

SEMMSL=\$(( \$process + 10 ))

if [ \$SEMMSL -lt 250 ]

then

SEMMSL=250

fi

SEMMNS=\$(( \$SEMMNI * \$SEMMSL ))

SEMOPM=\$SEMMSL

setSysCtl “kernel.sem” “\$SEMMSL \$SEMMNS \$SEMOPM \$SEMMNI”

setSysCtl “fs.aio-max-nr” “1048576”

setSysCtl “fs.file-max” “6815744”

setSysCtl “net.core.wmem_max” “1048576”

setSysCtl “net.core.wmem_default” “262144”

setSysCtl “net.core.rmem_max” “2097152”

setSysCtl “net.core.rmem_default” “262144”

setSysCtl “net.ipv4.tcp_rmem” “4096 262144 4194304”

setSysCtl “net.ipv4.tcp_wmem” “4096 262144 262144”

setSysCtl “net.ipv4.tcp_keepalive_time” “30”

setSysCtl “net.ipv4.tcp_keepalive_intvl” “60”

setSysCtl “net.ipv4.tcp_keepalive_probes” “9”

setSysCtl “net.ipv4.tcp_retries2” “3”

setSysCtl “net.ipv4.tcp_syn_retries” “2”

setSysCtl “net.ipv4.ip_local_port_range” “9000 65500”

setSysCtl “net.ipv4.conf.default.rp_filter” “2”

setSysCtl “kernel.randomize_va_space” “0”

setSysCtl “kernel.exec-shield” “0”

setSysCtl “vm.min_free_kbytes” “524288”

setSysCtl “fs.suid_dumpable” “1”

setSysCtl “kernel.core_uses_pid” “1”

setSysCtl “net.ipv4.icmp_echo_ignore_broadcasts” “0”

setSysCtl “vm.swappiness” “0”

setSysCtl “vm.dirty_background_ratio” “3”

setSysCtl “vm.dirty_ratio” “15”

setSysCtl “vm.dirty_expire_centisecs” “500”

setSysCtl “vm.dirty_writeback_centisecs” “100”

setSysCtl “vm.hugetlb_shm_group” “1000”

EOF

配置Core File Creation

修改/etc/profile文件添加如下內容

cat > > /etc/profile \< \< EOF

if [ \$USER = “oracle” ]; then

ulimit -S -c unlimited > /dev/null 2 > &1

fi

EOF

配置PAM

修改/etc/pam.d/login 文件中添加或編輯下面一行內容(如果不存在此行):

cat > > /etc/pam.d/login \< \< EOF

session required     pam_limits.so

EOF

如果是64爲系統,則

cat > > /etc/pam.d/login \< \< EOF

session required /lib64/security/pam_limits.so

EOF

修改SELINUX

sed -i ‘s#=enforcing#=disabled#g’ /etc/selinux/config

安裝軟件包

將操作系統的安裝鏡像文件上傳到服務器的/mnt目錄下,修改鏡像文件名稱爲linux.iso。在/mnt目錄下創建文件夾linux,並掛載linux.iso至linux目錄

mv *.iso linux.iso

mkdir /mnt/linux

mount -t iso9660 /mnt/linux.iso /mnt/linux -o loop

修改yum配置文件,進入如下目錄/etc/yum.repos.d,在該目錄創建文件夾bak,將所有的.repo文件移動到bak文件夾下。

cd /etc/yum.repos.d

mkdir bak

mv *.repo ./bak/

創建local.repo文件。

cd /etc/yum.repos.d

touch local.repo

cat > > /etc/yum.repos.d/local.repo \< \< EOF

[local]

name=local

baseurl=file:///mnt/linux

enable=1

gpgcheck=0

EOF

使用如下命令安裝所需的軟件包,glibc必須要2.5-24版本或以上

yum install autoconf -y

yum install binutils.x86_64 -y

yum install compat-db.x86_64 -y

yum install compat-gcc-34-c++ -y

yum install compat-gcc-34.x86_64 -y

yum install compat-libstdc++-296.i386 -y

yum install compat-libstdc++-33.i386 -y

yum install compat-libstdc++-33.x86_64 -y

yum install elfutils-libelf-devel.x86_64 -y

yum install elfutils-libelf.x86_64 -y

yum install gcc-c++.x86_64 -y

yum install gcc.x86_64 -y

yum install gdb -y

yum install gdbm -y

yum install glibc-common.x86_64 -y

yum install glibc-devel.i386 -y

yum install glibc-devel.x86_64 -y

yum install glibc-headers.x86_64 -y

yum install glibc.x86_64 -y

yum install glibc.i686 -y

yum install libaio-devel.x86_64 -y

yum install libaio.x86_64 -y

yum install libaio.i386 -y

yum install libgcc.x86_64 -y

yum install libgcc.i386 -y

yum install libgomp.x86_64 -y

yum install libstdc++.x86_64 -y

yum install libstdc++-devel.x86_64 -y

yum install libXp.x86_64 -y

yum install libXp.i386 -y

yum install libXtst.i386 -y

yum install make -y

yum install libgnome.x86_64 -y

yum install libgnomeui.x86_64 -y

yum install openmotif -y

yum install openssl.i686 -y

yum install openssh-clients -y

yum install openssh -y

yum install pdksh -y

yum install screen -y

yum install setarch -y

yum install sysstat.x86_64 -y

yum install unixODBC -y

yum install unixODBC-devel -y

yum install unixODBC.i386 -y

yum install unixODBC-devel.i386 -y

yum install unzip -y

yum install util-linux.x86_64 -y

yum install vim-enhanced -y

yum install xdpyinfo -y

yum install xorg-x11-server-Xorg -y

yum install xorg-x11-xinit -y

以下爲圖形界面,視情況進行安裝

yum install vnc -y

yum install vnc-server -y

yum groupinstall “X Window System” -y

yum groupinstall “GNOME Desktop Environment” -y

關閉相關服務

service iptables stop

service ip6tables stop

service NetworkManager stop

service atd stop

service lvm2-monitor stop

service cups stop

service mdmonitor stop

service autofs stop

service cpuspeed stop

service kdump stop

service nfs stop

service nfslock stop

service netfs stop

service bluetooth stop

service iscsi stop

service iscsid stop

service libvirt-guests stop

service libvirtd stop

service rpcbind stop

service acpid stop

chkconfig anacron off

chkconfig apmd off

chkconfig atd off

chkconfig autofs off

chkconfig bluetooth off

chkconfig cpuspeed off

chkconfig cups-config-daemon off

chkconfig cups off

chkconfig gpm off

chkconfig haldaemon off

chkconfig iiim off

chkconfig ip6tables off

chkconfig iptables off

chkconfig iscsi off

chkconfig iscsid off

chkconfig isdn off

chkconfig kdump off

chkconfig libvirt-guests off

chkconfig libvirtd off

chkconfig lvm2-monitor off

chkconfig mdmonitor off

chkconfig netfs off

chkconfig NetworkManager off

chkconfig nfs off

chkconfig nfslock off

chkconfig pcmcia off

chkconfig portmap off

chkconfig readahead off

chkconfig readahead_early off

chkconfig rhnsd off

chkconfig rpcbind off

chkconfig rpcgssd off

chkconfig rpcidmapd off

chkconfig smartd off

chkconfig avahi-daemon off

修改運行級別

sed -i ‘s#id:5:initdefault#id:3:initdefault#g’ /etc/inittab

HangCheck模塊

Oracle9202以前,都是使用watchdog來檢查系統是否掛起。從9202以後,oracle使用hangcheck-timer模塊。hangcheck-timer模塊被加載到內核中,能夠定時檢查系統是否掛起。

使用如下命令檢查該模塊是否存在:

find /lib/modules -name “hangcheck-timer.ko”

使用相應的參數加載該模塊:

/sbin/insmod hangcheck-timer hangcheck_tick=1 hangcheck_margin=10
hangcheck_reboot=1

兩個參數的含義:

hangcheck_tick:該參數定義了模塊啓動的間隔時段。其默認值爲60秒。Oracle建議將其設置爲1秒。

hangcheck_margin:該參數定義了多少時間以後系統沒響應就認爲是掛起。以秒爲單位。其默認值爲180秒。Oracle建議將其設置爲10秒。

hangcheck_reboot:該參數定義hangcheck模塊是否會重啓操作系統,建議設置爲1,即可以重啓操作系統。

檢查該模塊是否被成功加載:

grep Hangcheck /var/log/messages

爲了在linux重啓以後,自動加載該模塊,可以將加載模塊的命令添加到/etc/modules.conf中

cat > > /etc/rc.local \< \< EOF

/sbin/modprobe hangcheck-timer hangcheck_tick=1 hangcheck_margin=10
hangcheck_reboot=1

EOF

配置用戶shell limits

cat > > /etc/security/limits.conf \< \< EOF

oracle soft nproc 16384

oracle hard nproc 16384

oracle soft nofile 65536

oracle hard nofile 65536

EOF

對於 Bourne、Bash 或 Korn shell,將以下行添加到 /etc/profile 文件:

cat > > /etc/profile \< \< EOF

if [ \$USER = “oracle” ]; then

    if [ \$SHELL = “/bin/ksh” ]; then

        ulimit -p 16384

        ulimit -n 65536

    else

        ulimit -u 16384 -n 65536

    fi

    umask 022

fi

EOF

對於 C shell(csh 或 tcsh),將以下行添加到 /etc/csh.login 文件:

if($USER==”oracle”) then

limit maxproc 16384

limit descriptors 65536

endif

配置Oracle Profile

cat > /home/oracle/.bash_profile \< \< EOF

# .bash_profile

# Get the aliases and functions

if [ -f \~/.bashrc ]; then

        . \~/.bashrc

fi

alias ls=”ls -FA”

ORACLE_SID=ORCL1; export ORACLE_SID

ORACLE_UNQNAME=ORCL; export ORACLE_UNQNAME

ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE

ORACLE_HOME=\$ORACLE_BASE/product/10.2.0/db_1; export ORACLE_HOME

# do not use ORA_CRS_HOME,some error will happed!!!

CRS_HOME=\$ORACLE_BASE/product/10.2.0/crs_1; export CRS_HOME

ORACLE_PATH=/u01/app/common/oracle/sql; export ORACLE_PATH

ORACLE_TERM=xterm; export ORACLE_TERM

NLS_DATE_FORMAT=”YYYY-MM-DD HH24:MI:SS”; export NLS_DATE_FORMAT

TNS_ADMIN=\$ORACLE_HOME/network/admin; export TNS_ADMIN

PATH=\$ORACLE_HOME/bin:\$CRS_HOME/bin:\${PATH}

PATH=\${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin

PATH=\${PATH}:/u01/app/common/oracle/bin

export PATH

export TEMP=/tmp

export TMPDIR=/tmp

umask 022

# User specific environment and startup programs

EOF

在Oracle RAC 軟件的安裝過程中,OUI 使用 SSH
運行命令並將文件複製到其他節點。在安裝過程中,系統中的隱藏文件(例如 .bashrc 或
.cshrc)如果包含 stty 命令,則會導致生成文件錯誤和其他安裝錯誤。

要避免該問題,必須在每個 Oracle 安裝所有者的用戶主目錄中修改這些文件以取消所有
STDERR 輸出,如下所示:

cat > > /home/oracle/.bash_profile \< \< EOF

if [ -t 0 ]; then

 stty intr \^C

fi

EOF

FOR C SHELL

test -t 0
if ($status == 0) then
stty intr \^C
endif

配置JUMBO FRAMES

如果主機和交換機支持jumbo frames,我們建議開啓jumbo
frames,這樣可以改善網絡負載並降低cpu利用率。如果需要開啓網卡的jumbo
frame,修改網卡的配置文件如/etc/sysconfig/network-scripts/ifcfg-eth0,增添如下配置參數

MTU=9000

配置ETH1000網卡

在2.6內核下,REDHAT4\REHDAT5系統中,Eth1000網卡默認沒有開啓FLOW
CONTROL。當RAC環境下的網絡負載較高時,容易造成INTERCONNECTS丟包。開啓FLOW
CONTROL的方法如下。

修改/etc/modprobe.conf添加如下內容:

options e1000 FlowControl=1,1

配置網絡IP

配置IP地址,修改每個節點上的/etc/hosts文件,確保 /etc/hosts
文件的環回地址中不包含節點名。如果 RAC 節點名出現在環回地址中,您在 RAC
安裝期間將收到以下錯誤消息:

ORA-00603: ORACLE server session terminated by fatal error

或者

ORA-29702: error occurred in Cluster Group Service operation

127.0.0.1 localhost.localdomain localhost

10.255.254.121 db01

10.255.254.122 db02

10.255.254.123 db01-vip

10.255.254.124 db02-vip

192.168.1.121 db01-pri

192.168.1.122 db02-pri

修改主機名:

hostname db01

sed -i ‘s#HOSTNAME=.*#HOSTNAME=db01#g’ /etc/sysconfig/network

echo “NOZEROCONF=YES” > > /etc/sysconfig/network

hostname db02

sed -i ‘s#HOSTNAME=.*#HOSTNAME=db03#g’ /etc/sysconfig/network

echo “NOZEROCONF=YES” > > /etc/sysconfig/network

配置SSH對等性

使用如下語句配置SSH對等性,注意要逐行拷貝,不要一次性拷貝。配置完成後要進行測試。

su - oracle

/usr/bin/ssh-keygen -t dsa

cat \~/.ssh/id_dsa.pub > \~/.ssh/authorized_keys

ssh oracle\@db01 cat \~/.ssh/id_dsa.pub > > \~/.ssh/authorized_keys

chmod 644 \~/.ssh/authorized_keys

/usr/bin/ssh-keygen -t dsa

cat \~/.ssh/id_dsa.pub > \~/.ssh/authorized_keys

ssh oracle\@db02 cat \~/.ssh/id_dsa.pub > > \~/.ssh/authorized_keys

chmod 644 \~/.ssh/authorized_keys

要確保未啓用 X11 forwarding, 如果看到類似這樣的消息:“Warning:No xauth
data; using fake authentication data for X11
forwarding.”,這意味着您的授權密鑰文件配置正確,但是,您的SSH 配置啓用了 X11
forwarding。

確保 ForwardX11 屬性設爲 no。例如,將以下內容插入 \~/.ssh/config 文件:

Host *

ForwardX11 no

如果我們在配置SSH對等性的過程中輸入了密碼,則可以通過如下方式配置無密碼登陸。

# exec /usr/bin/ssh-agent $SHELL
# ssh-add
Enter passphrase for /home/crs/.ssh/id_rsa
Identity added: /home/crs/.s

sh/id_rsa (/home/crs/.ssh/id_rsa)

配置DNS

當需要使用DNS 服務器時,在/etc/resolv.conf添加DNS服務器的信息。

[root\@localhost \~]# cat /etc/resolv.conf

nameserver 114.114.114.114

options timeout:1

options attempts:2

配置NTP服務

安裝ntp軟件包,並配置服務自啓動。

yum install ntp

chkconfig ntpd on

編輯首節點的ntp.conf文件,使其從外部獲取系統時間.

vi /etc/ntp.conf

#New ntp server added by Robinson

server 1.cn.pool.ntp.org prefer # 添加首選的時鐘服務器

#只允許192.168.7.*網段的客戶機進行時間同步

restrict 192.168.7.0 mask 255.255.255.255 nomodify notrap

broadcastdelay 0.008

編輯其他節點的ntp.conf文件,使其從首節點獲取系統時間.

vi /etc/ntp.conf

#New ntp server added by Robinson

server 10.201.5.201 prefer

broadcastdelay 0.008

編輯節點的/etc/sysconfig/ntpd文件,配置參數如下,在其中設置 -x
標誌,這樣可避免向後調整時間。

#The following item added by Robinson

#Set to ‘yes’ to sycn hw clock after successful ntpdate

SYNC_HWCLOCK=yes #此選項用於自動校準系統時鐘與硬件時鐘

OPTIONS=”-x -u ntp:ntp -p /var/run/ntpd.pid”

節點間必須具有至少一個相同ntp ip,否則PRVF-5416,但是我們可以忽略該錯誤。

在首節點配置rc.local腳本,使其在啓動時使用ntpdate更新時間,通過ntpd獲取時間信息,有時會有延時。

創建軟件目錄

Grid的home目錄不能在base目錄下,oracle的home必須在base目錄下,否則會報INS-32018錯誤。

mkdir -p /u01/backup

mkdir -p /u01/software

mkdir -p /u01/app/oraInventory

mkdir -p /u01/app/oracle

mkdir -p /u01/app/oracle/admin

mkdir -p /u01/app/oracle/product/10.2.0/db_1

mkdir -p /u01/app/oracle/product/10.2.0/crs_1

chown -R oracle:oinstall /u01

chown -R oracle:oinstall /u01/app/oracle

chmod -R 755 /u01/

chmod -R 775 /u01/software/

虛擬化環下中斷設置

默認情況下,在rhel4和rhel5中,時鐘中斷頻率爲1000HZ,在虛擬化環境下,該頻率可能過高,因此,我們建議將其調低,設置方法如下:

在32位系統下,修改grub.conf,添加如下內核設置

divider=10 clocksource=acpi_ppm iommu=soft

在64位系統下,修改grub.conf,添加如下內核設置

divider=10 notsc iommu=soft

設置完成後,時間中斷頻率爲1000/10,即100Hz。

配置磁盤調度算法

Deadline磁盤調度算法比較適合於ORACLE\RAC
MYSQL等數據庫類應用。配置Deadline爲linux默認磁盤調度算法,需要修改grud.conf文件,添加內核參數如下:

title Red Hat Enterprise Linux Server (2.6.18-8.el5)

root (hd0,0)

kernel /vmlinuz-2.6.18-8.el5 ro root=/dev/sda2 elevator=deadline

initrd /initrd-2.6.18-8.el5.img

在虛擬化環境下,配置noop爲linux默認磁盤調度算法,需要修改grud.conf文件,添加內核參數如下:

title Red Hat Enterprise Linux Server (2.6.18-8.el5)

root (hd0,0)

kernel /vmlinuz-2.6.18-8.el5 ro root=/dev/sda2 elevator=noop

initrd /initrd-2.6.18-8.el5.img

配置ISCSI存儲

在集羣中的各個節點上配置 iSCSI 啓動器。而創建分區只應在 RAC
集羣的一個節點上執行。 Linux 包括 Open-iSCSI iSCSI 軟件啓動器,該軟件啓動器位於
iscsi-initiator-utils RPM 中。

安裝 iSCSI(啓動器)服務

查看iscsi-initiator-utils是否安裝。

rpm -qa –queryformat “%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n”| grep
iscsi-initiator-utils

如果沒裝安裝,則在系統盤中,找到軟件包並安裝。

rpm -Uvh iscsi-initiator-utils-*

配置 iSCSI(啓動器)服務

驗證 iscsi-initiator-utils 程序包已經安裝到Oracle RAC 節點之後,啓動 iscsid
服務,並使其在系統引導時自動啓動並自動登錄到所需的 iSCSI 目標。

service iscsid start

chkconfig iscsid on

chkconfig iscsi on

使用 iscsiadm 命令行接口發現網絡存儲服務器上的所有可用目標。這應該在所有Oracle
RAC 節點上執行:

[root\@danode1 \~]#iscsiadm -m discovery -t sendtargets -p 192.168.1.199

172.16.1.241:3260,0 iqn.2000-03.com.h3c-.YZBackup-1-SCU1.darac-crs

172.16.1.241:3260,0 iqn.2000-03.com.h3c-.YZBackup-1-SCU1.darac-data

172.16.1.241:3260,0 iqn.2000-03.com.h3c-.YZBackup-1-SCU1.darac-fra

手動登錄到 iSCSI 目標,這需要在所有Oracle RAC 節點上運行。

[root\@danode1 \~]# iscsiadm -m node -T
iqn.2000-03.com.h3c-.YZBackup-1-SCU1.darac-crs -p 172.16.1.241 -l

[root\@danode1 \~]# iscsiadm -m node -T
iqn.2000-03.com.h3c-.YZBackup-1-SCU1.darac-data -p 172.16.1.241 -l

[root\@danode1 \~]# iscsiadm -m node -T
iqn.2000-03.com.h3c-.YZBackup-1-SCU1.darac-fra -p 172.16.1.241 -l

配置自動登錄,在所有 Oracle RAC 節點上執行以下命令:

[root\@danode1 \~]# iscsiadm -m node -T
iqn.2000-03.com.h3c-.YZBackup-1-SCU1.darac-crs -p 172.16.1.241 –op update
-n node.startup -v automatic

[root\@danode1 \~]# iscsiadm -m node -T
iqn.2000-03.com.h3c-.YZBackup-1-SCU1.darac-data -p 172.16.1.241 –op update
-n node.startup -v automatic

[root\@danode1 \~]# iscsiadm -m node -T
iqn.2000-03.com.h3c-.YZBackup-1-SCU1.darac-fra -p 172.16.1.241 –op update
-n node.startup -v automatic

如果在ISCSI
SERVER上啓用Failover的話,注意要在rac節點中修改幾個參數。設置超時時間,編輯/etc/iscsi.conf文件,在添加DiscoveryAddress之前添加如下2行:

IdleTimeout=20

ConnFailTimeout=300

DiscoveryAddress=172.16.1.241

配置scsi_id.config

查看/etc/scsi_id.config文件,確保文件中至少包含如下內容,以便scsi_id命令按照預期結果執行。

[root\@localhost \~]# grep -v \^# /etc/scsi_id.config

vendor=”ATA”,options=-p 0x80

options= -g

配置MULTIPATH多路徑

通過yum功能安裝一下軟件包:

yum -y install device-mapper device-mapper-multipath

通過命令:lsmod | grep dm_multipath 檢查是否正常安裝成功。

使用如下命令加載驅動模塊

modprobe dm-multipath

modprobe dm-round-robin

multipath –v2

通過vi命令創建一個Multipath的配置文件路徑是/etc/multipath.conf
,在配置文件中添加multipath正常工作的最簡配置如下(RHEL5下,通過multipath.conf可以直接配置多路徑權限需要重啓操作系統):

devices {

device {

vendor “(LSI|NETAPP)”

product “INF-01-00”

path_grouping_policy group_by_prio

detect_prio yes

prio rdac

path_checker rdac

hardware_handler “1 rdac”

failback manual

features “2 pg_init_retries 50”

no_path_retry fail

retain_attached_hw_handler yes

}

}

blacklist {

devnode “\^(ram|raw|loop|fd|md|dm-|sr|sr|scd|st)[0-9]*”

devnode “\^hd[a-z]”

devnode “\^asm/*”

devnode “ofsctl”

}

multipaths {

multipath {

wwid 360080e500032a3680000051e58b64b6a

alias RACOCR1

gid 1000

uid 0

mode 644

}

}

磁盤分區

/sbin/parted /dev/mapper/RACDATA1 mklabel gtk unit s mkpart primary “128 -1”

裸設備配置

在RHEL5U4之前,linux不建議使用裸設備,因此需要我們手工在rc.local中配置裸設備和其權限。在RHEL5U4之後,LINUX可以支持使用RAWSERVICE服務配置裸設備。可以使用如下腳本配置裸設備:

cat > > /etc/sysconfig/rawdevices \< \< EOF

/dev/raw/raw1 /dev/mapper/RACVOTE1p1

/dev/raw/raw2 /dev/mapper/RACVOTE2p1

/dev/raw/raw3 /dev/mapper/RACVOTE3p1

/dev/raw/raw4 /dev/mapper/RACOCR1p1

/dev/raw/raw5 /dev/mapper/RACOCR2p1

EOF

chkconfig rawdevices on

service rawdevices restart

配置UDEV

不同版本的操作系統,UDEV的配置方式會略有差異,本文建議使用RHEL5系列的操作系統,如果使用RHEL4系列操作系統,可以參照ORACLE
9I中關於udev的配置。

建議使用udev+asm來配置oracle rac的存儲,首先確定安裝了udev軟件包:

rpm -qa | grep udev

udev-095-14.32.el5

使用scsi_id命令查看磁盤屬性

[root\@db201 \~]# scsi_id -g -u /dev/sdb

360080e500032a3400000051b58b74174

DM設備

如果已經使用了DM多路徑軟件,並且配置了alias,則不需要再使用udev配置磁盤永久名稱,。

可以通過如下UDEV規則設置磁盤所屬組和權限。設置完成後重啓Multipathd服務,即可。

cat > /etc/udev/rules.d/30-oradmowner.rules \< \< EOF

SUBSYSTEM!=”block”, GOTO=”quickexit”

KERNEL!=”dm-*”, GOTO=”quickexit”

PROGRAM==”/sbin/dmsetup info -c –noheadings -o name -m %m -j %M”

RESULT==”*RACOCR*”, OWNER=”root”, GROUP=”oinstall”, MODE=”0640”

RESULT==”*RACVOTE*”, OWNER=”oracle”, GROUP=”oinstall”, MODE=”0660”

RESULT==”*RACDATA*”, OWNER=”oracle”, GROUP=”oinstall”, MODE=”0660”

RESULT==”*RACFRA*”, OWNER=”oracle”, GROUP=”oinstall”, MODE=”0660”

LABEL=”quickexit”

EOF

裸設備

可以使用如下方式,設置裸設備的權限(RHEL5不再支持單獨的權限配置文件/etc/udev/permissions.d/50-udev.permissions)。

cat > /etc/udev/rules.d/99-orarawowner.rules \< \< EOF

KERNEL==”raw1”, OWNER=”oracle” GROUP=”oinstall”, MODE=”0660”

KERNEL==”raw2”, OWNER=”oracle” GROUP=”oinstall”, MODE=”0660”

KERNEL==”raw3”, OWNER=”oracle” GROUP=”oinstall”, MODE=”0660”

KERNEL==”raw4”, OWNER=”root” GROUP=”oinstall”, MODE=”0640”

KERNEL==”raw5”, OWNER=”root” GROUP=”oinstall”, MODE=”0640”

EOF

其他設備

在其他情況下(如單路徑設備),如果需要udev配置磁盤永久名稱,可以參考如下方式**(注意:記住將OCR的權限配置爲root:oinstall
640,其他磁盤爲oracle:oinstall 660)**:

cat > /etc/udev/rules.d/60-oradisk.rules \< \< EOF

ACTION==”add”, KERNEL==”sd*1”, BUS==”scsi”, PROGRAM==”/sbin/scsi_id -g -s
/block/$parent”, RESULT==”36589cfc00000044e4c79d3e197d154a4”
SYMLINK+=”ORADISK/RACVOTE1”, OWNER=”oracle”, GROUP=”dba”, MODE=”0660”

EOF

安裝並配置ASMLIB(不建議)

如果通過前面的設置已經可以固定磁盤名稱和磁盤權限,則可以不需要配置ASMLIB。

安裝並配置ASMLib 2.0,根據自己的內核版本選擇相應的軟件包:

oracleasm–194.el5-2.0.5-1.el5.x86_64.rpm

oracleasmlib–1.el5.x86_64.rpm

oracleasm-support-2.1.3-1.el5.x86_64.rpm

配置ASM:

現在,您已安裝了用於 Linux 的 ASMLib 程序包,接下來您需要配置並加載 ASM
內核模塊。需要在兩個 Oracle RAC 節點上作爲 root 用戶帳戶執行該任務。

注:oracleasm 命令的默認路徑爲 /usr/sbin。以前版本中使用的 /etc/init.d
路徑並未被棄用,但該路徑下的 oracleasm 二進制文件現在一般用於內部命令

[root\@server01 sbin]# oracleasm configure –i

該腳本完成以下任務:

創建 /etc/sysconfig/oracleasm 配置文件

創建 /dev/oracleasm 掛載點

掛載 ASMLib 驅動程序文件系統

注:ASMLib
驅動程序文件系統並非常規的文件系統。它只用於自動存儲管理庫與自動存儲管理驅動程序的通訊。

輸入以下命令以加載 oracleasm 內核模塊:

[root\@server01 sbin]# oracleasm init

Creating /dev/oracleasm mount point: /dev/oracleasm

Loading module “oracleasm”: oracleasm

Mounting ASMlib driver filesystem: /dev/oracleasm

創建 ASM 磁盤只需在 RAC 集羣中的一個節點上以 root
用戶帳戶執行。該操作完成後,應在兩個 Oracle RAC 節點上運行 oracleasm listdisks
命令以驗證是否創建了所有 ASM 磁盤以及它們是否可用。

oracleasm createdisk CRSV1
/dev/disk/by-id/scsi0b800050cfa2000008af4d38e5e8-part1

注:這裏是通過磁盤陣列的ID進行連接,這是因爲這個ID是唯一不變的,如果通過硬盤名稱如sdc1、sdd1時,如果系統因增加或減少硬件時,名稱會發生變化。

在其他節點上掃描磁盤:

oracleasm scandisks

oracleasm listdisks

如果使用了MULTIPATHD多路徑,則應該修改/etc/sysconfig/oracleasm如下(否則安裝過程執行root.sh會報錯):

Oracleasm_scanorder=”dm”

Oracleasm_scanexclude=”sd”

X Windows配置(不建議)

Oracle Universal Installer 是一個 GUI 接口,要求使用 X
服務器。在啓用了用戶等效性的終端會話中(您將從其中執行 Oracle
安裝的節點),需要將環境變量 DISPLAY 設置爲有效的 X 窗口顯示:

[oracle\@racnode1 \~]$ DISPLAY= \< Any X-Windows Host > :0

[oracle\@racnode1 \~]$ export DISPLAY

將 DISPLAY 變量設置爲有效的 X 窗口顯示後,要確保未啓用 X11 forwarding
如果看到類似這樣的消息:“Warning:No xauth data; using fake authentication data
for X11 forwarding.”,這意味着您的授權密鑰文件配置正確,但是,您的 SSH
配置啓用了 X11 forwarding。例如:

使用文本編輯器,編輯或創建 \~/.ssh/config 文件

確保 ForwardX11 屬性設爲 no。例如,將以下內容插入 \~/.ssh/config 文件:

Host *

ForwardX11 no

因爲通過silent方式安裝,速度較快,且不易出錯,因此建議不要使用圖形化安裝。

修改/etc/redhat-release

cp /etc/redhat-release /etc/redhat-release.bak

echo “Red Hat Enterprise Linux Server release 4” > /etc/redhat-release

數據庫軟件包

需要下載軟件列表
序號 名稱 MD5校驗碼
1 10201_clusterware_linux_x86_64.cpio.gz bb6ba01c9f1f50612ba0fee0d245237c
2 10201_database_linux_x86_64.cpio.gz 8f092c0b21081444fd1938c51664b1f0
3 p8202632_10205_Linux-x86-64.zip dda60b6319d2242a90ed4a325dbc2d33
4 p6880880_102000_Linux-x86-64.zip ae36d7e1cf4205620ed5626e43af377a
5 p20299014_10205_Linux-x86-64.zip 7f365b92baaf4e6851062b1164473d33
6 cvupack_Linux_x86_64.zip 8231fe7cefbda60b0b09245fe1df8db3
7 p4679769_10201_Linux-x86-64.zip 7e944daf8fae68e1052a47534fbe9919

在進行軟件安裝之前,通過MD5校驗碼驗證軟件文件是否正確

在確認軟件包正確無誤後,使用如下命令解壓縮軟件包。建議將軟件包下載到/u01/software目錄下,並直接解壓到該文件夾下

mkdir -p /u01/software

cd /u01/software/

zcat 10201_clusterware_linux_x86_64.cpio.gz | cpio -idmv

zcat 10201_database_linux_x86_64.cpio.gz | cpio -idmv

unzip p8202632_10205_Linux-x86-64.zip

unzip p6880880_102000_Linux-x86-64.zip

unzip p20299014_10205_Linux-x86-64.zip

unzip cvupack_Linux_x86_64.zip -d ./cvupack

unzip p4679769_10201_Linux-x86-64.zip

chmod -R 755 p8202632_10205_Linux-x86-64

chmod -R 755 database

chmod -R 755 clusterware

軟件安裝

Cluster安裝檢測

安裝配置CVUQDISK

在Oracle RAC
節點上安裝操作系統程序包CVUQDISK。如果沒有CVUQDISK,集羣驗證實用程序就無法發現共享磁盤,當運行(手動運行或在
Oracle Cluster Infrastructure
安裝結束時自動運行)集羣驗證實用程序時,您會收到這樣的錯誤消息:“Package
cvuqdisk not installed”。

CVUQDISK RPM 包含在 Oracle CRS 安裝介質上的 rpm
目錄中。以root用戶在所有節點上執行如下命令安裝CVUQDISK。

cd /u01/software/clusterware/rpm

CVUQDISK_GRP=oinstall; export CVUQDISK_GRP

rpm -ivh cvuqdisk-1.0.1-1.rpm

檢查先決條件

以ORACLE用戶,使用 CVU 驗證硬件和操作系統設置:

export LANG=en_US

cd /u01/software/clusterware

./cluvfy/runcluvfy.sh stage -post hwos -n db01,db02 –verbose

因爲BUG4437727(在10.2.0.3中解決),我們建議使用最新版的cvupack,來執行驗證工作。因此在進行安裝驗證之前,我們建議將PUBLIC
IP進行修改,以使驗證過程可以順利進行。

export LANG=en_US

cd /u01/software/cvupack/bin

./cluvfy stage -pre crsinst -n db01,db02 -r 10gR2 –verbose

查看 CVU
報告
。CVU
執行的所有其他檢查的結果報告應該爲“passed”,之後才能繼續進行 Oracle Cluster
的安裝。

Cluster安裝

首先配置cluster.rsp文件,文件內容如下,將該文件保存爲/tmp/cluster.rsp

cat > /tmp/cluster.rsp \< \< EOF

RESPONSEFILE_VERSION=2.2.1.0.0

UNIX_GROUP_NAME=”oinstall”

FROM_LOCATION=”../stage/products.xml”

ORACLE_HOME=”/u01/app/oracle/product/10.2.0/crs_1”

ORACLE_HOME_NAME=”OraClusterware10ghome1”

TOPLEVEL_COMPONENT={“oracle.crs”,”10.2.0.1.0”}

SHOW_SPLASH_SCREEN=false

SHOW_WELCOME_PAGE=false

SHOW_NODE_SELECTION_PAGE=false

SHOW_SUMMARY_PAGE=false

SHOW_INSTALL_PROGRESS_PAGE=true

SHOW_CONFIG_TOOL_PAGE=true

SHOW_XML_PREREQ_PAGE=false

SHOW_ROOTSH_CONFIRMATION=true

SHOW_END_SESSION_PAGE=true

SHOW_EXIT_CONFIRMATION=true

NEXT_SESSION=false

NEXT_SESSION_ON_FAIL=false

SHOW_DEINSTALL_CONFIRMATION=false

SHOW_DEINSTALL_PROGRESS=false

RESTART_SYSTEM=false

RESTART_REMOTE_SYSTEM=false

SHOW_END_OF_INSTALL_MSGS=true

COMPONENT_LANGUAGES={“en”,”zh_CN”}

s_clustername=”crs10g”

sl_tableList={“db01:db01-pri:db01-vip:N:Y”,”db02:db02-pri:db02-vip:N:Y”}

ret_PrivIntrList={“eth0:10.255.254.0:1”,”eth1:192.168.1.0:2”}

n_storageTypeOCR=1

s_ocrpartitionlocation=”/dev/raw/raw4”

s_ocrMirrorLocation=”/dev/raw/raw5”

n_storageTypeVDSK=1

s_votingdisklocation=”/dev/raw/raw1”

s_OcrVdskMirror1RetVal=”/dev/raw/raw2”

s_VdskMirror2RetVal=”/dev/raw/raw3”

EOF

調用如下命令進行安裝CLUSTER

export LANG=en_US

cd /u01/software/clusterware

./runInstaller -silent -responseFile /tmp/cluster.rsp -ignoreSysPrereqs

安裝的最後階段,根據提示應該運行相應腳本,在運行這些腳本前,請按照如下步驟修複相關bug。

如果安裝環境是10.2.0.4之前和RHEL5。在所有節點修改VIPCA和SRVCTL命令,

sed -i “s#LD_ASSUME_KERNEL#XX_ASSUME_KERNEL#g”
/u01/app/oracle/product/10.2.0/crs_1/bin/vipca

sed -i “s#LD_ASSUME_KERNEL#XX_ASSUME_KERNEL#g”
/u01/app/oracle/product/10.2.0/crs_1/bin/srvctl

因爲BUG 4679769,在執行root.sh腳本之前,請打上補丁p4679769_10201_Linux-x86-64。

cd /u01/software

unzip /u01/software/p4679769_10201_Linux-x86-64.zip

cd /u01/app/oracle/product/10.2.0/crs_1/bin

cp clsfmt.bin clsfmt.bin.bak.`date +%F%T`

rm -rf ./clsfmt.bin

cp /u01/software/4679769/clsfmt.bin ./clsfmt.bin

chmod 755 ./clsfmt.bin

chown oracle:oinstall ./clsfmt.bin

安裝系統提示,在各個節點使用root運行如下腳本:

/u01/app/oracle/product/10.2.0/crs_1/root.sh

當在最後一個節點執行root.sh腳本時,如果發現如下錯誤:

Error 0(Native: listNetInterfaces:[3]) 

[Error 0(Native: listNetInterfaces:[3])]

根據文檔 414163.1,首先以ORACLE運行腳本

/u01/app/oracle/product/10.2.0/crs_1/cfgtoollogs/configToolAllCommands

然後以root用戶執行如下內容

cd /u01/app/oracle/product/10.2.0/crs_1/bin

./vipca -silent -nodelist db01,db02 -nodevips db01/db01-vip,db02/db02-vip

最後再次執行如下腳本

/u01/app/oracle/product/10.2.0/crs_1/cfgtoollogs/configToolAllCommands

驗證集羣安裝

crs_stat –t

Database安裝檢測

安裝前驗證:

export LANG=en_US

cd /u01/software/cvupack/bin

./cluvfy stage -pre dbinst -fixup -n db01,db02 -osdba dba –verbose

安裝DATABASE SOFTWARE

首先配置dbinstall.rsp文件,文件內容如下,將該文件保存爲/u01/software/database/dbsoft.rsp

cat > /u01/software/database/dbsoft.rsp \< \< EOF

RESPONSEFILE_VERSION=2.2.1.0.0

UNIX_GROUP_NAME=oinstall

FROM_LOCATION=”../stage/products.xml”

ORACLE_HOME=”/u01/app/oracle/product/10.2.0/db_1”

ORACLE_HOME_NAME=”OraDbHome1”

TOPLEVEL_COMPONENT={“oracle.server”,”10.2.0.1.0”}

SHOW_SPLASH_SCREEN=false

SHOW_WELCOME_PAGE=false

SHOW_NODE_SELECTION_PAGE=false

SHOW_SUMMARY_PAGE=false

SHOW_CUSTOM_TREE_PAGE=false

SHOW_INSTALL_PROGRESS_PAGE=true

SHOW_CONFIG_TOOL_PAGE=true

SHOW_XML_PREREQ_PAGE=false

SHOW_ROOTSH_CONFIRMATION=true

SHOW_END_SESSION_PAGE=true

SHOW_EXIT_CONFIRMATION=true

NEXT_SESSION=false

NEXT_SESSION_ON_FAIL=false

SHOW_DEINSTALL_CONFIRMATION=false

SHOW_DEINSTALL_PROGRESS=false

RESTART_SYSTEM=false

RESTART_REMOTE_SYSTEM=false

SHOW_END_OF_INSTALL_MSGS=true

CLUSTER_NODES={“db01”,”db02”}

COMPONENT_LANGUAGES={“en”,”zh_CN”}

INSTALL_TYPE=”Custom”

oracle.server:DEPENDENCY_LIST={“oracle.rdbms:10.2.0.1.0”,”oracle.options:10.2.0.1.0”,”oracle.network:10.2.0.1.0”,”oracle.sysman.console.db:10.2.0.1.0”,”oracle.rdbms.oci:10.2.0.1.0”,”oracle.precomp:10.2.0.1.0”,”oracle.xdk:10.2.0.1.0”,”oracle.sqlplus.isqlplus:10.2.0.1.0”,”oracle.odbc:10.2.0.1.0”}

oracle.options:DEPENDENCY_LIST={“oracle.network.aso:10.2.0.1.0”,”oracle.rdbms.partitioning:10.2.0.1.0”,”oracle.sdo:10.2.0.1.0”,”oracle.oraolap:10.2.0.1.0”}

oracle.network:DEPENDENCY_LIST={“oracle.network.listener:10.2.0.1.0”}

s_nameForDBAGrp=dba

s_nameForOPERGrp=oper

varSelect=3

EOF

調用如下命令進行安裝DATABASE SOFTWARE

export LANG=en_US

cd /u01/software/database

./runInstaller -silent -responseFile /u01/software/database/dbsoft.rsp
-ignoreSysPrereqs

安裝完成後,安裝系統提示,在各個節點使用root運行如下腳本:

/u01/app/oracle/product/10.2.0/db_1/root.sh

如果安裝環境是10.2.0.4之前和RHEL5。在所有節點修改SRVCTL命令:

sed -i “s#LD_ASSUME_KERNEL#XX_ASSUME_KERNEL#g”
/u01/app/oracle/product/10.2.0/db_1/bin/srvctl

打補丁

解壓補丁包

oracle用戶分別在第一個節點運行如下內容:

cd /u01/software/

unzip /u01/software/p8202632_10205_Linux-x86-64.zip

PS補丁(CRS)

注意:下面的操作,僅僅需要在第一個節點執行。

首先生成響應文件,安裝補丁時需要。

cat > /tmp/patchcrs.rsp \< \< EOF

RESPONSEFILE_VERSION=2.2.1.0.0

UNIX_GROUP_NAME=oinstall

FROM_LOCATION=”../stage/products.xml”

ORACLE_HOME=”/u01/app/oracle/product/10.2.0/crs_1”

ORACLE_HOME_NAME=”OraClusterware10ghome1”

TOPLEVEL_COMPONENT={“oracle.patchset.db”,”10.2.0.5.0”}

SHOW_SPLASH_SCREEN=false

SHOW_WELCOME_PAGE=false

SHOW_COMPONENT_LOCATIONS_PAGE=false

SHOW_CUSTOM_TREE_PAGE=false

SHOW_SUMMARY_PAGE=true

SHOW_INSTALL_PROGRESS_PAGE=true

SHOW_REQUIRED_CONFIG_TOOL_PAGE=true

SHOW_OPTIONAL_CONFIG_TOOL_PAGE=true

SHOW_CONFIG_TOOL_PAGE=true

SHOW_XML_PREREQ_PAGE=false

SHOW_RELEASE_NOTES=false

SHOW_END_OF_INSTALL_MSGS=true

SHOW_ROOTSH_CONFIRMATION=true

SHOW_END_SESSION_PAGE=false

SHOW_EXIT_CONFIRMATION=true

NEXT_SESSION=false

NEXT_SESSION_ON_FAIL=false

SHOW_DEINSTALL_CONFIRMATION=false

SHOW_DEINSTALL_PROGRESS=false

ACCEPT_LICENSE_AGREEMENT=true

RESTART_SYSTEM=false

CLUSTER_NODES={“db01”,”db02”}

COMPONENT_LANGUAGES={“en”,”zh_CN”}

SECURITY_UPDATES_VIA_MYORACLESUPPORT=false

DECLINE_SECURITY_UPDATES=false

COLLECTOR_UPGRADE=false

COLLECTOR_IGNORE_CONFIGURATION=true

EOF

在所有節點,用root用戶關閉集羣服務

crsctl stop crs

以ORACLE用戶進行補丁升級

cd /u01/software/p8202632_10205_Linux-x86-64/Disk1/

export LANG=en_US

./runInstaller -silent -responseFile /tmp/patchcrs.rsp -ignoreSysPrereqs

在所有節點,用root執行如下腳本

/u01/app/oracle/product/10.2.0/crs_1/install/root102.sh

升級完成後建議重啓操作系統。

PS補丁(DB)

注意:下面的操作,僅僅需要在第一個節點執行。

首先生成響應文件,安裝補丁時需要。

cat > /tmp/patchdb.rsp \< \< EOF

RESPONSEFILE_VERSION=2.2.1.0.0

UNIX_GROUP_NAME=oinstall

FROM_LOCATION=”../stage/products.xml”

ORACLE_HOME=”/u01/app/oracle/product/10.2.0/db_1”

ORACLE_HOME_NAME=”OraDbHome1”

TOPLEVEL_COMPONENT={“oracle.patchset.db”,”10.2.0.5.0”}

SHOW_SPLASH_SCREEN=false

SHOW_WELCOME_PAGE=false

SHOW_COMPONENT_LOCATIONS_PAGE=false

SHOW_CUSTOM_TREE_PAGE=false

SHOW_SUMMARY_PAGE=true

SHOW_INSTALL_PROGRESS_PAGE=true

SHOW_REQUIRED_CONFIG_TOOL_PAGE=true

SHOW_OPTIONAL_CONFIG_TOOL_PAGE=true

SHOW_CONFIG_TOOL_PAGE=true

SHOW_XML_PREREQ_PAGE=false

SHOW_RELEASE_NOTES=false

SHOW_END_OF_INSTALL_MSGS=true

SHOW_ROOTSH_CONFIRMATION=true

SHOW_END_SESSION_PAGE=false

SHOW_EXIT_CONFIRMATION=true

NEXT_SESSION=false

NEXT_SESSION_ON_FAIL=false

SHOW_DEINSTALL_CONFIRMATION=false

SHOW_DEINSTALL_PROGRESS=false

ACCEPT_LICENSE_AGREEMENT=true

RESTART_SYSTEM=false

CLUSTER_NODES={“db01”,”db02”}

COMPONENT_LANGUAGES={“en”,”zh_CN”}

SECURITY_UPDATES_VIA_MYORACLESUPPORT=false

DECLINE_SECURITY_UPDATES=false

COLLECTOR_UPGRADE=false

COLLECTOR_IGNORE_CONFIGURATION=true

EOF

在所有節點,關閉相關服務

srvctl stop asm -n db01

srvctl stop asm -n db02

srvctl stop database -n db01

srvctl stop database -n db02

srvctl stop listener -n db01

srvctl stop listener -n db02

以ORACLE用戶進行補丁升級

cd /u01/software/p8202632_10205_Linux-x86-64/Disk1/

export LANG=en_US

./runInstaller -silent -responseFile /tmp/patchdb.rsp -ignoreSysPrereqs
–force

在所有節點,用root執行如下腳本,升級完成後建議重啓操作系統。

/u01/app/oracle/product/10.2.0/db_1/root.sh

更新patch工具

以ORACLE用戶解壓補丁更新工具到指定目錄

export LANG=en_US

cd /u01/software/

unzip -o p6880880_102000_Linux-x86-64.zip -d $ORACLE_HOME

PSU升級

查詢是否存在衝突補丁:

cd $ORACLE_HOME/OPatch

./opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir
/u01/software/20299014

RAC環境下,查詢是否可以滾動升級(結果:可以滾動升級)

cd $ORACLE_HOME/OPatch

./opatch query -all /u01/software/20299014 | grep rolling

關閉節點1的數據庫實例和asm實例

srvctl stop instance -d ORCL -i ORCL1

srvctl stop asm -n db01 -o asm1

srvctl stop listener -n db01 -l LISTENER_DB01

應用補丁

cd /u01/software/20299014

$ORACLE_HOME/OPatch/opatch apply

根據提示關閉節點2的相關實例

srvctl stop instance -d ORCL -i ORCL2

srvctl stop asm -n db02 -o asm2

srvctl stop listener -n db02 -l LISTENER_DB02

升級程序會遠程對節點2進行補丁升級。升級成功後開啓所有節點

srvctl start listener -n db01 -l LISTENER_DB01

srvctl start asm -n db01 -o asm1

srvctl start instance -d ORCL -i ORCL1

srvctl start listener -n db02 -l LISTENER_DB02

srvctl start asm -n db02 -o asm2

srvctl start instance -d ORCL -i ORCL2

僅僅在節點1運行如下腳本

cd $ORACLE_HOME/rdbms/admin

sqlplus / as sysdba

SQL > \@catbundle.sql psu apply

SQL > – Execute the next statement only if this is the first PSU applied
for 10.2.0.5 or this is the first PSU applied since 10.2.0.5.3.

SQL > \@utlrp.sql

執行如下腳本查看補丁情況

select * from dba_registry_history;

修改diagwait

爲了避免不必要的節點重啓(如系統調度延遲等),ORACLE建議將diagwait配置爲13。詳細信息可以參見文檔《559365.1》。

配置過程如下:注意,需要在所有節點關閉CRS服務,參數修改可以只在一個節點進行。

# \< CRS_HOME > /bin/crsctl stop crs

# \< CRS_HOME > /bin/oprocd stop

# ps -ef |egrep “crsd.bin|ocssd.bin|evmd.bin|oprocd”

# \< CRS_HOME > /bin/crsctl set css diagwait 13 -force

# \< CRS_HOME > /bin/crsctl start crs

# \< CRS_HOME > /bin/crsctl get css diagwait

DBCA創建數據庫

添加ASM RAC實例

在創建數據庫之前,首選配置ASM實例,作爲RAC集羣,首先要將ASM實例註冊到ocr。

su - oracle

srvctl add asm -n db01 -i +ASM1 -o /u01/app/oracle/product/10.2.0/db_1

srvctl add asm -n db02 -i +ASM2 -o /u01/app/oracle/product/10.2.0/db_1

配置ASM實例

cat > /tmp/asmca.rsp \< \< EOF

[GENERAL]

RESPONSEFILE_VERSION = “10.0.0”

OPERATION_TYPE = “configureASM”

[CONFIGUREASM]

NODELIST=”db01,db02”

DISKSTRING=”/dev/mapper/*”

ASM_SYS_PASSWORD=”1qaz2WSX”

EOF

調用如下命令

export LANG=en_US

dbca -silent -responseFile /tmp/asmca.rsp

創建磁盤組

CREATE DISKGROUP DATA1 EXTERNAL REDUNDANCY

disk

‘/dev/mapper/RACDATA1p1’ NAME DATA1P1;

CREATE DISKGROUP FRA1 EXTERNAL REDUNDANCY

disk

‘/dev/mapper/RACDATA2p1’ NAME DATA2P1;

alter diskgroup data1 mount;

alter diskgroup fra1 mount;

創建數據庫

dbca是ORACLE提供的圖形化數據庫創建工具,使用該工具可以方便的完成數據庫創建工作,由於腳本中不完全包括dbca工具中的動作,因此要求必須使用dbca來創建

在使用DBCA的過程中,會自動創建ASM實例,但是我們還是建議先配置好ASM實例,再建庫。

首選生成數據庫定製化模板,模板內如如下:

cat >
/u01/app/oracle/product/10.2.0/db_1/assistants/dbca/templates/INST.dbt \< \<
EOF

\< DatabaseTemplate name=”INST” description=”” version=”10.2.0.5.0” >

\< CommonAttributes >

\< option name=”ISEARCH” value=”false”/ >

\< option name=”OMS” value=”false”/ >

\< option name=”JSERVER” value=”false”/ >

\< option name=”SPATIAL” value=”false”/ >

\< option name=”ODM” value=”false” >

\< tablespace id=”SYSAUX”/ >

\< /option >

\< option name=”IMEDIA” value=”false”/ >

\< option name=”XDB_PROTOCOLS” value=”false” >

\< tablespace id=”SYSAUX”/ >

\< /option >

\< option name=”ORACLE_TEXT” value=”false” >

\< tablespace id=”SYSAUX”/ >

\< /option >

\< option name=”SAMPLE_SCHEMA” value=”false”/ >

\< option name=”CWMLITE” value=”false” >

\< tablespace id=”SYSAUX”/ >

\< /option >

\< option name=”EM_REPOSITORY” value=”false” >

\< tablespace id=”SYSAUX”/ >

\< /option >

\< option name=”HTMLDB” value=”false”/ >

\< /CommonAttributes >

\< Variables/ >

\< CustomScripts Execute=”false”/ >

\< InitParamAttributes >

\< InitParams >

\< initParam name=”pga_aggregate_target” value=”256” unit=”MB”/ >

\< initParam name=”log_archive_dest_1” value=“‘LOCATION=+DATA1/’”/ >

\< initParam name=”processes” value=”150”/ >

\< initParam name=”db_recovery_file_dest_size” value=”2048” unit=”MB”/ >

\< initParam name=”sga_target” value=”512” unit=”MB”/ >

\< initParam name=”compatible” value=”10.2.0.5.0”/ >

\< initParam name=”db_create_file_dest” value=”+DATA1”/ >

\< initParam name=”background_dump_dest”
value=”{ORACLE_BASE}/admin/{DB_UNIQUE_NAME}/bdump”/ >

\< initParam name=”job_queue_processes” value=”10”/ >

\< initParam name=”db_name” value=”“/ >

\< initParam name=”user_dump_dest”
value=”{ORACLE_BASE}/admin/{DB_UNIQUE_NAME}/udump”/ >

\< initParam name=”dispatchers” value=”(PROTOCOL=TCP) (SERVICE={SID}XDB)”/
>

\< initParam name=”audit_file_dest”
value=”{ORACLE_BASE}/admin/{DB_UNIQUE_NAME}/adump”/ >

\< initParam name=”db_domain” value=”“/ >

\< initParam name=”open_cursors” value=”300”/ >

\< initParam name=”db_block_size” value=”8” unit=”KB”/ >

\< initParam name=”db_recovery_file_dest” value=”+FRA1”/ >

\< initParam name=”log_archive_format” value=”%t_%s_%r.dbf”/ >

\< initParam name=”core_dump_dest”
value=”{ORACLE_BASE}/admin/{DB_UNIQUE_NAME}/cdump”/ >

\< initParam name=”remote_login_passwordfile” value=”exclusive”/ >

\< initParam name=”undo_management” value=”AUTO”/ >

\< initParam name=”db_file_multiblock_read_count” value=”16”/ >

\< initParam name=”undo_tablespace” value=”UNDOTBS2”/ >

\< /InitParams >

\< MiscParams >

\< databaseType > MULTIPURPOSE \< /databaseType >

\< maxUserConn > 200 \< /maxUserConn >

\< percentageMemTOSGA > 40 \< /percentageMemTOSGA >

\< customSGA > true \< /customSGA >

\< characterSet > AL32UTF8 \< /characterSet >

\< nationalCharacterSet > AL16UTF16 \< /nationalCharacterSet >

\< archiveLogMode > true \< /archiveLogMode >

\< initParamFileName > {ORACLE_BASE}/admin/{DB_UNIQUE_NAME}/pfile/init.ora
\< /initParamFileName >

\< /MiscParams >

\< SPfile useSPFile=”true” > +DATA1/{DB_UNIQUE_NAME}/spfile{SID}.ora \<
/SPfile >

\< /InitParamAttributes >

\< StorageAttributes >

\< ControlfileAttributes id=”Controlfile” >

\< maxDatafiles > 1024 \< /maxDatafiles >

\< maxLogfiles > 192 \< /maxLogfiles >

\< maxLogMembers > 3 \< /maxLogMembers >

\< maxLogHistory > 1 \< /maxLogHistory >

\< maxInstances > 32 \< /maxInstances >

\< image name=”\<OMF_CONTROL_0 > ” filepath=”+DATA1/{DB_UNIQUE_NAME}/”/
>

\< image name=”\<OMF_CONTROL_1 > ” filepath=”+DRA1/{DB_UNIQUE_NAME}/”/
>

\< /ControlfileAttributes >

\< DatafileAttributes id=”\<OMF_SYSAUX_DATAFILE_0 > ” >

\< tablespace > SYSAUX \< /tablespace >

\< temporary > false \< /temporary >

\< online > true \< /online >

\< status > 0 \< /status >

\< size unit=”MB” > 120 \< /size >

\< reuse > false \< /reuse >

\< autoExtend > true \< /autoExtend >

\< increment unit=”KB” > 10240 \< /increment >

\< maxSize unit=”MB” > -1 \< /maxSize >

\< /DatafileAttributes >

\< DatafileAttributes id=”\<OMF_SYSTEM_DATAFILE_0 > ” >

\< tablespace > SYSTEM \< /tablespace >

\< temporary > false \< /temporary >

\< online > true \< /online >

\< status > 0 \< /status >

\< size unit=”MB” > 300 \< /size >

\< reuse > false \< /reuse >

\< autoExtend > true \< /autoExtend >

\< increment unit=”KB” > 10240 \< /increment >

\< maxSize unit=”MB” > -1 \< /maxSize >

\< /DatafileAttributes >

\< DatafileAttributes id=”\<OMF_TEMP_DATAFILE_0 > ” >

\< tablespace > TEMP \< /tablespace >

\< temporary > false \< /temporary >

\< online > true \< /online >

\< status > 0 \< /status >

\< size unit=”MB” > 20 \< /size >

\< reuse > false \< /reuse >

\< autoExtend > true \< /autoExtend >

\< increment unit=”KB” > 640 \< /increment >

\< maxSize unit=”MB” > -1 \< /maxSize >

\< /DatafileAttributes >

\< DatafileAttributes id=”\<OMF_UNDOTBS1_DATAFILE_0 > ” >

\< tablespace > UNDOTBS1 \< /tablespace >

\< temporary > false \< /temporary >

\< online > true \< /online >

\< status > 0 \< /status >

\< size unit=”MB” > 200 \< /size >

\< reuse > false \< /reuse >

\< autoExtend > true \< /autoExtend >

\< increment unit=”KB” > 5120 \< /increment >

\< maxSize unit=”MB” > -1 \< /maxSize >

\< /DatafileAttributes >

\< DatafileAttributes id=”\<OMF_UNDOTBS2_DATAFILE_0 > ” >

\< tablespace > UNDOTBS2 \< /tablespace >

\< temporary > false \< /temporary >

\< online > true \< /online >

\< status > 0 \< /status >

\< size unit=”MB” > 200 \< /size >

\< reuse > false \< /reuse >

\< autoExtend > true \< /autoExtend >

\< increment unit=”KB” > 5120 \< /increment >

\< maxSize unit=”MB” > -1 \< /maxSize >

\< /DatafileAttributes >

\< DatafileAttributes id=”\<OMF_USERS_DATAFILE_0 > ” >

\< tablespace > USERS \< /tablespace >

\< temporary > false \< /temporary >

\< online > true \< /online >

\< status > 0 \< /status >

\< size unit=”MB” > 5 \< /size >

\< reuse > false \< /reuse >

\< autoExtend > true \< /autoExtend >

\< increment unit=”KB” > 1280 \< /increment >

\< maxSize unit=”MB” > -1 \< /maxSize >

\< /DatafileAttributes >

\< TablespaceAttributes id=”SYSAUX” >

\< online > true \< /online >

\< offlineMode > 1 \< /offlineMode >

\< readOnly > false \< /readOnly >

\< temporary > false \< /temporary >

\< defaultTemp > false \< /defaultTemp >

\< undo > false \< /undo >

\< local > true \< /local >

\< blockSize > -1 \< /blockSize >

\< allocation > 1 \< /allocation >

\< uniAllocSize unit=”KB” > -1 \< /uniAllocSize >

\< initSize unit=”KB” > 64 \< /initSize >

\< increment unit=”KB” > 64 \< /increment >

\< incrementPercent > 50 \< /incrementPercent >

\< minExtends > 1 \< /minExtends >

\< maxExtends > 4096 \< /maxExtends >

\< minExtendsSize unit=”KB” > 64 \< /minExtendsSize >

\< logging > true \< /logging >

\< recoverable > false \< /recoverable >

\< maxFreeSpace > 0 \< /maxFreeSpace >

\< autoSegmentMgmt > true \< /autoSegmentMgmt >

\< bigfile > false \< /bigfile >

\< datafilesList >

\< TablespaceDatafileAttributes id=”\<OMF_SYSAUX_DATAFILE_0 > ” >

\< id > -1 \< /id >

\< /TablespaceDatafileAttributes >

\< /datafilesList >

\< /TablespaceAttributes >

\< TablespaceAttributes id=”SYSTEM” >

\< online > true \< /online >

\< offlineMode > 1 \< /offlineMode >

\< readOnly > false \< /readOnly >

\< temporary > false \< /temporary >

\< defaultTemp > false \< /defaultTemp >

\< undo > false \< /undo >

\< local > true \< /local >

\< blockSize > -1 \< /blockSize >

\< allocation > 3 \< /allocation >

\< uniAllocSize unit=”KB” > -1 \< /uniAllocSize >

\< initSize unit=”KB” > 64 \< /initSize >

\< increment unit=”KB” > 64 \< /increment >

\< incrementPercent > 50 \< /incrementPercent >

\< minExtends > 1 \< /minExtends >

\< maxExtends > -1 \< /maxExtends >

\< minExtendsSize unit=”KB” > 64 \< /minExtendsSize >

\< logging > true \< /logging >

\< recoverable > false \< /recoverable >

\< maxFreeSpace > 0 \< /maxFreeSpace >

\< autoSegmentMgmt > true \< /autoSegmentMgmt >

\< bigfile > false \< /bigfile >

\< datafilesList >

\< TablespaceDatafileAttributes id=”\<OMF_SYSTEM_DATAFILE_0 > ” >

\< id > -1 \< /id >

\< /TablespaceDatafileAttributes >

\< /datafilesList >

\< /TablespaceAttributes >

\< TablespaceAttributes id=”TEMP” >

\< online > true \< /online >

\< offlineMode > 1 \< /offlineMode >

\< readOnly > false \< /readOnly >

\< temporary > true \< /temporary >

\< defaultTemp > true \< /defaultTemp >

\< undo > false \< /undo >

\< local > true \< /local >

\< blockSize > -1 \< /blockSize >

\< allocation > 1 \< /allocation >

\< uniAllocSize unit=”KB” > -1 \< /uniAllocSize >

\< initSize unit=”KB” > 64 \< /initSize >

\< increment unit=”KB” > 64 \< /increment >

\< incrementPercent > 0 \< /incrementPercent >

\< minExtends > 1 \< /minExtends >

\< maxExtends > 0 \< /maxExtends >

\< minExtendsSize unit=”KB” > 64 \< /minExtendsSize >

\< logging > true \< /logging >

\< recoverable > false \< /recoverable >

\< maxFreeSpace > 0 \< /maxFreeSpace >

\< autoSegmentMgmt > true \< /autoSegmentMgmt >

\< bigfile > false \< /bigfile >

\< datafilesList >

\< TablespaceDatafileAttributes id=”\<OMF_TEMP_DATAFILE_0 > ” >

\< id > -1 \< /id >

\< /TablespaceDatafileAttributes >

\< /datafilesList >

\< /TablespaceAttributes >

\< TablespaceAttributes id=”UNDOTBS1” >

\< online > true \< /online >

\< offlineMode > 1 \< /offlineMode >

\< readOnly > false \< /readOnly >

\< temporary > false \< /temporary >

\< defaultTemp > false \< /defaultTemp >

\< undo > true \< /undo >

\< local > true \< /local >

\< blockSize > -1 \< /blockSize >

\< allocation > 1 \< /allocation >

\< uniAllocSize unit=”KB” > -1 \< /uniAllocSize >

\< initSize unit=”KB” > 512 \< /initSize >

\< increment unit=”KB” > 512 \< /increment >

\< incrementPercent > 50 \< /incrementPercent >

\< minExtends > 8 \< /minExtends >

\< maxExtends > 4096 \< /maxExtends >

\< minExtendsSize unit=”KB” > 512 \< /minExtendsSize >

\< logging > true \< /logging >

\< recoverable > false \< /recoverable >

\< maxFreeSpace > 0 \< /maxFreeSpace >

\< autoSegmentMgmt > true \< /autoSegmentMgmt >

\< bigfile > false \< /bigfile >

\< datafilesList >

\< TablespaceDatafileAttributes id=”\<OMF_UNDOTBS1_DATAFILE_0 > ” >

\< id > -1 \< /id >

\< /TablespaceDatafileAttributes >

\< /datafilesList >

\< /TablespaceAttributes >

\< TablespaceAttributes id=”UNDOTBS2” >

\< online > true \< /online >

\< offlineMode > 1 \< /offlineMode >

\< readOnly > false \< /readOnly >

\< temporary > false \< /temporary >

\< defaultTemp > false \< /defaultTemp >

\< undo > true \< /undo >

\< local > true \< /local >

\< blockSize > -1 \< /blockSize >

\< allocation > 1 \< /allocation >

\< uniAllocSize unit=”KB” > -1 \< /uniAllocSize >

\< initSize unit=”KB” > 512 \< /initSize >

\< increment unit=”KB” > 512 \< /increment >

\< incrementPercent > 50 \< /incrementPercent >

\< minExtends > 8 \< /minExtends >

\< maxExtends > 4096 \< /maxExtends >

\< minExtendsSize unit=”KB” > 512 \< /minExtendsSize >

\< logging > true \< /logging >

\< recoverable > false \< /recoverable >

\< maxFreeSpace > 0 \< /maxFreeSpace >

\< autoSegmentMgmt > true \< /autoSegmentMgmt >

\< bigfile > false \< /bigfile >

\< datafilesList >

\< TablespaceDatafileAttributes id=”\<OMF_UNDOTBS2_DATAFILE_0 > ” >

\< id > -1 \< /id >

\< /TablespaceDatafileAttributes >

\< /datafilesList >

\< /TablespaceAttributes >

\< TablespaceAttributes id=”USERS” >

\< online > true \< /online >

\< offlineMode > 1 \< /offlineMode >

\< readOnly > false \< /readOnly >

\< temporary > false \< /temporary >

\< defaultTemp > false \< /defaultTemp >

\< undo > false \< /undo >

\< local > true \< /local >

\< blockSize > -1 \< /blockSize >

\< allocation > 1 \< /allocation >

\< uniAllocSize unit=”KB” > -1 \< /uniAllocSize >

\< initSize unit=”KB” > 128 \< /initSize >

\< increment unit=”KB” > 128 \< /increment >

\< incrementPercent > 0 \< /incrementPercent >

\< minExtends > 1 \< /minExtends >

\< maxExtends > 4096 \< /maxExtends >

\< minExtendsSize unit=”KB” > 128 \< /minExtendsSize >

\< logging > true \< /logging >

\< recoverable > false \< /recoverable >

\< maxFreeSpace > 0 \< /maxFreeSpace >

\< autoSegmentMgmt > true \< /autoSegmentMgmt >

\< bigfile > false \< /bigfile >

\< datafilesList >

\< TablespaceDatafileAttributes id=”\<OMF_USERS_DATAFILE_0 > ” >

\< id > -1 \< /id >

\< /TablespaceDatafileAttributes >

\< /datafilesList >

\< /TablespaceAttributes >

\< RedoLogGroupAttributes id=”1” >

\< reuse > false \< /reuse >

\< fileSize unit=”KB” > 51200 \< /fileSize >

\< Thread > 1 \< /Thread >

\< member ordinal=”0” memberName=”redo_01_01_01”
filepath=”+DATA1/{DB_UNIQUE_NAME}/”/ >

\< /RedoLogGroupAttributes >

\< RedoLogGroupAttributes id=”2” >

\< reuse > false \< /reuse >

\< fileSize unit=”KB” > 51200 \< /fileSize >

\< Thread > 1 \< /Thread >

\< member ordinal=”0” memberName=”redo_01_02_01”
filepath=”+DATA1/{DB_UNIQUE_NAME}/”/ >

\< /RedoLogGroupAttributes >

\< RedoLogGroupAttributes id=”3” >

\< reuse > false \< /reuse >

\< fileSize unit=”KB” > 51200 \< /fileSize >

\< Thread > 2 \< /Thread >

\< member ordinal=”0” memberName=”redo_02_03_01”
filepath=”+DATA1/{DB_UNIQUE_NAME}/”/ >

\< /RedoLogGroupAttributes >

\< RedoLogGroupAttributes id=”4” >

\< reuse > false \< /reuse >

\< fileSize unit=”KB” > 51200 \< /fileSize >

\< Thread > 2 \< /Thread >

\< member ordinal=”0” memberName=”redo_02_04_01”
filepath=”+DATA1/{DB_UNIQUE_NAME}/”/ >

\< /RedoLogGroupAttributes >

\< RedoLogGroupAttributes id=”5” >

\< reuse > false \< /reuse >

\< fileSize unit=”KB” > 51200 \< /fileSize >

\< Thread > 1 \< /Thread >

\< member ordinal=”0” memberName=”redo_01_05_01”
filepath=”+DATA1/{DB_UNIQUE_NAME}/”/ >

\< /RedoLogGroupAttributes >

\< RedoLogGroupAttributes id=”6” >

\< reuse > false \< /reuse >

\< fileSize unit=”KB” > 51200 \< /fileSize >

\< Thread > 2 \< /Thread >

\< member ordinal=”0” memberName=”redo_02_06_01”
filepath=”+DATA1/{DB_UNIQUE_NAME}/”/ >

\< /RedoLogGroupAttributes >

\< /StorageAttributes >

\< /DatabaseTemplate >

EOF

首先配置dbca.rsp文件,文件內容如下,將該文件保存爲/tmp/dbca.rsp

cat > /tmp/dbca.rsp \< \< EOF

[GENERAL]

RESPONSEFILE_VERSION = “10.0.0”

OPERATION_TYPE = “createDatabase”

[CREATEDATABASE]

GDBNAME = “ORCL”

SID = “ORCL”

NODELIST=”db01,db02”

TEMPLATENAME = “INST.dbt”

SYSPASSWORD = “1qaz2WSX”

SYSTEMPASSWORD = “1qaz2WSX”

EMCONFIGURATION = “NONE”

SYSMANPASSWORD = “1qaz2WSX”

DBSNMPPASSWORD = “1qaz2WSX”

STORAGETYPE=ASM

DISKGROUPNAME=DATA1

RECOVERYGROUPNAME=FRA1

CHARACTERSET = “AL32UTF8”

EOF

調用如下命令進行安裝DATABASE SOFTWARE

export LANG=en_US

dbca -silent -responseFile /tmp/dbca.rsp

更新數據庫

注意:如下操作僅在一個節點進行即可。

cd $ORACLE_HOME/rdbms/admin

sqlplus /nolog

SQL > CONNECT / AS SYSDBA

SQL > STARTUP

SQL > select * from dba_registry_history;

SQL > \@catbundle.sql psu apply

SQL > select * from dba_registry_history;

SQL > \@utlrp.sql

SQL > QUIT

檢查如下文件,查看是否有報錯信息

$ORACLE_BASE/cfgtoollogs/catbundle/catbundle_PSU_ \< database SID >
APPLY \< TIMESTAMP > .log

$ORACLE_BASE/cfgtoollogs/catbundle/catbundle_PSU_ \< database SID >
GENERATE \< TIMESTAMP > .log

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章