执行 Oracle 数据库实例的常见数据库任务 - Amazon Relational Database Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

执行 Oracle 数据库实例的常见数据库任务

下文中介绍了如何在运行 Oracle 的 Amazon RDS 数据库实例上,执行与数据库相关的特定常见 DBA 任务。为了提供托管服务体验,Amazon RDS 不允许通过 shell 访问数据库实例,Amazon RDS 还限制了访问某些需要高级权限的系统过程和表。

更改数据库的全局名称

要更改数据库的全局名称,请使用 Amazon RDS 过程 rdsadmin.rdsadmin_util.rename_global_namerename_global_name 过程具有以下参数。

参数名称 数据类型 默认值 是否必需 描述

p_new_global_name

varchar2

数据库的新全局名称。

数据库必须处于打开状态,才能更改名称。有关更改数据库的全局名称的更多信息,请参阅 Oracle 文档中的 ALTER DATABASE

以下示例将数据库的全局名称更改为 new_global_name

exec rdsadmin.rdsadmin_util.rename_global_name(p_new_global_name => 'new_global_name');

创建表空间并配置其大小

Amazon RDS 仅支持数据文件、日志文件和控制文件的 Oracle Managed Files (OMF)。创建数据文件和日志文件时,无法指定物理文件名。

默认情况下,在启用自动扩展的情况下创建表空间,并且没有最大大小。由于这些默认设置,表空间会增大以占用所有分配的存储空间。建议您在永久表空间和临时表空间上指定适当的最大大小,并仔细监视空间使用率。

以下示例创建一个名为 users2 的表空间,其起始大小为 1 GB,最大大小为 10 GB:

CREATE TABLESPACE users2 DATAFILE SIZE 1G AUTOEXTEND ON MAXSIZE 10G;

以下示例创建了名为 temp01 的临时表空间:

CREATE TEMPORARY TABLESPACE temp01;

建议您不要使用小文件表空间,因为您无法使用适用于 Oracle 的 Amazon RDS 调整小文件表空间的大小。不过,您可以将数据文件添加到小文件表空间中。

您可以使用 ALTER TABLESPACE 调整大文件表空间的大小。可以 KB (K)、MB (M)、GB (G) 或 TB (T) 为单位指定大小。

以下示例将名为 users2 的大文件表空间的大小调整到 200MB。

ALTER TABLESPACE users2 RESIZE 200M;

以下示例向名为 users2 的小文件表空间添加其他数据文件。

ALTER TABLESPACE users2 ADD DATAFILE SIZE 100000M AUTOEXTEND ON NEXT 250m MAXSIZE UNLIMITED;

设置默认表空间

要设置默认表空间,请使用 Amazon RDS 过程 rdsadmin.rdsadmin_util.alter_default_tablespacealter_default_tablespace 过程具有以下参数。

参数名称 数据类型 默认值 是否必需 描述

tablespace_name

varchar

默认表空间的名称。

以下示例将默认表空间设置为 users2

EXEC rdsadmin.rdsadmin_util.alter_default_tablespace(tablespace_name => 'users2');

设置默认临时表空间

要设置默认临时表空间,请使用 Amazon RDS 过程 rdsadmin.rdsadmin_util.alter_default_temp_tablespacealter_default_temp_tablespace 过程具有以下参数。

参数名称 数据类型 默认值 是否必需 描述

tablespace_name

varchar

默认临时表空间的名称。

以下示例将默认临时表空间设置为 temp01

EXEC rdsadmin.rdsadmin_util.alter_default_temp_tablespace(tablespace_name => 'temp01');

通过检查点检验数据库

要通过检查点检验数据库,请使用 Amazon RDS 过程 rdsadmin.rdsadmin_util.checkpointcheckpoint 过程没有参数。

以下示例为数据库创建检查点。

EXEC rdsadmin.rdsadmin_util.checkpoint;

设置分布式恢复

要设置分布式恢复,请使用 Amazon RDS 过程 rdsadmin.rdsadmin_util.enable_distr_recoverydisable_distr_recovery。这些过程没有参数。

以下示例启用分布式恢复。

EXEC rdsadmin.rdsadmin_util.enable_distr_recovery;

以下示例禁用分布式恢复。

EXEC rdsadmin.rdsadmin_util.disable_distr_recovery;

设置数据库时区

您可以通过以下方式设置 Amazon RDS Oracle 数据库的时区:

  • Timezone 选项

    Timezone 选项在主机级别更改时区,并且会影响所有日期列和值(例如 SYSDATE)。有关更多信息,请参阅Oracle 时区

  • Amazon RDS 过程 rdsadmin.rdsadmin_util.alter_db_time_zone

    alter_db_time_zone 步骤仅更改某些数据类型的时区,而不更改 SYSDATE。在 Oracle 文档中列出了与设置时区有关的其他限制。

注意

您还可以为 Oracle Scheduler 设置默认时区。有关更多信息,请参阅 设置 Oracle Scheduler 作业的时区

alter_db_time_zone 过程具有以下参数。

参数名称 数据类型 默认值 是否必需 描述

p_new_tz

varchar2

作为已命名的区域或与协调世界时 (UTC) 的绝对偏移量的时区。有效偏移范围介于 -12:00 到 +14:00 之间。

以下示例将时区更改为 UTC 加 3 小时。

EXEC rdsadmin.rdsadmin_util.alter_db_time_zone(p_new_tz => '+3:00');

以下示例将时区更改为非洲/阿尔及尔时区。

EXEC rdsadmin.rdsadmin_util.alter_db_time_zone(p_new_tz => 'Africa/Algiers');

使用 alter_db_time_zone 过程更改时区后,重启数据库实例以使更改生效。有关更多信息,请参阅 重启中的数据库实例。有关升级时区的信息,请参阅 时区注意事项

使用 Oracle 外部表

Oracle 外部表是具有不在数据库中数据的表。这些数据位于数据库可以访问的外部文件中。使用外部表,您可以访问数据而无需将其加载到数据库中。有关外部表的更多信息,请参阅 Oracle 文档中的管理外部表

使用 Amazon RDS,您可以将外部表文件存储在目录对象中。您可以创建目录对象,或者使用 Oracle 数据库中预定义的目录对象,例如 DATA_PUMP_DIR 目录。有关创建目录对象的信息,请参阅在主数据存储空间中创建和删除目录。您可以查询 ALL_DIRECTORIES 视图来列出您的 Amazon RDS Oracle 数据库实例的目录对象。

注意

目录对象指向由实例使用的主数据存储空间 (Amazon EBS 卷)。—包括数据文件、重做日志、审核、跟踪和其他文件在内—所用的空间均计入分配的存储中。

您可以使用 DBMS_FILE_TRANSFER 包或 UTL_FILE 包,将外部数据文件从一个 Oracle 数据库移动到另一个。外部数据文件从源数据库上的目录移至目标数据库上的指定目录中。有关使用 DBMS_FILE_TRANSFER 的信息,请参阅 使用 Oracle Data Pump 导入

移动外部数据文件之后,您可以用它来创建外部表。以下示例创建使用 USER_DIR1 目录中 emp_xt_file1.txt 文件的外部表。

CREATE TABLE emp_xt ( emp_id NUMBER, first_name VARCHAR2(50), last_name VARCHAR2(50), user_name VARCHAR2(20) ) ORGANIZATION EXTERNAL ( TYPE ORACLE_LOADER DEFAULT DIRECTORY USER_DIR1 ACCESS PARAMETERS ( RECORDS DELIMITED BY NEWLINE FIELDS TERMINATED BY ',' MISSING FIELD VALUES ARE NULL (emp_id,first_name,last_name,user_name) ) LOCATION ('emp_xt_file1.txt') ) PARALLEL REJECT LIMIT UNLIMITED;

假设您要将位于 Amazon RDS Oracle 数据库实例中的数据移动到外部数据文件中。在这种情况下,您可以通过创建外部表并从数据库中的表选择数据来填充外部数据文件。例如,以下 SQL 语句通过查询数据库中的 orders_xt 表创建 orders 外部表。

CREATE TABLE orders_xt ORGANIZATION EXTERNAL ( TYPE ORACLE_DATAPUMP DEFAULT DIRECTORY DATA_PUMP_DIR LOCATION ('orders_xt.dmp') ) AS SELECT * FROM orders;

在此示例中,数据填充到 DATA_PUMP_DIR 目录的 orders_xt.dmp 文件中。

使用 Automatic Workload Repository (AWR) 生成性能报告

要收集性能数据并生成报告,Oracle 建议使用 Automatic Workload Repository (AWR)。AWR 需要 Oracle Database Enterprise Edition 以及 Diagnostics and Tuning 包的许可证。要启用 AWR,请将 CONTROL_MANAGEMENT_PACK_ACCESS 初始化参数设置为 DIAGNOSTICDIAGNOSTIC+TUNING

在 RDS 中使用 AWR 报告

要生成 AWR 报告,您可以运行脚本,例如 awrrpt.sql。这些脚本安装在数据库主机服务器上。在 Amazon RDS 中,您无法直接访问主机。但是,您可以从其他 Oracle 数据库安装中获取 SQL 脚本的副本。

您还可以通过在 SYS.DBMS_WORKLOAD_REPOSITORY PL/SQL 软件包中运行过程来使用 AWR。您可以使用此软件包管理基准和快照,还可以显示 ASH 和 AWR 报告。例如,要生成文本格式的 AWR 报告,请运行 DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_TEXT 过程。但是,您无法从 AWS 管理控制台访问这些 AWR 报告。

使用 AWR 时,我们建议使用 rdsadmin.rdsadmin_diagnostic_util 过程。您可以使用这些过程生成以下内容:

  • AWR 报告

  • Active Session History (ASH) 报告

  • Automatic Database Diagnostic Monitor (ADDM) 报告

  • AWR 数据的 Oracle Data Pump Export 转储文件

rdsadmin_diagnostic_util 过程将报告保存到数据库实例文件系统。您可以从控制台访问这些报告。您还可以使用 rdsadmin.rds_file_util 过程访问报告,并可以使用 S3 集成访问复制到 Amazon S3 的报告。有关更多信息,请参阅 读取数据库实例目录中的文件Amazon S3 集成

您可在以下 Amazon RDS for Oracle 数据库引擎版本中使用 rdsadmin_diagnostic_util 过程:

  • 12.1.0.2.v20 或更高的 12.1 版本

  • 12.2.0.1.ru-2020-04.rur-2020-04.r1 或更高的 12.2 版本

  • 18.0.0.0.ru-2020-04.rur-2020-04.r1 或更高的 18c 版本

  • 19.0.0.0.ru-2020-04.rur-2020-04.r1 或更高的 19c 版本

诊断实用程序软件包的通用参数

通常,您在通过 rdsadmin_diagnostic_util 软件包管理 AWR 和 ADDM 时可以使用以下参数。

参数 数据类型 默认值 是否必需 描述

begin_snap_id

NUMBER

开始快照的 ID。

end_snap_id

NUMBER

结束快照的 ID。

dump_directory

VARCHAR2

BDUMP

将报告写入或将文件导出到的目录。如果您指定非默认目录,则运行 rdsadmin_diagnostic_util 过程的用户必须具有该目录的写入权限。

report_type

VARCHAR2

HTML

报告的格式。有效值为 TEXTHTML

dbid

NUMBER

Oracle 的有效数据库标识符 (DBID),显示在 DBA_HIST_DATABASE_INSTANCE 中。如果未指定此参数,RDS 将使用 V$DATABASE.DBID 视图中显示的当前 DBID。

使用 rdsadmin_diagnostic_util 软件包管理 ASH 时,通常使用以下参数。

参数 数据类型 默认值 是否必需 描述

begin_time

DATE

ASH 分析的开始时间。

end_time

DATE

ASH 分析的结束时间。

slot_width

NUMBER

0

ASH 报告的“Top Activity (热门活动)”部分中使用的槽的持续时间(以秒为单位)。如果未指定此参数,则 begin_timeend_time 之间的时间间隔不超过 10 个槽。

sid

NUMBER

Null

会话 ID。

sql_id

VARCHAR2

Null

SQL ID。

wait_class

VARCHAR2

Null

等待类名称。

service_hash

NUMBER

Null

服务名称哈希。

module_name

VARCHAR2

Null

模块名称。

action_name

VARCHAR2

Null

操作名称。

client_id

VARCHAR2

Null

数据库会话的特定于应用程序的 ID。

plsql_entry

VARCHAR2

Null

PL/SQL 入口点。

生成 AWR 报告

要生成 AWR 报告,请使用 rdsadmin.rdsadmin_diagnostic_util.awr_report 过程。

以下示例生成快照范围 101–106 的 AWR 报告。输出文本文件名为 awrrpt_101_106.txt。您可以通过 AWS 管理控制台访问此报告。

exec rdsadmin.rdsadmin_diagnostic_util.awr_report(101,106,'TEXT');

以下示例生成快照范围 63–65 的 HTML 报告。输出 HTML 文件名为 awrrpt_63_65.html。该过程将报告写入名为 AWR_RPT_DUMP 的非默认数据库目录。

exec rdsadmin.rdsadmin_diagnostic_util.awr_report(63,65,'HTML','AWR_RPT_DUMP');

将 AWR 数据提取到转储文件

要将 AWR 数据提取到转储文件中,请使用 rdsadmin.rdsadmin_diagnostic_util.awr_extract 过程。

以下示例提取范围 101–106 中的快照。输出转储文件名为 awrextract_101_106.dmp。您可以通过控制台访问此文件。

exec rdsadmin.rdsadmin_diagnostic_util.awr_extract(101,106);

以下示例提取范围在 63–65 中的快照。输出转储文件名为 awrextract_63_65.dmp。该文件存储在名为 AWR_RPT_DUMP 的非默认数据库目录中。

exec rdsadmin.rdsadmin_diagnostic_util.awr_extract(63,65,'AWR_RPT_DUMP');

生成 ADDM 报告

要生成 ADDM 报告,请使用 rdsadmin.rdsadmin_diagnostic_util.addm_report 过程。

以下示例生成快照范围 101–106 的 ADDM 报告。输出文本文件名为 addmrpt_101_106.txt。您可以通过控制台访问报告。

exec rdsadmin.rdsadmin_diagnostic_util.addm_report(101,106);

以下示例生成快照范围 63–65 的 ADDM 报告。输出文本文件名为 addmrpt_63_65.txt。该文件存储在名为 ADDM_RPT_DUMP 的非默认数据库目录中。

exec rdsadmin.rdsadmin_diagnostic_util.addm_report(63,65,'ADDM_RPT_DUMP');

生成 ASH 报告

要生成 ASH 报告,请使用 rdsadmin.rdsadmin_diagnostic_util.ash_report 过程。

以下示例生成一个 ASH 报告,其中包含当前时间 14 分钟前的数据。输出文件的名称使用格式 ashrptbegin_timeend_time.txt,其中 begin_timeend_time 使用格式 YYYYMMDDHH24MISS。您可以通过控制台访问文件。

BEGIN rdsadmin.rdsadmin_diagnostic_util.ash_report( begin_time => SYSDATE-14/1440, end_time => SYSDATE, report_type => 'TEXT'); END; /

以下示例生成一个 ASH 报告,其中包括从 2019 年 11 月 18 日下午 6 点 07 分到 2019 年 11 月 18 日下午 6 点 15 分的数据。输出 HTML 报告名为 ashrpt_20190918180700_20190918181500.html。该报告存储在名为 AWR_RPT_DUMP 的非默认数据库目录中。

BEGIN rdsadmin.rdsadmin_diagnostic_util.ash_report( begin_time => TO_DATE('2019-09-18 18:07:00', 'YYYY-MM-DD HH24:MI:SS'), end_time => TO_DATE('2019-09-18 18:15:00', 'YYYY-MM-DD HH24:MI:SS'), report_type => 'html', dump_directory => 'AWR_RPT_DUMP'); END; /

从控制台或 CLI 访问 AWR 报告

要访问 AWR 报告或导出转储文件,您可以使用 AWS 管理控制台 或 AWS CLI。有关更多信息,请参阅下载数据库日志文件

要在同一 Virtual Private Cloud (VPC) 或对等 VPC 中使用与 Amazon RDS 数据库实例的 Oracle 数据库链接,这两个数据库实例之间应具有有效路由。使用 VPC 路由表和网络访问控制列表 (ACL) 验证数据库实例之间的有效路由。

每个数据库实例的安全组必须允许另一个数据库实例的传入和传出。入站和出站规则可引用同一 VPC 或对等 VPC 中的安全组。有关更多信息,请参阅更新安全组以引用对等的 VPC 安全组

如果您已使用 VPC 中的 DHCP 选项集配置自定义 DNS 服务器,则自定义 DNS 服务器必须能够解析数据库链接目标的名称。有关更多信息,请参阅 设置自定义 DNS 服务器

有关将数据库链接用于 Oracle Data Pump 的更多信息,请参阅 使用 Oracle Data Pump 导入.

设置数据库实例的默认版本

您可以在私有环境中重新定义称为版本的数据库对象。您可以使用基于版本的重新定义,以最少的停机来升级应用程序的数据库对象。

您可以使用 Amazon RDS 过程 rdsadmin.rdsadmin_util.alter_default_edition 设置 Amazon RDS Oracle 数据库实例的默认版本。

以下示例将 Amazon RDS Oracle 数据库实例的默认版本设置为 RELEASE_V1

exec rdsadmin.rdsadmin_util.alter_default_edition('RELEASE_V1');

以下示例将 Amazon RDS Oracle 数据库实例的默认版本设置回 Oracle 默认值。

exec rdsadmin.rdsadmin_util.alter_default_edition('ORA$BASE');

有关基于 Oracle 版本的重新定义的更多信息,请参阅 Oracle 文档中的关于版本和基于版本的重新定义

为 SYS.AUD$ 表启用审核

要在数据库审核跟踪表 SYS.AUD$ 上启用审核,请使用 Amazon RDS 过程 rdsadmin.rdsadmin_master_util.audit_all_sys_aud_table。唯一受支持的审核属性为 ALL。您无法审核或不审核单个语句或操作。

运行以下版本的 Oracle 数据库实例支持启用审核:

  • 12.1.0.2.v14 及更高的 12.1 版本

  • 所有 12.2.0.1 版本

  • 所有 18.0.0.0 版本

  • 所有 19.0.0.0 版本

audit_all_sys_aud_table 过程具有以下参数。

参数名称 数据类型 默认值 是否必需 描述

p_by_access

布尔值

true

设置为 true 以审核 BY ACCESS。设置为 false 以审核 BY SESSION

以下查询返回数据库的 SYS.AUD$ 的当前审核配置。

SELECT * FROM DBA_OBJ_AUDIT_OPTS WHERE OWNER='SYS' AND OBJECT_NAME='AUD$';

以下命令启用 SYS.AUD$ BY ACCESS 上的 ALL 的审核。

exec rdsadmin.rdsadmin_master_util.audit_all_sys_aud_table; exec rdsadmin.rdsadmin_master_util.audit_all_sys_aud_table(p_by_access => true);

以下命令启用 SYS.AUD$ BY SESSION 上的 ALL 的审核。

exec rdsadmin.rdsadmin_master_util.audit_all_sys_aud_table(p_by_access => false);

有关更多信息,请参阅 Oracle 文档中的 AUDIT(传统审核)

为 SYS.AUD$ 表禁用审核

要在数据库审核跟踪表 SYS.AUD$ 上禁用审核,请使用 Amazon RDS 过程 rdsadmin.rdsadmin_master_util.noaudit_all_sys_aud_table。此过程不需要任何参数。

以下查询返回数据库的 SYS.AUD$ 的当前审核配置:

SELECT * FROM DBA_OBJ_AUDIT_OPTS WHERE OWNER='SYS' AND OBJECT_NAME='AUD$';

以下命令禁用 SYS.AUD$ 上的 ALL 的审计。

exec rdsadmin.rdsadmin_master_util.noaudit_all_sys_aud_table;

有关更多信息,请参阅 Oracle 文档中的 NOAUDIT(传统审核)

清理中断的在线索引构建

要清理失败的在线索引构建,请使用 Amazon RDS 过程 rdsadmin.rdsadmin_dbms_repair.online_index_clean.

online_index_clean 过程具有以下参数。

参数名称 数据类型 默认值 是否必需 描述

object_id

binary_integer

ALL_INDEX_ID

索引的对象 ID。通常,您可以使用 ORA-08104 错误文本中的对象 ID。

wait_for_lock

binary_integer

rdsadmin.rdsadmin_dbms_repair.lock_wait

指定 rdsadmin.rdsadmin_dbms_repair.lock_wait(默认值),尝试锁定底层对象,在锁定失败时重试,直至达到内部限制。

指定 rdsadmin.rdsadmin_dbms_repair.lock_nowait,尝试锁定底层对象,但在锁定失败时不重试。

下面的示例清理失败的在线索引构建:

declare is_clean boolean; begin is_clean := rdsadmin.rdsadmin_dbms_repair.online_index_clean( object_id => 1234567890, wait_for_lock => rdsadmin.rdsadmin_dbms_repair.lock_nowait ); end; /

有关更多信息,请参阅 Oracle 文档中的 ONLINE_INDEX_CLEAN 函数

跳过损坏的数据块

要在索引和表扫描期间跳过损坏的数据块,请使用 rdsadmin.rdsadmin_dbms_repair 程序包。

下面的过程封装了 sys.dbms_repair.admin_table 过程的功能,并且不带任何参数:

  • rdsadmin.rdsadmin_dbms_repair.create_repair_table

  • rdsadmin.rdsadmin_dbms_repair.create_orphan_keys_table

  • rdsadmin.rdsadmin_dbms_repair.drop_repair_table

  • rdsadmin.rdsadmin_dbms_repair.drop_orphan_keys_table

  • rdsadmin.rdsadmin_dbms_repair.purge_repair_table

  • rdsadmin.rdsadmin_dbms_repair.purge_orphan_keys_table

下面的过程采用与其 Oracle 数据库 DBMS_REPAIR 程序包中的对应项相同的参数。

  • rdsadmin.rdsadmin_dbms_repair.check_object

  • rdsadmin.rdsadmin_dbms_repair.dump_orphan_keys

  • rdsadmin.rdsadmin_dbms_repair.fix_corrupt_blocks

  • rdsadmin.rdsadmin_dbms_repair.rebuild_freelists

  • rdsadmin.rdsadmin_dbms_repair.segment_fix_status

  • rdsadmin.rdsadmin_dbms_repair.skip_corrupt_blocks

有关处理数据库损坏的更多信息,请参阅 Oracle 文档中的 DBMS_REPAIR

例 响应损坏的数据块

此示例显示了响应损坏的数据块的基本工作流程。您的步骤将取决于数据块损坏的位置和性质。

重要

在尝试修复损坏的数据块之前,请仔细查看 DBMS_RECH 文档。

在索引和表扫描期间跳过损坏的数据块

  1. 如果还没有修复表,则运行以下程序来创建修复表。

    exec rdsadmin.rdsadmin_dbms_repair.create_repair_table; exec rdsadmin.rdsadmin_dbms_repair.create_orphan_keys_table;
  2. 运行以下程序以检查现有记录,适当时清除它们。

    SELECT COUNT(*) FROM SYS.REPAIR_TABLE; SELECT COUNT(*) FROM SYS.ORPHAN_KEY_TABLE; SELECT COUNT(*) FROM SYS.DBA_REPAIR_TABLE; SELECT COUNT(*) FROM SYS.DBA_ORPHAN_KEY_TABLE; exec rdsadmin.rdsadmin_dbms_repair.purge_repair_table; exec rdsadmin.rdsadmin_dbms_repair.purge_orphan_keys_table;
  3. 运行以下程序检查损坏的数据块。

    SET SERVEROUTPUT ON DECLARE v_num_corrupt INT; BEGIN v_num_corrupt := 0; rdsadmin.rdsadmin_dbms_repair.check_object ( schema_name => '&corruptionOwner', object_name => '&corruptionTable', corrupt_count => v_num_corrupt ); dbms_output.put_line('number corrupt: '||to_char(v_num_corrupt)); END; / COL CORRUPT_DESCRIPTION FORMAT a30 COL REPAIR_DESCRIPTION FORMAT a30 SELECT OBJECT_NAME, BLOCK_ID, CORRUPT_TYPE, MARKED_CORRUPT, CORRUPT_DESCRIPTION, REPAIR_DESCRIPTION FROM SYS.REPAIR_TABLE; SELECT SKIP_CORRUPT FROM DBA_TABLES WHERE OWNER = '&corruptionOwner' AND TABLE_NAME = '&corruptionTable';
  4. 使用 skip_corrupt_blocks 过程为受影响的表启用或禁用损坏跳过。根据具体情况,您可能还需要将数据提取到新表,然后删除包含损坏的数据块的表。

    运行以下程序为受影响的表启用损坏跳过。

    begin rdsadmin.rdsadmin_dbms_repair.skip_corrupt_blocks ( schema_name => '&corruptionOwner', object_name => '&corruptionTable', object_type => rdsadmin.rdsadmin_dbms_repair.table_object, flags => rdsadmin.rdsadmin_dbms_repair.skip_flag); end; / select skip_corrupt from dba_tables where owner = '&corruptionOwner' and table_name = '&corruptionTable';

    运行以下程序禁用损坏跳过。

    begin rdsadmin.rdsadmin_dbms_repair.skip_corrupt_blocks ( schema_name => '&corruptionOwner', object_name => '&corruptionTable', object_type => rdsadmin.rdsadmin_dbms_repair.table_object, flags => rdsadmin.rdsadmin_dbms_repair.noskip_flag); end; / select skip_corrupt from dba_tables where owner = '&corruptionOwner' and table_name = '&corruptionTable';
  5. 完成所有修复工作后,运行以下过程删除修复表。

    exec rdsadmin.rdsadmin_dbms_repair.drop_repair_table; exec rdsadmin.rdsadmin_dbms_repair.drop_orphan_keys_table;

调整只读副本中的临时表空间大小

默认情况下,在启用自动扩展的情况下创建 Oracle 表空间,并且没有最大大小。由于这些默认设置,表空间在某些情况下会变得过大。建议您在永久表空间和临时表空间上指定适当的最大大小,并仔细监视空间使用率。

要调整 Oracle 数据库实例的只读副本中的临时空间大小,请使用 rdsadmin.rdsadmin_util.resize_temp_tablespacerdsadmin.rdsadmin_util.resize_tempfile Amazon RDS 过程。

resize_temp_tablespace 过程具有以下参数。

参数名称 数据类型 默认值 是否必需 描述

temp_tbs

varchar2

要调整大小的临时表空间的名称。

size

varchar2

能够以字节(默认)、KB (K)、MB (M) 或 GB (G) 为单位指定大小。

resize_tempfile 过程具有以下参数。

参数名称 数据类型 默认值 是否必需 描述

file_id

binary_integer

要调整大小的临时表空间的文件标识符。

size

varchar2

能够以字节(默认)、KB (K)、MB (M) 或 GB (G) 为单位指定大小。

以下示例将只读副本上名为 TEMP 的临时表空间的大小调整为 4 GB。

exec rdsadmin.rdsadmin_util.resize_temp_tablespace('TEMP','4G');
exec rdsadmin.rdsadmin_util.resize_temp_tablespace('TEMP','4096000000');

以下示例将只读副本上基于临时文件(文件标识符为 1)的临时表空间大小调整为 2 MB。

exec rdsadmin.rdsadmin_util.resize_tempfile(1,'2M');

有关 Oracle 数据库实例的只读副本的更多信息,请参阅使用适用于 Amazon RDS 的 Oracle 副本

清除回收站

删除表时,Oracle 数据库不会立即清除其存储空间。数据库将重命名表,并将其与所有关联的对象放在回收站中。清除回收站将删除这些项目并释放其存储空间。

要清除整个回收站,请使用 Amazon RDS 过程 rdsadmin.rdsadmin_util.purge_dba_recyclebin。但是,此过程无法清除回收站中的 SYSRDSADMIN 对象。如果您需要清除这些对象,请联系 AWS Support。

以下示例清除整个回收站。

exec rdsadmin.rdsadmin_util.purge_dba_recyclebin;