电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

金蝶云星空-金蝶云星空ORACLE11G数据库安装运维最佳实践.docx

金蝶云星空-金蝶云星空ORACLE11G数据库安装运维最佳实践.docx_第1页
1/14
金蝶云星空-金蝶云星空ORACLE11G数据库安装运维最佳实践.docx_第2页
2/14
金蝶云星空-金蝶云星空ORACLE11G数据库安装运维最佳实践.docx_第3页
3/14
金金2019/6/27本文主要说明ORACLE数据库服务器环境安装软件及版本要求,以及安装完成后的配置工作。避免已知的一些问题,以确保数据库以稳定的状态运行。1版本要求..........................................................................................................................12配置要求..........................................................................................................................11)安装最新补丁集.......................................................................................................12)初始化参数设置.......................................................................................................33归档..................................................................................................................................64维护作业..........................................................................................................................65备份策略........................................................................................................................116表空间............................................................................................................................127检测................................................................................................................................121版本要求数据库服务器的操作系统,推荐使用ORACLELINUX7.6。数据库软件版本,要求安装11204企业版(不支持标准版),单节点或RAC环境均可,推荐使用RAC。2配置要求1)安装最新补丁集安装好的Oracle,需要同时安装最新的补丁集。以11Gr2为例:截止至2018年10月,当前最新版本的补丁集为20181016日发布(使用CSI服务号,到ORACLE的SUPPRT网站下载),此外,还需要打上下列小补丁(ONE-OFFPATCH):12646133,14275161,16086769_112041,16311211_11204171017,16756406,17259786_11204160119,17306264_11204170418,18498878,18841764,19174639,19678658_11204171017,19692824(使用linux7时才需要,20181016补丁集含),19855835_112044,20033247,20048270,20724902(注意README.txt里的提示:安装此补丁后,需要在数据库里执行脚本postinstall.sql),20907061_11204180116,21050285_11204181016(有多个版本,按PSU补丁集版本来下载安装)。22113854_112040(注意README.txt里的提示:安装此补丁后,需要在数据库里执行脚本postinstall.sql),23665623_11204171017,24739928_11204180417,24921392。11204.20181016的PSU版本号:p28429134_112040_Linux-x86-64.zip--GI版本,p28204707_112040_Linux-x86-64.zip--纯数据库版。提示:1PSU补丁集在单节点环境使用纯数据库版,在RAC环境使用GI版本。2优先打补丁集(强烈建议),再打小补丁(建议)。3解压后,请按照解压出来的readme.html/txt文档(解压目录里)说明安装。4有时补丁集和小补丁可能会存在冲突,如:在打补丁19678658前,做补丁间冲突检查,[oracle@rac12/backup/soft/p19678658/19678658]$opatchprereqCheckConflictAgainstOHWithDetail-ph./此时,该命令的反馈结果,可能会包含类似这种信息:(ConflictwithCompositePatch27338049),遇上这种情况,通常得再到SUPPORT网站,寻找该补丁的最新补丁集,如上:19678658_11204171017补丁19678658和27338049集有冲突,但19678658_11204171017和该补丁集没有冲突,此时,得选择后者来打。如下检查:[oracle@rac11/backup/soft/opatch/p19678658_11204171017/19678658]$opatchprereqCheckConflictAgainstOHWithDetail-ph./OracleInterimPatchInstallerversion11.2.0.3.19Copyright(c)2018,OracleCorporation.Allrightsreserved.PREREQsessionOracleHome:/home/app/11.2.4/product/db_1CentralInventory:/home/app/oraInventoryfrom:/home/app/11.2.4/product/db_1/oraInst.locOPatchversion:11.2.0.3.19OUIversion:11.2.0.4.0Logfilelocation:/home/app/11.2.4/product/db_1/cfgtoollogs/opatch/opatch2018-06-01_09-39-55AM_1.logInvokingprereq"checkconflictagainstohwithdetail"Prereq"checkConflictAgainstOHWithDetail"passed.OPatchsucceeded.[oracle@rac11/backup/soft/opatch/p19678658_11204171017/19678658]$5当往rac环境打补丁16311211_11204171017后,数据库将无法MOUNT。原因:控制文件放在ASM的某个DISKGROUP上,而该DISKGROUP的GROUP为asmadmin,与数据库软件的安装属主(通常都是oracle账户),下的$ORACLE_HOME/bin/oracle,该文件的group不一样,该文件的group此时一般为oinstall,故导致$ORACLE_HOME/bin/oracle报权限不足,无法读取该diskgroup上的控制文件,故,无法启动数据库。解决方法如下演示(文档ID1378747.1):--1[oracle@rac11/backup/soft/opatch]$cd$ORACLE_HOME/bin[oracle@rac11/home/app/11.2.4/product/db_1/bin]$ls-lrtoracle-rwsr-s--x1oracleoinstall239837496May3017:22oracle<--------------经分析,是因为oracle文件的属于从asmadmin变成oinstall的原因--2[oracle@rac11/home/app/11.2.4/product/db_1/bin]$exitlogout[root@rac11~]#su-gridLastlogin:WedMay3014:44:28CST2018onpts/2[grid@rac11~]$cd$ORACLE_HOME/bin<---------------来到grid账户的此目录下,执行下面的操作[grid@rac11/home/app/11.2.4/grid/home/bin]$./setasmgidwrapo=/home/app/11.2.4/product/db_1/bin/oracle<---------------修改oracle文件的属主(数据库软件的安装属主(通常都是oracle账户)的bin目录下的oracle文件)[grid@rac11/home/app/11.2.4/grid/home/bin]$ls-lrt/home/app/11.2.4/product/db_1/bin/oracle-rwsr-s--x1oracleasmadmin239837496May3017:22/home/app/11.2.4/product/db_1/bin/oracle所有节点都要重复上述操作,之后即可正常启动数据库。若看不懂这一条,那就不要往RAC环境打补丁16311211_11204171017,14275161,12646133。6上面列举的小补丁(如:16311211),尽量寻找发布时间晚的补丁,因为,早先的版本,可能存在与PSU补丁集冲突的情况,而后面出的版本,则可能已经解决了此冲突。如补丁:16311211,会与20180417补丁集冲突;但若是16311211_11204171017,还是同一补丁,但不会与上述补丁集冲突。2)初始化参数设置下面的参数值,是通常情况下的设置值,实际情况需要根据服务器的硬件配置做相应的调整。配置HugePgaes如果采用SSD存储,建议开启,但非SSD存储,需要经过测试验证。示例:Hugepages->大页,linux环境,大页的尺寸一般为2M.测试服务器的物理内存为:64G.1以root身份,编辑文件/etc/security/limits.conf,增加内容:Oraclesoftmemlock60397977单位KBOraclehardmemlock60397977此参数值,比物理内存(64G)稍小。若是oraclelinux操作系统,该参数可能已经在文件中自动设置好,无需改动。2以oracle身份登录服务器,执行命令:$ulimit–l,应该出现以下结果:$ulimit-l603979773由于HugePages与AMM不兼容,故,需要把memory_max_target,memory_target初始化为0,同时设置需要的sga值,此处设置sga值,为物理内存的一半。altersystemsetmemory_max_target=0scope=spfilesid='*';altersystemsetmemory_target=0scope=spfilesid='*';altersystemsetsga_max_size=32gscope=spfilesid=’*’;4重启数据库实例Startupnomount;5在操作系统下运行脚本:hugepages_setting.sh,以计算操作系统参数值vm.nr_hugepages$./hugepages_settings.sh...Recommendedsetting:vm.nr_hugepages=16386$6以root身份,编辑/etc/sysctl.conf文件,在该文件尾,添加:vm.nr_hugepages=163867以root身份,执行命令:以便让该参数生效,#Sysctl-p该命令会输出一系列的参数值,若见到vm.nr_hugepages=16386,说明参数开始还生效,8关闭,重启实例,同时查看数据库的警告日志,若出现下面红色部分的信息,说明HugePages设置成功,否则,配置失败,StartingORACLEinstance(normal)******************LargePagesInformation*****************TotalSharedGlobalRegioninLargePages=5122MB(100%)LargePagesusedbythisinstance:2561(5122MB)LargePagesunusedsystemwide=10(20MB)(allocincr16MB)LargePagesconfiguredsystemwide=39436(77GB)LargePagesize=2048KB***********************************************************9数据库运行一段时间后,可以查看到大页的使用情况。$grepHuge/proc/meminfoHugePages_Total:39436HugePages_Free:2766HugePages_Rsvd:2756HugePages_Surp:0Hugepagesize:2048kBHugePages_Total:大页总数量,即:vm.nr_hugepages的值HugePages_Free:从来没有被使用过的大页的数目,HugePages_Total-HugePages_Free,已经分配给sga的内存值。HugePages_Rsvd:保留大页数,HugePages_Surp:剩余大页数,Hugepagesize:大页的尺寸。HugePages_Totalisthesizeofthepoolofhugepages.HugePages_Freeisthenumberofhugepagesinthepoolthatarenotyetallocated.HugePages_Rsvdisshortfor"reserved,"andisthenumberofhugepagesforwhichacommitmenttoallocatefromthepoolhasbeenmade,butnoallocationhasyetbeenmade.Reservedhugepagesguaranteethatanapplicationwillbeabletoallocateahugepagefromthepoolofhugepagesatfaulttime.HugePages_Surpisshortfor"surplus,"andisthenumberofhugepagesinthepoolabovethevaluein/proc/sys/vm/nr_hugepages.Themaximumnumberofsurplushugepagesiscontrolledby/proc/sys/vm/nr_overcommit_hugepages.注:使用HugePages的注意事项下面的三种情形应当重新配置HugePages参数a、物理内存的增减或减少。b、在当前服务器上新增或移出Instance。c、Instance的SGA大小增加或减少。如果未及时调整HugePages,可能会引发下面的问题:a、数据库性能低下。b、出现内存不足或者过度使用交换空间。c、数据库实例不能被启动。d、关键性系统服务故障。修改数据库参数alterprofiledefaultLIMITPASSWORD_LIFE_TIMEUNLIMITED;altersystemsetprocesses=600scope=spfilesid='*';altersystemsetcontrol_file_record_keep_time=21scope=spfilesid='*';altersystemsetopen_cursors=300scope=spfilesid='*';altersystemsetsession_cached_cursors=300scope=spfilesid='*';altersystemsetrecyclebin=offscope=spfilesid='*';altersystemsetaudit_trail=NONEscope=spfilesid='*';altersystemsetlog_archive_dest_1='location=use_db_recovery_file_dest'scope=bothsid='*';altersystemsetfast_start_mttr_target=300scope=bothsid='*';altersystemsetstreams_pool_size=100mscope=spfilesid='*';altersystemsetarchive_lag_target=1200;altersystemset"_optimizer_use_feedback"=falsescope=spfilesid='*';altersystemset"_optimizer_invalidation_period"=60scope=bothsid='*';altersystemsetdb_securefile=alwaysscope=bothsid='*';altersystemsetfilesystemio_options=setallscope=spfilesid=’*’;execdbms_stats.alter_stats_history_retention(7);altersystemset"_no_or_expansion"=true;altersystemsetPRE_PAGE_SGA=falsescope=spfilesid=’*’;altersystemsetnls_date_format=’YYYY-MM-DDHH24:MI:SS’scope=spfilesid=’*’;altersystemset“_b_tree_bitmap_plans”=falsescope=spfilesid=’*’;altersystemsetoptimizer_index_cost_adj=80scope=spfile;注:修改结束后,需重启数据库,才能确保上述修改生效。上述两加粗的参数,recyclebin=off、audit_trail=none,对数据库性能非常明显,请务必关闭这两次参数;并在重启库后,执行PURGEDBA_RECYCLEBIN清空回收站,执行TRUNCATETABLEAUD$,清空审计记录表。域名解析修改/etc/hosts文件,添加服务器的IP和机器名,如:192.168.1.174tmpdb3归档如果需要启用归档,需要做下面的调整:altersystemsetdb_recovery_file_dest_size=50g;--此参数值按实际情况设置altersystemsetdb_recovery_file_dest='+FLASH';--此参数值按实际情况设置altersystemsetlog_archive_dest_1='location=use_db_recovery_file_dest'scope=bothsid='*'同时在两节点上执行:关闭数据库,设置归档模式,都设置了归档模式后,再打开库。Shutdownimmediate;Startupmount;Alterdatabasearchivelog;Alterdatabaseaddsupplementallogdata;--若开启归档日志,必须开启最小附加日志Alterdatabaseaddsupplementallogdata;Alterdatabaseopen;4维护作业1.收集系统表统计信息以sys身份,登录生产库,创建定时作业(下同),采集系统表,Createorreplaceprocedurepro_analyze_dictasbegindbms_stats.gather_dictionary_stats();dbms_stats.gather_fixed_objects_stats();Endpro_analyze_dict;/--每天早上5点(按需求更改)运行BEGINdbms_scheduler.create_job(job_name=>'JOB_ANALYZE_DICT',job_type=>'PLSQL_BLOCK',job_action=>'BEGINpro_analyze_dict;END;',repeat_interval=>'FREQ=DAILY;BYHOUR=05;BYMINUTE=5;',enabled=>true);END;/2.收集业务数据库统计信息以业务库的用户登陆,创建存储过程和计划createorreplaceprocedurepro_analyze_statsasora_20005exception;ora_25191exception;pragmaexception_init(ora_20005,-20005);pragmaexception_init(ora_25191,-25191);beginsys.dbms_stats.flush_database_monitoring_info();foriin(selectusernamefromdba_userswhereusernamein('数据库用户名'))loopforjin(selectowner,'"'||table_name||'"'table_namefromdba_tableswhereownerin(i.username)andtemporary='N'andtable_namenotlike'TMP%'andiot_typeisnullandtable_namenotin(selecttable_namefromdba_tab_statisticswhereownerin(i.username)andstattype_locked='ALL')andtable_namenotin(selecttable_namefromdba_external_tableswhereownerin(i.username))andtable_namenotin(selectlog_tablefromdba_mview_logswherelog_ownerin(i.username))orderbyowner,last_analyzednullsfirst)loopbegindbms_stats.gather_table_stats(j.owner,j.table_name,estimate_percent=>dbms_stats.auto_sample_size,degree=>2);exceptionwhenora_20005orora_25191thennull;end;endloop;--2017-10-0910:36gathervirtualcolumnstatsforjin(selectowner,'"'||table_name||'"'table_name,column_namefromdba_tab_colswhereownerin(i.username)andvirtual_column='YES'andtable_namenotlike'TMP%'anddata_type<>'XMLTYPE'andhidden_column='NO')loopbegindbms_stats.gather_table_stats(j.owner,j.table_name,method_opt=>'forcolumns'||j.column_name||'sizeauto',estimate_percent=>dbms_stats.auto_sample_size);exceptionwhenora_20005orora_25191thennull;end;endloop;endloop;endpro_analyze_stats;/--每天早上1点30分(按需求更改)运行Begindbms_scheduler.create_job(job_name=>'JOB_ANALYZE_STATS',job_type=>'PLSQL_BLOCK',job_action=>'BEGINpro_analyze_stats;END;',repeat_interval=>'FREQ=DAILY;BYHOUR=01;BYMINUTE=30;',enabled=>true);End;/3.删除物理临时表作业以业务库的用户登陆,创建存储过程和计划如每天早上3点(按需求更改)删除过期(24小时以前创建)的临时表--创建删除临时表的过程。createorreplaceprocedurepro_purge_tmptableasora_942exception;pragmaexception_init(ora_942,-942);ora_54exception;pragmaexception_init(ora_54,-54);v_msgvarchar2(300);beginforiin(selectusernamefromdba_userswhereusernamein('数据库用户名'))loopforjin(selecta.owner,a.table_namefromdba_tablesa,dba_objectsbwherea.ownerin(i.username)and((a.table_namelike'TMP%'andlength(a.table_name)=30)or(a.table_namelike'TMP%LEVEL'andlength(a.table_name)=29))andb.ownerin(i.username)andb.object_type='TABLE'andb.object_namelike'TMP%'andb.created<(sysdate-1)and(a.owner=b.owneranda.table_name=b.object_name))loopbegin--dbms_output.put_line(j.table_name);executeimmediate'droptable'||j.owner||'.'||j.table_name||'purge';exceptionwhenothersthennull;end;endloop;--2018-12-0513:41forjin(selecta.owner,a.table_namefromdba_tablesa,dba_objectsbwherea.ownerin(i.username)anda.table_namelike'GL%'andlength(a.table_name)=29andb.ownerin(i.username)andb.object_type='TABLE'andb.object_namelike'GL%'andb.created<(sysdate-14)and(a.owner=b.owneranda.table_name=b.object_name))loopbegin--dbms_output.put_line(j.table_name);executeimmediate'droptable'||j.owner||'.'||j.table_name||'purge';exceptionwhenothersthennull;end;endloop;beginexecuteimmediate'deletefrom'||i.username||'.t_bas_temporarytablenameawherenotexists(select1fromdba_tableswhereowner='''||i.username||'''andtable_name=a.ftablename)';commit;exceptionwhenora_942thennull;end;endloop;endpro_purge_tmptable;/Begindbms_scheduler.create_job(job_name=>'JOB_PURGE_TMPTABLE',job_type=>'PLSQL_BLOCK',job_action=>'BEGINpro_purge_tmptable;END;',repeat_interval=>'FREQ=DAILY;BYHOUR=03;BYMINUTE=0;',enabled=>true);End;/创建一作业,每30分钟运行一次,删除5分钟前采集的临时表的统计信息。createorreplaceprocedurepro_delete_tm_statsasora_20005exception;pragmaexception_init(ora_20005,-20005);beginforiin(selectowner,table_name,last_analyzed,num_rowsfromdba_tableswhereownerin('数据库用户名')andtemporary='Y'andlast_analyzedisnotnullandlast_analyzed<(sysdate-1/288)orderbyowner,table_name)loopbegindbms_stats.delete_table_stats(i.owner,i.table_name,no_invalidate=>false);executeimmediate'analyzetable'||i.owner||'.'||i.table_name||'deletestatistics';exceptionwhenora_20005thennull;end;endloop;end;/Begindbms_scheduler.create_job(job_name=>'JOB_DELETE_TM_STATS',job_type=>'PLSQL_BLOCK',job_action=>'BEGINPRO_DELETE_TM_STATS;END;',repeat_interval=>'FREQ=MINUTELY;INTERVAL=30;',enabled=>true);End;/4.删除历史统计信息创建定时作业,每天运行一次,删除7天前采集的历史统计信息(作业运行时间可自定义)。每月20号,重建保存统计信息的两个大表的索引。createorreplaceprocedurepro_purge_statsasv_datedate;v_retnumnumber(3);beginselectdbms_stats.get_stats_history_retentionintov_retnumfromdual;selecttrunc(dbms_stats.get_stats_history_availability)intov_datefromdual;foriin1..(trunc(sysdate)-v_date-v_retnum)loopsys.dbms_stats.purge_stats(v_date+i);endloop;ifto_char(sysdate,'dd')='20'then--1wri$_optstat_histhead_historyexecuteimmediate'alterindexi_wri$_optstat_hh_strebuildonline';executeimmediate'alterindexi_wri$_optstat_hh_obj_icol_strebuildonline';--2wri$_optstat_histgrm_historyexecuteimmediate'alterindexi_wri$_optstat_h_strebuildonline';executeimmediate'alterindexi_wri$_optstat_h_obj#_icol#_strebuildonline';endif;endpro_purge_stats;/EXECDBMS_SCHEDULER.DROP_JOB('JOB_PURGE_STATS');BEGINdbms_scheduler.create_job(job_name=>'JOB_PURGE_STATS',job_type=>'PLSQL_BLOCK',job_action=>'BEGINpro_purge_stats;END;',repeat_interval=>'FREQ=DAILY;BYHOUR=18;BYMINUTE=00;',enabled=>true);END;/5.关闭系统自带的调度任务--SELECT*FROMDBA_AUTOTASK_WINDOW_CLIENTS;execdbms_auto_task_admin.disable(client_name=>'autospaceadvisor',operation=>NULL,window_name=>null);execdbms_auto_task_admin.disable(client_name=>'sqltuningadvisor',operation=>null,window_name=>null);execdbms_auto_task_admin.disable(client_name=>'autooptimizerstatscollection',operation=>NULL,window_name=>NULL);5备份策略对于生产数据库,要求自生产系统投入使用开始,就必须确保备份处于正常工作状态。同时根据生产系统的实际运行情况,制定合理的巡检计划。1.通常情况下,我们都是以物理备份为主,逻辑备份为辅,也就是,主要使用rman备份,同时辅以expdp导出备份。2.对于rman的备份策略方式:保留几份全库备份(包括全库备份以后的所有日志,以保障可用该备份恢复自该备份以来的任意时间点),但此策略只要求有备份,不保障能往回追溯N天以来,不建议。保留恢复最近N天以来的备份。使用此策略,可以保障备份集,可以恢复从现在开始,往回追溯N天以来的任意时间点。这是最常用的备份保留策略建议使用。3.如果机器资源足够以及拥有维护的能力,建议搭建DataGuard环境,并启动DG库的数据库闪回功能。默认情况下,DG库能够闪回最近24小时以内任意时间点的数据。但正式部署前,需要做好测试验证。6表空间1.新建的表空间必须是本地空间管理方式(LMT),不要使用DMT。并使用默认的ASSM段管理方式(因为SECUREFILELOB字段,无法保存在以MSSM方式的段管理表空间下(ORA-43853))。2.不同的数据库账户,创建各自的表空间。3.如果有DBA的话,可以分布建立数据表空间,索引表空间,LOB数据类型表空间,将现有表索引和LOB字段部署在这些表空间上。4.当生产系统运行一段时间后,可能会出现尺寸比较大的表,可考虑为这些大表创建新的表空间(EXTENT值放大些,比如:100M,500M,1G等),建好后,采用在线重定义的方法迁移。5.如果需要对大表进行分区,考虑创建新的数据表空间,和索引表空间,比如:创建EXTENT=100M的数据表空间(存放表分区),EXTENT=50M的索引表空间(存放分区索引)。EXTENT的尺寸多少适合,得看实际表的情况来设置。7健康检测定期使用最新版本的ORACHK工具,检查数据库环境的当前状况,并根据检查报告做相应的修改。

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

金蝶云星空-金蝶云星空ORACLE11G数据库安装运维最佳实践.docx

确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信