[root@ora~]#cat/etc/issueCentOSrelease5.5(Final)Kernel\ronan\m@H_403_8@ @H_403_8@ 内核版本
[root@ora~]#uname-alinuxora2.6.18-194.el5#1SMPFriApr214:58:14EDT2010x86_64x86_64x86_64GNU/linux@H_403_8@ @H_403_8@ perl安装 @H_403_8@系统一般会自带一个已安装的perl版本,可在安装前进行检测:
[root@ora~]#rpm-qperlperl-5.8.8-27.el5@H_403_8@ @H_403_8@Ora2Pg要求perl版本为5.6或更高。 @H_403_8@如果没有或者是想要安装更高版本的请按照下面的方法编译安装: @H_403_8@perl下载地址:http://www.perl.org/get.HTML#unix_like @H_403_8@安装步骤: @H_403_8@1、解压安装包,进入解压目录 @H_403_8@2、运行 sh Configure –de (使用默认配置安装) @H_403_8@3、make @H_403_8@4、make test @H_403_8@5、make install @H_403_8@ 利用CPAN来安装DBI、DBD::Oracle和DBD::Pg @H_403_8@由于此实验是将Ora2Pg与Oracle分别安装,因此在通过CPAN在线安装模块之前,首先需要确保在该PC上已经存在了Oracle和Postgresql的客户端,并且必要的环境变量已经配置完成。 @H_403_8@该实验通过CPAN来安装,当然也可使用源码安装。 @H_403_8@ 安装Oracle客户端 @H_403_8@要成功配置DBD::Oracle则需要Basic、sql*Plus、SDK这三个配置,我们需要将这三个包放到同一个目录中。 @H_403_8@所需包下载地址:http://www.oracle.com/technetwork/database/features/instant-clIEnt/index-097480.HTML @H_403_8@将下载的三个包在同一个目录下解压,解压后生成一个目录(instantclIEnt_11_1),结果如下:
[root@ora~]#ll/tmp/InstallClIEnt/total47564-rw-r--r--1rootroot47149968Nov272011basic-11.1.0.70-linux-x86_64.zipdrwxr-xr-x3rootroot4096Jul2821:31instantclIEnt_11_1-rw-r--r--1rootroot607351Nov272011sdk-11.1.0.7.0-linux-x86_64.zip-rw-r--r--1rootroot857863Nov272011sqlplus-11.1.0.7.0-linux-x86_64.zip@H_403_8@ @H_403_8@ 安装Postgresql客户端 @H_403_8@要成功配置DBD::Pg则需要首先配置好Postgresql的客户端,我们可以通过安装Postgresql的方式来安装配置客户端。(Postgresql的安装过程 略)
注:如果我们不需要自动导入到Postgresql中,只需要生成一个sql脚本,那么不需要进行该步。 @H_403_8@ 配置环境变量 @H_403_8@环境变量配置结果如下:
[root@ora~]#cat.bash_profile#.bash_profile #Getthealiasesandfunctions if[-f~/.bashrc];then.~/.bashrcfi #Userspecificenvironmentandstartupprograms PATH=/usr/local/pgsql/bin:$PATH:$HOME/binexportORACLE_HOME=/tmp/InstallClIEnt/instantclIEnt_11_1exportLD_liBRARY_PATH=/tmp/InstallClIEnt/instantclIEnt_11_1exportPATHunsetUSERname@H_403_8@ @H_403_8@ 安装模块
yuminstallperl-CPANgcc@H_403_8@ @H_403_8@ @H_403_8@ @H_403_8@以root用户进入cpan shell
[root@ora~]#perl–MCPAN–eshell…………cpan>installDBI…………cpan>installDBD::Oracle…………cpan>installDBD::Pg…………@H_403_8@ @H_403_8@ @H_403_8@注意: @H_403_8@执行perl –MCPAN时如果报Can't locate CPAN.pm in @INC ,那么需要首先安装CPAN
yuminstallperl-CPAN@H_403_8@ @H_403_8@ @H_403_8@并且需要安装gcc,避免安装模块时无法编译。 perl模块简单检测 @H_403_8@ @H_403_8@使用perl语言制作一个检测脚本test.pl,内容如下:
[root@ora~]#cattest.pl#!/usr/bin/perluseExtUtils::Installed;my$inst=ExtUtils::Installed->new();printjoin"\n",$inst->modules();@H_403_8@ @H_403_8@运行检测:
[root@ora~]#perltest.plDBD::OracleDBD::PgDBIExtUtils::MakeMakerOra2PgPerlTest::Simple@H_403_8@ @H_403_8@ @H_403_8@ @H_403_8@ 安装Ora2Pg @H_403_8@ @H_403_8@下载地址:https://sourceforge.net/projects/ora2pg/ @H_403_8@安装方式跟perl类似:
tar–xvfora2pg-9.0.tar.bz2cdora2pg-9.0/perlMakefile.PLmake&&makeinstall@H_403_8@ @H_403_8@安装完成后默认的配置文件路径:/etc/ora2pg/ora2pg.conf @H_403_8@ @H_403_8@ @H_403_8@ Ora2Pg简单配置 @H_403_8@ @H_403_8@修改配置文件/etc/ora2pg/ora2pg.conf,结果如下: @H_403_8@ORACLE_DSN dbi:Oracle:host=192.168.0.153;sID=orcl @H_403_8@ORACLE_USER system @H_403_8@ORACLE_PWD highgo @H_403_8@SCHEMA TEST (注意要大写,否则匹配不到) @H_403_8@TYPE table DATA VIEW @H_403_8@如果需要让数据自动导入到Postgresql中,则需要同时配置关于连接Postgresql的相关信息,配置类似上面Oracle的配置,如下: @H_403_8@PG_DSN dbi:Pg:dbname=test_db;host=192.168.100.106;port=5432 @H_403_8@PG_USER test @H_403_8@PG_PWD highgo @H_403_8@ @H_403_8@ @H_403_8@ 测试 @H_403_8@ 创建测试数据 @H_403_8@在Oracle中首先创建用户test并赋权,然后以test用户创建相关对象,如下:
sql>CREATEtablet1(2IDNUMBER(5)NOTNulLPRIMARYKEY,3namevarchar2(10)4);tablecreated.sql>DESCt1;nameNulL?TYPE-----------------------------------------------------------------------------IDNOTNulLNUMBER(5)nameVARCHAR2(10)sql>CREATEtablet2(2IDNUMBER(5)NOTNulL,3ageINT,4FOREIGNKEY(ID)referencest1(ID)5);tablecreated.sql>DESCt2;nameNulL?TYPE-----------------------------------------------------------------------------IDNOTNulLNUMBER(5)AGENUMBER(38)sql>INSERTINTOt2VALUES(1,20);1ROWcreated.sql>INSERTINTOt2VALUES(2,18);1ROWcreated.sql>INSERTINTOt2VALUES(3,23);1ROWcreated.sql>CREATEINDEXt2_index_ageONt2(age);INDEXcreated.sql>CREATEVIEWt1_t2_v12AS3SELECTt1.ID,t1.name,t2.ageFROMt1,t24WHEREt1.ID=t2.ID;VIEWcreated.@H_403_8@ @H_403_8@ 导出脚本 @H_403_8@执行成功后将会在当前目录下生成一个sql脚本(默认是output.sql)
[root@ora~]#ora2pgTryingtoconnecttodatabase:dbi:Oracle:host=192.168.100.138;sID=orclIsolationlevel:SETTRANSACTIONISolATIONLEVELSERIAliZABLEForceOracletocompileschemabeforecodeextractionRetrIEvingtableinformation...[1]ScanningT1(TESTT1table)...ID=>type:NUMBER,length:22(char_length:0),precision:5,scale:0,nullable:N,default:name=>type:VARCHAR2,length:10(char_length:10),precision:,scale:,nullable:Y,default:[2]ScanningT2(TESTT2table)...ID=>type:NUMBER,default:AGE=>type:NUMBER,default:RetrIEvingtableinformation...[1]ScanningT1(TESTT1table)...WarningduplicatetableT1,SYNONYME ?Skipped.[1]ScanningT2(TESTT2table)...WarningduplicatetableT2,SYNONYME ?Skipped.RetrIEvingvIEwsinformation...ID=>columnID:1name=>columnID:2AGE=>columnID:3[1]ScanningT1_T2_V1...WARNING:can'tusedirectimportintopostgresqlwiththistypeofexport.OnlyDATAorcopYexporttypecanbeusewithdirectimport,fileoutputwillbeused.DumPingtableT1...DumPingtableT2...DumPingRIT2...WARNING:orderingtableexporttorespectforeignkeysisnotpossible.PleaseconsIDerusingDEFER_FKEYorDROP_FKEYconfigurationdirectives.DumPingtableT1...DEBUG:Preparingbulkof10000dataforoutputDEBUG:Creatingoutputfor10000tuples 3recordsin0secsTotalextractedrecordsfromtableT1:3in0secsDumPingtableT2...DEBUG:Preparingbulkof10000dataforoutputDEBUG:Creatingoutputfor10000tuples 3recordsin0secsTotalextractedrecordsfromtableT2:3in0secsRestartingsequencesAddvIEwsdeFinition...AddingvIEwT1_T2_V1...@H_403_8@ @H_403_8@根据实际需求可以制定不同的参数 参数说明:
-d|--deBUG:启用详细输出。-h|--help:打印出简单的帮助信息。-v|--version:显示Ora2Pg的版本。-c|--conffile:使用另一个替代的配置文件,默认是/etc/ora2pg/ora2pg.conf。-l|--logfile:使用一个日志文件,默认是标准输出。-o|--outfile:指定导出的sql脚本文件的路径,默认是当前目录下。-t|--typeexport:指定导出格式。覆盖配置文件中指定的TYPE。-p|--plsql:启用PLsql到PLPsql码的转换。-s|--sourcedsn:设置OracleDBI数据源。-u|--useruser:设置连接Oracle的用户名。-w|--passwordpass:设置Oracle用户密码。-n|--namespaceschema:设置用于提取的Oracle模式名称。-b|--basedirdir:设置默认的输出文件目录,输出的文件将被保存到该目录。-x|--xtablerelname:用于显示给定表的列名,仅在TYPE为SHOW_ColUMN时使用。-f|--forceowner:如果设置为1将促使Ora2Pg设置表和序列的所有者。如果将其值设置为一个用户名会被设定为对象的所有者。--nls_langcode:设置OracleNLS_LANG客户端编码。--clIEnt_enCodingcode:设置Postgresql客户端编码。-i|--input_filefile:文件包含在没有Oracle数据库连接发起时OraclePL/sql代码的转换。@H_403_8@ @H_403_8@生成脚本内容如下:
--GeneratedbyOra2Pg,theOracledatabaseSchemaconverter,version9.0--copyright2000-2012GillesDARolD.Allrightsreserved.--DATASOURCE:dbi:Oracle:host=192.168.100.138;sID=orcl\SetoN_ERROR_StopONCREATEtable"t1"("ID"INTEGERNOTNulL,"name"VARCHAR(10));ALTERtable"t1"ADDPRIMARYKEY("ID");CREATEtable"t2"("ID"INTEGERNOTNulL,"age"BIGINT);CREATEINDEXt2_index_ageON"t2"("age");ALTERtable"t2"ADDCONSTRAINT"sys_c0011825"FOREIGNKEY("ID")REFERENCES"t1"("ID")ONDELETENOACTIONNOTDEFERRABLEINITIALLYIMMEDIATE;--GeneratedbyOra2Pg,version9.0--copyright2000-2012GillesDARolD.Allrightsreserved.--DATASOURCE:dbi:Oracle:host=192.168.100.138;sID=orcl\SetoN_ERROR_StopONSETsearch_path=test,pg_catalog;BEGIN;ALTERtablet1disABLETRIGGERALL;INSERTINTO"t1"("ID","name")VALUES(1,E'jony');INSERTINTO"t1"("ID","name")VALUES(2,E'lucy');INSERTINTO"t1"("ID","name")VALUES(3,E'jack');ALTERtablet1ENABLETRIGGERALL;COMMIT;SETsearch_path=test,pg_catalog;BEGIN;ALTERtablet2disABLETRIGGERALL;INSERTINTO"t2"("ID","age")VALUES(1,20);INSERTINTO"t2"("ID","age")VALUES(2,18);INSERTINTO"t2"("ID","age")VALUES(3,23);ALTERtablet2ENABLETRIGGERALL;COMMIT;CREATEORREPLACEVIEW"t1_t2_v1"("ID","name","age")ASSELECTt1.ID,t2WHEREt1.ID=t2.ID;@H_403_8@ @H_403_8@检查修改,无误后方可载入Postgresql @H_403_8@ 在Postgresql中恢复数据 @H_403_8@首先创建一个test_db数据库,再创建一个test用户,在test_db数据库下以超级用户创建一个schema,并将该schema的权限者设为test,最后以test用户在test_db数据库下导入数据脚本:
$psqlpostgres=#CREATEDATABASEtest_db;postgres=#createusertestpassword‘highgo’;postgres=#\ctest_dbtest_db=#CREATEschematestauthorizationtest;test_db=#\ctest_dbtesttest_db=>\i/root/output.sql...@H_403_8@ @H_403_8@ @H_403_8@ @H_403_8@ 错误解决 @H_403_8@ 安装DBD::Oracle @H_403_8@错误现象:
cpan>installDBD::OracleTryingtofindanorACLE_HOMEYourLD_liBRARY_PATHenvvarissettoTheORACLE_HOMEenvironmentvariableisnotsetandICouldn'tguessit.Itmustbesettoholdthepathtoanoracleinstallationdirectoryonthismachine(oramachinewithacompatiblearchitecture).SeetheappropriateREADMEfileforyourOSformoreinformation.ABORTED!RunningmaketestMakehadsomeproblems,maybeinterrupted?Won'ttestRunningmakeinstallMakehadsomeproblems,maybeinterrupted?Won'tinstall@H_403_8@ @H_403_8@解决方式:修改.bash_profile,添加几个关于Oracle的环境变量,结果如下:
PATH=$PATH:$HOME/bin:/u01/app/oracle/oracle/product/10.2.0/db_1/bin/exportORACLE_SID=orclexportORACLE_HOME=/u01/app/oracle/oracle/product/10.2.0/db_1exportLD_liBRARY_PATH=/u01/app/oracle/oracle/product/10.2.0/db_1/lib/exportPATHunsetUSERname@H_403_8@ @H_403_8@ 安装DBD::Pg @H_403_8@错误现象:
cpan>installDBD::PgConfiguringDBD::Pg2.18.1Pathtopg_config?USEOfuninitializedvalueinconcatenation(.)orstringatMakefile.PLline99,<STDIN>line1.USEOfuninitializedvalueinconcatenation(.)orstringatMakefile.PLline101,<STDIN>line1.Postgresqlversion:0(defaultport:0)POSTGRES_HOME:(notset)POSTGRES_INCLUDE:/includePOSTGRES_liB:/libOS:linuxThevalueofPOSTGRES_INCLUDEpointstoanon-existentdirectory:/includeCannotbuildunlessthedirectorIEsexist,exiting.make:***NotargetsspecifIEdandnomakefilefound.Stop./usr/bin/make--NOTOKRunningmaketestCan'ttestwithoutsuccessfulmakeRunningmakeinstallmakehadreturnedbadstatus,installseemsimpossible@H_403_8@ @H_403_8@解决方式:
修改.bash_profile,添加几个关于Postgresql的环境变量,结果如下:
PATH=$PATH:$HOME/bin:/u01/app/oracle/oracle/product/10.2.0/db_1/bin/exportORACLE_SID=orclexportORACLE_HOME=/u01/app/oracle/oracle/product/10.2.0/db_1exportLD_liBRARY_PATH=/u01/app/oracle/oracle/product/10.2.0/db_1/lib/exportPOSTGRES_HOME=/pg/pgsql/exportPOSTGRES_INCLUDE=$POSTGRES_HOME/includeexportPOSTGRES_liB=$POSTGRES_HOME/libunsetUSERname@H_403_8@ @H_403_8@ 运行Ora2Pg @H_403_8@错误现象:
[root@ora~]#ora2pgCan'tlocateCompress/Zlib.pmin@INC(@INCcontains:/usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/usr/lib/perl5/site_perl/5.8.8/usr/lib/perl5/site_perl/usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi/usr/lib/perl5/vendor_perl/5.8.8/usr/lib/perl5/vendor_perl/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/usr/lib/perl5/5.8.8.)at/usr/lib/perl5/site_perl/5.8.8/Ora2Pg.pmline541.BEGINFailed--compilationabortedat/usr/lib/perl5/site_perl/5.8.8/Ora2Pg.pmline541.CompilationFailedinrequireat/usr/local/bin/ora2pgline27.BEGINFailed--compilationabortedat/usr/local/bin/ora2pgline27.@H_403_8@ @H_403_8@解决方式:
yuminstallperl-Compress-Zlib总结
以上是内存溢出为你收集整理的Ora2Pg安装配置全部内容,希望文章能够帮你解决Ora2Pg安装配置所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)