執行perl xttdriver.pl報錯Can't locate Getopt/Long.pm in @INC
阿新 • • 發佈:2018-12-21
環境: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進行測試。