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

金蝶云星空 ORACLE 11G数据库安装运维最佳实践

来源:金蝶云社区作者:金蝶2024-09-2323

金蝶云星空 ORACLE 11G数据库安装运维最佳实践

      本文主要说明ORACLE 数据库服务器环境安装软件及版本要求,以及安装完成后的配置工作。避免已知的一些问题,以确保数据库以稳定的状态运行。



1           版本要求

l  数据库服务器的操作系统,推荐使用 ORACLE LINUX7.6。

l  数据库软件版本,要求安装11204企业版不支持标准版),单节点或RAC环境均可,推荐使用RAC。

2            配置要求

1)     安装最新补丁集

安装好的Oracle,需要同时安装最新的补丁集。

以11Gr2为例:

截止至 2018年10月,当前最新版本的补丁集为 20181016 日发布(使用CSI服务号,到ORACLE的SUPPRT网站下载),此外,还需要打上下列小补丁(ONE-OFF PATCH):

1264613314275161,16086769_112041,16311211_11204171017,1675640617259786_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.20181016PSU版本号:

p28429134_112040_Linux-x86-64.zip -- GI 版本,

p28204707_112040_Linux-x86-64.zip -- 纯数据库版。

 

   提示:1  PSU补丁集在单节点环境使用纯数据库版,在RAC 环境使用GI版本。

2 优先打补丁集(强烈建议),再打小补丁(建议)。

3 解压后,请按照解压出来的 readme.html/txt 文档(解压目录里)说明安装。

4 有时补丁集和小补丁可能会存在冲突,如:在打补丁19678658前,做补丁间冲突检查,

 [oracle@rac12 /backup/soft/p19678658/19678658]

$opatch prereq CheckConflictAgainstOHWithDetail -ph ./

此时,该命令的反馈结果,可能会包含类似这种信息: Conflict with Composite Patch 27338049),

遇上这种情况,通常得再到SUPPORT 网站,寻找该补丁的最新补丁集,如上:19678658_11204171017

 补丁19678658 27338049 集有冲突,但19678658_11204171017和该补丁集没有冲突,此时,得选择后者来

打。如下检查:

 [oracle@rac11 /backup/soft/opatch/p19678658_11204171017/19678658]

$opatch prereq CheckConflictAgainstOHWithDetail -ph ./

Oracle Interim Patch Installer version 11.2.0.3.19

Copyright (c) 2018, Oracle Corporation.  All rights reserved.

 

PREREQ session

 

Oracle Home       : /home/app/11.2.4/product/db_1

Central Inventory : /home/app/oraInventory

   from           : /home/app/11.2.4/product/db_1/oraInst.loc

OPatch version    : 11.2.0.3.19

OUI version       : 11.2.0.4.0

Log file location : /home/app/11.2.4/product/db_1/cfgtoollogs/opatch/opatch2018-06-01_09-39-55AM_1.log

 

Invoking prereq "checkconflictagainstohwithdetail"

 

Prereq "checkConflictAgainstOHWithDetail" passed.

 

OPatch succeeded.

[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 上的控制文件,故,无法启动数据库。

 

解决方法如下演示(文档 ID 1378747.1):

 

--1

[oracle@rac11 /backup/soft/opatch]

$cd $ORACLE_HOME/bin

[oracle@rac11 /home/app/11.2.4/product/db_1/bin]

$ls -lrt oracle

-rwsr-s--x 1 oracle oinstall 239837496 May 30 17:22 oracle     <-------------- 经分析,是因为 oracle 文件的属于从 asmadmin 变成 oinstall 的原因

--2

[oracle@rac11 /home/app/11.2.4/product/db_1/bin]

$exit

logout

[root@rac11 ~]

#su - grid

Last login: Wed May 30 14:44:28 CST 2018 on pts/2

[grid@rac11 ~]

$cd $ORACLE_HOME/bin <--------------- 来到 grid 账户的此目录下,执行下面的操作

[grid@rac11 /home/app/11.2.4/grid/home/bin]

$./setasmgidwrap o=/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--x 1 oracle asmadmin 239837496 May 30 17: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, 增加内容:

    Oracle  soft   memlock    60397977  à 单位 KB

Oracle  hard  memlock    60397977

 

此参数值,比物理内存(64G)稍小。

若是oracle linux操作系统,该参数可能已经在文件中自动设置好,无需改动。

 

2  以 oracle 身份登录服务器,执行命令: $ ulimit –l,应该出现以下结果:

   $ ulimit -l

60397977

 

3  由于 HugePages与 AMM不兼容,故,需要把 memory_max_target, memory_target 初始化为0,同时设置需要的 sga 值,此处设置 sga值,为物理内存的一半。

 

   alter system set memory_max_target=0 scope=spfile sid='*';

alter system set memory_target=0 scope=spfile sid='*';

alter system set sga_max_size=32g scope=spfile sid=’*’;

 

4  重启数据库实例 Startup nomount;

5  在操作系统下运行脚本: hugepages_setting.sh,以计算操作系统参数值 vm.nr_hugepages

 

$ ./hugepages_settings.sh

...

Recommended setting: vm.nr_hugepages = 16386

$

 

6  以 root 身份,编辑/etc/sysctl.conf 文件,在该文件尾,添加:

 vm.nr_hugepages = 16386

 

7  以 root 身份,执行命令: 以便让该参数生效,

   # Sysctl -p

   该命令会输出一系列的参数值,若见到vm.nr_hugepages = 16386,说明参数开始还生效,

 

8  关闭,重启实例,同时查看数据库的警告日志,若出现下面红色部分的信息,说明 HugePages 设置成功,否则,配置失败,

 

 

 

 

Starting ORACLE instance (normal)

****************** Large Pages Information *****************

 

Total Shared Global Region in Large Pages = 5122 MB (100%)

 

Large Pages used by this instance: 2561 (5122 MB)

Large Pages unused system wide = 10 (20 MB) (alloc incr 16 MB)

Large Pages configured system wide = 39436 (77 GB)

Large Page size = 2048 KB

***********************************************************

 

9  数据库运行一段时间后,可以查看到大页的使用情况。

 

$grep Huge /proc/meminfo

HugePages_Total:   39436

HugePages_Free:     2766

HugePages_Rsvd:     2756

HugePages_Surp:        0

Hugepagesize:       2048 kB

 

HugePages_Total:   大页总数量,即:vm.nr_hugepages 的值

HugePages_Free:   从来没有被使用过的大页的数目,HugePages_Total - HugePages_Free ,已经分配给 sga 的内存值。

HugePages_Rsvd:   保留大页数,

HugePages_Surp:   剩余大页数,

Hugepagesize:     大页的尺寸。

 

HugePages_Total is the size of the pool of huge pages.

HugePages_Free  is the number of huge pages in the pool that are not yet

                allocated.

HugePages_Rsvd  is short for "reserved," and is the number of huge pages for

                which a commitment to allocate from the pool has been made,

                but no allocation has yet been made.  Reserved huge pages

                guarantee that an application will be able to allocate a

                huge page from the pool of huge pages at fault time.

HugePages_Surp  is short for "surplus," and is the number of huge pages in

                the pool above the value in /proc/sys/vm/nr_hugepages. The

                maximum number of surplus huge pages is controlled by

                /proc/sys/vm/nr_overcommit_hugepages.

 

注:使用HugePages的注意事项

  下面的三种情形应当重新配置HugePages 参数

      a、物理内存的增减或减少。

    b、在当前服务器上新增或移出Instance。

      c、Instance的SGA大小增加或减少。

  如果未及时调整HugePages,可能会引发下面的问题:

      a、数据库性能低下。

      b、出现内存不足或者过度使用交换空间。

    c、数据库实例不能被启动。

  d、关键性系统服务故障。

修改数据库参数

   alter profile default LIMIT PASSWORD_LIFE_TIME UNLIMITED;

   alter system set processes=600 scope=spfile sid='*';

   alter system set control_file_record_keep_time=21 scope=spfile sid='*';

   alter system set open_cursors=300  scope=spfile sid='*';

   alter system set session_cached_cursors=300  scope=spfile sid='*';

   alter system set recyclebin=off  scope=spfile sid='*';   

alter system set audit_trail=NONE  scope=spfile sid='*';

   alter system set log_archive_dest_1='location=use_db_recovery_file_dest'

scope=both sid='*';

   alter system set fast_start_mttr_target = 300 scope=both sid='*';

   alter system set streams_pool_size=100m  scope=spfile sid='*';

   alter system set archive_lag_target = 1200;

   alter system set "_optimizer_use_feedback"= false scope=spfile sid='*';

   alter system set "_optimizer_invalidation_period"=60 scope=both sid='*';

   alter system set db_securefile=always scope=both sid='*';

   alter system set filesystemio_options=setall scope=spfile sid=’*’;

   exec dbms_stats.alter_stats_history_retention(7);

alter system set "_no_or_expansion"=true;

alter system set PRE_PAGE_SGA=false scope=spfile sid=’*’;

alter system set nls_date_format=’YYYY-MM-DD HH24:MI:SS’ scope=spfile sid=’*’;

alter system set “_b_tree_bitmap_plans”=false scope=spfile sid=’*’;

alter system set optimizer_index_cost_adj=80 scope=spfile;

注:

l  修改结束后,需重启数据库,才能确保上述修改生效。

l  上述两加粗的参数,recyclebin=off、audit_trail=none对数据库性能非常明显,

请务必关闭这两次参数;并在重启库后,执行PURGE DBA_RECYCLEBIN 清空回收站,

执行 TRUNCATE TABLE AUD$,清空审计记录表。

域名解析

   修改/etc/hosts 文件,添加服务器的IP和机器名,如:

192.168.1.174   tmpdb

3           归档

如果需要启用归档,需要做下面的调整:

l  alter system set db_recovery_file_dest_size=50g; -- 此参数值按实际情况设置

l  alter system set db_recovery_file_dest='+FLASH'; -- 此参数值按实际情况设置

l  alter system set log_archive_dest_1='location=use_db_recovery_file_dest' scope=both sid='*'

l  同时在两节点上执行:关闭数据库,设置归档模式,都设置了归档模式后,再打开库。

   Shutdown immediate;

   Startup mount;

   Alter database archivelog;

   Alter database add supplemental log data;

   -- 若开启归档日志,必须开启最小附加日志

   Alter database add supplemental log data;

   Alter database open;

4           维护作业

1.         收集系统表统计信息

以 sys 身份,登录生产库,创建定时作业(下同),采集系统表,

Create or replace procedure pro_analyze_dict as

begin

  dbms_stats.gather_dictionary_stats();

  dbms_stats.gather_fixed_objects_stats();

End pro_analyze_dict;

/

--每天早上5点(按需求更改)运行

BEGIN

   dbms_scheduler.create_job

   (job_name          => 'JOB_ANALYZE_DICT',

    job_type          => 'PLSQL_BLOCK',

    job_action        => 'BEGIN pro_analyze_dict; END;',

    repeat_interval   => 'FREQ=DAILY; BYHOUR=05; BYMINUTE=5;',

    enabled           => true);

END;

/

2.         收集业务数据库统计信息

以业务库的用户登陆,创建存储过程和计划

create or replace procedure pro_analyze_stats as

  ora_20005       exception;

  ora_25191       exception;

  pragma          exception_init(ora_20005,-20005);

  pragma          exception_init(ora_25191,-25191);

begin

  sys.dbms_stats.flush_database_monitoring_info();

  for i in (select username from dba_users where username in ('数据库用户名')) loop

    for j in (select owner, '"'||table_name||'"' table_name from dba_tables where owner in (i.username) and temporary='N'

              and table_name not like 'TMP%' and iot_type is null

              and table_name not in (select table_name from dba_tab_statistics where owner in (i.username) and stattype_locked='ALL')

              and table_name not in (select table_name from dba_external_tables where owner in (i.username) )

              and table_name not in (select log_table from dba_mview_logs where log_owner in (i.username) )

              order by owner, last_analyzed nulls first) loop

      begin

        dbms_stats.gather_table_stats(j.owner, j.table_name, estimate_percent=>dbms_stats.auto_sample_size, degree=>2);

      exception

      when ora_20005 or ora_25191 then

        null;

      end;

    end loop

金蝶云星空 ORACLE 11G数据库安装运维最佳实践

本文主要说明ORACLE 数据库服务器环境安装软件及版本要求,以及安装完成后的配置工作。避免已知的一些问题,以确保数据库以稳定...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

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