

# 保留存档重做日志
<a name="Appendix.Oracle.CommonDBATasks.RetainRedoLogs"></a>

您可以在数据库实例上本地保留存档的重做日志，以用于 Oracle LogMiner（`DBMS_LOGMNR`）这类产品。保留重做日志后，您可以使用 LogMiner 分析日子。有关更多信息，请参阅 Oracle 文档中的[使用 LogMiner 分析重做日志文件](http://docs.oracle.com/cd/E11882_01/server.112/e22490/logminer.htm)。

要保留存档的重做日志，请使用 Amazon RDS 过程 `rdsadmin.rdsadmin_util.set_configuration`。如果您在 Oracle Data Guard 中的主实例上使用此过程，则 RDS 会更改主实例和打开只读副本的存档日志保留设置，但不会更改已挂载副本上的设置。RDS 会短时间保留已挂载副本的最新存档重做日志。RDS 会自动删除下载到已挂载副本的较旧日志。

`set_configuration` 过程具有以下参数。


****  

| 参数名称 | 数据类型 | 默认值 | 必需 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `name`  |  varchar  |  —  |  是  |  要更新的配置的名称。要更改已存档的重做日志的保留时间，请将名称设置为 `archivelog retention hours`。  | 
|  `value`  |  varchar  |  —  |  是  |  该配置的值。设置日志要保留的小时数的值。  | 

以下示例保留 24 小时的重做日志。

```
begin
    rdsadmin.rdsadmin_util.set_configuration(
        name  => 'archivelog retention hours',
        value => '24');
end;
/
commit;
```

**注意**  
要使更改生效，必须执行提交操作。

要查看存档的重做日志为数据库实例保留多长时间，请使用 Amazon RDS 过程 `rdsadmin.rdsadmin_util.show_configuration`。

以下示例显示日志保留时间。

```
set serveroutput on
EXEC rdsadmin.rdsadmin_util.show_configuration;
```

输出显示 `archivelog retention hours` 的当前设置。以下输出显示存档的重做日志保留 48 小时。

```
NAME:archivelog retention hours
VALUE:48
DESCRIPTION:ArchiveLog expiration specifies the duration in hours before archive/redo log files are automatically deleted.
```

由于存档的重做日志保留在数据库实例中，因此，请确保数据库实例已为保留的日志分配足量的存储空间。要确定数据库实例上在最近 X 小时内使用的空间量，可以运行以下查询（将 X 替换为小时数）。

```
SELECT SUM(BLOCKS * BLOCK_SIZE) bytes 
  FROM V$ARCHIVED_LOG
 WHERE FIRST_TIME >= SYSDATE-(X/24) AND DEST_ID=1;
```

仅在数据库实例的备份保留期大于零时，RDS for Oracle 才会生成存档的重做日志。默认情况下，备份保留期大于零。

当存档的日志保留期过期时，RDS for Oracle 将从数据库实例中删除归档的重做日志。为支持将数据库实例还原到某个时间点，Amazon RDS 会根据备份保留期在数据库实例之外保留存档的重做日志。要修改备份保留期，请参阅 [修改 Amazon RDS 数据库实例](Overview.DBInstance.Modifying.md)。

**注意**  
在一些情况下，您可以在 Linux 上使用 JDBC 下载存档重做日志并体验长延迟时间和连接重置。在此类情况下，您的 Java 客户端上的默认随机数字生成器设置可能会引发问题。我们建议您将 JDBC 驱动程序设置为使用非阻塞的随机数字生成器。