欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Oracle 12c RAC 静默安装文档

程序员文章站 2022-03-03 09:50:05
参考文档: https://docs.oracle.com/en/database/oracle/oracle-database/12.2/cwlin/index.html https://docs.oracle.com/en/database/oracle/oracle-database/12.2 ......

参考文档:

建设背景:

建设本文档的目的在于详细梳理12c rac静默安装的流程,结合官方文档尽可能解释安装过程中的各种操作的原理,提供不同的存储配置方法和参数修改方法,最后形成一套完整的12c rac静默安装步骤以便于今后参考。

安装流程:

一、软件下载

下载 linuxx64_12201_database.zip 和 linuxx64_12201_grid_home.zip 就可以了,然后上传至节点1的任意目录。

Oracle 12c RAC 静默安装文档

二、准备工作

完全参考《oracle 12c rac 图形化界面安装文档》的二、三、四、五部分。

三、静默安装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”,如下图所示的界面:

Oracle 12c RAC 静默安装文档

但是需要特别说明的是这样生成的响应文件是不能直接用的.......是很坑,但也算减少了一部分的工作量。二就是完全自己编一个响应文件。

无论哪种方式,标准的一个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,第一个脚本基本秒完成,第二个脚本是完成集群配置的,用时很长,注意查看其日志获知集群配置的进度。

出现如下信息时表示执行完毕:

Oracle 12c RAC 静默安装文档

最后,静默安装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

Oracle 12c RAC 静默安装文档

上图为执行完毕后的截图,虽然显示一些配置失败,但从日志来看这些失败并不严重,因此我们忽略即可。

此时再使用crsctl stat res -t查看发现mgmtdb的状态已经由offline变为了online。

四、创建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';

五、静默安装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

六、静默执行dbca建库

先看下dbca时需要设置密码的账户:

Oracle 12c RAC 静默安装文档

然后编辑响应文件:

$ 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
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 -ignoreprereqs -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

七、最后的工作

alter system set audit_trail=none scope=spfile;--关闭审计
alter system set deferred_segment_creation=false; --关闭段创建延迟
alter system set sec_case_sensitive_logon=false scope=spfile; --关闭密码大小写验证
alter profile default limit failed_login_attempts unlimited;--设置登录次数为无限
alter system set control_file_record_keep_time=31;--控制文件内容保存时间
alter system set max_dump_file_size='2048m';--dump文件size的最大值
alter system set processes=2048 scope=spfile sid='*';--最大进程数
alter system set "_undo_autotune"=false;--关闭undo自动调优的功能
alter system set "_use_adaptive_log_file_sync"=false; --关闭自适应日志同步功能
alter database add supplemental log data; --打开附加日志,便于进行故障后数据找回
alter system set "o7_dictionary_accessibility"=false scope=spfile; --防止具有drop any table权限的用户恶意删除一些数据字典。

重启使以上部分设置生效:srvctl stop/start database -d orcl

最后,再设置下数据和归档的备份计划,根据业务压力调整下redo大小和组数就可以了。