參考文檔:html
https://docs.oracle.com/en/database/oracle/oracle-database/12.2/cwlin/index.htmlnode
https://docs.oracle.com/en/database/oracle/oracle-database/12.2/ladbi/index.htmllinux
https://oracle-base.com/articles/linux/udev-scsi-rules-configuration-in-oracle-linuxsql
建設背景:oracle
建設本文檔的目的在於詳細梳理12c RAC靜默安裝的流程,結合官方文檔儘量解釋安裝過程當中的各類操做的原理,提供不一樣的存儲配置方法和參數修改方法,最後造成一套完整的12c RAC靜默安裝步驟以便於從此參考。app
安裝流程:spa
1、軟件下載.net
下載 linuxx64_12201_database.zip 和 linuxx64_12201_grid_home.zip 就能夠了,而後上傳至節點1的任意目錄。
2、準備工做
徹底參考《Oracle 12c RAC 安裝文檔》的2、3、4、五部分。
3、靜默安裝GRID
這裏有個小坑,12c的GRID安裝再也不會按你設置的grid用戶的$ORACLE_HOME變量來做爲GI的家目錄,而是直接將你GRID軟件的解壓目錄做爲家目錄,所以你須要將linuxx64_12201_grid_home.zip拷貝至grid用戶的$ORACLE_HOME,本文中就是/u01/12.2.0/grid,而後:
# chown grid.oinstall linuxx64_12201_grid_home.zip # su - grid $ unzip linuxx64_12201_grid_home.zip --這樣在進行安裝時就會將你設置的grid用戶的$ORACLE_HOME做爲GI家目錄了。
--這裏還須要先裝下cvuqdisk包,這個包存在於解壓後的/home/oracle/database/rpm/目錄下: cp /home/oracle/database/rpm/cvuqdisk-1.0.10-1.rpm /root --使用root rpm安裝cvuqdisk rpm -ivh cvuqdisk-1.0.10-1.rpm --以上包的安裝須要在2節點都執行,使用scp將cvuqdisk包傳至節點二安裝。
接下來生成響應文件,主要有2種方式,一是先使用圖形界面進行自定義設置,而後到最後一步安裝時不選擇next而選擇「Save Response File」,以下圖所示的界面:
可是須要特別說明的是這樣生成的響應文件是不能直接用的.......是很坑,但也算減小了一部分的工做量。二就是徹底本身編一個響應文件。
不管哪一種方式,標準的一個GRID安裝響應文件應當以下:
# cat /u01/12.2.0/grid/grid_leo.rsp |grep -v "^$"|grep -v "^#" oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v12.2.0 INVENTORY_LOCATION=/u01/app/oraInventory --Oracle軟件產品目錄 oracle.install.option=CRS_CONFIG --代表是進行GRID安裝 ORACLE_BASE=/u01/app/grid --GRID ORACLE_BASE目錄 oracle.install.asm.OSDBA=asmdba - oracle.install.asm.OSOPER=asmoper oracle.install.asm.OSASM=asmadmin oracle.install.crs.config.gpnp.scanName=keguan-scanip --集羣scan名稱 oracle.install.crs.config.gpnp.scanPort=1521 oracle.install.crs.config.ClusterConfiguration=STANDALONE --表示進行stand alone集羣安裝,注意並非stand alone節點 oracle.install.crs.config.configureAsExtendedCluster=false oracle.install.crs.config.memberClusterManifestFile= oracle.install.crs.config.clusterName=keguan-cluster --集羣名稱 oracle.install.crs.config.gpnp.configureGNS=false oracle.install.crs.config.autoConfigureClusterNodeVIP=false oracle.install.crs.config.gpnp.gnsOption= oracle.install.crs.config.gpnp.gnsClientDataFile= oracle.install.crs.config.gpnp.gnsSubDomain= oracle.install.crs.config.gpnp.gnsVIPAddress= oracle.install.crs.config.sites= oracle.install.crs.config.clusterNodes=node1:node1-vip:HUB,node2:node2-vip:HUB --表示在node1和node2安裝集羣 oracle.install.crs.config.networkInterfaceList=eth0:20.20.72.0:1,eth1:10.10.10.0:5 --表示公網和私網網段 oracle.install.asm.configureGIMRDataDG=true --表示單獨爲mgmtdb數據庫準備磁盤組 oracle.install.crs.config.storageOption= oracle.install.crs.config.useIPMI=false oracle.install.crs.config.ipmi.bmcUsername= oracle.install.crs.config.ipmi.bmcPassword= oracle.install.asm.storageOption=ASM oracle.install.asmOnNAS.ocrLocation= oracle.install.asmOnNAS.configureGIMRDataDG=false oracle.install.asmOnNAS.gimrLocation= oracle.install.asm.SYSASMPassword=oracle --sysasm密碼 oracle.install.asm.diskGroup.name=OCR oracle.install.asm.diskGroup.redundancy=EXTERNAL oracle.install.asm.diskGroup.AUSize=4 oracle.install.asm.diskGroup.FailureGroups= oracle.install.asm.diskGroup.disksWithFailureGroupNames=/dev/mapper/RAC_OCR, oracle.install.asm.diskGroup.disks=/dev/mapper/RAC_OCR oracle.install.asm.diskGroup.quorumFailureGroupNames= oracle.install.asm.diskGroup.diskDiscoveryString=/dev/mapper/* oracle.install.asm.monitorPassword=oracle --表示ASMSNMP帳戶的密碼 oracle.install.asm.gimrDG.name=ARCHIVE --表示單獨爲mgmtdb數據庫準備的磁盤組名爲ARCHIVE(由於我把mgmtdb的磁盤組和歸檔磁盤組放在一塊兒了) oracle.install.asm.gimrDG.redundancy=EXTERNAL oracle.install.asm.gimrDG.AUSize=4 oracle.install.asm.gimrDG.FailureGroups= oracle.install.asm.gimrDG.disksWithFailureGroupNames=/dev/mapper/RAC_ARCHIVE, --最後的逗號記得千萬不要刪掉 oracle.install.asm.gimrDG.disks=/dev/mapper/RAC_ARCHIVE oracle.install.asm.gimrDG.quorumFailureGroupNames= oracle.install.asm.configureAFD=true oracle.install.crs.configureRHPS=false oracle.install.crs.config.ignoreDownNodes=false oracle.install.config.managementOption=NONE oracle.install.config.omsHost= oracle.install.config.omsPort=0 oracle.install.config.emAdminUser= oracle.install.config.emAdminPassword= oracle.install.crs.rootconfig.executeRootScript=false oracle.install.crs.rootconfig.configMethod= oracle.install.crs.rootconfig.sudoPath= oracle.install.crs.rootconfig.sudoUserName= oracle.install.crs.config.batchinfo= oracle.install.crs.app.applicationAddress=
--使用grid用戶執行如下命令進行GRID靜默安裝: $ /u01/12.2.0/grid/gridSetup.sh -silent -responseFile /u01/12.2.0/grid/grid_leo.rsp -skipPrereqs --由於一些可有可無的的預檢測失敗會致使安裝終止,所以禁止Prereqs,前提是你的準備工做作的足夠標準。 --若是你認爲你的準備不夠好,那麼建議不加-skipPrereqs執行一下以便肯定有哪些檢查失敗,有則改之無則加勉。
執行完畢後根據提示依次在兩個節點執行/u01/app/oraInventory/orainstRoot.sh和/u01/12.2.0/grid/root.sh,第一個腳本基本秒完成,第二個腳本是完成集羣配置的,用時很長,注意查看其日誌獲知集羣配置的進度。
出現以下信息時表示執行完畢:
最後,靜默安裝GRID和圖形界面安裝不同的地方還在於,在兩節點運行完腳本後,你還須要繼續按GI安裝的提示執行以下命令來完成mgmtdb的配置:
/u01/12.2.0/grid/gridSetup.sh -executeConfigTools -responseFile /u01/12.2.0/grid/grid_leo.rsp -silent --另開窗口查看日誌(注意安裝提示的日誌位置只顯示了目錄,所以你須要本身找到以下格式的日誌文件): tail -f /u01/app/oraInventory/logs/GridSetupActions2018-08-15_04-44-29PM/gridSetupActions2018-08-15_04-44-29PM.log
上圖爲執行完畢後的截圖,雖然顯示一些配置失敗,但從日誌來看這些失敗並不嚴重,所以咱們忽略便可。
此時再使用crsctl stat res -t查看發現mgmtdb的狀態已經由OFFLINE變爲了ONLINE。
4、建立ASM磁盤組
su - grid sqlplus / as sysasm set lines 200 col path for a40 select group_number,header_status,state,name,path,redundancy from v$asm_disk; select group_number,name,state,COMPATIBILITY,DATABASE_COMPATIBILITY from v$asm_diskgroup; create diskgroup DATA external redundancy disk '/dev/mapper/RAC_DATA' ATTRIBUTE 'compatible.asm' = '12.2'; create diskgroup ARCHIVE external redundancy disk '/dev/mapper/RAC_ARCHIVE' ATTRIBUTE 'compatible.asm' = '12.2'; create diskgroup REDO external redundancy disk '/dev/mapper/REDO_01','/dev/mapper/REDO_02' ATTRIBUTE 'compatible.asm' = '12.2';
5、靜默安裝DATABASE軟件
同GRID安裝時同樣,你有2種方式生成響應文件,一是使用圖形界面自定義到安裝時選擇生成響應文件而不繼續安裝,二是直接本身編輯。
完整的響應文件應當以下:
cat /home/oracle/db.rsp |grep -v "^$"|grep -v "^#" oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v12.2.0 oracle.install.option=INSTALL_DB_SWONLY --只安裝數據庫,隨後單獨dbca建庫 UNIX_GROUP_NAME=oinstall INVENTORY_LOCATION=/u01/app/oraInventory --oracle產品目錄 ORACLE_HOME=/u01/app/oracle/product/12.2.0/db_1 ORACLE_BASE=/u01/app/oracle oracle.install.db.InstallEdition=EE --Enterprise Edition,選擇企業版安裝 oracle.install.db.OSDBA_GROUP=dba oracle.install.db.OSOPER_GROUP=oper oracle.install.db.OSBACKUPDBA_GROUP=dba oracle.install.db.OSDGDBA_GROUP=dba oracle.install.db.OSKMDBA_GROUP=dba oracle.install.db.OSRACDBA_GROUP=dba oracle.install.db.rac.configurationType= oracle.install.db.CLUSTER_NODES=node1,node2 --RAC節點 oracle.install.db.isRACOneInstall=false oracle.install.db.racOneServiceName= oracle.install.db.rac.serverpoolName= oracle.install.db.rac.serverpoolCardinality=0 oracle.install.db.config.starterdb.type=GENERAL_PURPOSE oracle.install.db.config.starterdb.globalDBName= --由於是INSTALL_DB_SWONLY,只裝軟件不建庫,所以許多項留白。 oracle.install.db.config.starterdb.SID= oracle.install.db.ConfigureAsContainerDB=false oracle.install.db.config.PDBName= oracle.install.db.config.starterdb.characterSet= oracle.install.db.config.starterdb.memoryOption=false oracle.install.db.config.starterdb.memoryLimit= oracle.install.db.config.starterdb.installExampleSchemas=false oracle.install.db.config.starterdb.password.ALL= oracle.install.db.config.starterdb.password.SYS= oracle.install.db.config.starterdb.password.SYSTEM= oracle.install.db.config.starterdb.password.DBSNMP= oracle.install.db.config.starterdb.password.PDBADMIN= oracle.install.db.config.starterdb.managementOption=DEFAULT oracle.install.db.config.starterdb.omsHost= oracle.install.db.config.starterdb.omsPort=0 oracle.install.db.config.starterdb.emAdminUser= oracle.install.db.config.starterdb.emAdminPassword= oracle.install.db.config.starterdb.enableRecovery=false oracle.install.db.config.starterdb.storageType= oracle.install.db.config.starterdb.fileSystemStorage.dataLocation= oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation= oracle.install.db.config.asm.diskGroup= oracle.install.db.config.asm.ASMSNMPPassword= MYORACLESUPPORT_USERNAME= MYORACLESUPPORT_PASSWORD= SECURITY_UPDATES_VIA_MYORACLESUPPORT=false DECLINE_SECURITY_UPDATES=true PROXY_HOST= PROXY_PORT= PROXY_USER= PROXY_PWD= COLLECTOR_SUPPORTHUB_URL=
--執行如下命令進行靜默安裝數據庫軟件:
./runInstaller -silent -responseFile /home/oracle/db.rsp -ignoreSysPrereqs -skipPrereqs
6、靜默執行DBCA建庫
先看下dbca時須要設置密碼的帳戶:
而後編輯響應文件:
$ cat /home/oracle/dbca.rsp |grep -v "^$"|grep -v "^#" responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v12.2.0 gdbName=orcl sid=orcl databaseConfigType=RAC RACOneNodeServiceName= policyManaged=false createServerPool=false serverPoolName= cardinality= force=false pqPoolName= pqCardinality= createAsContainerDatabase=false --表示不使用CDB/PDB,若是有須要請生成安裝CDB/PDB的響應文件 numberOfPDBs=0 pdbName= useLocalUndoForPDBs=true pdbAdminPassword= nodelist=node1,node2 templateName=/u01/app/oracle/product/12.2.0/db_1/assistants/dbca/templates/New_Database.dbt sysPassword=oracle --sys密碼 systemPassword=oracle --system密碼 serviceUserPassword= emConfiguration= emExpressPort=5500 runCVUChecks=true dbsnmpPassword=oracle --dbsnmp密碼 omsHost= omsPort=0 emUser= emPassword= dvConfiguration=false dvUserName= dvUserPassword= dvAccountManagerName= dvAccountManagerPassword= olsConfiguration=false datafileJarLocation= datafileDestination=+DATA/{DB_UNIQUE_NAME}/ --數據文件位置 recoveryAreaDestination=+ARCHIVE --閃回區 storageType=ASM diskGroupName=+DATA/{DB_UNIQUE_NAME}/ asmsnmpPassword= recoveryGroupName=+ARCHIVE --閃回區所在磁盤組 characterSet=AL32UTF8 --字符集 nationalCharacterSet=AL16UTF16 --國家地區字符集 registerWithDirService=false dirServiceUserName= dirServicePassword= walletPassword= listeners=LISTENER variablesFile= variables=DB_UNIQUE_NAME=orcl,ORACLE_BASE=/u01/app/oracle,PDB_NAME=,DB_NAME=orcl,ORACLE_HOME=/u01/app/oracle/product/12.2.0/db_1,SID=orcl initParams=orcl2.undo_tablespace=UNDOTBS2,db_recovery_file_dest_size=400000MB,sga_target=36GB,orcl1.thread=1,orcl2.thread=2,diagnostic_dest={ORACLE_BASE},cluster_database=true,audit_file_dest={ORACLE_BASE}/admin/{DB_UNIQUE_NAME}/adump,db_create_file_dest=+DATA/{DB_UNIQUE_NAME}/,local_listener=-oraagent-dummy-,compatible=12.2.0,orcl1.instance_number=1,open_cursors=300,orcl2.instance_number=2,family:dw_helper.instance_mode=read-only,processes=1920,nls_language=AMERICAN,pga_aggregate_target=4GB,dispatchers=(PROTOCOL=TCP) (SERVICE=orclXDB),db_recovery_file_dest=+ARCHIVE,db_block_size=8192BYTES,nls_territory=AMERICA,log_archive_format=%t_%s_%r.dbf,db_name=orcl,audit_trail=db,orcl1.undo_tablespace=UNDOTBS1,remote_login_passwordfile=exclusive #以上是很是長的一段,包含了各類自定義的init參數名稱,例如實例名、ASMM管理的SGA大小、閃回區等等。 sampleSchema=false memoryPercentage=40 --內存爲64GB,SGA爲40GB,顯然不僅40%,所以應當是oracle軟件可以使用的內存,固定設置爲默認40就好。 databaseType=MULTIPURPOSE --默認值 automaticMemoryManagement=false totalMemory=0
而後執行dbca靜默建庫:
su - oracle dbca -silent -ignorePrereqFailure -createDatabase -responseFile /home/oracle/dbca.rsp
此外使用靜默安裝執行dbca建庫時不能像圖形界面同樣去除JVM和OLAP、Application Express等組件的安裝,所以靜默安裝時只能所有裝上。
建庫完畢後使用以下命令查看整個集羣和數據庫的狀態:
su - grid crsctl stat res -t su - oracle srvctl config database -d orcl lsnrctl status
7、最後的工做
ALTER SYSTEM SET AUDIT_TRAIL=NONE SCOPE=SPFILE SID='*';--關閉審計 alter system set deferred_segment_creation=false SCOPE=BOTH SID='*'; --關閉段建立延遲 #ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON=FALSE SCOPE=SPFILE SID='*'; --關閉密碼大小寫驗證,在12c版本中此參數已被棄用,若是手動改成FALSE,除非設置正確的SQLNET.ALLOWED_LOGON_VERSION_SERVER參數,不然全部用戶都會沒法登錄,所以不要這麼改了。 ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED;--設置登陸次數爲無限 ALTER SYSTEM SET CONTROL_FILE_RECORD_KEEP_TIME=31 SCOPE=BOTH SID='*';--控制文件內容保存時間 ALTER SYSTEM SET MAX_DUMP_FILE_SIZE='2048M' SCOPE=BOTH SID='*';--DUMP文件size的最大值 ALTER SYSTEM SET PROCESSES=2048 SCOPE=SPFILE SID='*';--最大進程數 ALTER SYSTEM SET "_UNDO_AUTOTUNE"=FALSE SCOPE=BOTH SID='*';--關閉UNDO自動調優的功能 ALTER SYSTEM SET "_USE_ADAPTIVE_LOG_FILE_SYNC"=FALSE SCOPE=BOTH SID='*'; --關閉自適應日誌同步功能 alter database add supplemental log data; --打開附加日誌,便於進行故障後數據找回
重啓使以上部分設置生效:srvctl stop/start database -d orcl
最後,再設置下數據和歸檔的備份計劃,根據業務壓力調整下REDO大小和組數就能夠了。