版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
OracleRealApplicationCluster安裝部署手冊目錄摘要本文介紹的RAC安裝部署,并未完全指定系統(tǒng)環(huán)境,力求作為一種通用的安裝手段,文中的斜體加粗字內(nèi)容為屏幕的輸入內(nèi)容,斜體普通字為屏幕顯示的返回信息內(nèi)容,紅色加粗字內(nèi)容為容易導致安裝失敗而要求讀者特別注意的內(nèi)容。.總述隨Oracle9i一同推出的OracleRAC是Oracle并行服務(wù)器(OPS)的后續(xù)版本。OracleRAC允許多個實例同時訪問同一數(shù)據(jù)庫(存儲)。RAC通過允許系統(tǒng)進行擴展,提供了容錯、負載均衡和性能效益,同時,由于所有節(jié)點訪問同一數(shù)據(jù)庫,一個實例的故障不會導致無法訪問數(shù)據(jù)庫。Oracle10gRAC的核心是共享磁盤子系統(tǒng)。集群中的所有節(jié)點必須能夠訪問集群中所有節(jié)點的所有數(shù)據(jù)、重做日志文件、控制文件和參數(shù)文件。為了使所有節(jié)點都能夠訪問數(shù)據(jù)庫,數(shù)據(jù)磁盤必須全局可用。每個節(jié)點都擁有自己的重做日志文件和UNDO表空間,但其他節(jié)點必須能夠訪問它們(和共享控制文件),以便在系統(tǒng)出現(xiàn)故障時恢復(fù)該節(jié)點。OracleRAC與OPS之間的最大區(qū)別在于增加了緩存融合。使用OPS時,從一個節(jié)點到另一個節(jié)點的數(shù)據(jù)請求需要首先將數(shù)據(jù)寫到磁盤,然后請求節(jié)點才能讀取該數(shù)據(jù)。而使用緩存融合,數(shù)據(jù)沿著使用復(fù)雜鎖定算法的高速互連鏈路傳遞。不是所有的集群解決方案都使用共享存儲。某些供應(yīng)商使用一種稱為聯(lián)合集群的方法,在這種方法中,數(shù)據(jù)分布在多臺計算機中,而不是由所有計算機共享。但是,在使用Oracle10gRAC時,多個節(jié)點將使用一組磁盤來存儲數(shù)據(jù)。利用Oracle10gRAC,數(shù)據(jù)文件、
重做日志文件、控制文件和歸檔日志文件都保存在原始磁盤設(shè)備的共享存儲、NAS、ASM或集群文件系統(tǒng)中。Oracle的集群方法利用了集群中所有節(jié)點的集體處理能力,同時提供了故障切換安全性。Dell、IBM和HP等廠商提供了預(yù)先配置的面向生產(chǎn)環(huán)境的Oracle10gRAC解決方案。.系統(tǒng)結(jié)構(gòu)硬件及成本OracleRAC節(jié)點1一(RAC1)DellPowerEdge2950服務(wù)器?4*Intel(R)Xeon(R)CPUE5430@2.60GHz?8GBDDRSDRAM(333MHz)?300GB7200RPM內(nèi)置硬盤驅(qū)動器?集成的Intel3DAGP圖形卡?集成的10/100以太網(wǎng)卡一(BroadcomBCM5708)?DVDROM(16X倍速)12000RM?DELL鍵盤、顯示器或鼠標12000RMOracleRAC節(jié)點2一(RAC2)DellPowerEdge2950服務(wù)器?4*Intel(R)Xeon(R)CPUE5430@2.60GHz?8GBDDRSDRAM(333MHz)?300GB7200RPM內(nèi)置硬盤驅(qū)動器?集成的Intel3DAGP圖形卡?集成的10/100以太網(wǎng)卡一(BroadcomBCM5708)?DVDROM(16X倍速)12000RM?DELL鍵盤、顯示器或鼠標12000RMDAS#儲陣列DellPowerVaultTMMD3000SAS存儲陣列30000RMMD3000模塊化磁盤存儲陣列可支持2個節(jié)點的集群,其3U架裝式機箱最多可安裝15塊3.5英寸硬盤,可擴展到45個3.5英寸SAS?盤,在增加2個MD1000勺配置下。使用一個ModularDiskStorageManager(模塊化磁盤存儲管理軟件),管理整個陣列子系統(tǒng)。30000RM54000RMB合計54000RMB軟件及成本OracleRAC節(jié)點1一(RAC1)RedHat4U6LinuxEnterpriseEditionOracleRACSoftware71250RMOracleRAC節(jié)點2一(RAC2)RedHat4U6LinuxEnterpriseEditionOracleRACSoftware71250RM合計196500RMB2.3系統(tǒng)拓撲工作站點以太網(wǎng)交換機OracleRAC以太網(wǎng)線SAS線2.4系統(tǒng)總價根據(jù)上述軟硬件系統(tǒng)可以得出系統(tǒng)總價為:系統(tǒng)總價二軟件系統(tǒng)總價+硬件系統(tǒng)總價即:系統(tǒng)總價二984000.安裝步驟.開始安裝安裝操作系統(tǒng)此步驟需要在兩節(jié)點進行安裝linux過程中需要注意以下幾點:選擇全新安裝;手動對sda設(shè)備分區(qū):分區(qū)名稱分區(qū)容量(MB)/boot2048Swap32768/usr20480Ivar16384/home16384/tmp8192/2048/opt磁盤的剩余容量取消DHCP網(wǎng)絡(luò)設(shè)置禁用防火墻禁用SELinux完全安裝所有包,安裝SAS驅(qū)動安裝DELL存儲管理軟件其中需要注意的是:對于系統(tǒng)的磁盤分區(qū),Swap區(qū)盡量分的大一些,一般為物理內(nèi)存的整數(shù)倍。/opt目錄是Oracle軟件的安裝目錄,也要保證足夠的容量。對磁盤陣列進行分區(qū)通過Dell存儲的管理軟件,我們對共享存儲陣列進行分區(qū),并將分區(qū)映射到端口。此步驟僅需在一個節(jié)點進行即可,我在RAC1節(jié)點上進行如下操作。本次安裝,我的分區(qū)如下:524Mcrs629M322.1Goradata_dg408.1Grecover_dg分區(qū)結(jié)束后,需要保證兩節(jié)點均可以識別到設(shè)備,此工作在兩節(jié)點進行。打開操作系統(tǒng)的終端:[root@rac2~]#fdiskTDisk/dev/sda:524MB,524288000bytes17heads,59sectors/track,1020cylindersUnits=cylindersof1003*512=513536bytes
DeviceBootStartEndBlocksIdSystem/dev/sda111020511500+83LinuxDisk/dev/sdb:629MB,629145600bytes20heads,60sectors/track,1024cylindersUnits=cylindersof1200*512=614400bytesDeviceBootStartEndBlocksIdSystem/dev/sdb11102461437083LinuxDisk/dev/sdc:322.1GB,322122547200bytes255heads,63sectors/track,39162cylindersUnits=cylindersof16065*512=8225280bytesDeviceBootStartEndBlocksIdSystemDeviceBootStartEndBlocksIdSystem/dev/sdc1139162314568733+83Linux/dev/sdc1Disk/dev/sdd:408.1GB,408113643520bytes255heads,63sectors/track,49616cylindersUnits=cylindersof16065*512=8225280bytesDeviceBootStartEndBlocksIdSystem/dev/sdd1149616398540488+83Linux接下來的步驟是在每個卷上創(chuàng)建一個跨整個卷大小的主分區(qū)。我將使用Oracle的集群文件系統(tǒng)第2版(OCFS2)存儲供Oracle集群件軟件共享的兩個文件。然后,將使用自動存儲管理(ASM)創(chuàng)建ASM卷;#fdisk/dev/sdbCommand(mforhelp):nCommandactioneextendedpprimarypartition(1-4)PTOC\o"1-5"\h\zPartitionnumber(1-4):1Firstcylinder(1-15134,default1):1Lastcylinderor+sizeor+sizeMor+sizeK(1-15134,default15134):15134Command(mforhelp):pDisk/dev/sdb:124.4GB,124486942720bytes255heads,63sectors/track,15134cylindersUnits=cylindersof16065*512=8225280bytesDeviceBootStartEndBlocksIdSystem/dev/sdb1115134121563823+83LinuxCommand(mforhelp):wThepartitiontablehasbeenaltered!Callingioctl()tore-readpartitiontable.Syncingdisks.按照上述方法,依次劃分/dev/sdb1、/dev/sdc1、/dev/sdd1、/dev/sde1。在創(chuàng)建所有必要分區(qū)之后,現(xiàn)在應(yīng)以“root”用戶帳戶從集群的兩個OracleRAC節(jié)點使用以下命令將分區(qū)的更改情況通知給內(nèi)核。#partprobe4.3配置網(wǎng)絡(luò)ip地址:系統(tǒng)的ipip地址:在集群中的兩個OracleRAC節(jié)點上執(zhí)行下列網(wǎng)絡(luò)配置!注:雖然我們在Linux安裝過程中配置了幾個網(wǎng)絡(luò)設(shè)置,但千萬不要跳過本部分,因為它包含了RAC環(huán)境所需的關(guān)鍵步驟。在LinuxO/S安裝過程中,我們已經(jīng)為這兩個OracleRAC節(jié)點配置了IP地址和主機名。現(xiàn)在,我們需要配置/etc/hosts文件,并調(diào)整幾個互連的網(wǎng)絡(luò)設(shè)置。這兩個OracleRAC節(jié)點均應(yīng)有一個用于公共網(wǎng)絡(luò)的靜態(tài)IP地址和一個用于專用集群互連的靜態(tài)IP地址。不要為公共IP地址或互連使用DHCP命名;您需要靜態(tài)IP地址!使用網(wǎng)絡(luò)配置應(yīng)用程序,您需要配置兩個NIC設(shè)備以及/etc/hosts文件。我們的示例配置將使用以下設(shè)置:OracleRAC節(jié)點1-(rac1)設(shè)備IP地址SubnetGateway目的eth0連接rac1與公共網(wǎng)絡(luò)eth1將rac1(互連)連接到rac2(rac2-priv)vi/etc/hostsOracleRAC節(jié)點2一(rac2)設(shè)備IP地址SubnetGateway目的eth0連接rac2與公共網(wǎng)絡(luò)ethl將rac2(互連)連接到racl(racl-priv)vi/etc/hosts請注意,只需在兩個OracleRAC節(jié)點的/etc/hosts文件(或,^的DNS)中定義虛擬IP地址。當您運行OracleUniversalInstaller時,該程序啟動Oracle的虛擬互聯(lián)網(wǎng)協(xié)議配置助手(VIPCA),也就說Oracle將自動配置公共虛擬IP地址。當運行srvctlstartnodeapps-n<node_name>命令時,所有的虛擬IP地址將被激活。這就是將要在客戶端tnsnames.ora文件中進行配置的主機名/IP地址(后文詳述)。配置網(wǎng)絡(luò)之后,您可以使用ifconfig命令驗證一切是否正常。以下示例來自于rac1:#/sbin/ifconfig-aeth0Linkencap:EthernetHWaddr00:14:6C:76:5C:71inetaddr:192.168.200.200Bcast:192.168.1.255Mask:255.255.255.0inet6addr:fe80::214:6cff:fe76:5c71/64Scope:LinkUPBROADCASTRUNNINGMULTICASTMTU:1500Metric:1RXpackets:1546errors:。dropped:。overruns:。frame:。TXpackets:1273errors:0dropped:。overruns:。carrier:0collisions:。txqueuelen:1。。。RXbytes:1179157(1.1MiB)TXbytes:何。^(178.7KiB)Interrupt:169BaseaddressQxZf。。ethlLinkencap:EthernetHWaddr。。:?!?。^64口1£5inetaddr:192.168.1。。/。。Bcast:192.168.2.255Mask:255.255.255.。inet6addr:£38。::2。39仟佗64另135/64Scope:LinkUPBROADCASTRUNNINGMULTICASTMTU:15。。Metric:1RXpackets:0errors:0dropped:0overruns:。frame:0TXpackets:11errors:0dropped:0overruns:0carrier:0collisions:。txqueuelen:1。。。RXbytes:0(。.。b)TXbytes:782(782.。b)Baseaddress:0xddc0Memory:fe9c0000-fe9e0000loLinkencap:LocalLoopbackinetaddr:127.0.0.1Mask:255.0.0.0inet6addr:::1/128Scope:HostUPLOOPBACKRUNNINGMTU:16436Metric:1RXpackets:4893errors:0dropped:0overruns:0frame:0TXpackets:4893errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:0RXbytes:6521518(6.2MiB)TXbytes:6521518(6.2MiB)sit0Linkencap:IPv6-in-IPv4NOARPMTU:1480Metric:1RXpackets:0errors:0dropped:0overruns:0frame:0TXpackets:0errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:0RXbytes:0(0.0b)TXbytes:0(0.0b)關(guān)于虛擬IP10g中為什么使用虛擬IP(VIP)?為什么當它的主節(jié)點發(fā)生故障時它只是返回一個無效的連接?這全是出于對應(yīng)用程序可用性的考慮。當一個節(jié)點發(fā)生故障時,與其關(guān)聯(lián)的VIP將被自動故障切換到另外某個節(jié)點上。當出現(xiàn)這種情況時,會發(fā)生兩件事。新的節(jié)點重新進行地址解析,顯示該地址的一個新的MAC地址。對于直連客戶端,這通常使它們在連接舊地址時出現(xiàn)錯誤。到VIP的后續(xù)數(shù)據(jù)包將被傳送到新的節(jié)點,該節(jié)點將把錯誤RST數(shù)據(jù)包返回客戶端。這導致客戶端立即收到錯誤信息。這意味著,當客戶端向故障節(jié)點發(fā)出SQL時,或者在連接狀態(tài)下遍歷地址列表時,客戶端會接收到一個TCP重置信息,而不是等待很長的TCP/IP超時(大約10分鐘)。發(fā)送SQL時,該信息為ORA-3113。而連接時,使用tnsname中的下一個地址。更進一步的操作是使用透明的應(yīng)用程序故障切換(TAF)。成功配置TAF后,就可以完全避免ORA-3113錯誤!如果不使用VIP,連接停用節(jié)點的客戶端經(jīng)常要等待10分鐘的TCP超時,然后才收到錯誤信息。因此,如果沒有VIP,用戶將不能真正擁有一流的高可用性解決方案(來源—Metalink說明220970.1)。確保RAC節(jié)點名沒有出現(xiàn)在環(huán)回地址中確保在/etc/hosts文件的環(huán)回地址中不包含節(jié)點名(rac1或rac2)。如果機器名出現(xiàn)在環(huán)回地址條目中,如下所示:127.0.0.1rac1localhost.localdomainlocalhost需要按如下所示將其刪除:127.0.0.1localhost.localdomainlocalhost如果RAC節(jié)點名出現(xiàn)在環(huán)回地址中,您在RAC安裝期間將接收到以下錯誤信息:ORA-00603:ORACLEserversessionterminatedbyfatalerror或者ORA-29702:erroroccurredinClusterGroupServiceoperation驗證localhost在/etc/hosts文件中定義為回送地址確保localhost.localdomain和localhost項作為回送地址包含在每個OracleRAC節(jié)點的/etc/hosts文件中:127.0.0.1localhost.localdomainlocalhost如果/etc/hosts文件中不存在localhost項,Oracle集群件將無法啟動應(yīng)用程序資源—特別是ONS進程。該錯誤將指明“FailedtogetIPforlocalhost”并寫入ONS的日志文件。例如:CRS-0215couldnotstartresource'ora.rac1.ons'.Checklogfile"/opt/app/crs/log/rac1/racg/ora.rac1.ons.log"formoredetails.ONS日志文件包含類似以下內(nèi)容的行:OracleDatabase10gCRSRelease10.2.0.1.0ProductionCopyright1996,2005Oracle.Allrightsreserved.2007-04-1413:10:02.729:[RACG][3086871296][13316][3086871296][ora.rac1.ons]:FailedtogetIPforlocalhost(1)FailedtogetIPforlocalhost(1)FailedtogetIPforlocalhost(1)onsctl:onsfailedtostart調(diào)整網(wǎng)絡(luò)設(shè)置在Oracle9.2.0.1以及更高版本中,Oracle在Linux上使用UDP作為進行過程間通信(IPC)的默認協(xié)議,如在RAC集群中實例之間的緩存融合和集群管理器緩沖區(qū)傳輸。Oracle強烈建議將默認的和最大的發(fā)送緩沖區(qū)大?。⊿O_SNDBUF套接字選項)調(diào)整為256KB,并將默認的和最大的接收緩沖區(qū)大?。⊿O_RCVBUF套接字選項)調(diào)整為256KB。接收緩沖區(qū)由TCP和UDP用于保留所接收的數(shù)據(jù),直到應(yīng)用程序讀出這些數(shù)據(jù)為止。由于不允許對端設(shè)備發(fā)送超過緩沖區(qū)大小窗口的數(shù)據(jù),因此接收緩沖區(qū)不會溢出。這意味著,不適合套接字接收緩沖區(qū)可能導致發(fā)送設(shè)備發(fā)送的信息淹沒接收設(shè)備的數(shù)據(jù)報將會被丟棄。您無需重新引導即可在/proc文件系統(tǒng)中更改默認的和最大的窗口大?。簊u-rootsysctl-wnet.core.rmem_default=262144net.core.rmem_default=262144sysctl-wnet.core.wmem_default=262144net.core.wmem_default=262144sysctl-wnet.core.rmem_max=262144net.core.rmem_max=262144sysctl-wnet.core.wmem_max=262144net.core.wmem_max=262144以上命令更改正在運行的操作系統(tǒng)。現(xiàn)在,將以下各行程序添加到RAC集群中兩個節(jié)點的/etc/sysctl.conf文件中,使以上更改永久生效(針對每次重新引導而言):Defaultsettinginbytesofthesocketreceivebuffernet.core.rmem_default=262144Defaultsettinginbytesofthesocketsendbuffernet.core.wmem_default=262144MaximumsocketreceivebuffersizewhichmaybesetbyusingtheSO_RCVBUFsocketoptionnet.core.rmem_max=262144MaximumsocketsendbuffersizewhichmaybesetbyusingtheSO_SNDBUFsocketoptionnet.core.wmem_max=262144檢查并關(guān)閉UDPICMP拒絕如果UDPICMP被防火墻阻塞或拒絕,Oracle集群件軟件將在運行幾分鐘之后崩潰。如果Oracle集群件進程出現(xiàn)故障,您的<machine_name>_evmocr.log文件中將出現(xiàn)以下類似內(nèi)容:08/29/200522:17:19oac_init:2:Couldnotconnecttoserver,clscretcode=908/29/200522:17:19a_init:12!:Clientinitunsuccessful:[32]ibctx:1:ERROR:INVALIDFORMATproprinit:problemreadingthebootblockorsuperbloc22如果遇到此類錯誤,解決方法是刪除udpICMP(iptables)拒絕規(guī)則,或者只需關(guān)閉防火墻選項。之后,Oracle集群件軟件將開始正常工作,而不會崩潰。以下命令應(yīng)該以root用戶帳戶的身份執(zhí)行:1.檢查以確保防火墻選項關(guān)閉。如果防火墻選項已停用(如下面的示例所示),則不必繼續(xù)執(zhí)行以下步驟。/etc/rc.d/init.d/iptablesstatusFirewallisstopped.如果防火墻選項已啟用,您首先需要手動停用UDPICMP拒絕:/etc/rc.d/init.d/iptablesstopFlushingfirewallrules:[OK]SettingchainstopolicyACCEPT:filter[OK]Unloadingiptablesmodules:[OK]2.然后,針對下一次服務(wù)器重新引導關(guān)閉UDPICMP拒絕(應(yīng)該始終被關(guān)閉):chkconfigiptablesoff4.4建立Oracle用戶在集群中的兩個OracleRAC節(jié)點上執(zhí)行以下任務(wù)!我們將使用Oracle集群文件系統(tǒng)第2版(OCFS2)存儲需要Oracle集群件軟件共享的文件。在使用OCFS2時,集群中的兩個OracleRAC節(jié)點上的UNIX用戶oracle的UID和UNIX組“oracle的"GID必須相同。如果UID或GID不同,則OCFS2文件系統(tǒng)中的文件將顯示為“unowned”,甚至可能被其他用戶所擁有。對于本文而言,oracleUID使用175,“oracle”G使用115。創(chuàng)建Oracle的組和用戶首先,創(chuàng)建UNIXoinstall和dba組以及oracle用戶帳戶:groupadd-g115oinstallgroupadd-g116dbauseradd-m-u175-goinstall-Gdba-d/home/oracle-s/bin/bash-c"OracleSoftwareOwner"oracleidoracleuid=175(oracle)gid=115(oinstall)groups=115(oinstall),116(dba)設(shè)置oracle帳戶的口令:passwdoracleChangingpasswordforuseroracle.NewUNIXpassword:xxxxxxxxxxxRetypenewUNIXpassword:xxxxxxxxxxxpasswd:allauthenticationtokensupdatedsuccessfully.注意,UNIX組oinstall的成員被視為Oracle軟件的“所有者”。dba組的成員可以管oracle用戶帳戶以理Oracleoracle用戶帳戶以承擔全部責任!驗證用戶nobody存在安裝Oracle軟件之前,執(zhí)行以下操作,以驗證用戶nobody存在于系統(tǒng)中:要確定該用戶是否存在,輸入以下命令:#idnobodyuid=99(nobody)gid=99(nobody)groups=99(nobody)如果該命令顯示了nobody用戶的信息,則無需創(chuàng)建該用戶。如果用戶nobody不存在,則輸入以下命令進行創(chuàng)建:#/usr/sbin/useraddnobody在集群中的所有其他OracleRAC節(jié)點上重復(fù)此過程。4.4建立相關(guān)的基本目錄和掛載點創(chuàng)建Oracle基本目錄下一步是創(chuàng)建一個新目錄,用于存儲Oracle數(shù)據(jù)庫軟件。在配置oracle用戶的環(huán)境時(本部分后面的內(nèi)容),我們將把該目錄的位置指定給$ORACLE_BASE環(huán)境變量。以下內(nèi)容假設(shè)在根文件系統(tǒng)中創(chuàng)建目錄。請注意,這樣做是為了簡便起見,不建議將其作為通用做法。通常,這些目錄將在單獨的文件系統(tǒng)中創(chuàng)建。創(chuàng)建目錄之后,您必須為其指定正確的擁有者、組和權(quán)限。在兩個OracleRAC節(jié)點上執(zhí)行以下命令:mkdir-p/opt/app/oraclechown-Roracle:oinstall/opt/app/oraclechmod-R775/opt/app/oracle在過程結(jié)束時,您將看到以下內(nèi)容:?/opt由根目錄擁有。?/opt/app由根目錄擁有。?/opt/app/oracle由具有775權(quán)限的oracle:oinstall擁有。該所有權(quán)和權(quán)限允許OUI在/opt/app/oracle/oraInventory路徑下創(chuàng)建oraInventory目錄。創(chuàng)建Oracle集群件主目錄接下來,創(chuàng)建一個新目錄,用于存儲Oracle集群件軟件。在配置oracle用戶的環(huán)境接下來,創(chuàng)建一個新目錄,用于存儲時(本部分后面的內(nèi)容),我們將把該目錄的位置指定給$ORA_CRS_HOME環(huán)境變量。如上一部分中所述,以下內(nèi)容假設(shè)目錄將在根文件系統(tǒng)中創(chuàng)建。這樣做是為了簡便起見,不建議將其作為通用做法。通常,這些目錄將在單獨的文件系統(tǒng)中創(chuàng)建。創(chuàng)建目錄之后,您必須為其指定正確的擁有者、組和權(quán)限。在兩個OracleRAC節(jié)點上執(zhí)行以下命令:mkdir-p/opt/app/crschown-Roracle:oinstall/opt/app/crschmod-R775/opt/app/crs在過程結(jié)束時,您將看到以下內(nèi)容:?/opt由根目錄擁有。?/opt/app由根目錄擁有。?/opt/app/crs由具有775權(quán)限的oracle:oinstall擁有。這些權(quán)限是安裝Oracle集群件所需的,并且在安裝過程中將被更改。為OCFS2/集群件創(chuàng)建掛載點現(xiàn)在,讓我們?yōu)镺racle集群文件系統(tǒng)第2版(OCFS2)創(chuàng)建掛載點,它將用于存儲兩個Oracle集群件共享文件。如上一部分中所述,以下內(nèi)容假設(shè)目錄將在根文件系統(tǒng)中創(chuàng)建。這樣做是為了簡便起見,不建議將其作為通用做法。通常,這些目錄將在單獨的文件系統(tǒng)中創(chuàng)建。在兩個OracleRAC節(jié)點上執(zhí)行以下命令:mkdir-p/opt/oradata/orclchown-Roracle:oinstall/opt/oradata/orclchmod-R775/opt/oradata/orcl修改環(huán)境變量在兩個節(jié)點上創(chuàng)建“oracle"UNIX1戶帳戶后,確保以oracle用戶身份登錄,并使用本部分提供的.bash_profile驗證環(huán)境是否設(shè)置得當。注:當您為每個OracleRAC節(jié)點設(shè)置Oracle環(huán)境變量時,請確保為每個RAC節(jié)點分配唯一的OracleSID!對于此示例,我使用:?rac1:ORACLE_SID=orcl1?rac2:ORACLE_SID=orcl2以oracle用戶帳戶登錄到每個節(jié)點:su-oraclevi.bash_profile“oracle用戶帳戶的.bash_profile.bash_profileGetthealiasesandfunctionsif[-f~/.bashrc];then.~/.bashrcfialiasls="ls-FA"exportJAVA_HOME=/usr/local/javaUserspecificenvironmentandstartupprogramsexportORACLE_BASE=/opt/app/oracleexportORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1exportORA_CRS_HOME=/opt/app/crsexportORACLE_PATH=$ORACLE_BASE/common/oracle/sql:.:$ORACLE_HOME/rdbms/adminexportCV_JDKHOME=/usr/local/javaEachRACnodemusthaveauniqueORACLE_SID.(i.e.orcl1,orcl2,…)exportORACLE_SID=orcl1(注意此行,rac2應(yīng)為:exportORACLE_SID=orcl2)exportPATH=.:${JAVA_HOME}/bin:${PATH}:$HOME/bin:$ORACLE_HOME/binexportPATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/binexportPATH=${PATH}:$ORACLE_BASE/common/oracle/binexportORACLE_TERM=xtermexportTNS_ADMIN=$ORACLE_HOME/network/adminexportORA_NLS10=$ORACLE_HOME/nls/dataexportLD_LIBRARY_PATH=$ORACLE_HOME/libexportLD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/libexportLD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/libexportCLASSPATH=$ORACLE_HOME/JREexportCLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlibexportCLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlibexportCLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlibexportTHREADS_FLAG=nativeexportTEMP=/tmpexportTMPDIR=/tmp修改操作系統(tǒng)內(nèi)核參數(shù)和相關(guān)配置以下操作在兩臺節(jié)點均要進行本部分將集中討論針對OracleRAC10g的安裝配置兩臺OracleRACLinux服務(wù)器的步驟。這包括驗證足夠的交換空間、設(shè)置共享內(nèi)存和信號、設(shè)置文件句柄的最大數(shù)量、設(shè)置IP本地端口范圍、設(shè)置對oracle用戶的shell限制、激活系統(tǒng)的所有內(nèi)核參數(shù),以及如何驗證兩個集群節(jié)點的日期和時間是否正確。在本節(jié)中,您將注意到可以使用多種方法來配置(設(shè)置)這些參數(shù)。就本文而言,我將通過把所有命令置于/etc/sysctl.conf文件中使所有更改永久有效(通過重新引導)。對交換空間的考慮因素?安裝Oracle數(shù)據(jù)庫10g第2版至少需要512MB內(nèi)存。(注:安裝期間交換容量不足會導致OracleUniversalInstaller掛起環(huán)或死機”)?要檢查您已經(jīng)具有的內(nèi)存容量,鍵入:#cat/proc/meminfo|grepMemTotalMemTotal:1033116kB?要檢查您已經(jīng)分配的交換容量,鍵入:cat/proc/meminfo|grepSwapTotalSwapTotal:2031608kB?如果您的內(nèi)存少于512MB(介于RAM與SWAP之間),您可以通過創(chuàng)建臨時交換文件添加臨時交換空間。這樣,您就不必使用原始設(shè)備甚至更徹底地重建系統(tǒng)了。以root身份創(chuàng)建一個用作額外交換空間的文件,假設(shè)大小為300MB:ddif=/dev/zeroof=tempswapbs=1kcount=300000現(xiàn)在我們應(yīng)該更改文件的權(quán)限:chmod600tempswap最后我們將該“分區(qū)”格式化為交換分區(qū),并將其添加到交換空間:mke2fstempswapmkswaptempswapswapontempswap設(shè)置共享內(nèi)存共享內(nèi)存通過將通用的結(jié)構(gòu)和數(shù)據(jù)放在共享內(nèi)存段中,使得進程可以對它們進行訪問。這是現(xiàn)有最快的進程間通信(IPC)方式,主要是因為數(shù)據(jù)在進程之間傳遞時沒有涉及內(nèi)核操作。不需要在進程間復(fù)制數(shù)據(jù)。Oracle將共享內(nèi)存用于它的共享全局區(qū)(SGA),這是一個由所有的Oracle備份進程及前臺進程共享的內(nèi)存區(qū)域。為SGA分配足夠的容量對于Oracle的性能非常重要,這是因為它負責保存數(shù)據(jù)庫緩沖區(qū)緩存、共享SQL、訪問路徑,等等。要確定所有共享內(nèi)存的限制,使用以下命令:ipcs-lmSharedMemoryLimitsmaxnumberofsegments=4096maxsegsize(kbytes)=32768maxtotalsharedmemory(kbytes)=8388608minsegsize(bytes)=1設(shè)置SHMMAXSHMMAX參數(shù)定義共享內(nèi)存段的最大大?。ㄒ宰止?jié)為單位)。OracleSGA由共享內(nèi)存組成,且錯誤設(shè)置SHMMAX可能會限制SGA的大小。在設(shè)置SHMMAX時,切記SGA的大小應(yīng)該適合于一個共享內(nèi)存段。SHMMAX設(shè)置不足可能會導致以下問題:ORA-27123:unabletoattachtosharedmemorysegment您可以通過執(zhí)行以下命令確定SHMMAX的值:cat/proc/sys/kernel/shmmax33554432SHMMAX的默認值為32MB。通常,這個值對于配置OracleSGA而言太小了。我通常使用以下方法將SHMMAX參數(shù)設(shè)置為2GB:?可以通過使用以下命令直接更改/proc文件系統(tǒng)(/proc/sys/kernel/shmmax)來更改SHMMAX的默認設(shè)置,而不必重新引導計算機:?#sysctl-wkernel.shmmax=2147483648?然后,通過將該內(nèi)核參數(shù)插入到/etc/sysctl.conf啟動文件中,您可以使這種更改永久有效:?#echo"kernel.shmmax=2147483648">>/etc/sysctl.conf設(shè)置SHMMNI我們現(xiàn)在看一下SHMMNI參數(shù)。這個內(nèi)核參數(shù)用于設(shè)置系統(tǒng)范圍內(nèi)共享內(nèi)存段的最大數(shù)量。該參數(shù)的默認值是4096??梢酝ㄟ^執(zhí)行以下命令確定SHMMNI的值:cat/proc/sys/kernel/shmmni4096SHMMNI的默認設(shè)置應(yīng)足以滿足OracleRAC10g第2版安裝的需要。設(shè)置SHMALL最后,我們來看SHMALL共享內(nèi)存內(nèi)核參數(shù)。該參數(shù)控制系統(tǒng)一次可以使用的共享內(nèi)存總量(以頁為單位)。SHMALL的默認大小為2097152,并可以使用以下命令進行查詢:cat/proc/sys/kernel/shmall2097152SHMALL的默認設(shè)置應(yīng)足以滿足OracleRAC10g第2版安裝的需要。(注:i386平臺上的RedHatLinux中的頁面大小為4,096字節(jié)。但您可以使用bigpages,它支持更大內(nèi)存頁面的配置。)設(shè)置信號至此,您已經(jīng)配置了共享內(nèi)存設(shè)置,接下來將配置信號。對“信號”的最佳描述是,它是用于在共享資源(如共享內(nèi)存)的進程(或進程中的線程)之間提供同步的計數(shù)器。UNIXSystemV支持信號集,其中的每個信號都是一個計數(shù)信號。當應(yīng)用程序請求信號時,它使用“集合”來完成此工作。要確定所有信號限制,使用以下命令:ipcs-lsSemaphoreLimitsmaxnumberofarrays=128maxsemaphoresperarray=250maxsemaphoressystemwide=32000maxopspersemopcall=32semaphoremaxvalue=32767您還可以使用以下命令:cat/proc/sys/kernel/sem2503200032128設(shè)置SEMMSLSEMMSL內(nèi)核參數(shù)用于控制每個信號集合的最大信號數(shù)。Oracle建議將SEMMSL設(shè)置為init.ora文件(適用于Linux系統(tǒng)上所有數(shù)據(jù)庫)中的最大PROCESS實例參數(shù)設(shè)置再加上10。此外,Oracle建議將SEMMSL設(shè)置為不小于100。設(shè)置SEMMNISEMMNI內(nèi)核參數(shù)用于控制整個Linux系統(tǒng)中信號集的最大數(shù)量。Oracle建議將SEMMNI設(shè)置為不小于100。設(shè)置SEMMNSSEMMNS內(nèi)核參數(shù)用于控制整個Linux系統(tǒng)中的信號(而非信號集)的最大數(shù)量。Oracle建議將SEMMNS設(shè)置為系統(tǒng)上每個數(shù)據(jù)庫的PROCESSES實例參數(shù)設(shè)置之和,加上最大的PROCESSES的兩倍,最后為系統(tǒng)上的每個Oracle數(shù)據(jù)庫加上10。使用以下計算式確定可以在Linux系統(tǒng)上分配的信號的最大數(shù)量。它將是以下兩者中較小的一個值:SEMMNS-or-(SEMMSL*SEMMNI)設(shè)置SEMOPMSEMOPM內(nèi)核參數(shù)用于控制每個semop系統(tǒng)調(diào)用可以執(zhí)行的信號操作數(shù)。semop系統(tǒng)調(diào)用(函數(shù))能夠使用一個semop系統(tǒng)調(diào)用完成多個信號的操作。一個信號集可以擁有每個信號集中最大數(shù)量的SEMMSL,因此建議將SEMOPM設(shè)置為等于SEMMSL。Oracle建議將SEMOPM設(shè)置為不小于100。設(shè)置信號內(nèi)核參數(shù)最后,我們來看如何使用一些方法來設(shè)置所有信號參數(shù)。在下文中,我想更改(增加)的唯一參數(shù)是SEMOPM。所有其他的默認設(shè)置可以完全滿足我們的示例安裝。?可以通過使用以下命令直接更改/proc文件系統(tǒng)(/proc/sys/kernel/sem)來更改所有信號設(shè)置的默認設(shè)置,而不必重新引導計算機:#sysctl-wkernel.sem="25032000100128"?然后,通過將該內(nèi)核參數(shù)插入到/etc/sysctl.conf啟動文件中,您可以使這種更改永久有效:?#echo"kernel.sem=25032000100128">>/etc/sysctl.conf設(shè)置文件句柄在配置我們的RedHatLinux服務(wù)器時,確保文件句柄的最大數(shù)量足夠大是非常關(guān)鍵的。文件句柄的設(shè)置表示您在Linux系統(tǒng)上可以打開的文件數(shù)。使用以下命令來確定整個系統(tǒng)中文件句柄的最大數(shù)量:cat/proc/sys/fs/file-max102563Oracle建議將整個系統(tǒng)的文件句柄值至少設(shè)置為65536。?可以通過使用以下命令直接更改/proc文件系統(tǒng)(/proc/sys/fs/file-max)更改文件句柄最大數(shù)量的默認設(shè)置,不必重新引導計算機:?#sysctl-wfs.file-max=65536?然后,通過將該內(nèi)核參數(shù)插入到/etc/sysctl.conf啟動文件中,您可以使這種更改永久有效:#echo"fs.file-max=65536">>/etc/sysctl.conf可以通過使用以下命令查詢文件句柄的當前使用情況:cat/proc/sys/fs/file-nr825065536file-nr文件顯示了三個參數(shù):分配的文件句柄總數(shù)、當前使用的文件句柄數(shù)以及可以分配的最大文件句柄數(shù)。(注:如果需要增大/proc/sys/fsfile-max中的值,請確保正確設(shè)置ulimit。對于2.4.20,通常將其設(shè)置為unlimited。使用ulimit命令3^證ulimit設(shè)置:ulimitunlimited設(shè)置IP本地端口范圍配置系統(tǒng),使本地端口范圍為1024至650000使用以下命令確定ip_local_port_range的值:#cat/proc/sys/net/ipv4/ip_local_port_range3276861000ip_local_port_range的默認值是從32768至U61000的端口。Oracle建議的本地端口范圍是1024到65000。?可以通過使用以下命令直接修改/proc文件系統(tǒng)(/proc/sys/net/ipv4/ip_local_port_range),以更改本地端口范圍的默認設(shè)置,而不必重新引導計算機:#sysctl-wnet.ipv4.ip_local_port_range="102465000"?然后,通過將該內(nèi)核參數(shù)插入到/etc/sysctl.conf啟動文件中,您可以使這種更改永久有效:#echo"net.ipv4.ip_local_port_range=102465000">>/etc/sysctl.conf為Oracle用戶設(shè)置Shell限制要改善Linux系統(tǒng)上的軟件性能,Oracle建議您提高oracle用戶的shell限制:Shell限制limits.conf中的條目硬限制最大打開文件描述符數(shù)nofile6553616384可用于單個用戶的最大進程數(shù)nproc16384要進行這些更改,以root用戶身份運行以下命令:cat>>/etc/security/limits.conf<<EOForaclesoftnproc2047oraclehardnproc16384oraclesoftnofile1024oraclehardnofile65536EOFcat>>/etc/pam.d/login<<EOFsessionrequired/lib/security/pam_limits.soEOF為"oracle"UNI帳戶更新,默認的shell啟動文件。?對于Bourne、Bash或Kornshell,通過運行以下命令將以下行添加到/etc/profile文件:cat>>/etc/profile<<EOFif[\$USER="oracle"];thenif[\$SHELL="/bin/ksh"];thenulimit-p16384ulimit-n65536elseulimit-u16384-n65536fiumask022fiEOF?對于Cshell(csh或tcsh),通過運行以下命令將以下行添加到/etc/csh.login文件:cat>>/etc/csh.login<<EOFif(\$USER=="oracle")thenlimitmaxproc16384limitdescriptors65536endifEOF激活系統(tǒng)的所有內(nèi)核參數(shù)此時,我們已經(jīng)包含了成功進行Oracle安裝和配置所需的所有Linux內(nèi)核參數(shù)。在以上每一部分中,我們對Linux系統(tǒng)進行了配置,將所有內(nèi)核參數(shù)置于/etc/sysctl.conf文件中以將其保存在系統(tǒng)啟動上?,F(xiàn)在,我們可以重新啟動以確保所有這些參數(shù)在內(nèi)核中進行設(shè)置,或者,我們只需通過以root用戶身份運行以下命令來“運行”/etc/sysctl.conf文件。請在集群的每一個節(jié)點上執(zhí)行該操作!sysctl-pnet.ipv4.ip_forward=0net.ipv4.conf.default.rp_filter=1net.ipv4.conf.default.accept_source_route=0kernel.sysrq=0kernel.core_uses_pid=1net.core.rmem_default=262144net.core.wmem_default=262144net.core.rmem_max=262144net.core.wmem_max=262144kernel.shmmax=2147483648kernel.sem=25032000100128fs.file-max=65536net.ipv4.ip_local_port_range=102465000在所有的集群節(jié)點上設(shè)置正確的日期和時間在安裝Oracle集群件、數(shù)據(jù)庫以及隨附CD期間,OracleUniversalInstaller(OUI)將首先將軟件安裝到運行該安裝程序的本地節(jié)點(即rac1)。然后,將該軟件以遠程方式復(fù)制到集群中的其余節(jié)點(即rac2)。在遠程復(fù)制過程中,OUI將在每個遠程節(jié)點上執(zhí)行UNIX"tar命令,以提取進行了存檔和復(fù)制的文件。如果執(zhí)行安裝的節(jié)點上的日期和時間大于其要進行復(fù)制的節(jié)點上的日期和時間,那么OUI將在“tar中引發(fā)一個錯誤,以指示其在試圖提取帶有時間戳的文件時失敗。Errorwhilecopyingdirectory/opt/app/crswithexcludefilelist'null'tonodes'rac2'.[PRKC-1002:Allthesubmittedcommandsdidnotexecutesuccessfully]rac2:/bin/tar:./bin/lsnodes:timestamp2006-09-1309:21:34is735sinthefuture/bin/tar:./bin/olsnodes:timestamp2006-09-1309:21:34is735sinthefuture...(moreerrorsonthisnode)請注意,盡管這看起來像OUI中一個嚴重的錯誤,但您完全可以將其看作是一個警告而忽略?!皌a嗡令DOES確實提取了文件;然而,當您在遠程節(jié)點上執(zhí)行文件列表時(使用ls-l),它們將缺少時間字段,直到服務(wù)器上的時間大于該文件的時間戳。在啟動以上任何一個所述安裝之前,確保盡可能將集群的每個成員節(jié)點設(shè)置為相同的時間和日期。由于兩個OracleRAC節(jié)點使用相同的參考NetworkTimeProtocol服務(wù)器,因此Oracle強烈建議使用多數(shù)操作系統(tǒng)的NetworkTimeProtocol功能來執(zhí)行該操作。然而,訪問NetworkTimeProtocol服務(wù)器并非始終可用。在這種情況下,為集群中的節(jié)點手動設(shè)置日期和時間,確保要從其中執(zhí)行軟件安裝的節(jié)點(rac1)的時間和日期小于集群中所有其他節(jié)點(rac2)。我一般使二者之間相差20秒,如以下示例所示:設(shè)置rac1的日期和時間:date-s"6/25/200723:00:00"設(shè)置rac2的日期和時間:date-s"6/25/200723:00:20"本文中所述的雙節(jié)點RAC配置沒有使用NetworkTimeProtocol服務(wù)器。配置hangcheck-timer內(nèi)核模塊在集群中的兩個OracleRAC節(jié)點上執(zhí)行以下配置過程!Oracle9i第1版(9.0.1)和Oracle9i第2版(9.2.0.1)使用一個稱為watchdogd的用戶空間監(jiān)視后臺程序監(jiān)視集群的運行狀況,并在出現(xiàn)故障時重新啟動RAC節(jié)點。從Oracle9i第2版(9.2.0.2)開始(在Oracle10g第2版中仍然存在),一個稱為hangcheck-timer的Linux內(nèi)核模塊取代了監(jiān)視后臺程序,該模塊更好地解決了可用性和可靠性問題。它將hang-check計時器加載到Linux內(nèi)核中并檢查系統(tǒng)是否掛起。它將設(shè)置一個計時器,并在特定的時間量之后檢查該計時器。有一個用于檢查掛起情況的可配置閾值,如果超過該閾值,計算機將重新引導。盡管Oracle集群件(集群管理器)操作不需要hangcheck-timer模塊,但Oracle強烈建議使用它。hangcheck-timer.ko模塊hangcheck-timer模塊使用了一個基于內(nèi)核的計時器,該計時器周期性地檢查系統(tǒng)任務(wù)調(diào)度程序來捕獲延遲,從而確定系統(tǒng)的運行狀況。如果系統(tǒng)掛起或暫停,則計時器重置該節(jié)點。hangcheck-timer模塊使用時間戳計數(shù)器(TSC)CPU寄存器,該寄存器每接收到一個時鐘信號就將計數(shù)加一。安裝hangcheck-timer.ko模塊hangcheck-timer通常僅與Oracle一同提供,但是,現(xiàn)在從內(nèi)核版本2.4.9-e.12起,該模塊與RedHatLinuxAS包含在一起。hangcheck-timer應(yīng)當已包含在內(nèi)。使用以下命令來確認您已經(jīng)包含了該模塊:find/lib/modules-name"hangcheck-timer.ko"/lib/modules/2.6.9-55.0.0.0.2.ELhugemem/kernel/drivers/char/hangcheck-timer.ko/lib/modules/2.6.9-55.0.0.0.2.ELsmp/kernel/drivers/char/hangcheck-timer.ko/lib/modules/2.6.9-55.0.0.0.2.EL/kernel/drivers/char/hangcheck-timer.ko在以上輸出中,我們關(guān)注的是/lib/modules/2.6.9-55.0.0.0.2.ELhugemem/kernel/drivers/char目錄中的hangcheck計時器對象(hangcheck-timer.ko),因為這是我們運行的核心。配置并加載hangcheck-timer模塊hangcheck-timer模塊有兩個關(guān)鍵的參數(shù):?hangcheck-tick:此參數(shù)定義了系統(tǒng)運行狀況檢查的間隔時間。默認值為60秒;Oracle建議將它設(shè)置為30秒。?hangcheck-margin:此參數(shù)定義了hangcheck-timer在重置RAC節(jié)點前所容許的最大掛起延遲。它定義了以秒為單位的誤差幅度。默認值為180秒;Oracle建議將它設(shè)置為180秒。注:這兩個hangcheck-timer模塊參數(shù)表示在該模塊重置系統(tǒng)前RAC節(jié)點必須掛起的時長。當以下條件為真時將會重置節(jié)點:systemhangtime>(hangcheck_tick+hangcheck_margin)配置Hangcheck內(nèi)核模塊參數(shù)每次加載hangcheck-timer內(nèi)核模塊(手動加載或由Oracle加載)時,它都需要知道對我們剛剛討論的兩個參數(shù)(hangcheck-tick和hangcheck-margin)所使用的值。這些值需要在每次重新引導Linux服務(wù)器后可用。為此,在/etc/modprobe.conf文件中創(chuàng)建一個具有正確值的條目,如下所示:su-echo"optionshangcheck-timerhangcheck_tick=30hangcheck_margin=180">>/etc/modprobe.conf每次加載hangcheck-timer內(nèi)核模塊時,它將使用由我在/etc/modprobe.conf文件中創(chuàng)建的條目定義的值。手動加載Hangcheck內(nèi)核模塊以進行測試Oracle負責在需要時加載hangcheck-timer內(nèi)核模塊。因此,不必在任何啟動文件(如/etc/rc.local)中執(zhí)行hangcheck-timer內(nèi)核模塊的modprobe或insmod。我繼續(xù)在/etc/rc.local文件中包含hangcheck-timer內(nèi)核模塊的modprobe完全只是出于個人習慣。有朝一日我將戒掉這個習慣,但請注意,啟動過程中包含hangcheck-timer內(nèi)核模塊的modprobe并無害處。echo"/sbin/modprobehangcheck-timer">>/etc/rc.local(注:您不必在每次重新引導后使用modprobe或insmod手動加載hangcheck-timer內(nèi)核模塊。Oracle將在需要時自動加載hangcheck-timer模塊。)現(xiàn)在,為了測試hangcheck-timer內(nèi)核模塊以驗證它是否選取我們在/etc/modprobe.conf文件中定義的正確參數(shù),使用modprobe命令。盡管可以通過向其傳遞相應(yīng)的參數(shù)(如insmodhangcheck-timerhangcheck_tick=30hangcheck_margin=180)加載hangcheck-timer內(nèi)核模塊,但我們需要驗證它是否選取了我們在/etc/modprobe.conf文件中設(shè)置的選項。要手動加載hangcheck-timer內(nèi)核模塊并驗證它是否使用在/etc/modprobe.conf文件中定義的正確值,運行以下命令:su-modprobehangcheck-timergrepHangcheck/var/log/messages|tail-2Jun2518:18:31rac1kernel:Hangcheck:startinghangchecktimer0.9.0(tickis30seconds,marginis180seconds).Jun2518:18:31raclkernel:Hangcheck:Usingmonotonic_clock().4.7為遠程訪問配置節(jié)點在集群中的兩個OracleRAC節(jié)點上執(zhí)行以下配置過程!在可以安裝并使用Oracle真正應(yīng)用集群之前,您必須為所有集群節(jié)點上的“oracle”UN用戶帳戶配置安全shell(RSH)或遠程shell(RSH)。此處的目的是為“oracle"UNM^帳戶設(shè)置用戶等效性。利用用戶等效性(Userequivalence),"oracle"UNIX用戶帳戶無需口令就可訪問集群中的所有其他節(jié)點(運行命令和復(fù)制文件)。使用SSH或RSH(其中SSH是首選方法)都可實現(xiàn)此配置。Oracle在10g第1版中增加了將SSH工具套件用于設(shè)置用戶等效項的支持。在Oracle數(shù)據(jù)庫10g之前,用戶等效性必須使用遠程shell進行配置。注意,如果10g中的OracleUniversalInstaller沒有檢測出存在安全shell工具(ssh和scp),那么它將嘗試使用遠程shell工具(rsh和rcp)。那么,我們?yōu)槭裁幢仨氃O(shè)置用戶等效性?安裝Oracle集群件和Oracle數(shù)據(jù)庫軟件只在RAC集群中的一個節(jié)點上進行。在特定節(jié)點上運行OracleUniversalInstaller(OUI)時,它將使用ssh和scp命令(如果使用遠程shell,則用rsh和rcp命令)在集群內(nèi)的所有其他節(jié)點上運行遠程命令并向這些節(jié)點復(fù)制文件(Oracle軟件)。運行OUI(runinstaller)的節(jié)點上的“oracle"UNIX1戶帳戶必須受到您的RAC集群中其他所有節(jié)點的信任。這意味著,相對于集群中的所有其他Linux服務(wù)器,您必須能夠在要從其中運行OUI的Linux服務(wù)器上運行安全shell命令(ssh或scp)或遠程shell命令(rsh和rcp),而不會收到輸入口令的提示。注意,普通RAC操作無需使用安全shell或遠程shell。然而,對于RAC和補丁集安裝以及創(chuàng)建集群數(shù)據(jù)庫時,必須啟用該配置。第一步是確定使用哪種遠程訪問方法一安全shell還是遠程shello二者各有利弊。例如,遠程shell非常易于安裝和配置。它的構(gòu)造只需很少的幾步,并當?shù)卿浀绞苄湃蔚墓?jié)點(要從其中執(zhí)行安裝的節(jié)點)后,其在終端會話中始終可用。然而,在安裝和任何修補過程中,到遠程節(jié)點的連接不安全。另一方面,安全shell可在安裝和修補時提供安全連接,但是設(shè)置步驟繁瑣。此外,每次oracle用戶登錄到受信任的節(jié)點后,都需要在終端會話中啟用該方法。官方Oracle文檔僅給出了設(shè)置安全shell的步驟,并將其作為首選方法。在以下兩個部分對于配置用戶等效性的這兩種方法進行了介紹:?使用安全Shell方法?使用遠程Shell方法使用安全Shell方法本部分將介紹如何配置OpenSSH版本3。要確定是否SSH已安裝并運行,可輸入以下命令:#pgrepsshd2808如果SSH正在運行,那么該命令的響應(yīng)將是一個進程ID編號(一個或多個)列表。請在集群中的兩個OracleRAC節(jié)點上運行該命令,以驗證SSH后臺程序已安裝并正在運行!在兩個OracleRAC節(jié)點上創(chuàng)建RSA和DSA密鑰配置SSH的第一步是在集群中的兩個OracleRAC節(jié)點上創(chuàng)建RSA和DSA密鑰對。執(zhí)行該操作的命令將為RSA和DSA各創(chuàng)建一個公共密鑰和一個私有密鑰(每個節(jié)點總共4個密鑰)。然后,需要將RSA和DSA公共密鑰的內(nèi)容復(fù)制到一個授權(quán)密鑰文件中,之后將該文件分發(fā)到集群中的兩個OracleRAC節(jié)點。使用以下步驟創(chuàng)建RSA和DSA密鑰對。請注意,集群中的兩個OracleRAC節(jié)點上均需要完成這些步驟:1.以“oracle”UNX^帳號進行登錄。#su-oracle.如果必要,在“oracled戶的主目錄中創(chuàng)建.ssh目錄,并在其上設(shè)置正確的權(quán)限:$mkdir-p~/.ssh$chmod700~/.ssh.輸入以下命令,為版本3的SSH協(xié)議生成RSA密鑰對(公共密鑰和私有密鑰):$/usr/bin/ssh-keygen-trsa在提不符下:o接受針對密鑰文件的默認位置。o輸入并確認口令短語。該口令應(yīng)當與"oracle”UNIX戶帳戶口令不同,但這不是必需的。該命令會將公共密鑰寫入~/.ssh/id_rsa.pub文件,將私有密鑰寫入~/.ssh/id_rsa文件。注意,始終不要將密鑰分發(fā)給任何人!.輸入以下命令,為版本3的SSH協(xié)議生成DSA密鑰對(公共密鑰和私有密鑰):$/usr/bin/ssh-keygen-tdsa在提不符下:o接受針對密鑰文件的默認位置。o輸入并確認口令短語。該口令應(yīng)當與"oracle”UNIX戶帳戶口令不同,但這不是必需的。該命令會將公共密鑰寫入~/.ssh/id_dsa.pub文件,將私有密鑰寫入~/.ssh/id_dsa文件。注意,始終不要將密鑰分發(fā)給任何人!.為集群中的兩個OracleRAC節(jié)點重復(fù)以上步驟?,F(xiàn)在,每個OracleRAC節(jié)點都包含用于RSA和DSA的公共和私有密鑰,您需要在其中一個節(jié)點上創(chuàng)建一個授權(quán)密鑰文件。授權(quán)密鑰文件只是一個包含每個人(每個節(jié)點)的RSA和DSA公共密鑰的文件。在授權(quán)密鑰文件包含了所有公共密鑰后,將其分發(fā)至集群中的所有其他節(jié)點。在集群中的其中一個節(jié)點上完成以下步驟,然后分發(fā)授權(quán)密鑰文件。考慮到本文的目的,我將使用rac1:1.首先,確定該節(jié)點上是否已經(jīng)存在授權(quán)密鑰文件(~/.ssh/authorized_keys)。在多數(shù)情況下,該文件是不存在的,因為本文假設(shè)您使用的是新安裝。如果該文件不存在,那么現(xiàn)在開始創(chuàng)建:$touch~/.ssh/authorized_keys$cd~/.ssh$ls-l*.pub-rw-r--r--1oracleoinstall603Aug3123:40id_dsa.pub-rw-r--r--1oracleoinstall223Aug3123:36id_rsa.pub以上的列表應(yīng)當顯示前一部分中創(chuàng)建的id_rsa.pub和id_dsa.pub公共密鑰。在該步驟中,使用SSH將~/.ssh/id_rsa.pub和~/.ssh/id_dsa.pub公共密鑰的內(nèi)容從集群中的兩個OracleRAC節(jié)點復(fù)制到剛才創(chuàng)建的授權(quán)密鑰文件中(~/.ssh/authorized_keys)。同樣,我將通過rac1進行操作。系統(tǒng)將提示您為每個訪問的OracleRAC節(jié)點輸入“oracle”UNI用戶帳戶口令。注意,在使用SSH訪問您所在的節(jié)點(racl)時,第一次將提示輸入“oracle"UNIX1戶帳戶口令。第二次嘗試訪問該節(jié)點時,將提示輸入用于解鎖私有密鑰的口令短語。對于任何其他節(jié)點,系統(tǒng)將始終詢問“oracle”UNI用戶帳戶口令。以下示例將從rac1運行,假設(shè)這是個雙節(jié)點集群,即節(jié)點rac1和rac2:$sshrac1cat~/.ssh/id_rsa.pub>>~/.ssh/authorized_keysTheauthenticityofhost'rac1(192.168.1.100)'can'tbeestablished.RSAkeyfingerprintis61:8a:f9:9e:28:a2:b7:d3:70:8d:dc:76:ca:d9:23:43.Areyousureyouwanttocontinueconnecting(yes/no)?yesWarning:Permanentlyadded'rac1,192.168.1.100'(RSA)tothelistofknownhosts.oracle@rac1'spassword:xxxxx$sshrac1cat~/.ssh/id_dsa.pub>>~/.ssh/authorized_keysEnterpassphraseforkey'/home/oracle/.ssh/id_rsa':xxxxx$sshrac2cat~/.ssh/id_rsa.pub>>~/.ssh/authorized_keysTheauthenticityofhost'rac2(192.168.1.101)'can'tbeestablished.RSAkeyfingerprintis84:2b:bd:eb:31:2c:23:36:55:c2:ee:54:d2:23:6a:e4.Areyousureyouwanttocontinueconnecting(yes/no)?yesWarning:Permanentlyadded'rac2,192.168.1.101'(RSA)tothelistofknownhosts.oracle@rac2'spassword:xxxxx$sshrac2cat~/.ssh/id_dsa.pub>>~/.ssh/authorized_keysoracle@rac2'spassword:xxxxx注:第一次使用SSH從特定系統(tǒng)連接到節(jié)點時,您可能會看見一條類似如下所示的消息:Theauthenticityofhost'rac1(192.168.1.100)'can'tbeestablished.RSAkeyfingerprintis61:8a:f9:9e:28:a2:b7:d3:70:8d:dc:76:ca:d9:23:43.Areyousureyouwanttocontinueconnecting(yes/no)?yes在提示符下輸入yes進行確認。如果從該系統(tǒng)連接到相同的節(jié)點,您將不會再次看到該消息。此時,在rac1上,我們在授權(quán)密鑰文件(~/.ssh/authorized_keys)中獲得了來自集群RSA和DSA公共密鑰內(nèi)容。我們現(xiàn)在將其復(fù)制到集群中的其余節(jié)點。在這個雙節(jié)點集群示例中,唯一剩下的節(jié)點就是rac2。使用scp命令將授權(quán)密鑰文件復(fù)制到集群中的其余所有節(jié)點:$scp~/.ssh/authorized_keysrac2:.ssh/authorized_keysoracle@rac2'spassword:xxxxxauthorized_keys100%16521.6KB/s00:00通過登錄到節(jié)點并運行以下命令,為集群中的兩個OracleRAC節(jié)點更改授權(quán)密鑰文件的權(quán)限:$chmod600~/.ssh/authorized_keys此時,如果在另一個節(jié)點上使用ssh登錄或運行命令,則會提示您輸入在創(chuàng)建DSA密鑰時指定的口令短語。例如,在rac1中測試以下內(nèi)容:$sshrac1hostnameEnterpassphraseforkey'/home/oracle/.ssh/id_rsa':xxxxxrac1$sshrac2hostnameEnterpassphraseforkey'/home/oracle/.ssh/id_rsa':xxxxxrac2注:如果除主機名外,您還看到任何其他消息或文本,則Oracle安裝可能失敗了。進行必要的更改,以確保您在輸入這些命令時只有主機名顯示。您應(yīng)當確保修改生成任何輸出或詢問任何問題的登錄腳本(一個或多個)的任何部分,以便它們僅當shell是交互式shell時生效。為當前Shell會話啟用SSH用戶等效性運行OUI時,需要不用提示輸入口令短語就可運行安全shell工具命令(ssh和scp)。盡管集群中的兩個OracleRAC節(jié)點上都配置了SSH,使用安全shell工具命令時仍會提示輸入口令短語。因此,在運行OUI之前,您需要為打算從其中運行OUI的終端會話啟用用戶等效性??紤]到本文目的,所有Oracle安裝都將在rac1中進行。在嘗試運行OUI之前,需要在任何新的終端shell會話中啟用用戶等效性。如果您注銷并又重新登錄將從其中執(zhí)行Oracle安裝的節(jié)點,那么您必須為終端shell會話啟用用戶等效性,因為這不是默認設(shè)置。要為當前終端shell會話啟用用戶等效性,執(zhí)行以下步驟:1.以“oracleUNX^帳戶登錄希望從其中運行OUI的節(jié)點(1.以“oracle#su-oracle輸入以下命令:$exec/usr/bin/ssh-agent$SHELL$/usr/bin/ssh-addEnterpassphrasefor/home/oracle/.ssh/id_rsa:xxxxxIdentityadded:/home/oracle/.ssh/id_rsa(/home/oracle/.ssh/id_rsa)Identityadded:/home/oracle/.ssh/id_dsa(/home/oracle/.ssh/id_dsa)在提示符下,為生成的每個密鑰輸入口令短語。如果SSH配置正確,您將能夠從該終端對話使用ssh和scp命令,而無需提供口令或口令短語。$sshrac1"date;hostname"MonJun2518:24:23EDT2007rac1$sshrac2"date;hostname"MonJun2518:26:15EDT2007rac2注:以上命令應(yīng)顯示兩個OracleRAC節(jié)點上設(shè)置的日期及其主機名。如果任何節(jié)點提示輸入口令或口令短語,則驗證位于該節(jié)點上的~/.ssh
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年北京達博有色金屬焊料有限責任公司招聘備考題庫參考答案詳解
- 2026年關(guān)于為山東省人民檢察院公開招聘聘用制書記員的備考題庫參考答案詳解
- 2026年壽光市第二中學招聘備考題庫完整答案詳解
- 2026年云南省醫(yī)藥普洱有限公司招聘備考題庫及答案詳解參考
- 2025年尋烏縣第三人民醫(yī)院公開招聘衛(wèi)生專業(yè)技術(shù)人員(勞動合同制)備考題庫及答案詳解參考
- 2026年北海市中醫(yī)醫(yī)院醫(yī)療備考題庫科工作人員招聘備考題庫及完整答案詳解1套
- 2026年大瀝實驗中學招聘備考題庫及一套答案詳解
- 2026年中鐵現(xiàn)代物流科技股份有限公司太原分公司招聘備考題庫帶答案詳解
- 2026年中國棉花棉紗交易中心有限責任公司招聘備考題庫參考答案詳解
- 2026年關(guān)于為山東鐵路檢察機關(guān)公開招聘聘用制書記員的備考題庫參考答案詳解
- 2026海南交通投資控股公司秋招面筆試題及答案
- 2026 年中職機械基礎(chǔ)(機械基礎(chǔ))試題及答案
- 膽囊癌課件教學課件
- 2025年昆明市呈貢區(qū)城市投資集團有限公司及下屬子公司第二批招聘(11人)考試備考題庫附答案
- “青苗筑基 浙里建證”浙江省建設(shè)投資集團2026屆管培生招聘30人備考核心題庫及答案解析
- 江蘇百校大聯(lián)考2026屆高三語文第一學期期末學業(yè)質(zhì)量監(jiān)測試題含解析
- 代還按揭協(xié)議書
- 2026年失眠患者睡眠調(diào)理指南
- 2026年盤錦職業(yè)技術(shù)學院單招職業(yè)適應(yīng)性測試題庫及答案詳解一套
- 2025年10月自考00610高級日語(二)試題及答案
- 2026年包頭鐵道職業(yè)技術(shù)學院單招職業(yè)技能考試題庫帶答案解析
評論
0/150
提交評論