34、数据库迁移至 Exadata 云服务的详细指南

数据库迁移至 Exadata 云服务的详细指南

1. 代理配置与启动

代理配置过程会在本地创建一个配置属性文件,路径为 /home/oracle/Dipc/dicloud/agent/dipcagent001/conf/agent.properties 。要启动本地服务器上的远程代理,可以按以下步骤操作:

cd /home/oracle/Dipc/dicloud/agent/dipcagent001/bin

启动代理后,会有一系列通知信息,如代理注册状态、代理标识完成等。不过,可能会遇到代理向 GoldenGate 请求失败的错误,提示 java.net.ConnectException: Connection refused ,这意味着 GoldenGate 性能指标服务器未运行或未正确配置,需要进行相应配置。

代理启动后,可在 DIPC 控制台检查其状态,应显示为“Running”。通过点击代理链接可查看更多详细信息,还能点击已安装代理的配置查看配置详情。另外,检查代理的详细状态,若所有组件显示绿色状态,则表示代理运行正常且功能正常。

同时,需要从本地虚拟机的 gghome 检查管理器进程是否运行以及其运行的端口,可以使用以下命令进入 GoldenGate 主目录并使用 ggsci 命令:

cd $GGHOME
./ggsci
2. 代理停止

停止代理可在另一个终端执行以下命令:

/home/oracle/Dipc/dicloud/agent/dipcagent001/bin/stopAgentInstance.sh

停止代理后,可在启动代理的窗口查看步骤日志。在控制台主屏幕上也能看到代理的停止状态,之前运行的代理数量可能会减少。点击左侧面板的“Agent”链接,可列出所有配置的代理及其状态,能看到本地代理已停止。需要注意的是,停止代理不会停止 OGG 管理器进程,这意味着即使代理未运行,复制操作仍可继续,但使用 DIPC 进行数据复制解决方案时,本地远程代理与 DIPC 的注册是必须的,这有助于客户监控进程。

3. 本地环境配置

本地环境的配置信息如下表所示:
| 配置项 | 详情 |
| ---- | ---- |
| 数据库名称 | opmcdb(本地主类容器数据库) |
| 版本 | 12.2.0.1 |
| 监听器端口 | 1521 |
| PDB | opdwh(本地数据仓库) |
| 模式 | dipcsrc |
| 表空间 | USERS |
| 表 | CUSTOMERS、ORDERS 等 |
| 脚本目录 | /home/oracle/Dipc/scripts |

目标信息如下表所示:
| 配置项 | 详情 |
| ---- | ---- |
| 数据库类型 | Oracle |
| 部署方式 | 数据库云服务(企业版极致性能) |
| 数据库版本 | 12.2.0.1 |
| 选项 | 多租户 |
| 数据库名称(cdb) | EXADB |
| PDB 名称 | prodb |
| GoldenGate 版本 | 12.2.0.1 |
| 目标模式 | dipctgt |
| OGG 管理用户 | oggtgt |

4. 脚本准备

为 OGG 配置进行数据库先决条件设置,编辑 /home/oracle/Dipc/scripts/srcdbcfg.sql 文件,内容如下:

set echo on pages 100 lines 120
spool srcdbcfg.log
select log_mode,supplemental_log_data_min,force_logging from v$database;
alter database force logging;
alter database add supplemental log data;
alter system switch logfile;
select log_mode,supplemental_log_data_min,force_logging from v$database;
alter system set enable_goldengate_replication=true scope=both;
show parameter enable_goldengate_replication;
create user c##oggsrc identified by oggsrc;
grant dba to c##oggsrc container=all;
exec dbms_goldengate_auth.grant_admin_privilege('C##OGGSRC', container=>'all');
Exit
5. 创建参数文件
  • 捕获参数文件
export GGHOME=/home/oracle/Dipc/dicloud/gghome
cd $GGHOME/dirprm
vi edwh.prm

文件内容如下:

extract edwh
UseridAlias oggsrc
TranLogOptions IntegratedParams (max_sga_size 1024)
LogAllSupCols
UpdateRecordFormat Compact
ExtTrail ./dirdat/ed
ReportCount Every 2 Minutes, Rate
Table opdwh.dipcsrc.*;
  • PUMP 参数文件
cd $GGHOME/dirprm
vi pdwh.prm

文件内容如下:

extract pdwh
UseridAlias oggsrc
RmtHost 129.156.112.133, MgrPort 7704, socksproxy 127.0.0.1:9000
RmtTrail ./dirdat/rd
ReportCount Every 2 Minutes, Rate
PassThru
Table opdwh.dipcsrc.*;

其中, RmtHost 对应的 IP 是 DIPC VM 的公共 IP, MgrPort 是 DIPC VM 上管理器进程运行的端口,包含 SOCKS5PROXY 参数用于通过安全隧道传输 Golden Gate 跟踪文件。

6. 准备 OGG OBEY 文件
  • 安全凭证格式示例
cd $GGHOME/dirprm
vi sec_cred.oby

文件内容如下:

create wallet
add credentialstore
alter credentialstore add user c##oggsrc password oggsrc alias oggsrc
info credentialstore
dblogin useridalias oggsrc
add schematrandata opdwh.dipcsrc
info schematrandata opdwh.dipcsrc
  • 添加进程的 OBEY 文件
cd $GGHOME/dirprm
vi add_procs.oby

文件内容如下:

start mgr
dblogin useridalias oggsrc
register extract edwh, database container (opdwh);
add extract edwh, integrated tranlog, begin now
add ExtTrail ./dirdat/ed, extract edwh
add extract pdwh, ExtTrailSource ./dirdat/ed
add RmtTrail ./dirdat/rd,extract pdwh
info all
7. 执行脚本

按以下步骤执行脚本:

cd /home/oracle/Dipc/scripts
sqlplus system/oracle@opdwh @srcdbcfg.sql
cd $GGHOME
ggsci> obey sec_cred.oby
ggsci> obey add_procs.oby
8. 初始源数据转储

检查当前源数据库:

sqlplus system/oracle@opdwh
sqlplus > Select to_char(current_scn) from v$database;

进行数据转储:

expdp system/oracle@opdwh dumpfile=dipcsrc.dmp logfile=expdp_dipcsrc.log directory=dp parallel=4 flasback_scn=nnnnn

使用 oci cli 将转储文件复制到 OCI 对象存储,以便导入 DBCS 进行初始数据同步。启动提取进程:

ggsci> start edwh
9. 启动 DIPC 远程代理

从本地虚拟机桌面的终端启动 DIPC 远程代理:

export JAVA_HOME=/usr/java/jdk1.8.0_121
cd /home/oracle/Dipc/dicloud/agent/dipcagent001/bin/
./startAgentInstance.sh
10. 设置并启动 SOCKS5 代理隧道

从本地虚拟机桌面的终端设置并启动 SOCKS5 代理隧道:

/home/oracle/Dipc/dicloud/gghome/SSH_SOCK5_SETUP.sh

将 DIPC VM 的私钥文件复制到运行 DIPC 代理的本地服务器的 /home/oracle/Dipc/dicloud/gghome 目录,并更改权限:

cd /home/oracle/Dipc/dicloud/gghome
chmod 600 privateKey
cp SSH_SOCK5_SETUP.sh SSH_SOCK5_SETUP.sh.bkp

编辑 SSH_SOCK5_SETUP.sh 文件,替换为 DIPC VM 的公共 IP 和私钥的完整路径,例如:

ssh -i /home/oracle/Dipc/dicloud/gghome/privateKey -v -N -f -D 127.0.0.1:9000 opc@129.156.112.133 >./dirrpt/ggcs_socksproxy.log 2>&1

启动代理隧道:

./SSH_SOCK5_SETUP.sh
11. 访问 DIPC VM 和 DBCS/EXACS

可以使用 Putty 工具或 VNC 查看器直接从主机访问 DIPC VM。使用 Putty 访问时,需要进行以下配置:
1. 插入 DIPC VM 的公共 IP(如 129.156.112.113)并命名为 DIPCVM。
2. 点击“Data”,输入 opc 作为自动登录用户名。
3. 点击“SSH” -> “Tunnels”,源端口输入 5901,目标输入 129.156.112.113:5901 并点击“Add”。
4. 点击“Auth”,提供私钥文件的位置,保存配置。
5. 点击“Session” -> “Save”,点击“Open”登录 DIPC VM,输入密钥生成时的密码短语。

登录后,切换到 oracle 用户并设置环境变量:

sudo su - oracle
. .ggsetup
12. 通过 VNC 连接到 DIPC VM

使用 TigerVNC 查看器登录 VNC:
1. 打开到 DICPVM 的 Putty 会话(如果之前未启动)以启动 SSH 隧道。
2. 运行 TigerVNC 查看器应用程序,输入 localhost:5901 ,密码为 dipcvnc ,打开 DIPCVM 桌面。
3. 登录后,打开终端并切换到 oracle 用户。

13. 从 DIPC VM 连接到 DBCS/EXACS

收集 DBCS/EXACS 数据库凭证和 tnsnames 配置,并添加到 DIPC VM 的 tnsnames.ora 文件中。可以根据配置使用 IP 地址或可解析的主机名,例如:

PRODDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 129.156.X.X)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = proddb.subxxxxxx0.testvn.oraclevcn.com)
    )
  )

测试连接:

sqlplus bal/xxxxxxxxx@proddb
14. 配置 DIPC VM
  • 创建目标
    连接到 DBCS/EXACS 并运行以下命令:
create user dipccloud identified by N0tAll0wed#_ default tablespace users;
alter user dipccloud quota unlimited on users;
grant create session, resource to dipccloud;
conn dipccloud/N0tAll0wed#_@proddb alter user ggadmin
  • 在云目标数据库上创建 GoldenGate 用户
    可以使用 DIPC VM 或登录到目标数据库创建并定义 GoldenGate 复制用户。在 DIPC VM 上操作时,设置环境变量:
~/.ggsetup

然后执行以下 SQL 命令:

sqlplus sys/xxxxxxx@EXADB as sysdba
set echo on pages 100 lines 120
spool tgtdbcfg.log
select log_mode,supplemental_log_data_min,force_logging from v$database;
alter database force logging;
alter database add supplemental log data;
alter system switch logfile;
select log_mode,supplemental_log_data_min,force_logging from v$database;
alter system set enable_goldengate_replication=true scope=both;
show parameter enable_goldengate_replication;
create user c##oggtgt identified by N0tAll0wed#_;
grant dba to c##oggtgt container=all;
exec dbms_goldengate_auth.grant_admin_privilege('C##OGGTGT', container=>'all');
Exit

在 DBCS 环境中, sec_case_sensitive_logon 参数设置为 TRUE ,输入密码时需注意大小写,否则会出现无效用户名/密码错误,也可尝试将密码重置为小写以简化操作。

15. OGG 进程配置

打开到 DIPC VM 的 Putty 会话,执行以下步骤:

sudo su – oracle
. .ggsetup
cd $GGHOME
./ggsci
ggsci> info all
ggsci> stop mgr
ggsci> edit param mgr
PORT 7704
DynamicPortList 7704-7760
AccessRule,Prog collector,IpAddr 129.156.112.113,Allow
PurgeOldExtracts ./dirdat/* UseCheckPoints, MinKeepHours 2
AutoRestart Replicat *,Retries 3,WaitMinutes 2,ResetMinutes 120
ggsci > start mgr

准备 obey 文件:

cd $GGHOME

创建安全凭证 obey 文件:

vi dirprm/sec_creds_tgt.oby

文件内容如下:

start mgr
create wallet
add credentialstore
alter credentialstore add user c##oggtgt@proddb password N0tAll0wed#_ alias ggadmintgt
info credentialstore
dblogin useridalias ggadmintgt

创建复制参数文件:

vi $GGHOME/dirprm/rdwh.prm

文件内容如下:

replicat rdwh
useridalias ggadmintgt
reportcount every 2 minutes, rate
assumetargetdefs
map opdwh.dipcsrc.*, target dipctgt.*;

执行 obey 文件并添加复制进程:

cd $GGHOME
ggsci> obey dirprm/sec_creds_tgt.oby
ggsci> add replicat rdwh,ExtTrail ./dirdat/rd, nodbcheckpoint

NODBCHECKPOINT 强制复制进程使用检查点文件机制。

16. 初始数据同步

由于源数据库和目标数据库均为 Oracle,使用数据泵进行初始数据同步到 DBCS 中的 DIPCTGT 模式。对于演示,源数据已进行转储且未发生变化,此时需要根据目标数据的更改时间获取新的导出转储 SCN。将转储文件上传到 DBCS 实例或 OCI 对象存储(使用 oci cli),然后使用导入转储将数据导入 DBCS 中的 dipctgt:

impdp admin/Welcome_123#@proddb directory=data_pump_dir credential=DIPC_IMPDeP_USE logfile=impdp_dipcsrc_tables.log dumpfile= SCHEMA_TABLE.DMP remap_schema=dipcsrc:dipctgt remap_tablespace=USERS:DATA

需要注意的是,12.2.0.1 版本的 OCI DBaaS 中没有 DBMS_CLOUD 包,无法创建使用 swift URL 进行数据泵的凭证,在 API 可用之前,建议使用 OCI 上 DBCS 的块存储或文件存储上的转储文件。目前,该 API 在自治数据仓库和自治 OLTP 云服务中可用,以下是从对象存储加载数据的示例:

impdp admin/Welcome_123#@proddb directory=data_pump_dir credential=DIPC_IMPDeP_USE logfile=impdp_dipcsrc_tables.log dumpfile=https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/baldemo/bucket_tenantXX/SCHEMA_TABLE.DMP remap_schema=dipcsrc:dipctgt remap_tablespace=USERS:DATA

通过以上详细步骤,可以完成数据库迁移至 Exadata 云服务的操作,确保数据的顺利复制和同步。在操作过程中,需要仔细检查每个步骤的配置和执行结果,以避免出现错误。

数据库迁移至 Exadata 云服务的详细指南

17. 操作流程总结与注意事项

为了更清晰地展示整个数据库迁移至 Exadata 云服务的操作流程,以下使用 mermaid 流程图进行呈现:

graph LR
    classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
    classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px

    A([开始]):::startend --> B(代理配置与启动):::process
    B --> C(代理停止):::process
    C --> D(本地环境配置):::process
    D --> E(脚本准备):::process
    E --> F(创建参数文件):::process
    F --> G(准备 OGG OBEY 文件):::process
    G --> H(执行脚本):::process
    H --> I(初始源数据转储):::process
    I --> J(启动 DIPC 远程代理):::process
    J --> K(设置并启动 SOCKS5 代理隧道):::process
    K --> L(访问 DIPC VM 和 DBCS/EXACS):::process
    L --> M(通过 VNC 连接到 DIPC VM):::process
    M --> N(从 DIPC VM 连接到 DBCS/EXACS):::process
    N --> O(配置 DIPC VM):::process
    O --> P(OGG 进程配置):::process
    P --> Q(初始数据同步):::process
    Q --> R([结束]):::startend

在整个操作过程中,有以下一些注意事项:
- 密码大小写问题 :在 DBCS 环境中, sec_case_sensitive_logon 参数设置为 TRUE ,创建账户后输入密码时要注意大小写,若遇到无效用户名/密码错误,可尝试将密码重置为小写。
- 数据泵凭证问题 :12.2.0.1 版本的 OCI DBaaS 没有 DBMS_CLOUD 包,无法创建使用 swift URL 进行数据泵的凭证,在 API 可用之前,使用 OCI 上 DBCS 的块存储或文件存储上的转储文件。
- 代理与进程关系 :停止代理不会停止 OGG 管理器进程,复制操作仍可继续,但使用 DIPC 进行数据复制解决方案时,本地远程代理与 DIPC 的注册是必须的,有助于监控进程。

18. 故障排查思路

在数据库迁移过程中,可能会遇到各种问题,以下是一些常见问题及排查思路:
| 问题描述 | 可能原因 | 排查方法 |
| ---- | ---- | ---- |
| 代理向 GoldenGate 请求失败,提示 java.net.ConnectException: Connection refused | GoldenGate 性能指标服务器未运行或未正确配置 | 检查 GoldenGate 实例上的管理器进程是否运行,以及端口是否正确配置 |
| SQLPlus 连接数据库时出现无效用户名/密码错误 | 密码大小写问题或账户信息错误 | 确认密码大小写是否正确,可尝试重置密码为小写;检查账户信息是否准确 |
| 数据泵操作失败 | 凭证问题、文件路径错误或权限不足 | 检查是否有相应的凭证,文件路径是否正确,以及是否有足够的权限进行操作 |

19. 最佳实践建议

为了确保数据库迁移至 Exadata 云服务的顺利进行,以下是一些最佳实践建议:
- 提前规划 :在进行迁移操作之前,详细规划好本地环境和目标环境的配置,包括数据库名称、版本、模式、表空间等信息,避免在操作过程中出现配置错误。
- 备份数据 :在进行任何数据操作之前,务必对源数据库进行备份,以防数据丢失或损坏。可以使用数据转储等方式进行备份。
- 逐步测试 :在每个关键步骤完成后,进行相应的测试,确保操作的正确性。例如,在创建参数文件和 OBEY 文件后,先进行小规模的测试,再进行大规模的数据迁移。
- 监控进程 :在整个迁移过程中,密切监控代理、OGG 进程等的状态,及时发现并解决问题。可以通过 DIPC 控制台、日志文件等方式进行监控。

20. 总结

数据库迁移至 Exadata 云服务是一个复杂的过程,涉及到多个步骤和配置。通过本文详细介绍的操作步骤、注意事项、故障排查思路和最佳实践建议,希望能够帮助读者顺利完成数据库迁移任务。在实际操作过程中,要仔细检查每个步骤的配置和执行结果,遇到问题时按照排查思路进行解决,遵循最佳实践建议,以确保数据的顺利复制和同步。同时,随着技术的不断发展,相关的配置和操作可能会有所变化,读者需要及时关注最新的文档和资料,以获取最新的信息。

通过以上内容,我们全面了解了数据库迁移至 Exadata 云服务的整个过程,从代理的配置与启动,到数据的初始同步,每个环节都需要精心操作和严格把控。希望这些内容能够对读者在实际的数据库迁移工作中提供有力的帮助。

【电能质量扰动】基于ML和DWT的电能质量扰动分类方法研究(Matlab实现)内容概要:本文研究了一种基于机器学习(ML)和离散小波变换(DWT)的电能质量扰动分类方法,并提供了Matlab实现方案。首先利用DWT对电能质量信号进行多尺度分解,提取信号的时频域特征,有效捕捉电压暂降、暂升、中断、谐波、闪变等常见扰动的关键信息;随后结合机器学习分类器(如SVM、BP神经网络等)对提取的特征进行训练与分类,实现对不同类型扰动的自动识别与准确区分。该方法充分发挥DWT在信号去噪与特征提取方面的优势,结合ML强大的模式识别能力,提升了分类精度与鲁棒性,具有较强的实用价值。; 适合人群:电气工程、自动化、电力系统及其自动化等相关专业的研究生、科研人员及从事电能质量监测与分析的工程技术人员;具备一定的信号处理基础和Matlab编程能力者更佳。; 使用场景及目标:①应用于智能电网中的电能质量在线监测系统,实现扰动类型的自动识别;②作为高校或科研机构在信号处理、模式识别、电力系统分析等课程的教学案例或科研实验平台;③目标是提高电能质量扰动分类的准确性与效率,为后续的电能治理与设备保护提供决策依据。; 阅读建议:建议读者结合Matlab代码深入理解DWT的实现过程与特征提取步骤,重点关注小波基选择、分解层数设定及特征向量构造对分类性能的影响,并尝试对比不同机器学习模型的分类效果,以全面掌握该方法的核心技术要点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值