1. 程式人生 > >執行perl xttdriver.pl報錯Can't locate Getopt/Long.pm in @INC

執行perl xttdriver.pl報錯Can't locate Getopt/Long.pm in @INC

環境:AIX 6.1 + Oracle 10.2.0.4
現象:在做xtts測試時,源環境使用Oracle自帶的perl執行xttdriver.pl報錯如下:

$ $ORACLE_HOME/perl/bin/perl xttdriver.pl
Can't locate Getopt/Long.pm in @INC (@INC contains: /project/aix5l64/main/APACHE/perl/bin/AIX/Opt/lib/5.8.3/aix-thread-multi /project/aix5l64/main/APACHE/perl/bin/AIX/Opt/lib/5.8.3 /project/aix5l64/main/APACHE/perl/bin/AIX/Opt/lib/site_perl/5.8.3/aix-thread-multi /project/aix5l64/main/APACHE/perl/bin/AIX/Opt/lib/site_perl/5.8.3 /project/aix5l64/main/APACHE/perl/bin/AIX/Opt/lib/site_perl .) at xttdriver.pl line 126.
BEGIN failed--compilation aborted at xttdriver.pl line 126.

而在目標環境Linux6.8 + Oracle 11.2.0.4 就正常,起初我沒多想這個問題,以為是10g的自帶perl版本過低不支援,第一輪測試使用了系統自帶perl可執行。
但在後續測試中發現系統自帶的perl在執行過程中也是有很多類似錯誤,雖然最終完成,但擔心有其他隱患,和有經驗的同事進一步溝通,得知之前成功的xtts專案都是採用oracle自帶的perl,某些版本報這個錯誤是需要額外設定環境變數。

具體依據下面的MOS文件,需要設定PER5LIB環境變數:

  • perl xttdriver.pl fails: Can't locate Getopt/Long.pm in @INC (文件 ID 1912400.1)

臨時設定PERL5LIB環境變數:

$ export PERL5LIB=$ORACLE_HOME/perl/lib

再次使用Oracle自帶的perl執行xttdriver.pl不再報之前的錯誤,這裡測試沒加引數,就正常列出了xttdriver.pl的使用方法:

$ $ORACLE_HOME/perl/bin/perl xttdriver.pl
============================================================
trace file is /tmp/Nov15_Thu_16_29_45_413//Nov15_Thu_16_29_45_413_.log
=============================================================

--------------------------------------------------------------------
Parsing properties
--------------------------------------------------------------------


--------------------------------------------------------------------
Done parsing properties
--------------------------------------------------------------------


--------------------------------------------------------------------
Checking properties
--------------------------------------------------------------------


--------------------------------------------------------------------
Done checking properties
--------------------------------------------------------------------


   This program prepares, backsup and rollsforward tablespaces
   for cross-platform transportable tablespaces.

    usage: xttdriver.pl
                  {[--backup|-b] || [--bkpincr|-B] || [--bkpexport/E]
                   [--resincrdmp|M]
                   [--fixnewdf|W]
                   [--convert/-c] || [--generate|-e] || [--incremental|-i] ||
                   [[--prepare|-p] || [--getfile|-G]] ||
                   [--restore|R] || [--recover|X]
                   [--rollforward|-r [--rolltbs|-T <TBS1[,TBS2]>] ||
                   [--determinescn|-s] ||
                   [--orasid/O] || [--orahome|-o]]
                   [--help|-h]}

       Additional options
       ------------------
               [--debug|d] [--clearerrorfile|-C] [--xttdir|Dir <tmpdir>]
               [-F/--propfile] [-I/--propdir]

     -b  : For 12c and above, generate transportable backups
     -B  : For 12c and above, generate level 1 transportable backups
     -c  : conversion of datafiles
     -M  : create the dump file from the generated backup
     -e  : generate impdp script: export over new link
     -i  : incremental backup
     -p  : prepare
     -G  : get datafiles from source database using get_file, should not
           be used together with -p
     -r  : roll forward datafiles
     -s  : new from_scn values into xttplan.txt
     -R  : For 12c restore the datafiles from the backups
     -X  : For 12c recover the datafiles from the backups
     -T  : roll forward specific tablespace(s)
     -h  : this (help) message (Default)
     -d  : provides more debug information, also rman is called with debug
           option so that tracing is better.
     -L  : delete the ERROR FILE and proceed with the execution
     -D  : Instead of defining environement variable, user can pass tmpdir
           through xttdir
     -O  : Use this option to pass ORACLE_SID to override the environment
           variable
     -o  : Use this option to pass ORACLE_HOME to override the environment
           variable
     -I  : Use this option to mention the location from where the script
           will pick the properties file etc
     -F  : Use this option to mention the location from where the script
           will pick the properties file.
     -W  : Will try to reconstruct files on the destination after new 
           datafiles have been added

    example: xttdriver.pl -p
             xttdriver.pl -i
             xttdriver.pl -r
             xttdriver.pl -s

$ 

既然如此,後續還是建議使用oracle自帶的perl進行測試。