数据库迁移至 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 云服务的整个过程,从代理的配置与启动,到数据的初始同步,每个环节都需要精心操作和严格把控。希望这些内容能够对读者在实际的数据库迁移工作中提供有力的帮助。
超级会员免费看
424

被折叠的 条评论
为什么被折叠?



