执行 Oracle 数据库实例的常见日志相关任务
下文中介绍了如何在运行 Oracle 的 Amazon RDS 数据库实例上,执行与日志记录相关的特定常见 DBA 任务。为了提供托管服务体验,Amazon RDS 不允许通过 shell 访问数据库实例,而仅限访问某些需要高级权限的系统过程和表。
有关更多信息,请参阅“Amazon RDS for Oracle 数据库日志文件”。
设置强制日志记录
在强制日志记录模式下,Oracle 记录对数据库进行的所有更改,但在临时表空间和临时段中进行的更改除外 (忽略 NOLOGGING
子句)。有关更多信息,请参阅 Oracle 文档中的指定“强制日志记录”模式
要设置强制日志记录,请使用 Amazon RDS 过程 rdsadmin.rdsadmin_util.force_logging
。force_logging
过程具有以下参数。
参数名称 | 数据类型 | 默认值 | 是 | 描述 |
---|---|---|---|---|
|
布尔值 |
true |
否 |
设置为 |
以下示例将数据库置于强制日志记录模式下。
EXEC rdsadmin.rdsadmin_util.force_logging(p_enable =>
true
);
设置补充日志记录
如果启用补充日志记录,则 LogMiner 将具有支持链接行和集群表的必要信息。有关更多信息,请参阅 Oracle 文档中的补充日志记录
Oracle 数据库在默认情况下不启用补充日志记录。要启用和禁用补充日志记录,请使用 Amazon RDS 过程 rdsadmin.rdsadmin_util.alter_supplemental_logging
。有关 Amazon RDS 如何管理 Oracle 数据库实例的存档重做日志的保留期的更多信息,请参阅 保留存档重做日志。
alter_supplemental_logging
过程具有以下参数。
参数名称 | 数据类型 | 默认值 | 必需 | 描述 |
---|---|---|---|---|
|
varchar2 |
— |
是 |
如果为 |
|
varchar2 |
null |
否 |
补充日志记录的类型。有效值为 |
以下示例启用补充日志记录。
begin rdsadmin.rdsadmin_util.alter_supplemental_logging( p_action => '
ADD
'); end; /
以下示例为所有具有固定长度的最大大小列启用补充日志记录。
begin rdsadmin.rdsadmin_util.alter_supplemental_logging( p_action => '
ADD
', p_type => 'ALL
'); end; /
以下示例为主键列启用补充日志记录。
begin rdsadmin.rdsadmin_util.alter_supplemental_logging( p_action => '
ADD
', p_type => 'PRIMARY KEY
'); end; /
切换联机日志文件
要切换日志文件,请使用 Amazon RDS 过程 rdsadmin.rdsadmin_util.switch_logfile
。switch_logfile
过程没有参数。
以下示例切换日志文件。
EXEC rdsadmin.rdsadmin_util.switch_logfile;
添加联机重做日志
运行 Oracle 的 Amazon RDS 数据库实例从四个联机重做日志 (每个日志的大小为 128 MB) 开始。要添加其他重做日志,请使用 Amazon RDS 过程 rdsadmin.rdsadmin_util.add_logfile
。
add_logfile
过程具有以下参数。
注意
这些参数是互斥的。
参数名称 | 数据类型 | 默认值 | 必需 | 描述 |
---|---|---|---|---|
|
positive |
null |
否 |
日志文件的大小 (以字节为单位)。 |
|
varchar2 |
— |
是 |
日志文件的大小。可以 KB (K)、MB (M) 或 GB (G) 为单位指定大小。 |
以下命令将添加一个 100MB 日志文件。
EXEC rdsadmin.rdsadmin_util.add_logfile(p_size => '
100M
');
删除联机重做日志
要删除重做日志,请使用 Amazon RDS 过程 rdsadmin.rdsadmin_util.drop_logfile
。drop_logfile
过程具有以下参数。
参数名称 | 数据类型 | 默认值 | 必需 | 描述 |
---|---|---|---|---|
|
positive |
— |
是 |
日志的组编号。 |
以下示例删除组编号为 3 的日志。
EXEC rdsadmin.rdsadmin_util.drop_logfile(grp =>
3
);
您只能删除具有未使用或不活动状态的日志。以下示例获取日志的状态。
SELECT GROUP#, STATUS FROM V$LOG; GROUP# STATUS ---------- ---------------- 1 CURRENT 2 INACTIVE 3 INACTIVE 4 UNUSED