.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "DBD::Oracle::Troubleshooting::Vms 3pm" .TH DBD::Oracle::Troubleshooting::Vms 3pm "2019-01-06" "perl v5.28.1" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" DBD::Oracle::Troubleshooting::Vms \- Tips and Hints to Troubleshoot DBD::Oracle on Vms .SH "VERSION" .IX Header "VERSION" version 1.76 .SH "General Info" .IX Header "General Info" This is related to Oracle \s-1RDBMS 9.2\s0 and later, since Oracle made fundamental changes to oracle installation requirements and factual installation with this release. .PP Oracle's goal was to make \s-1VMS\s0 installation be more like on *nix and Windows, with an all new Oracle Home structure too, requiring an \s-1ODS\-5\s0 disk to install Oracle Home on instead of the good old \s-1ODS\-2.\s0 .PP Another major change is the introduction of an Oracle generated logical name table for oracle logical names like \s-1ORA_ROOT\s0 and all its derivatives like \s-1ORA_PROGINT\s0 etc. And that this logical name table is inserted in \s-1LNM$FILE_DEV\s0 in \s-1LNM$PROCESS_DIRECTORY.\s0 .PP .Vb 1 \& (LNM$PROCESS_DIRECTORY) \& \& "LNM$FILE_DEV" = "SERVER_810111112" \& = "LNM$PROCESS" \& = "LNM$JOB" \& = "LNM$GROUP" \& = "LNM$SYSTEM" \& = "DECW$LOGICAL_NAMES" .Ve .PP This ensures that any process that needs to have access to oracle gets the environment by just adding one logical name table to a central process specific mechanism. .PP But as it is inserted at the very top of \s-1LNM$FILE_DEV\s0 it also represents a source of misfortune \- especially if a user with enough privilege to update the oracle table does so (presumably unintentionally), as an example by changing \s-1NLS_LANG.\s0 .PP \&\s-1PERL\s0 has the ability to define, redefine and undefine (deassign) logical names, but if not told otherwise by the user does it in the first table in above list, and not as one would normally expect in the process table. .PP Installing \s-1DBI\s0 and DBD::Oracle has influence upon this since in both cases a few environment variables are read or set in the test phase. For \s-1DBI\s0 it is the logical \s-1SYS$SCRATCH,\s0 which is a \s-1JOB\s0 logical. For DBD-Oracle it is when testing a new feature in the Oracle \&\s-1RDBMS: UTF8\s0 and \s-1UTF16\s0 character set functionality, and in order to do this it sets and unsets the related environment variables \&\s-1NLS_NCHAR\s0 and \s-1NLS_LANG.\s0 .PP If one is not careful this changes the values set in the oracle table \- and in the worst case stays active until the next major system reset. It can also be a very hard error to track down since it happens in a place where one normally never looks. .PP Furthermore, it is very possibly that some or all of the \s-1UTF\s0 tests fails, since if one have a variable like \s-1NLS_LANG\s0 in his process table, then even though 'mms test' sets it in the wrong table it is not invoked as it is overruled by the process logical... .PP The way to ensure that no logicals are set in the oracle table and that the \s-1UTF\s0 tests get the best environment to test in, and that \&\s-1DBI\s0 correctly translates the \s-1SYS$SCRATCH\s0 logical, use the logical .PP .Vb 1 \& PERL_ENV_TABLES .Ve .PP to ensure that \s-1PERL\s0's behavior is to leave the oracle table alone and use the process table instead: .PP .Vb 1 \& $ DEFINE PERL_ENV_TABLES LNM$PROCESS, LNM$JOB .Ve .PP This tells \s-1PERL\s0 to use the \s-1LNM$PROCESS\s0 table as the default place to set and unset variables so that only the perl users environment is affected when installing DBD::Oracle, and ensures that the \&\s-1LNM$JOB\s0 table is read when \s-1SYS$SCRATCH\s0 is to be translated. .PP \&\s-1PERL_ENV_TABLES\s0 is well documented in the \s-1PERLVMS\s0 man page. .PP Oracle8 releases are not affected, as they don't have the oracle table implementation, and no \s-1UTF\s0 support. .PP Oracle 9.0 is uncertain, since testing has not been possible yet, but the remedy will not hurt :) .SH "AUTHORS" .IX Header "AUTHORS" .IP "\(bu" 4 Tim Bunce .IP "\(bu" 4 John Scoles .IP "\(bu" 4 Yanick Champoux .IP "\(bu" 4 Martin J. Evans .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" This software is copyright (c) 2018, 2014, 2013, 2012, 2011, 2010 by Tim Bunce. .PP This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.