基于ora2pg迁移Oracle19C到postgreSQL14

这篇具有很好参考价值的文章主要介绍了基于ora2pg迁移Oracle19C到postgreSQL14。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

📢📢📢📣📣📣
哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验
一位上进心十足的【大数据领域博主】!😜😜😜
中国DBA联盟(ACDU)成员,目前服务于工业互联网
擅长主流Oracle、MySQL、PG、高斯及Greenplum运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】💞💞💞
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️

前言

本文详细介绍了我的旅程、从Oracle迁移到PostgreSQL遇到的挑战,我希望分享这些经验将使你的PostgreSQL之旅更加顺利.

📣 1.Ora2Pg介绍

Ora2Pg是我的第一个盟友。
它是一个开源工具,可将Oracle数据库模式转换为PostgreSQL格式。
可以处理大量的甲骨文对象
可通过配置文件进行配置
https://ora2pg.darold.net/

特点:
支持导出数据库绝大多数对象类型,包括表、视图、序列、索引、外键、约束、函数、存储过程等。
提供PL/SQL到PL/PGSQL语法的自动转换,一定程度避免了人工修正。
可生成迁移报告,包括迁移难度评估、人天估算。
可选对导出数据进行压缩,节约磁盘开销。
配置选项丰富,可自定义迁移行为。

基于ora2pg迁移Oracle19C到postgreSQL14,PostgreSQL,Oracle,postgresql,oracle

📣 2.ora2pg安装

✨ 2.1 安装依赖包

yum install -y gcc perl-DBD-Pg perl perl-devel perl-DBI perl-CPAN bzip2
perl-ExtUtils-eBuilder perl-ExtUtils-MakeMaker perl-Time-HiRes perl-tests perf cpan

✨ 2.2 正式安装

perl -MCPAN -e ‘install DBI’
perl -MCPAN -e ‘install DBD::Oracle’
perl -MCPAN -e ‘install DBD::Pg’

基于ora2pg迁移Oracle19C到postgreSQL14,PostgreSQL,Oracle,postgresql,oracle
基于ora2pg迁移Oracle19C到postgreSQL14,PostgreSQL,Oracle,postgresql,oracle

📣 3.相关配置

✨ 3.1 表结构配置

cat > /etc/ora2pg/ora2pg_table_ddl.conf <<“EOF”
ORACLE_HOME /usr/lib/oracle/21/client64
ORACLE_DSN dbi:Oracle:host=172.18.12.90;sid=oradb;port=1521
#ORACLE_DSN dbi:Oracle:host=192.168.1.29;service_name=pdb1;port=1521
#ORACLE_DSN dbi:Oracle:tns_ora19c
ORACLE_USER system
ORACLE_PWD oracle
SCHEMA STEST
EXPORT_SCHEMA 1
CREATE_SCHEMA 1
TYPE TABLE
PG_NUMERIC_TYPE 0
PG_INTEGER_TYPE 1
DEFAULT_NUMERIC float
SKIP fkeys checks
#SKIP keys pkeys ukeys indexes checks
NLS_LANG AMERICAN_AMERICA.UTF8
OUTPUT_DIR /tmp
OUTPUT ora2pg_table_ddl.sql
PG_VERSION 14
EOF

✨ 3.2 表数据的配置文件

cat > /etc/ora2pg/ora2pg_table_data.conf <<“EOF”
ORACLE_HOME /usr/lib/oracle/21/client64
ORACLE_DSN dbi:Oracle:host=172.18.12.90;sid=oradb;port=1521
#ORACLE_DSN dbi:Oracle:tns_ora19c
ORACLE_USER system
ORACLE_PWD oracle
SCHEMA STEST
TYPE COPY
PG_NUMERIC_TYPE 0
PG_INTEGER_TYPE 1
DEFAULT_NUMERIC float
SKIP fkeys checks
#SKIP fkeys pkeys ukeys indexes checks
NLS_LANG AMERICAN_AMERICA.UTF8
OUTPUT_DIR /tmp
OUTPUT ora2pg_table_data.sql
PG_DSN dbi:Pg:dbname=jemdb;host=172.18.12.50;port=5432
PG_USER postgres
PG_PWD jeames
PG_SCHEMA stest
PG_VERSION 14
EOF

📣 4.ora2pg迁移数据

✨ 4.1 迁移全部表结构

mkdir -p /ora2pg
ora2pg -c /etc/ora2pg/ora2pg_table_ddl.conf -t table -b /ora2pg

基于ora2pg迁移Oracle19C到postgreSQL14,PostgreSQL,Oracle,postgresql,oracle

✨ 4.2 PG中创建数据

su - postgres
psql
CREATE USER STEST WITH password ‘post’ CREATEDB SUPERUSER replication createrole login;
create database jemdb;
alter database jemdb owner to STEST;
\c jemdb

– 跑脚本
\i /ora2pg/ora2pg_table_ddl.sql
jemdb=# \d

基于ora2pg迁移Oracle19C到postgreSQL14,PostgreSQL,Oracle,postgresql,oracle

✨ 4.3 迁移数据

ora2pg -d -t copy -c /etc/ora2pg/ora2pg_table_data.conf -P 12 -L 100000 -j 12
此过程执行完成后,数据就已经插入到PG数据库中了:文章来源地址https://www.toymoban.com/news/detail-751628.html

📣 5.数据验证

su - postgres
psql
\c jemdb

emdb=# show search_path;
   search_path   
-----------------
 "$user", public
(1 row)

jemdb=# set search_path=stest,public;
SET
jemdb=# \dt
                List of relations
 Schema |         Name         | Type  |  Owner   
--------+----------------------+-------+----------
 stest  | addresses            | table | postgres
 stest  | card_details         | table | postgres
 stest  | customers            | table | postgres
 stest  | inventories          | table | postgres
 stest  | logon                | table | postgres
 stest  | order_items          | table | postgres
 stest  | orderentry_metadata  | table | postgres
 stest  | orders               | table | postgres
 stest  | product_descriptions | table | postgres
 stest  | product_information  | table | postgres
 stest  | warehouses           | table | postgres
(11 rows)

jemdb=# select  nspname AS schemaname,
jemdb-# relname,
jemdb-# reltuples::numeric as rowcount,
jemdb-# pg_size_pretty (
jemdb(# pg_total_relation_size ( '"' || nspname || '"."' || relname || '"' )) AS SIZE
jemdb-# from    pg_class C LEFT JOIN pg_namespace N ON ( N.oid = C.relnamespace ) 
jemdb-# where   nspname NOT IN ( 'pg_catalog', 'information_schema' ) 
jemdb-# AND relkind = 'r' 
jemdb-# ORDER by reltuples DESC 
jemdb-# LIMIT 20;
 schemaname |       relname        | rowcount |    size    
------------+----------------------+----------+------------
 stest      | inventories          |   899441 | 433 MB
 stest      | order_items          |     7341 | 1072 kB
 stest      | logon                |     2383 | 160 kB
 stest      | card_details         |     1500 | 264 kB
 stest      | addresses            |     1500 | 264 kB
 stest      | orders               |     1430 | 376 kB
 stest      | warehouses           |     1000 | 192 kB
 stest      | customers            |     1000 | 440 kB
 stest      | product_descriptions |     1000 | 288 kB
 stest      | product_information  |     1000 | 400 kB
 stest      | orderentry_metadata  |       -1 | 8192 bytes
(11 rows)

jemdb=# \l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
 jemdb     | stest    | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(4 rows)

jemdb=# \dn
  List of schemas
  Name  |  Owner   
--------+----------
 public | postgres
 stest  | stest
(2 rows)

jemdb=# \du
                                   List of roles
 Role name |                         Attributes                         | Member of 
-----------+------------------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
 stest     | Superuser, Create role, Create DB, Replication             | {}

到了这里,关于基于ora2pg迁移Oracle19C到postgreSQL14的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Oracle 19c的参数sec_case_sensitive_logon与ORA-01017错误

    Oracle的参数sec_case_sensitive_logon是Oracle 11g开始被引入。这个参数主要是为了控制密码的大小写敏感问题。 sec_case_sensitive_logon=true表示密码区分大小写。 sec_case_sensitive_logon=false表示密码不区分大小写。 从Oracle 12c开始,参数sec_case_sensitive_logon被弃用了。但是为了向下兼容,即使在

    2023年04月26日
    浏览(41)
  • OGG实现Oracle19C到postgreSQL14的实时同步

    📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜😜😜 中国DBA联盟(ACDU)成员,目前服务于工业互联网 擅长主流Oracle、MySQL、PG、高斯及Greenplum运维开发,备份恢复,安装迁移,性能优

    2024年02月04日
    浏览(35)
  • Oracle19c数据库安装 - 基于Linux环境

    安装文件链接在文章末尾。 本文介绍多种在Linux环境下安装Oracle19c数据库软件和Oracle数据库的方式,多种方式选择其中一种即可,适用于19c数据库学习环境的配置。 数据库软件和数据库是不同的,都需要安装。 关闭防火墙和selinux 更改完reboot,使其生效 搭建yum,安装依赖包

    2024年02月15日
    浏览(63)
  • 基于RHEL9,ORACLE LINUX 9安装Oracle 19c 数据库

    要基于RHEL9,ORACLE LINUX 9 或RHEL分支,安装ORACLE 19C 数据库,在一年前,没有人会告诉你能够成功,都会告诉你说19C只支持 RHEL7/8,在RHEL9上不支持, 如果你非要安装,在安装到11%时,就会报以下错误: Error in invoking target \\\' libasmclntsh19.ohso libasmperl19.ohso client_sharedlib \\\' of makefile \\\'/u

    2024年02月03日
    浏览(66)
  • docker部署oracle 19c

    步骤2:规划镜像数据存储路径 进入容器后有个 setPassword.sh 脚本 步骤5: 检查新生成的容器的时区 jdbc连接: 原因: 在表空间“USERS”无权限 解决办法: 查看当前用户所属表空间: 修改表空间:  

    2024年02月04日
    浏览(39)
  • Oracle 19c 安装(Linux)

    操作系统基础配置 本章节所有操作使用root用户 关闭防火墙和SELINUX 关闭selinux: 编辑/etc/selinux/config 文件 RPM包安装 Oracle安装需要以下RPM包: compat-libcap1-1.10-1 (x86_64) gcc-4.4.4-13.el6 (x86_64) gcc-c+±4.4.4-13.el6 (x86_64) glibc-devel-2.12-1.7.el6 (x86_64) libaio-devel-0.3.107-10.el6 (x86_64) libstdc+±devel-

    2024年02月02日
    浏览(58)
  • docker 安装Oracle19c

    如下操作基于已经装好docker 环境 1.下载镜像 docker pull registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle:19c 通过docker images 命令查看 如下图:已经有oracle 19c镜像。  2.创建挂载文件 # 创建文件 mkdir -p /mydata/oracle/oradata # 授权,不授权会导致后面安装失败 chmod 777 /mydata/oracle/oradata 3.安装Or

    2024年02月04日
    浏览(48)
  • docker 安装 oracle19c

    docker 安装 oracle19c 拉取镜像 创建挂载目录 授权 安装 或者讲字符集修改为 AL32UTF8 安装过程中可以通过日志监控安装情况 连接 Oracle 数据库 打开容器终端 sqlplus登录 sysdba身份登录,默认进入CDB 进入CDB 进入PDB 查看连接模式 网页登录 https://ip:5500/em sqldeveloper Oracle SQL Developer Do

    2024年02月10日
    浏览(50)
  • Docker安装Oracle19c

    1.下载镜像 到 https://hub.docker.com 搜索合适的镜像,这里选择banglamon/oracle193db:19.3.0-ee。  拉取镜像 docker pull banglamon/oracle193db:19.3.0-ee 这里走了点弯路,这个镜像安装后实例无法正常启动,而且挂载的目录下面没有生成文件,想办法启动以后sqlplus能用,但容器外部连接报ora-1

    2023年04月21日
    浏览(47)
  • Linux中Oracle 19C安装教程

    oracle19C下载地址 Oracle Database 19c Download for Linux x86-64 preinstall-19c 下载地址 Oracle Linux 7 (x86_64) Latest | Oracle, Software. Hardware. Complete. 安装目录 /opt/oracle  磁盘40G  文件系统类型 XFS  用于安装数据库 数据文件目录 /oradata 磁盘100G  文件系统类型 XFS  用于存放数据 具体步骤: (此步

    2024年02月15日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包