最好用的工具 到 没有之一! 迁徙 Oracle PostgreSQL

  • 电脑网络维修
  • 2024-11-15

引见

ora_migrator是一个用于db_migrator的插件,它经常使用oracle_fdw将 Oracle 数据库迁徙到 PostgreSQL。

请浏览db_migrator文档以失掉经常使用说明;本文仅涵盖插件的设置以及普通文档中未涵盖的其余性能。

除此之外,ora_migrator还提供从 Oracle 到 PostgreSQL 的复制性能,可用于从 Oracle 启动简直零停机时期的迁徙。无关详细信息,请参阅复制。

请留意,由于 Oracle 中的形式称号通常为大写,因此,您须要为db_migrator函数的only_schemas参数,经常使用大写的形式称号。

选项

以下选项可用于db_migrate_prepare、db_migrate_mkforeign和db_migrate:

前提条件

•您须要 PostgreSQL 9.5 或更高版本。

•必定装置oracle_fdw和db_migrator裁减。

•必定为访问的 Oracle 数据库定义好外部主机。

•调用create_oraviews函数以创立外部表的用户,必定具有外部主机的USAGE权限。

•调用create_oraviews函数的用户必定存在用户映射。

•用户映射中经常使用的 Oracle 用户,必定具有读取以下 Oracle 系统视图的权限:您可以选用改为授予用户SELECT ANY DICTIONARY系统权限,它包括了上述一切权限。

•DBA_COL_PRIVS

•DBA_CONS_COLUMNS

•DBA_CONSTRAINTS

•DBA_IND_COLUMNS

•DBA_IND_EXPRESSIONS

•DBA_INDEXES

•DBA_MVIEWS

•DBA_MVIEW_LOGS

•DBA_PROCEDURES

•DBA_SEGMENTS

•DBA_SEQUENCES

•DBA_SOURCE

•DBA_TAB_COLUMNS

•DBA_TAB_PRIVS

•DBA_TABLES

•DBA_TRIGGERS

•DBA_USERS

•DBA_VIEWS

•要经常使用复制,用户必定具有CREATE TABLE和CREATE TRIGGER权限。若要对不属于指定 Oracle 用户的表经常使用复制,该用户必定具有CREATE ANY TABLE、CREATE ANY INDEX、CREATE ANY TRIGGER、DROP ANY TABLE、DROP ANY TRIGGER和SELECT ANY TABLE权限(这是创立、删除日志记载表和触发器所必需的)。

裁减创立的对象

迁徙函数

db_migrator回调函数db_migrator_callback(),前往裁减提供的迁徙函数。无关详细信息,请参阅db_migrator文档。

“元数据视图创立函数”create_oraviews,会在 FDW 阶段创立一些附加对象,这些对象提供了对 Oracle 迁徙有协助的信息:

包定义

packages  package_name  is_body  source 

•is_body,关于包规范定义是FALSE,关于包体定义是TRUE

此视图可用于简化包对象的转换。

segments  segment_name  segment_type  bytes  

该外表关于评价 Oracle 中表和索引的大小最有用。

迁徙老本预算

migration_cost_estimate  task_type task_content task_unit migration_hours   

该视图有助于评价一个 Oracle 数据库的迁徙老本。

其余对象

表函数 oracle_test_table

此函数测试一个 Oracle 表能否存在潜在的迁徙疑问。您必定在db_migrate_prepare之后运转它。

参数为:

•server:Oracle 外部主机的称号

•schema:形式称号

•table_name:表名

•pgstage_schema(自动是pgsql_stage):由db_migrate_prepare创立的 PostgreSQL 阶段的称号。

schema和table_name必定是 PostgreSQL 阶段中与tables表同名的列中的值。

这是一个表函数,前往有疑问的行在 Oracle 中的 ROWID,以及一条形容疑问的信息。

目前测试发现有两个疑问:

•字符串列中的零字节chr(0)

•不在数据库编码中的字符串列中的值

函数 oracle_migrate_test_data

此函数对 PostgreSQL 暂存形式中的一切表调用oracle_test_table,并将结果记载在 FDW 阶段的test_error表中(在清空表后)。

此外,在 FDW 阶段,会有一份失误摘要参与到表test_error_stats中。在清算 Oracle 中的脏数据时,这关于权衡随时期推移的进展十分有用。

该函数会前往遇到的失误总数。

函数参数为:

•server:Oracle 外部主机的称号

•staging_schema(自动是fdw_stage):远程暂存形式的称号

•pgstage_schema(自动是pgsql_stage):由oracle_migrate_prepare创立的 PostgreSQL 阶段的称号。

•only_schemas(自动是NULL):应迁徙到 PostgreSQL 的 Oracle 形式称号数组。假设为 NULL,则会解决除 Oracle 系统形式之外的一切形式。称号必定与它们出如今 Oracle 中的称号相反,通常为大写。

表 oracle_test_table 和 test_error_stats

这些表蕴含运转oracle_migrate_test_data生成的单个结果和汇总结果。

复制函数

函数 oracle_replication_start

此函数在 Oracle 和 PostgreSQL 数据库中创立复制所需的一切对象。PostgreSQL 对象将创立在 Postgres 暂存形式中,Oracle 对象与复制的表位于同一形式中。

此函数应在db_migrate_tables之前调用,并且在启动oracle_replication_start和调用db_migrate_tables之间,不应在 Oracle 上出现任何数据修正活动。

函数参数为:

•server:Oracle 外部主机的称号

•pgstage_schema(自动是pgsql_stage):由oracle_migrate_prepare创立的 PostgreSQL 阶段的称号

该函数创立的对象包括:

•一个 PostgreSQL 外表__ReplicationEnd,该表会显示一个时期戳,保障能早于 Oracle 上最老的生动事务

•一个 PostgreSQL 表__ReplicationStart,用于存储下一次性复制追逐的终点

关于 Postgres 阶段的tables表中设置migrate为TRUE的每个表,将创立以下对象:

•一个 Oracle 表__Log_<tablename>,用于搜集对<tablename>的更改

•一个在<tablename>上方的 Oracle 触发器__Log_<tablename>_TRIG

•Oracle 记载更改的日志表,在 PostgreSQL 上的外表__Log_<schema>/<tablename>

函数 oracle_catchup_table

将特定时时期隔内更改的数据,从 Oracle 表复制到 PostgreSQL。

这要求oracle_replication_start已创立所需的对象,并且数据迁徙已成功。

参数:

•schema:迁徙表的形式

•table_name:迁徙表的称号

•from_ts:复制该时期点的更改

•to_ts:复制该时期点以前(包括该时期点)的更改

这是一个“底层”函数,由oracle_replication_catchup调用;假设要经过为不同的表并发运转它,来并行化追逐义务,则可以经常使用它。

函数 oracle_catchup_sequence

参数:

•schema:迁徙序列的形式

•sequence_name:迁徙序列的称号

•staging_schema(自动是fdw_stage):远程暂存形式的称号

在远程端查问 Oracle 序列的值,并将迁徙的序列设置为该值。

函数 oracle_replication_catchup

复制自上次同步到 PostgreSQL 一切 Oracle 表和序列中的一切更改。

开局时期戳取自__ReplicationStart,完结时期戳取自__ReplicationEnd(蕴含最近的安保时期戳)。成功成功后,复制完结时期将保留到__ReplicationStart,以便下次经常使用。

参数:

•staging_schema(自动是fdw_stage):远程暂存形式的称号

•pgstage_schema(自动是pgsql_stage):由oracle_migrate_prepare创立的 PostgreSQL 阶段的称号

您可以在oracle_replication_start成功后随时调用此函数。

除非数据库中没有触发器或外键解放,否则应在调用此函数时,将性能参数session_replication_role设置为replica。这样就不会触发触发器,并且不会审核外键解放。

oracle_replication_catchup在 Oracle 上经常使用SERIALIZABLE隔离级别,因此它可以看到 Oracle 数据库的固定快照,并且数据在 PostgreSQL 端是分歧的,即使 Oracle 数据库被其余并发的会话修正。

假设要经常使用复制启动凑近零停机时期的迁徙,请在短时期内延续调用两次,并确保在第二次调用时期 Oracle 上没有数据修正活动。第二次追逐成功后,您可以立即将运行程序切换到 PostgreSQL。

函数 oracle_replication_finish

删除 PostgreSQL 和 Oracle 中由oracle_replication_start创立的一切对象。

这可用于在成功从 Oracle 的迁徙后启动清算。

•server:Oracle 外部主机的称号

•pgstage_schema(自动是pgsql_stage):由oracle_migrate_prepare创立的 PostgreSQL 阶段的称号

限度

并非一切 Oracle 分区选项都受ora_migrator允许。PostgreSQL 仅允许列表、哈希和范围分区,不允许其余分区战略。此外,不允许经常使用两列或更多列的分区键启动列表和范围分区。当ora_migrator遇到一个不可迁徙的分区形式时,会将该表迁徙到一个非分区表。

复制

ora_migrator提供了一个从 Oracle 到 PostgreSQL 的方便的基于触发器的复制性能。

这可用于将数据库从 Oracle 迁徙到 PostgreSQL,简直没有停机时期。

操作步骤如下:

•依照db_migrator文档中所述,经过调用db_migrate_prepare和db_migrate_mkforeign来预备迁徙。

•暂停 Oracle 数据库上的一切数据修正活动。这是须要的,由于 Oracle 不允许事务性 DDL。

•而后调用oracle_replication_start以设置一切必需的对象。这将在 Oracle 数据库中创立日志表和触发器。

•而后像平常一样经常使用db_migrate_tables开局数据迁徙。一旦db_migrate_tables启动,Oracle 数据库上的数据修正活动就可以复原。迁徙将经常使用SERIALIZABLE事务隔离级别运转,因此迁徙的数据将是分歧的。请确保 Oracle 上有足够的 UNDO 存储空间,否则数据迁徙或者会失败。

•经常使用db_migrate_constraints迁徙解放和索引;依照db_migrator文档中所述,迁徙其余对象。

•您可以随时调用oracle_replication_catchup,以将更改的数据从 Oracle 传输到 PostgreSQL。这须要为一切受影响的表调用oracle_catchup_table,因此要并行化操作,您可以间接为一切受影响的表调用高层的函数。请留意,追逐时不会清算 Oracle 上的日志表。为防止 PostgreSQL 中的外键解放疑问,请在运转oracle_catchup_table时,确保将性能参数session_replication_role设置为replica。关于凑近零停机时期的迁徙,在 Oracle 数据库上没有数据修正活动时,还必定口头最后一次性oracle_replication_catchup调用。调用后,将运行程序切换到 PostgreSQL。

•要完结复制,请调用oracle_replication_finish。这将会删除为复制创立的一切对象。

•最后,调用db_migrate_finish,以删除一切辅佐对象。

  • 关注微信

本网站的文章部分内容可能来源于网络和网友发布,仅供大家学习与参考,如有侵权,请联系站长进行删除处理,不代表本网站立场,转载联系作者并注明出处:https://duobeib.com/diannaowangluoweixiu/8817.html

猜你喜欢

热门标签

洗手盆如何疏浚梗塞 洗手盆为何梗塞 iPhone提价霸占4G市场等于原价8折 明码箱怎样设置明码锁 苏泊尔电饭锅保修多久 长城画龙G8253YN彩电输入指令画面变暗疑问检修 彩星彩电解除童锁方法大全 三星笔记本培修点上海 液晶显示器花屏培修视频 燃气热水器不热水要素 热水器不上班经常出现3种处置方法 无氟空调跟有氟空调有什么区别 norltz燃气热水器售后电话 大连站和大连北站哪个离周水子机场近 热水器显示屏亮显示温度不加热 铁猫牌保险箱高效开锁技巧 科技助力安保无忧 创维8R80 汽修 a1265和c3182是什么管 为什么电热水器不能即热 标致空调为什么不冷 神舟培修笔记本培修 dell1420内存更新 青岛自来水公司培修热线电话 包头美的洗衣机全国各市售后服务预定热线号码2024年修缮点降级 创维42k08rd更新 空调为什么运转异响 热水器为何会漏水 该如何处置 什么是可以自己处置的 重庆华帝售后电话 波轮洗衣机荡涤价格 鼎新热水器 留意了!不是水平疑问! 马桶产生了这5个现象 方便 极速 邢台空调移机电话上门服务 扬子空调缺点代码e4是什么疑问 宏基4736zG可以装置W11吗 奥克斯空调培修官方 为什么突然空调滴水很多 乐视s40air刷机包 未联络视的提高方向 官网培修 格力空调售后电话 皇明太阳能电话 看尚X55液晶电视进入工厂形式和软件更新方法 燃气热水器缺点代码

热门资讯

关注我们

微信公众号