日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747


 

Ora2Pg介紹

Ora2Pg是一個將Oracle遷移至PostgreSQL的開源工具,通過連接Oracle數據庫,自動掃描并提取其中的對象結構及數據,產生SQL腳本,通過手動或自動的方式將其應用到PostgreSQL。

官方網站:https://ora2pg.darold.NET/

Ora2Pg優秀特性

 

  • 支持導出數據庫絕大多數對象類型,包括表、視圖、序列、索引、外鍵、約束、函數、存儲過程等。
  • 提供PL/SQL到PL/PGSQL語法的自動轉換,一定程度避免了人工修正。
  • 可生成遷移報告,包括遷移難度評估、人天估算。
  • 可選對導出數據進行壓縮,節約磁盤開銷。
  • 配置選項豐富,可自定義遷移行為。

 

Ora2Pg在openGauss的應用

Ora2Pg主要語言是perl,使用Perl DBI模塊,通過DBD:Pg連接PostgreSQL目標數據庫,openGauss兼容PostgreSQL的通信協議以及絕大部分語法,因此只需作部分命名上的修改,Ora2Pg同樣可應用于openGauss。

Ora2Pg使用示例

對于對象結構,Ora2Pg將其DDL語句導出到SQL文件中,對于表數據,則既可以以INSERT或COPY命令導出到文件,也支持直接導入到目標數據庫,不需要產生中間SQL文件。

為了完成上述過程,Ora2Pg工具同時支持命令行和一鍵式腳本的方式完成遷移。命令行方式通過Ora2Pg二進制分布執行各條命令,來完成對應的步驟;一鍵式腳本通過創建遷移項目,分別得到導出導入腳本以及遷移目錄模板,腳本集成了若干Ora2Pg命令以及導入SQL文件所需的psql命令(openGauss為gsql),用戶只需要執行兩個腳本即可完成遷移。本次主要演示腳本的方式。

1. 依賴安裝

Ora2Pg語言為perl,故需安裝所需perl模塊。

# root用戶下操作下

yum install -y perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker

yum install perl-CPAN

安裝DBI、DBD:Pg、DBD:Oracle,Ora2Pg依賴這些軟件去連接數據庫。

perl -MCPAN -e 'install DBI'

perl -MCPAN -e 'install DBD::Pg'

安裝DBD:Oracle,需要先安裝Oracle Instant Client或者本地已安裝Oracle數據庫。

# 從Oracle官方下載并安裝Oracle Instant Client

rpm -ivh oracle-instantclient19.11-basic-19.11.0.0.0-1.x86_64.rpm

rpm -ivh oracle-instantclient19.11-devel-19.11.0.0.0-1.x86_64.rpm

rpm -ivh oracle-instantclient19.11-jdbc-19.11.0.0.0-1.x86_64.rpm

rpm -ivh oracle-instantclient19.11-sqlplus-19.11.0.0.0-1.x86_64.rpm

# 設置環境變量ORACLE_HOME

export ORACLE_HOME=/usr/lib/oracle/19.11/client64/

# 或者本地已安裝有Oracle數據庫

ORACLE_HOME如下設置

export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1

export LD_LIBRARY_PATH=$ORACLE_HOME/lib

# 安裝DBD:Oracle

perl -MCPAN -e 'install DBD::Oracle'

2. Ora2Pg安裝并創建遷移項目

源碼路徑:https://github.com/darold/ora2pg

# 進到代碼目錄下,

為目標安裝路徑

perl Makefile.PL PREFIX=

make && make install

# 設置環境變量,查看是否安裝成功.

為下載的代碼路徑

export PERL5LIB=

/lib

export PATH=$PATH:

/usr/local/bin

ora2pg --help

# 創建遷移項目

ora2pg --init_project oramig

創建遷移項目后會在當前目錄下生成oramig目錄模板,如下所示。其中主要包含兩個腳本export_schema.sh和import_all.sh,后續導出和導入即使用這兩個腳本。schema和sources目錄存放各對象的DDL語句,區別在于schema存放PL/SQL語法轉化為PL/PGSQL后的語句, sources目錄存放轉化前PL/SQL的語句,data目錄存放表數據文件,config目錄包含配置文件ora2pg.conf,reports目錄存放遷移報告。


 

至此您已可以使用Ora2Pg命令,以下是使用該命令時允許指定的部分命令行參數,這些參數都可以在ora2pg.conf設置,指定配置文件時,命令行選項指定的值會覆蓋配置文件中的對應值。

Usage: ora2pg [-dhpqv --estimate_cost --dump_as_html] [--option value]

-a | --allow str : 指定允許導出的對象列表,使用逗號分隔。

-b | --basedir dir: 設置默認的導出目錄,用于存儲導出SQL文件。

-c | --conf file : 設置配置文件路徑。

-e | --exclude str: 指定導出時排出的對象列表,使用逗號分隔。

-i | --input file : 指定要導入的SQL文件,導入文件時不需要連接到 Oracle 數據庫。

-o | --out file : 設置導出的 SQL 文件的存儲路徑。默認值為當前目錄下的 output.sql 文件。

-p | --plsql : 啟用 PLSQL 代碼到 PLPGSQL 代碼的轉換。

-s | --source DSN : 設置 Oracle DBI 數據源。

-t | --type export: 設置導出類型。該參數將會覆蓋配置文件中的導出類型(TYPE)。

-u | --user name : 設置連接 Oracle 數據庫連接的用戶名。也可以使用 ORA2PG_USER 環境變量。

-w | --password pwd : 設置連接 Oracle 數據庫的用戶密碼。也可以使用 ORA2PG_PASSWD 環境變量。

--init_project NAME: 初始化典型的Ora2Pg項目,生成目錄模板。

--view_as_table str: 將視圖導出為表,多個視圖使用逗號分隔。

3. 配置Ora2Pg

ora2pg.conf文件包含所有配置選項,通過配置選項可以自定義遷移時的行為。這里簡單介紹幾個常用的配置項。

ORACLE_HOME:設置環境變量ORACLE_HOME,DBD:Oracle模塊使用該變量查找所需的Oracle庫。設置方式在依賴安裝中已涉及。

ORACLE_DSN:該參數以標準DBI DSN形式設置數據源名稱,例如:

ORACLE_DSN dbi:Oracle:host=oradb_host.myhost.com;sid=DB_SID;port=1521

或者

ORACLE_DSN dbi:Oracle:DB_SID

第二種方式需要在$ORACLE_HOME/network/admin/tnsnames.ora 文件或者環境變量 TNS_ADMIN 指定目錄下的 tnsnames.ora 文件中定義 SID。

ORACLE_USER, ORACLE_PWD:這兩個參數用于定義Oracle數據庫連接的用戶名和密碼。請注意,如果可以的話,以Oracle超級管理員身份登錄,以避免在數據庫掃描時遇到權限問題,以及丟失內容。

PG_DSN:設置目標數據庫名稱,如下為openGauss示例,連接IP為localhost,端口為5432,名稱為mydb的數據庫。

PG_DSN dbi:Pg:dbname=mydb;host=localhost;port=5432

PG_USER,PG_PWD:設置目標數據庫的用戶、密碼。請注意,這里使用的用戶需要有遠程連接openGauss的權限,以及對對應數據庫的讀寫權限,具體是運行Ora2Pg所在的機器和該用戶需要在openGauss的遠程訪問白名單里。

SCHEMA:此參數用于設置要導出的schema。如下,將提取AppS下的對象。

SCHEMA APPS

ORA_INITIAL_COMMAND:該參數可用于在連接之后向Oracle發送初始命令。例如,在讀取對象前關閉訪問限制策略,或設置一些會話參數。

TYPE:設置要導出的對象類型,包括表、視圖、序列、索引、外鍵、約束、函數、存儲過程等,默認為TABLE。如下,將導出普通表和視圖。

TYPE TABLE VIEW

更多更詳細的配置項說明,可查看官網:

https://ora2pg.darold.net/documentation.html

連接測試:配置好Oracle數據庫的DSN之后,可執行以下命令測試數據庫的連接。

ora2pg -t SHOW_VERSION -c config/ora2pg.conf

以上命令將顯示Oracle數據庫的版本。

4. 執行遷移腳本

本次演示的配置如下,以system用戶連接目標數據庫


 

修改export_schema.sh中導出類型,本次遷移導出表和函數。

執行導出腳本,等待遷移完成。結束后在schema和source的子目錄下生成對應類型的DDL文件,并在末尾給出導出表數據的命令。

sh export_schema.sh


 

同時reports目錄下也生成html格式的遷移報告。


 

執行導入腳本之前需要做如下準備:

1. 先在openGauss庫中創建數據庫,并在該數據庫下創建用戶,把mydb屬主設為該用戶。(import_all.sh中使用PostgreSQL特有的createuser和createdb創建用戶和數據庫)


 

2. 為了使用openGauss命令行工具gsql,需要將數據庫的bin和lib加在操作系統的環境變量PATH和LD_LIBRARY_PATH中。

3. 將import_all.sh里的psql修改為gsql。

4. 當使用普通用戶導入數據時,可增加一個執行該腳本的選項,指定用戶密碼,避免頻繁輸入密碼。

執行導入腳本,表示使用用戶testuser登錄名為mydb的數據庫,ip和端口分別是127.0.0.1和5432,-f選項表示跳過用戶和數據庫是否需要創建的檢查。

sh import_all.sh -d mydb -o testuser –h 127.0.0.1 -p 5432 –f

執行后會交互式提示是否導入各對象結構及數據,如下所示。(其中的-w是手動修改import_all.sh腳本,添加密碼選項)


 

對于表的索引和約束,可選擇延遲導入,即在導入數據之后。

登錄openGauss數據庫查看遷移結果。


 

Ora2Pg不足

Ora2Pg對PL/SQL和PL/PGSQL的語法轉換處理采用正則表達式和文本替換的方式,先天設計不足,很難覆蓋所有的語法,目前僅支持部分轉換。因此,Ora2Pg可以滿足SQL簡單的應用遷移,對于復雜的語法,并不能完全保證轉換的正確性,需要對生成的SQL語句進行核對,必要時需要人工修正。

更多內容請參考:

https://docs.opengauss.org/zh/docs/3.1.0/docs/BriefTutorial/BriefTutorial.html

分享到:
標簽:Oracle
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定