配置自行管理的 Oracle 数据库

  1. 验证您的数据库是否以 ARCHIVELOG 模式运行。
  2. 为此,请登录您的 Oracle 数据库并在 SQL 提示符处运行以下命令:

    SELECT LOG_MODE FROM V$DATABASE;

    1. 如果结果为 ARCHIVELOG,则继续执行第 2 步。
    2. 如果结果为 NOARCHIVELOG,则需要为数据库启用 ARCHIVELOG 模式。
    3. SYSDBA 身份登录后运行以下命令:
      SHUTDOWN IMMEDIATE;
      STARTUP MOUNT;
      ALTER DATABASE ARCHIVELOG;
      ALTER DATABASE OPEN;
    4. 归档的日志文件会占用磁盘空间,因此您需要为数据库配置 DB_RECOVERY_FILE_DEST_SIZE 参数。使用此参数指定目标数据库恢复文件要使用的总空间硬性限制(以字节为单位)。通过设置此参数,您可以权衡防止数据库耗尽磁盘空间与数据流因日志位置丢失而失败之间的权衡。

  3. 通过运行以下 Oracle 恢复管理器 (RMAN) 命令,为您的数据库定义数据保留政策:
    TARGET /
    CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 4 DAYS;
    

    我们建议您将备份和归档日志至少保留 4 天,建议保留 7 天。

  4. 返回到用于配置 Oracle 日志文件轮替政策的数据库工具的 SQL 提示。我们建议日志文件大小不要超过 512 MB。
  5. 启用补充日志数据。为此,请先运行以下命令来启用最低限度的数据库级补充日志记录功能:
    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

    接下来,选择是为特定表还是整个数据库启用日志记录。

    如需仅记录特定表的更改,请针对要复制的每个表运行以下命令:

    ALTER TABLE SCHEMA.TABLE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS

    替换以下内容:

    • SCHEMA:包含表的架构的名称。
    • TABLE:您要记录更改的表的名称。

    如需复制数据库中的大部分或所有表,请考虑为整个数据库启用日志记录。

    运行以下命令可为整个数据库启用补充日志数据:

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
  6. 向将用于连接到数据库的用户账号授予适当的权限。为此,请运行以下命令:
    GRANT EXECUTE_CATALOG_ROLE TO USER_NAME;
    GRANT CONNECT TO USER_NAME;
    GRANT CREATE SESSION TO USERNAME;
    GRANT SELECT ON SYS.V$DATABASE TO USERNAME;
    GRANT SELECT ON SYS.V$ARCHIVED_LOG TO USERNAME;
    GRANT SELECT ON SYS.V$LOGMNR_CONTENTS TO USER_NAME;
    GRANT EXECUTE ON DBMS_LOGMNR TO USER_NAME;
    GRANT EXECUTE ON DBMS_LOGMNR_D TO USER_NAME;
    GRANT SELECT ANY TRANSACTION TO USER_NAME;
    GRANT SELECT ANY TABLE TO USER_NAME;
    

    如果贵组织不允许授予 GRANT SELECT ANY TABLE 权限,请使用 Datastream 常见问题解答页面的 Oracle 变更数据捕获 (CDC) 部分中所述的解决方案。

    如果您的来源数据库是 Oracle 12c 或更新版本,则授予以下额外的权限:

    GRANT LOGMINING TO USER_NAME;