Amazon Relational Database Service
用户指南 (API Version 2014-10-31)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

Oracle 数据库实例的数据库管理员常见日志任务

本部分介绍了如何执行与登录运行 Oracle 的 Amazon RDS 数据库实例相关的数据库管理员常见任务。为了提供托管服务体验,Amazon RDS 不允许通过 shell 访问数据库实例,而仅限访问某些需要高级特权的系统过程和表。

有关更多信息,请参阅 Oracle 数据库日志文件

设置强制日志记录

Oracle 版本 11.2.0.4.v1 及更高版本支持设置强制日志记录。

在强制日志记录模式下,Oracle 记录对数据库进行的所有更改,但在临时表空间和临时段中进行的更改除外 (忽略 NOLOGGING 子句)。有关更多信息,请参阅 Oracle 文档中的指定“强制日志记录”模式

您可以使用 Amazon RDS 过程 rdsadmin.rdsadmin_util.force_logging 设置强制日志记录。force_logging 过程具有以下参数。

参数名称 数据类型 默认值 必需 说明

p_enable

布尔值

true

可选

设为 true,数据库为强制日志记录模式;设为 false 则取消数据库的强制日志记录模式。

以下示例将数据库置于强制日志记录模式下。

Copy
exec rdsadmin.rdsadmin_util.force_logging(p_enable => true);

设置补充日志记录

Oracle 版本 11.2.0.4.v1 及更高版本支持设置补充日志记录。

补充日志记录可确保 LogMiner 和使用 LogMiner 技术的产品具有足够的信息,来支持链接的行和存储布置 (如群集表)。有关更多信息,请参阅 Oracle 文档中的补充日志记录

Oracle 数据库在默认情况下不启用补充日志记录。您可以使用 Amazon RDS 过程 rdsadmin.rdsadmin_util.alter_supplemental_logging 启用和禁用补充日志记录。有关 Amazon RDS 如何管理 Oracle 数据库实例的存档重做日志的保留期的更多信息,请参阅保留存档重做日志

alter_supplemental_logging 过程具有以下参数。

参数名称 数据类型 默认值 必需 说明

p_action

varchar2

-

必需

如果为 'ADD',则添加补充日志记录;如果为 'DROP',则删除补充日志记录。

p_type

varchar2

null

可选

补充日志记录的类型。有效值为 'ALL''FOREIGN KEY''PRIMARY KEY''UNIQUE'

以下示例启用补充日志记录:

Copy
begin rdsadmin.rdsadmin_util.alter_supplemental_logging( p_action => 'ADD'); end; /

以下示例为所有具有固定长度的最大大小列启用补充日志记录:

Copy
begin rdsadmin.rdsadmin_util.alter_supplemental_logging( p_action => 'ADD', p_type => 'ALL'); end; /

以下示例为主键列启用补充日志记录:

Copy
begin rdsadmin.rdsadmin_util.alter_supplemental_logging( p_action => 'ADD', p_type => 'PRIMARY KEY'); end; /

切换联机日志文件

您可以使用 Amazon RDS 过程 rdsadmin.rdsadmin_util.switch_logfile 切换日志文件。switch_logfile 过程没有参数。

以下示例切换日志文件。

Copy
exec rdsadmin.rdsadmin_util.switch_logfile;

添加联机重做日志

运行 Oracle 的 Amazon RDS 数据库实例从四个联机重做日志 (每个日志的大小为 128 MB) 开始。您可以使用 Amazon RDS 过程 rdsadmin.rdsadmin_util.add_logfile 添加其他重做日志。

对于任意版本的 Oracle,add_logfile 过程具有以下参数。

参数名称 数据类型 默认值 必需 说明

bytes

positive

null

可选

日志文件的大小 (以字节为单位)。

如果您使用版本 11.2.0.4.v1 或更高版本,则 add_logfile 过程具有以下参数。

参数名称 数据类型 默认值 必需 说明

p_size

varchar2

-

必需

日志文件的大小。可以 KB (K)、MB (M) 或 GB (G) 为单位指定大小。

以下命令将添加一个 100 MB 日志文件:

Copy
exec rdsadmin.rdsadmin_util.add_logfile(p_size => '100M');

删除联机重做日志

您可以使用 Amazon RDS 过程 rdsadmin.rdsadmin_util.drop_logfile 删除重做日志。drop_logfile 过程具有以下参数。

参数名称 数据类型 默认值 必需 说明

grp

positive

-

必需

日志的组编号。

以下示例删除组编号为 3 的日志:

Copy
exec rdsadmin.rdsadmin_util.drop_logfile(grp => 3);

您只能删除具有未使用或不活动状态的日志。以下示例获取日志的状态:

Copy
select GROUP#, STATUS from V$LOG; GROUP# STATUS ---------- ---------------- 1 CURRENT 2 INACTIVE 3 INACTIVE 4 UNUSED

调整联机重做日志的大小

运行 Oracle 的 Amazon RDS 数据库实例从四个联机重做日志 (每个日志的大小为 128 MB) 开始。以下示例说明如何使用 Amazon RDS 过程将每个日志的大小从 128 MB 调整到 512 MB。

Copy
/* Query V$LOG to see the logs. */ /* You start with 4 logs of 128 MB each. */ select GROUP#, BYTES, STATUS from V$LOG; GROUP# BYTES STATUS ---------- ---------- ---------------- 1 134217728 INACTIVE 2 134217728 CURRENT 3 134217728 INACTIVE 4 134217728 INACTIVE /* Add four new logs that are each 512 MB */ exec rdsadmin.rdsadmin_util.add_logfile(bytes => 536870912); exec rdsadmin.rdsadmin_util.add_logfile(bytes => 536870912); exec rdsadmin.rdsadmin_util.add_logfile(bytes => 536870912); exec rdsadmin.rdsadmin_util.add_logfile(bytes => 536870912); /* Query V$LOG to see the logs. */ /* Now there are 8 logs. */ select GROUP#, BYTES, STATUS from V$LOG; GROUP# BYTES STATUS ---------- ---------- ---------------- 1 134217728 INACTIVE 2 134217728 CURRENT 3 134217728 INACTIVE 4 134217728 INACTIVE 5 536870912 UNUSED 6 536870912 UNUSED 7 536870912 UNUSED 8 536870912 UNUSED /* Drop each inactive log using the group number. */ exec rdsadmin.rdsadmin_util.drop_logfile(grp => 1); exec rdsadmin.rdsadmin_util.drop_logfile(grp => 3); exec rdsadmin.rdsadmin_util.drop_logfile(grp => 4); /* Query V$LOG to see the logs. */ /* Now there are 5 logs. */ select GROUP#, BYTES, STATUS from V$LOG; GROUP# BYTES STATUS ---------- ---------- ---------------- 2 134217728 CURRENT 5 536870912 UNUSED 6 536870912 UNUSED 7 536870912 UNUSED 8 536870912 UNUSED /* Switch logs so that group 2 is no longer current. */ exec rdsadmin.rdsadmin_util.switch_logfile; /* Query V$LOG to see the logs. */ /* Now one of the new logs is current. */ SQL>select GROUP#, BYTES, STATUS from V$LOG; GROUP# BYTES STATUS ---------- ---------- ---------------- 2 134217728 ACTIVE 5 536870912 CURRENT 6 536870912 UNUSED 7 536870912 UNUSED 8 536870912 UNUSED /* Issue a checkpoint to clear log 2. */ exec rdsadmin.rdsadmin_util.checkpoint; /* Query V$LOG to see the logs. */ /* Now the final original log is inactive. */ select GROUP#, BYTES, STATUS from V$LOG; GROUP# BYTES STATUS ---------- ---------- ---------------- 2 134217728 INACTIVE 5 536870912 CURRENT 6 536870912 UNUSED 7 536870912 UNUSED 8 536870912 UNUSED # Drop the final inactive log. exec rdsadmin.rdsadmin_util.drop_logfile(grp => 2); /* Query V$LOG to see the logs. */ /* Now there are four 512 MB logs. */ select GROUP#, BYTES, STATUS from V$LOG; GROUP# BYTES STATUS ---------- ---------- ---------------- 5 536870912 CURRENT 6 536870912 UNUSED 7 536870912 UNUSED 8 536870912 UNUSED

保留存档重做日志

Oracle 版本 11.2.0.2.v7 及更高版本支持将存档重做日志本地保留在数据库实例中。

您可以在数据库实例上本地保留存档的重做日志,以用于 Oracle LogMiner (DBMS_LOGMNR) 这类产品。保留重做日志后,您可以使用 LogMiner 分析日子。有关更多信息,请参阅 Oracle 文档中的使用 LogMiner 分析重做日志文件

您可以使用 Amazon RDS 过程 rdsadmin.rdsadmin_util.set_configuration 保留存档的重做日志。set_configuration 过程具有以下参数。

参数名称 数据类型 默认值 必需 说明

name

varchar

-

必需

要更新的配置的名称。

value

varchar

-

必需

该配置的值。

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

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

您可以使用 Amazon RDS 过程 rdsadmin.rdsadmin_util.show_configuration 查看为数据库实例保留了多久的归档重做日志。

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

Copy
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 替换为小时数):

Copy
select sum(BLOCKS * BLOCK_SIZE) bytes from V$ARCHIVED_LOG where FIRST_TIME >= SYSDATE-(X/24) and DEST_ID=1;

仅在数据库实例的备份保留期大于零时生成存档的重做日志。默认情况下,备份保留期大于零,除非您明确将您的备份保留期设置为零,否则将为数据库实例生成存档的重做日志。要修改数据库实例的备份保留期,请参阅修改运行 Oracle 数据库引擎的数据库实例

在从数据库实例中删除存档的重做日志后,您无法再将这些日志下载到您的数据库实例。Amazon RDS 将在数据库实例外部保留存档的重做日志以支持将数据库实例还原到某个时间点。Amazon RDS 将根据为数据库实例配置的备份保留期,在数据库实例外部保留存档的重做日志。要修改数据库实例的备份保留期,请参阅修改运行 Oracle 数据库引擎的数据库实例

访问事务日志

Oracle 版本 11.2.0.4.v11 及更高版本、版本 12.1.0.2.v7 及更高版本支持访问事务日志。

您可能需要访问在线和存档重做日志文件,以供 GoldenGate、Attunity、Informatica 等外部工具进行挖掘。如果您希望访问在线和存档重做日志文件,必须首先创建目录对象,对物理文件路径提供只读访问权限。

以下代码用于创建目录,为您的在线和存档重做日志文件提供只读访问权限。

重要

此代码还会撤消 DROP ANY DIRECTORY 特权。

Copy
exec rdsadmin.rdsadmin_master_util.create_archivelog_dir; exec rdsadmin.rdsadmin_master_util.create_onlinelog_dir;

为在线和存档重做日志文件创建目录对象后,您可以使用 PL/SQL 读取文件。有关从目录对象读取文件的更多信息,请参阅 列出数据库实例目录中的文件读取数据库实例目录中的文件

以下代码会删掉在线和存档重做日志文件的目录:

Copy
exec rdsadmin.rdsadmin_master_util.drop_archivelog_dir; exec rdsadmin.rdsadmin_master_util.drop_onlinelog_dir;

以下代码用于授予和撤消 DROP ANY DIRECTORY 特权:

Copy
exec rdsadmin.rdsadmin_master_util.revoke_drop_any_directory; exec rdsadmin.rdsadmin_master_util.grant_drop_any_directory;

相关主题