• 执行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进行测试。
    2018-11-18修正说明:最终发现这个不算是问题,因为实际上源端我使用系统自带的perl也并没有任何报错,实际报错是目标端perl在进行增量恢复时有报错,具体是"Can't locate strict.pm in @INC...",虽然看起来和上文很像,但模块名称有区别,而从MOS文档Migrate database to Exadata with DBMS_FILE_TRANSFER (文档 ID 1902618.1)中可以看到这个错误实际是可以忽略的,原话是:
    It is safe to ignore the "Can't locate strict.pm in @INC..." messages. We believe those are the result of the Perl pragma 'use strict' in the asmcmdcore.

  • 相关阅读:
    壶公随感
    消息称微软受谷歌刺激 急于收购雅虎(zz)
    远程注销Windows用户
    "杀人"游戏中的一些规律
    由两点的经纬度估算距离
    我的城市?
    Blog里的一个bug,dudu看能否修正?
    这两天真烦
    发简历,找上海.Net方面软件开发工作
    "上海.NET俱乐部"聚会筹备进展
  • 原文地址:https://www.cnblogs.com/jyzhao/p/9966762.html
Copyright © 2020-2023  润新知