反馈已提交

网络繁忙

Oracle环境准备(LogMiner)

  • 文档创建者:Naya
  • 历史版本:4
  • 最近更新:Naya 于 2023-11-02
  • 1. 概述

    CDC(Change Data Capture),即数据变更抓取,通过为源端数据源开启CDC,九数云可实现数据源界面数据的实时更新,支持短时间内快速同步和计算

    本章节主要介绍如何为 Oracle 数据库开启 LogMiner 模式的CDC功能。在九数云中开启「实时数据」前,需要参考本文在数据源中进行一些配置,为后续开启「实时数据」做好准备。

    2. 操作步骤

    2.1 确认当前使用的数据库版本

    本地宝支持连接的 Oracle 数据库版本如下表所示:

    数据库类型支持数据库版本
    Oracle

    Oracle 10g、11g、12c、18c、19c、Oracle RAC集群

    注:不支持CDB/PDB多租户模式的Oracle数据库。

    命令提示符中输入:sqlplus / as sysdba 进入数据库操作界面。

    同时可以查看到当前数据库的版本,如下图所示:

    1.png

    2.2 开启 Archive Log 

    1)以具有 DBA 权限的用户身份登录数据库

    2)使用命令查看数据库的 logging mode :

    select log_mode from v$database;

    如果返回的结果是 ARCHIVELOG , 可以直接操作 2.3 节进行操作。

    2.png

    如果返回的结果是 NOARCHIVELOG , 继续按照以下步骤操作:

    • 关闭数据库: 使用命令:shutdown immediate;

    • 启动并挂载数据库: startup mount;

    • 开启存档并打开数据库:

    alter database archivelog;alter database open;

    2.3 开启 Supplemental Log

    2.3.1 Oracle 10g、11g版本开启方式

    使用如下命令:

    alter database add supplemental log data;alter system switch logfile;
    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

    3.png

    2.3.2 Oracle 12c、18c、19c、RAC集群版本的特殊配置方法

    使用以下命令,确认 supplemental logging 是否开启:

    SELECT supplemental_log_data_min, supplemental_log_data_pk, supplemental_log_data_all FROM v$database;

    4.png

    如果返回的三列都是 Yes 或者 Implicit ,则表示 identification key logging(标识键日志)和 full supplemental logging(全补充日志)已同时开启,可以直接查看 2.5 节数据库账号相关内容。

    如果返回的前两列是 Yes 或者 Implicit ,则表示只开启了 identification key logging(标识键日志)。需要参考 2.4 节开启全补充日志。

    2.3.3 Oracle 12c、18c、19c、RAC集群的 PDB 开启方式

    为单个表开启identification key(标识键日志):

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;    
    ALTER TABLE <schema name>.<table name> ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;

    对所有表开启identification key(标识键日志):

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;

    2.4 开启 full supplemental logging(全补充日志)

    单表开启full supplemental logging(全补充日志),使用如下命令:

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
    ALTER TABLE <schema name>.<table name> ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

    所有表开启full supplemental logging(全补充日志),使用如下命令:

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

    5.png

    提交更改的配置:

    ALTER SYSTEM SWITCH LOGFILE;

    2.5 分配数据库账号权限

    需要规划一个可访问数据源的账号,用于后续访问数据源并进行数据提取、写入的同步操作。

    创建账号操作详情请参见: 创建 Oracle 账号

    2.5.1 Oracle 10g、11g版本

    使用如下命令创建用户帐户并分配权限:

    CREATE USER <user name> IDENTIFIED BY <password>;
    GRANT create session, alter session, execute_catalog_role, select any dictionary, select any transaction, select any table, unlimited tablespace to <user name>;

    6.png

    注:只支持Non-CDB。

    2.5.2 Oracle 12c、18c、19c standard databases 版本

    在Oracle 12c、19c标准模式下,创建一个用户所必须的权限。

    1)以具有DBA权限的用户身份登录数据库

    2)创建普通用户:

    CREATE USER <user name> IDENTIFIED BY <password>;
    GRANT create session, alter session, select any dictionary, select any transaction,select any table,logmining, execute_catalog_role TO <username>;

    根据对表的权限需求,重复执行最后一个命令来赋予 select 权限。

    2.6 检查用户权限

    注:Oracle 11g 及以下版本不需要 LOGMINING 权限

    输入以下命令检查判断当前用户是否有 LOGMINER 权限。

    WITH required_sys_privileges AS (
        SELECT column_value AS PRIVILEGE
        FROM TABLE (
            sys.odcivarchar2list(
                    'SELECT ANY TRANSACTION',
                    'CREATE SESSION',
                    'SELECT ANY DICTIONARY',
                    'SELECT ANY TABLE',
                    'FLASHBACK ANY TABLE',
                    'LOGMINING'
                )
            )
    ),
         required_role_privileges AS (
             SELECT column_value AS ROLE_NAME
             FROM TABLE (
                 sys.odcivarchar2list(
                         'EXECUTE_CATALOG_ROLE',
                         'RESOURCE'
                     )
                 )
         ),
         required_table_privileges AS (
             SELECT column_value AS PRIVILEGE
             FROM TABLE (
                 sys.odcivarchar2list(
                         'DBMS_FLASHBACK',
                         'DBMS_LOGMNR',
                         'DBMS_LOGMNR_D'
                     )
                 )
         )
    SELECT r.PRIVILEGE,
           NVL2(p.USERNAME, 'OK', 'REQUIRED') AS PRIVILEGE_STATUS
    FROM required_sys_privileges r
             LEFT JOIN user_sys_privs p
                       ON r.PRIVILEGE = p.PRIVILEGE
    UNION
    SELECT r.ROLE_NAME,
           NVL2(p.USERNAME, 'OK', 'REQUIRED') AS PRIVILEGE_STATUS
    FROM required_role_privileges r
             LEFT JOIN user_role_privs p
                       ON r.ROLE_NAME = p.GRANTED_ROLE
    UNION
    SELECT r.PRIVILEGE,
           NVL2(p.GRANTEE, 'OK', 'REQUIRED') AS PRIVILEGE_STATUS
    FROM required_table_privileges r
             LEFT JOIN user_tab_privs p
                       ON r.PRIVILEGE = p.TABLE_NAME;

    对于返回结果,若显示为 Required 则是开启 logminer 缺乏的权限,显示为 OK 则是有权限。

    7.png

    对于缺乏的权限,需要进行开启。

    3. 后续步骤

    配置好数据库环境后,使用九数云本地宝连接 Oracle 数据库。详情参见文档:连接数据库

    附件列表


    主题: 导入数据源
    已经是第一篇
    已经是最后一篇
    • 有帮助
    • 没帮助
    • 只是浏览

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持