基于ora2pg遷移Oracle19C到postgreSQL14的全過(guò)程
1.Ora2Pg介紹
Ora2Pg是我的第一個(gè)盟友。
它是一個(gè)開(kāi)源工具,可將Oracle數(shù)據(jù)庫(kù)模式轉(zhuǎn)換為PostgreSQL格式。
可以處理大量的甲骨文對(duì)象
可通過(guò)配置文件進(jìn)行配置
https://ora2pg.darold.net/
特點(diǎn):
支持導(dǎo)出數(shù)據(jù)庫(kù)絕大多數(shù)對(duì)象類(lèi)型,包括表、視圖、序列、索引、外鍵、約束、函數(shù)、存儲(chǔ)過(guò)程等。
提供PL/SQL到PL/PGSQL語(yǔ)法的自動(dòng)轉(zhuǎn)換,一定程度避免了人工修正。
可生成遷移報(bào)告,包括遷移難度評(píng)估、人天估算。
可選對(duì)導(dǎo)出數(shù)據(jù)進(jìn)行壓縮,節(jié)約磁盤(pán)開(kāi)銷(xiāo)。
配置選項(xiàng)豐富,可自定義遷移行為。
2.ora2pg安裝
2.1 安裝依賴(lài)包
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'
3.相關(guān)配置
3.1 表結(jié)構(gòu)配置
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 表數(shù)據(jù)的配置文件
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遷移數(shù)據(jù)
4.1 遷移全部表結(jié)構(gòu)
mkdir -p /ora2pg ora2pg -c /etc/ora2pg/ora2pg_table_ddl.conf -t table -b /ora2pg
4.2 PG中創(chuàng)建數(shù)據(jù)
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
4.3 遷移數(shù)據(jù)
ora2pg -d -t copy -c /etc/ora2pg/ora2pg_table_data.conf -P 12 -L 100000 -j 12
此過(guò)程執(zhí)行完成后,數(shù)據(jù)就已經(jīng)插入到PG數(shù)據(jù)庫(kù)中了:
5.數(shù)據(jù)驗(yàn)證
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的全過(guò)程的詳細(xì)內(nèi)容,更多關(guān)于遷移Oracle19C到postgreSQL14的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
oracle 動(dòng)態(tài)AdvStringGrid完美示例 (AdvStringGrid使用技巧/Cells)
本方法實(shí)現(xiàn)用常量和常量數(shù)組完美創(chuàng)建和控制動(dòng)態(tài)TAdvStringGrid。2009-06-06Oracle使用fy_recover_data恢復(fù)truncate刪除的數(shù)據(jù)
這篇文章主要介紹了Oracle使用fy_recover_data恢復(fù)truncate刪除的數(shù)據(jù),文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下2022-07-07CMD操作oracle數(shù)據(jù)導(dǎo)庫(kù)過(guò)程圖解
這篇文章主要介紹了CMD操作oracle數(shù)據(jù)導(dǎo)庫(kù)過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07Oracle 跨庫(kù) 查詢(xún) 復(fù)制表數(shù)據(jù) 分布式查詢(xún)介紹
這篇文章主要介紹了Oracle 跨庫(kù) 查詢(xún) 復(fù)制表數(shù)據(jù) 分布式查詢(xún)的相關(guān)資料,需要的朋友可以參考下2014-10-10Oracle 手動(dòng)創(chuàng)建數(shù)據(jù)庫(kù)步驟詳解
本文給大家介紹oracle手動(dòng)創(chuàng)建數(shù)據(jù)庫(kù)步驟,需要的朋友可以參考下2015-10-10解析PL/SQL Developer導(dǎo)入導(dǎo)出數(shù)據(jù)庫(kù)的方法以及說(shuō)明
本篇文章是對(duì)PL/SQL Developer導(dǎo)入導(dǎo)出數(shù)據(jù)庫(kù)的方法以及說(shuō)明進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06Oracle中命名塊之存儲(chǔ)過(guò)程的詳解及使用方法
這篇文章主要介紹了Oracle中命名塊之存儲(chǔ)過(guò)程的詳解及使用方法的相關(guān)資料,需要的朋友可以參考下2017-05-05