Skip to content

11g Dataguard error ORA-16191

报错信息:

Error 1017 received logging on to the standby
------------------------------------------------------------
Check that the primary and standby are using a password file
and remote_login_passwordfile is set to SHARED or EXCLUSIVE,
and that the SYS password is same in the password files.
returning error ORA-16191

产生情况是这样的,一套rac的dataguard,在搭建完成后开启standby seesion后主备库都在不断报ORA-16191,这个错误出现时候也没有发现伴随错误,而且三个实例的password是一样的,只是orapw文件是每个实例单独生成.
根据错误描述,是怀疑此DG的pri和std的密码文件密码不一致导致,逐用统一命令重建实例1和STD的密码文件,报错依旧.节点2重建密码文件,报错依旧.
其次对节点1的密码文件拷贝到std中,并修改orapw对应的实例名,重启standby session,rac节点1和standby的实例不再报错ora-16191,而实例二依然再报ora-16191,将节点1的密码文件拷贝至节点2,并修改对应实例名,报错消失,至此日志传输以及应用恢复正常.

 

相关Metalink文档排障思路参考文档:

Troubleshooting – Heartbeat failed to connect to standby (文档 ID 1432367.1)

使用DBMS_AUDIT_MGMT定期PURGE部分AUD$以及FGA_LOG$审计记录

还是AUD$的问题,昨晚又测了dbms_audit_mgmt过程包给用户设置定时PURGE一段时间前AUD$和FGA_LOG$中的审计记录,该包是专门针对oracle 审计记录进行管理的过程包.该包发布于10203之后的版本,然后在在10203版本需要打上patch 6996030才可以使用该包,在10204版本中需要打上patch 6989148才可以使用.这里使用的是dbms_audit_mgmt的purge以及archived功能

The DBMS_AUDIT_MGMT subprograms enable you to perform cleanup operations on all audit trail types. Audit trail records can be deleted based on their last archive timestamp. The last archive timestamp indicates when the audit records were last archived.

关于该包的使用我就不科普了,到这里dbms_audit_mgmt查找到相关使用信息,做事情需要未雨绸缪,使用前除了了解该包的语法功能点外,还需要注意该包的一些可能问题,该包可能碰到的一些问题可以登陆到OTN查阅 Known Issues When Using: DBMS_AUDIT_MGMT (Doc ID 804624.1)

 

在下面的步骤前,先了解下这些选项的含义,由于我设置额db_extended所以在过程中我需要选择清除的对象为AUDIT_TRAIL_AUD_STD.

 

Constant Type Value Description
AUDIT_TRAIL_ALL PLS_INTEGER 15 All audit trail types. This includes the standard database audit trail (SYS.AUD$ and SYS.FGA_LOG$ tables), operating system (OS) audit trail, and XML audit trail.
AUDIT_TRAIL_AUD_STD PLS_INTEGER 1 Standard database audit records in the SYS.AUD$ table
AUDIT_TRAIL_DB_STD PLS_INTEGER 3 Both standard audit (SYS.AUD$) and FGA audit(SYS.FGA_LOG$) records
AUDIT_TRAIL_FGA_STD PLS_INTEGER 2 Standard database fine-grained auditing (FGA) records in the SYS.FGA_LOG$ table
AUDIT_TRAIL_FILES PLS_INTEGER 12 Both operating system (OS) and XML audit trails
AUDIT_TRAIL_OS PLS_INTEGER 4 Operating system audit trail. This refers to the audit records stored in operating system files.
AUDIT_TRAIL_XML PLS_INTEGER 8 XML audit trail. This refers to the audit records stored in XML files.

 

我的测试是在11gR2上执行.我的审计设置为db_extended,AUD$在表空间LUDATOU上.前期准备工作如下:

SQL> alter system set audit_trail=db_extended scope=spfile;

System altered.

SQL> create tablespace ludatou datafile '/u01/oracle/luda01.dbf' size 50m;

Tablespace created.

SQL> BEGIN
2 DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION(audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
3 audit_trail_location_value => 'LUDATOU');
4 END;
5 /

PL/SQL procedure successfully completed.

 

SQL> select segment_name,tablespace_name from dba_segments where segment_name='AUD$';

SEGMENT_NAME TABLESPACE_NAME
-------------------- ------------------------------
AUD$            LUDATOU


update dam_config_param$ set string_value='LUDATOU' where audit_trail_type#=1 and param_id=22;
commit;

SQL> select * from dam_config_param$;

  PARAM_ID AUDIT_TRAIL_TYPE# NUMBER_VALUE STRING_VALUE
---------- ----------------- ------------ ----------------------------------------
        22                 1              LUDATOU
        22                 2              SYSAUX
        21                 1           12

第一步针对AUDIT_TRAIL_AUD_STD设置init_cleanup每24小时执行一次.

SQL> BEGIN
  2  IF NOT DBMS_AUDIT_MGMT.IS_CLEANUP_INITIALIZED
  3  (DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD)
  4  THEN
  5  dbms_output.put_line('Calling DBMS_AUDIT_MGMT.INIT_CLEANUP');
  6  DBMS_AUDIT_MGMT.INIT_CLEANUP(
  7  audit_trail_type => dbms_audit_mgmt.AUDIT_TRAIL_AUD_STD,
  8  default_cleanup_interval => 24);
  9  else
 10  dbms_output.put_line('Cleanup for STD was already initialized');
 11  end if;
 12  end;
 13  /

PL/SQL procedure successfully completed.

SQL>

第二步 设置为超过14天审计记录标记时间戳.
这里的时间戳需要注意,如果 AUDIT_TRAIL_TYPE为OS或者XML格式,则需要使用本地系统时间的格式,其他2种格式为UTC.

SQL> begin
  2  DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(
  3  audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
  4  last_archive_time => sysdate - 14);
  5  end;
  6  /

PL/SQL procedure successfully completed.

第三步 设置DBMS_AUDIT_MGMT过程中的purge_job

SQL> BEGIN
  2  DBMS_AUDIT_MGMT.CREATE_PURGE_JOB (
  3  AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
  4  AUDIT_TRAIL_PURGE_INTERVAL => 24,
  5  AUDIT_TRAIL_PURGE_NAME => 'AUD_PURGE',
  6  USE_LAST_ARCH_TIMESTAMP => TRUE );
  7  END;
  8  /

PL/SQL procedure successfully completed.

第四步创建DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP定期推进审计记录的归档时间戳的存储过程.

create or replace procedure set_archive_timestamp (retention in number default 14) as
begin
DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,last_archive_time => sysdate – retention);
end;
/

第五步 创建schedul,设置每6小时执行一次存储过程set_archive_timestamp

SQL> BEGIN
  2  DBMS_SCHEDULER.create_job (
  3  job_name => 'PUSH_AUD_ARCH_TSTAMP',
  4  job_type => 'STORED_PROCEDURE',
  5  job_action => 'SET_ARCHIVE_TIMESTAMP',
  6  number_of_arguments => 1,
  7  start_date => SYSDATE,
  8  repeat_interval => 'freq=hourly;interval=6',
  9  enabled => false,
 10  auto_drop => FALSE);
 11  End;
 12  /

PL/SQL procedure successfully completed.

SQL> BEGIN
  2  dbms_scheduler.set_job_argument_value
  3  (job_name =>'PUSH_AUD_ARCH_TSTAMP',
  4  argument_position =>1,
  5  argument_value => 7);
  6  DBMS_SCHEDULER.ENABLE('PUSH_AUD_ARCH_TSTAMP');
  7  End;
  8  /

PL/SQL procedure successfully completed.

设置完成,执行一次.

SQL> BEGIN
  2  DBMS_SCHEDULER.run_job (job_name => 'PUSH_AUD_ARCH_TSTAMP',
  3  use_current_session => FALSE);
  4  END;
  5  /

PL/SQL procedure successfully completed.

到此为止一个定期purge清除aud$下的审计记录的job就设置好了.中间涉及到DBMS_AUDIT_MGMT过程包的各个知识,在做之前参考前面写的,可能会碰到和引起的问题.该过程主要的作用还是(标准以及细粒度审计)管理审计记录的,不管审计记录是哪种类型,存放在何处,为管理审计提供了便捷,但是在10g同时也带来了一些问题,11gr2版本后审计记录的记录方式发生变化后,各方面功能相对比较稳定完善.

AUD$的Shrink问题

最近遇到这个case的问题比较多,不知道是不是碰到去年国家要求信息安全啥的,很多数据库都被加上了审计,在积累了一段时间后,问题在最近集中的爆发了.

其实最主要的问题主要集中在AUD$表过大的问题,而且默认设置时候是放在system tablespace中,即使用定期的清除策略,但是大家知道最终AUD$的高水位是没法降低的.除了常见的truncate这张表降低高水位提高可用空间外,而shrink在system表空间的对象是无法使用的,因为system 表空间是属于字典管理的嘛~其实也可以通过将AUD$表设置到其他本地管理的表空间,再配合shrink执行.设置过程也简单,借用DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION函数,

The DBMS_AUDIT_MGMT package provides a subprogram that allows you to move the database audit trail tables out of the SYSTEM tablespace. This improves overall database performance. It also allows you to dedicate an optimized tablespace for audit records.

通过类似如下的命令即可:

 

BEGIN
DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION(audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STD,
audit_trail_location_value => 'LUDATOU');
END;
/

 

然后在后续的回收AUD$空间时候就可以配合定期删除策略采用alter table sys.aud$ shrink cascade来执行,但是在移到新表空间后需要将表aud$的rowmoment的属性打开.

alter table sys.aud$ enable row movement;

 

移回system表空间的语法类似,

BEGIN
DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION(audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STD,
audit_trail_location_value => 'SYSTEM');
END;
/

Oracle各版本数据库停止更新时间表

版本 结束日期 特例*
12.1.0.1 2015年7月22日
11.2.0.4 2018年1月31日
HP-UX Itanium: 停止提供补丁日期为2020年12月。 从2018年2月1日起只提供严重程度为1级的修复(不会再发布新的 PSU 和 CPU) 。
11.2.0.3 2015年8月27日
11.2.0.2 2013年10月31日
结束日期比正常晚
11.2.0.1 2011年9月13日
对于 Exadata 结束日期为2012年4月30日
11.1.0.7 2015年8月31日7
HP-UX Itanium – 结束日期为2015年12月。从2015年9月1日起只提供严重程度为1级的修复(不会再发布新的 PSU 和 CPU)。
11.1.0.6 2009年9月18日
10.2.0.5 2015年7月31日7
所有平台  – 标准 Extended Support 在2013年7月31日结束。在2013年8月至2015年7月间,提供有限支持的 Extended Support,日起只提供严重程度为1级的修复(不会再发布新的 PSU 和 CPU)。详见 Oracle Software Technical Support Policies.
HP-UX, Linux, 和 Windows Itanium – 结束日期为2015年12月。从2013年8月1日起只提供严重程度为1级的修复(不会再发布新的 PSU 和CPU)。
10.2.0.4 2011年7月31日5
10.2.0.3 2009年2月22日
IBM Linux on Power
2009年4月9日
IBM Linux on System z
2009年5月16日
Microsoft Windows Itanium (64-bit)
2009年5月2日
HP Tru64 UNIX
2009年5月20日
10.1.0.4 2007年1月30日

更新下oracle的版本发布日期 12cR2 2016年见!

Oracle 12cR2版本2016年发布哦。服务器版本总是包含一个原生相同字长的客户端(比如 64 位)。如果平台支持,那么它还会包含一个 32 位或 64 位的客户端。

点击标题上的版本号即可跳转到补丁集下载页面。

 

Platform 12.2.0.1 12.1.0.211,12 12.1.0.12 11.2.0.410 11.2.0.3 11.2.0.2 11.2.0.12 11.1.0.71 10.2.0.53 10.2.0.44 10.1.0.5
Linux x86  无计划 无计划 无计划 2013年8月28日 2011年9月23日 2010年9月13日 2009年9月1日 2008年9月18日 2010年4月30日 2008年2月22日 2006年1月30日
Linux x86-64  2016年1季度 2014年7月22日 2013年6月25日 2013年8月27日 2011年9月23日 2010年9月13日 2009年9月1日 2008年9月18日 2010年4月30日 2008年3月17日 2006年2月24日
Oracle Solaris SPARC (64-bit)  2016年1季度 2014年7月22日 2013年6月25日 2013年8月29日 2011年10月1日 2010年9月24日 2009年11月6日 2008年10月6日 2010年5月19日 2008年4月30日 2006年2月5日
Oracle Solaris x86-64 (64-bit)  2016年1季度 2014年7月22日 2013年6月25日 2013年8月29日 2011年10月1日 2010年9月24日 2009年11月25日 无计划 2010年5月19日 2008年11月13日 无计划
Microsoft Windows x64 (64-bit)  日期未定 2014年9月5日 2013年7月9日 2013年10月25日 2011年11月11日 2010年12月15日 2010年4月2日 2008年11月13日 2013年7月27日 2008年5月16日 无计划
HP-UX Itanium9  日期未定 2014年11月14日 2014年1月9日 2013年10月10日 2011年10月29日 2010年10月19日 2009年12月22日 2008年10月6日 2010年6月3日 2008年4月30日 2006年6月7日
HP-UX PA-RISC (64-bit)
See footnote 8 below
 平台不再支持 8 平台不再支持 8 平台不再支持 8 2014年1月2日 2012年2月16日 2011年3月15日 2010年5月20日 2008年11月11日 2010年12月15日 2008年6月2日 2006年2月5日
IBM AIX on POWER Systems  日期未定 2014年11月14日 2014年1月9日 2013年10月10日 2011年10月29日 2010年10月19日 2009年12月12日 2008年10月6日 2010年6月3日 2008年5月15日 2006年2月5日
IBM Linux on System z  日期未定 2014年11月14日 2014年1月9日 2014年1月9日 2011年12月1日 2011年3月30日 无计划 无计划 2011年1月3日 2008年12月16日 2006年8月26日
Microsoft Windows (32-bit)  无计划 无计划 无计划 2013年10月25日 2011年11月11日 2010年12月15日 2010年4月5日 2008年10月10日 2010年7月19日 2008年3月17日 2006年2月13日
Instant Client Releases
Apple Mac OS X (Intel)  日期未定  已计划  无计划 2014年4月20日
只提供 Instant Client下载>
2013年1月31日
只提供 Instant Client
无计划 无计划 无计划 日期未定 2010年4月10日
只提供 Single Instance
无计划
IBM Linux on POWER 2014年12月4日
Older Releases

Apple Mac OS X (PowerPC)
平台不再支持
2007年1月8日
HP OpenVMS Alpha
平台不再支持
2012年10月31日 2008年12月15日 2008年2月15日
HP OpenVMS Itanium
平台不再支持 (详见 Doc ID 1307745.1)
2012年10月31日 2008年12月15日 无计划
HP Tru64 UNIX
平台不再支持
2011年4月21日 2008年2月20日 2006年10月18日
IBM Linux on POWER
平台不再支持 (详见 Doc ID 1310584.1)
2011年3月17日 2009年1月9日 无计划
IBM z/OS on System z
平台不再支持 (详见 Doc ID 461234.1)
2012年10月26日 无计划 2006年3月6日
Linux Itanium9
平台不再支持(详见 Doc ID 1130325.1)
2011年3月17日 2008年9月24日 2006年4月30日
Microsoft Windows Itanium (64-bit) 9
平台不再支持 (详见 Doc ID 1307745.1)
2011年5月12日 2009年2月2日 2006年1月30日
Oracle Solaris x86 (32-bit)
平台不再支持
2008年11月14日
这个平台的最终版
2006年6月18日
Platform  12.2.0.1  12.1.0.211,12 12.1.0.12 11.2.0.410 11.2.0.3 11.2.0.2 11.2.0.12 11.1.0.71 10.2.0.53 10.2.0.44 10.1.0.5