2 <html lang="en-us" itemscope itemtype="http://schema.org/Article">
5 <meta name="description" content=" Added menus to GPDB web Tested and documented access of Oracle databases, such as GPDB, using standard Perl and standard Oracle libraries from various architectures...">
6 <meta name="generator" content="Movable Type 5.2.3">
7 <title>GPDB Web Update/Oracle testing - Status</title>
8 <link rel="alternate" type="application/atom+xml" title="Recent Entries" href="http://defaria.com/blogs/Status/atom.xml">
9 <link rel="canonical" href="http://defaria.com/blogs/Status/2007/03/gpdb-web-update.html">
10 <meta name="viewport" content="width=device-width,initial-scale=1">
11 <link rel="stylesheet" href="http://defaria.com/blogs/Status/styles.css">
13 <link rel="stylesheet" href="http://defaria.com/blogs/Status/styles_ie.css">
14 <script src="/mt/mt-static/support/theme_static/rainier/js/html5shiv.js"></script>
17 <link rel="start" href="http://defaria.com/blogs/Status/">
19 <link rel="prev" href="http://defaria.com/blogs/Status/2007/03/mysql-client-li.html" title="MySQL Client Libraries">
20 <link rel="next" href="http://defaria.com/blogs/Status/2007/03/gpdb-login-1.html" title="GPDB Login">
21 <!-- Open Graph Protocol -->
22 <meta property="og:type" content="article">
23 <meta property="og:locale" content="en-us">
24 <meta property="og:title" content="GPDB Web Update/Oracle testing">
25 <meta property="og:url" content="http://defaria.com/blogs/Status/2007/03/gpdb-web-update.html">
26 <meta property="og:description" content=" Added menus to GPDB web Tested and documented access of Oracle databases, such as GPDB, using standard Perl and standard Oracle libraries from various architectures...">
27 <meta property="og:site_name" content="Status">
28 <meta property="og:image" content="/mt/mt-static/support/theme_static/rainier/img/siteicon-sample.png">
30 <meta itemprop="description" content=" Added menus to GPDB web Tested and documented access of Oracle databases, such as GPDB, using standard Perl and standard Oracle libraries from various architectures...">
31 <link itemprop="url" href="http://defaria.com/blogs/Status/2007/03/gpdb-web-update.html">
32 <link itemprop="image" href="/mt/mt-static/support/theme_static/rainier/img/siteicon-sample.png">
37 <div id="container-inner">
38 <header id="header" role="banner">
39 <div id="header-inner">
40 <div id="header-content">
42 <a href="http://defaria.com/blogs/Status/">
51 <nav role="navigation">
53 <li><a href="http://defaria.com/blogs/Status/">Home</a></li>
62 <div id="content-inner">
63 <ul class="breadcrumb breadcrumb-list">
64 <li class="breadcrumb-list-item"><a href="http://defaria.com/blogs/Status/">Home</a></li>
65 <li class="breadcrumb-list-item">GPDB Web Update/Oracle testing</li>
67 <div id="individual-main" class="main" role="main">
68 <article id="entry-1874" class="entry entry-asset asset hentry">
69 <div class="asset-header">
70 <h2 itemprop="name" class="asset-name entry-title">GPDB Web Update/Oracle testing</h2>
71 <footer class="asset-meta">
72 <ul class="asset-meta-list">
73 <li class="asset-meta-list-item">Posted on <time datetime="2007-03-21T16:52:37-08:00" itemprop="datePublished">March 21, 2007</time></li>
74 <li class="asset-meta-list-item">by <span class="author entry-author vcard"></span></li>
77 <li class="asset-meta-list-item">in <a itemprop="articleSection" rel="tag" href="http://defaria.com/blogs/Status/texas-instruments/">Texas Instruments</a></li>
83 <div class="entry-content asset-content" itemprop="articleBody">
85 <li>Added menus to GPDB web</li>
87 <li>Tested and documented access of Oracle databases, such as GPDB, using standard Perl and standard Oracle libraries from various architectures</li>
89 <p>Joe Ramey had worked on getting the Oracle Linux client API library to work with Perl. I am trying to validate that this works on all supported architectures where <i>all supported architectures</i> is considered the subset of:</p>
91 <li>Solaris (e.g. Stashu)</li>
92 <li>Linux 32-bit (e.g. Fad01)</li>
93 <li>Linux 64-bit AMD Opteron processor (e.g. DrTeeth)</li>
94 <li>Linux 64-bit Intel processor (e.g. Fad11)</li>
97 <h3>How to properly code Perl to access an Oracle DB</h3>
99 <p>Normal access to SQL databases in Perl usually consists of use'ing two different Perl modules. First a DBI.pm module which is the<i> <b>D</b>ata<b>B</b>ase <b>I</b>ndependent</i> interface and the DBD or <b><i>D</i></b><i>ata<b>B</b>ase <b>D</b>river</i> module for the particular SQL database involved. We are interested in Oracle here but others include mSQL, MySQL, etc.</p>
101 <p>Couple this with the fact that we wish to use the standard Perl (e.g. /apps/perl/5.8.3/bin/perl) and standard Perl modules (/apps/perl/modules-<<i>datecode</i>> where <i>datecode</i> is some combination of a year/month date code whose apparent LCD seems to be modules-0412).</p>
103 <p>So first our Perl script should start with:</p>
105 <div class=code><pre>
106 <font color="#3333ff">#!/apps/perl/5.8.3/bin/perl</font>
107 <font color="#ff0000">use strict</font>;
108 <font color="#ff0000">use warnings</font>;
110 <font color="#3333ff"># Standard CDOE modules (Modules of the month!) - need this to pick up DBI.pm</font>
111 <font color="#ff0000">use lib</font> "<font color="#009900">/apps/perl/modules-0412/lib</font>";
114 <p>So as the comment indicates we are picking up the DBI.pm module from here. Next, normally, we'd simply include the lib path for the Oracle DBD.pm (or in the special case of Oracle, the Oracle.pm file) as well as the supporting shared library Oracle.so (which is architecturally dependent) by coding the following:</p>
116 <div class=code><pre>
117 <font color="#3333ff"># Perl/Oracle libraries</font>
118 <font color="#ff0000">use lib</font> "<font color="#009900">/apps/oracle/perl/10.2.0.1.0/lib</font>";
121 <p>However, since Linux client support is not included in /apps/oracle/perl/10.2.0.1.0/lib (yet) we need to pick up Joe's stuff:</p>
123 <div class=code><pre>
124 <font color="#3333ff"># Linux API is in Ramey's home dir...</font>
125 <font color="#ff0000">use lib</font> "<font color="#009900">/home/ramey/oracle/perl/10.2.0.1.0/lib</font>";
128 <p>The next excerpt from my code, shown in it's entirety later, shows a lib path I used to use that allows Solaris clients to work correctly, however we wish to move away from this special cased library thus it's commented out here:</p>
130 <div class=code><pre>
131 <font color="#3333ff"># This is a non standard Oracle</font>
132 <font color="#3333ff">#use lib "/apps/perl/5.8.0/lib/perl5/site_perl/5.8.0";</font>
135 <p>As the full code listing that follows shows I then use my current development libraries and attempt to log into the development version of GPDB, and Oracle database, and retrieve and display some rudimentary data:</p>
137 <p><font color="#999999">Entire code listing of ~x0062320/testgpdb.pl</font></p>
139 <div class=code><pre>
140 <font color="#3333ff">#!/apps/perl/5.8.3/bin/perl</font>
141 <font color="#ff0000">use strict</font>;
142 <font color="#ff0000">use warnings</font>;
144 <font color="#3333ff"># Standard CDOE modules (Modules of the month!) - need this to pick up DBI.pm</font>
145 <font color="#ff0000">use lib</font> "<font color="#009900">/apps/perl/modules-0412/lib</font>";
147 <font color="#3333ff"># Perl/Oracle libraries</font>
148 <font color="#ff0000">use lib</font> "<font color="#009900">/apps/oracle/perl/10.2.0.1.0/lib</font>";
150 <font color="#3333ff"># Linux API is in Ramey's home dir...</font>
151 <font color="#ff0000">use lib</font> "<font color="#009900">/home/ramey/oracle/perl/10.2.0.1.0/lib</font>";
153 <font color="#3333ff"># This is a non standard Oracle</font>
154 <font color="#3333ff">#use lib "/apps/perl/5.8.0/lib/perl5/site_perl/5.8.0";
156 # Current development GPDB modules</font>
157 <font color="#ff0000">use lib</font> "<font color="#009900">/web/gpdb/cgi-bin</font>";
159 <font color="#ff0000">use GPDB::gpdb</font>;
161 <font color="#3333ff"># Log into GPDB - read only</font>
162 gpdb_login (<font color="#33cc00">undef</font>, <font color="#33cc00">undef</font>, "<font color="#009900">OracleDevelopment</font>");
164 <font color="#3333ff"># Get a project</font>
165 <font color="#ff0000">my</font> <font color="#3333ff"><b>@projects</b></font> = gpdb_getProject ("<font color="#009900">uma</font>");
167 <font color="#3333ff"># Play with it a little bit...</font>
168 <font color="#ff0000">my</font> <i><font color="#ff0000">%project</font></i> = %{<font color="#3333ff"><b>$projects</b></font> [0][0]};
170 <font color="#33cc00">print</font> "<font color="#009900">Project: ${project {PROJECT}{NAME}}\n</font>";
171 <font color="#33cc00">print</font> "<font color="#009900">Site: ${project {PROJECT}{SITE_NAME}}\n</font>";
173 <font color="#33cc00">print</font> "<font color="#009900">Vobs:\n</font>";
175 <font color="#ff0000">foreach</font> (@{<font color="#ff0000">$project</font> {CLEARCASE}}) {
176 <font color="#ff0000">my</font> <i><font color="#ff0000">%cc</font></i> = %{$_};
178 <font color="#33cc00">print</font> "<font color="#009900">\t${cc {VOB_TAG}}\n</font>";
179 } <font color="#3333ff"># foreach</font>
181 <font color="#33cc00">print</font> "<font color="#009900">done\n</font>";
186 <p>Here's the results running on the target architectures:</p>
188 <div class=code><pre>
189 $ ssh stashu testgpdb.pl
190 DBI connect('host=dflorad01.itg.ti.com;sid=flddsync;port=1521','cm_gpdb_readonly',...) failed: ERROR OCIEnvNlsCreate. Check ORACLE_HOME env var, NLS settings, permissions, etc. at /web/gpdb/cgi-bin/GPDB/DBHelper.pm line 136
191 Could not connect to database. Check $ORACLE_HOME. at /web/gpdb/cgi-bin/GPDB/primitive.pm line 81
192 $ ssh fad01 testgpdb.pl
201 $ ssh drteeth testgpdb.pl
210 $ ssh fad11 testgpdb.pl
212 '/home/ramey/oracle/perl/10.2.0.1.0/lib/i686-linux-thread-multi/auto/DBI/DBI.so' for module DBI: /lib/libc.so.6: version `GLIBC_2.3' not found (required by
213 /home/ramey/oracle/perl/10.2.0.1.0/lib/i686-linux-thread-multi/auto/DBI/DBI.so) at /apps/perl/5.8.3/lib/5.8.3/i686-linux-thread-multi/DynaLoader.pm line 229.
214 at /home/ramey/oracle/perl/10.2.0.1.0/lib/i686-linux-thread-multi/DBI.pm line 259
215 BEGIN failed--compilation aborted at /home/ramey/oracle/perl/10.2.0.1.0/lib/i686-linux-thread-multi/DBI.pm line 259.
216 Compilation failed in require at /web/gpdb/cgi-bin/GPDB/primitive.pm line 24.
217 BEGIN failed--compilation aborted at /web/gpdb/cgi-bin/GPDB/primitive.pm line 24.
218 Compilation failed in require at /web/gpdb/cgi-bin/GPDB/gpdb.pm line 38.
219 BEGIN failed--compilation aborted at /web/gpdb/cgi-bin/GPDB/gpdb.pm line 38.
220 Compilation failed in require at ./testgpdb.pl line 20.
221 BEGIN failed--compilation aborted at ./testgpdb.pl line 20.
224 <p>So as we can see this is <b>not</b> working for Solaris or Linux 64-bit Intel.</p>
226 <nav class="page-navigation entry-navigation pagination content-nav">
227 <ul class="page-navigation-list">
229 <li class="page-navigation-list-item page-navigation-prev"><a rel="prev" href="http://defaria.com/blogs/Status/2007/03/mysql-client-li.html" title="MySQL Client Libraries">Previous entry</a></li>
232 <li class="page-navigation-list-item page-navigation-next"><a rel="next" href="http://defaria.com/blogs/Status/2007/03/gpdb-login-1.html" title="GPDB Login">Next entry</a></li>
237 <aside id="zenback" class="zenback feedback">
238 Please paste Zenback script code here.
245 <aside class="widgets related" role="complementary">
246 <nav class="widget-search widget">
247 <div class="widget-content">
248 <form method="get" id="search" action="http://defaria.com/mt/mt-search.cgi">
250 <input type="text" name="search" value="" placeholder="Search...">
252 <input type="hidden" name="IncludeBlogs" value="8">
254 <input type="hidden" name="limit" value="20">
255 <button type="submit" name="button">
256 <img alt="Search" src="/mt/mt-static/support/theme_static/rainier/img/search-icon.png">
262 <nav class="widget-archive-category widget">
263 <h3 class="widget-header">Categories</h3>
264 <div class="widget-content">
267 <ul class="widget-list">
270 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/ameriquest/">Ameriquest (99)</a>
278 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/audience/">Audience (3)</a>
286 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/broadcom/">Broadcom (76)</a>
294 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/gpdb/">GPDB (35)</a>
302 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/general-dynamics/">General Dynamics (61)</a>
310 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/general-electric/">General Electric (13)</a>
318 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/hewlett-packard/">Hewlett Packard (13)</a>
326 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/lynuxworks/">LynuxWorks (162)</a>
334 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/pqa/">PQA (35)</a>
342 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/salira/">Salira (79)</a>
350 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/tellabs/">Tellabs (2)</a>
358 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/texas-instruments/">Texas Instruments (31)</a>
370 <nav class="widget-archive-dropdown widget">
371 <h3 class="widget-header">Archives</h3>
372 <div class="widget-content">
374 <option>Select a Month...</option>
376 <option value="http://defaria.com/blogs/Status/2016/02/">February 2016</option>
380 <option value="http://defaria.com/blogs/Status/2014/09/">September 2014</option>
384 <option value="http://defaria.com/blogs/Status/2014/04/">April 2014</option>
388 <option value="http://defaria.com/blogs/Status/2014/03/">March 2014</option>
392 <option value="http://defaria.com/blogs/Status/2013/02/">February 2013</option>
396 <option value="http://defaria.com/blogs/Status/2012/09/">September 2012</option>
400 <option value="http://defaria.com/blogs/Status/2012/08/">August 2012</option>
404 <option value="http://defaria.com/blogs/Status/2012/05/">May 2012</option>
408 <option value="http://defaria.com/blogs/Status/2012/04/">April 2012</option>
412 <option value="http://defaria.com/blogs/Status/2012/02/">February 2012</option>
416 <option value="http://defaria.com/blogs/Status/2012/01/">January 2012</option>
420 <option value="http://defaria.com/blogs/Status/2011/10/">October 2011</option>
424 <option value="http://defaria.com/blogs/Status/2011/07/">July 2011</option>
428 <option value="http://defaria.com/blogs/Status/2010/09/">September 2010</option>
432 <option value="http://defaria.com/blogs/Status/2010/08/">August 2010</option>
436 <option value="http://defaria.com/blogs/Status/2010/04/">April 2010</option>
440 <option value="http://defaria.com/blogs/Status/2010/03/">March 2010</option>
444 <option value="http://defaria.com/blogs/Status/2010/02/">February 2010</option>
448 <option value="http://defaria.com/blogs/Status/2009/05/">May 2009</option>
452 <option value="http://defaria.com/blogs/Status/2009/04/">April 2009</option>
456 <option value="http://defaria.com/blogs/Status/2008/07/">July 2008</option>
460 <option value="http://defaria.com/blogs/Status/2008/05/">May 2008</option>
464 <option value="http://defaria.com/blogs/Status/2008/04/">April 2008</option>
468 <option value="http://defaria.com/blogs/Status/2008/03/">March 2008</option>
472 <option value="http://defaria.com/blogs/Status/2008/02/">February 2008</option>
476 <option value="http://defaria.com/blogs/Status/2008/01/">January 2008</option>
480 <option value="http://defaria.com/blogs/Status/2007/12/">December 2007</option>
484 <option value="http://defaria.com/blogs/Status/2007/11/">November 2007</option>
488 <option value="http://defaria.com/blogs/Status/2007/10/">October 2007</option>
492 <option value="http://defaria.com/blogs/Status/2007/09/">September 2007</option>
496 <option value="http://defaria.com/blogs/Status/2007/08/">August 2007</option>
500 <option value="http://defaria.com/blogs/Status/2007/07/">July 2007</option>
504 <option value="http://defaria.com/blogs/Status/2007/06/">June 2007</option>
508 <option value="http://defaria.com/blogs/Status/2007/05/">May 2007</option>
512 <option value="http://defaria.com/blogs/Status/2007/04/">April 2007</option>
516 <option value="http://defaria.com/blogs/Status/2007/03/">March 2007</option>
520 <option value="http://defaria.com/blogs/Status/2007/01/">January 2007</option>
524 <option value="http://defaria.com/blogs/Status/2006/12/">December 2006</option>
528 <option value="http://defaria.com/blogs/Status/2006/11/">November 2006</option>
532 <option value="http://defaria.com/blogs/Status/2006/10/">October 2006</option>
536 <option value="http://defaria.com/blogs/Status/2006/09/">September 2006</option>
540 <option value="http://defaria.com/blogs/Status/2006/07/">July 2006</option>
544 <option value="http://defaria.com/blogs/Status/2006/06/">June 2006</option>
548 <option value="http://defaria.com/blogs/Status/2006/05/">May 2006</option>
552 <option value="http://defaria.com/blogs/Status/2006/04/">April 2006</option>
556 <option value="http://defaria.com/blogs/Status/2006/03/">March 2006</option>
560 <option value="http://defaria.com/blogs/Status/2006/02/">February 2006</option>
564 <option value="http://defaria.com/blogs/Status/2006/01/">January 2006</option>
568 <option value="http://defaria.com/blogs/Status/2005/12/">December 2005</option>
572 <option value="http://defaria.com/blogs/Status/2005/11/">November 2005</option>
576 <option value="http://defaria.com/blogs/Status/2005/10/">October 2005</option>
580 <option value="http://defaria.com/blogs/Status/2005/09/">September 2005</option>
584 <option value="http://defaria.com/blogs/Status/2005/08/">August 2005</option>
588 <option value="http://defaria.com/blogs/Status/2005/07/">July 2005</option>
592 <option value="http://defaria.com/blogs/Status/2005/06/">June 2005</option>
596 <option value="http://defaria.com/blogs/Status/2005/05/">May 2005</option>
600 <option value="http://defaria.com/blogs/Status/2005/04/">April 2005</option>
604 <option value="http://defaria.com/blogs/Status/2005/03/">March 2005</option>
608 <option value="http://defaria.com/blogs/Status/2005/02/">February 2005</option>
612 <option value="http://defaria.com/blogs/Status/2005/01/">January 2005</option>
616 <option value="http://defaria.com/blogs/Status/2004/12/">December 2004</option>
620 <option value="http://defaria.com/blogs/Status/2004/09/">September 2004</option>
624 <option value="http://defaria.com/blogs/Status/2004/08/">August 2004</option>
628 <option value="http://defaria.com/blogs/Status/2004/07/">July 2004</option>
632 <option value="http://defaria.com/blogs/Status/2004/06/">June 2004</option>
636 <option value="http://defaria.com/blogs/Status/2004/05/">May 2004</option>
640 <option value="http://defaria.com/blogs/Status/2004/04/">April 2004</option>
644 <option value="http://defaria.com/blogs/Status/2004/03/">March 2004</option>
648 <option value="http://defaria.com/blogs/Status/2004/02/">February 2004</option>
652 <option value="http://defaria.com/blogs/Status/2004/01/">January 2004</option>
656 <option value="http://defaria.com/blogs/Status/2003/12/">December 2003</option>
660 <option value="http://defaria.com/blogs/Status/2003/11/">November 2003</option>
668 <div class="widget-syndication widget section">
669 <div class="widget-content">
670 <p><img src="http://defaria.com/mt/mt-static/images/status_icons/feed.gif" alt="Subscribe to feed" width="9" height="9" /> <a href="http://defaria.com/blogs/Status/atom.xml">Subscribe to this blog's feed</a></p>
678 <footer id="footer" role="contentinfo">
679 <div id="footer-inner">
680 <div id="footer-content">
681 <nav role="navigation">
683 <li><a href="http://defaria.com/blogs/Status/">Home</a></li>
689 <p class="license">© Copyright 2016.</p>
690 <p class="poweredby">Powered by <a href="http://www.movabletype.org/">Movable Type</a></p>
696 <script src="http://defaria.com/mt/mt-static/jquery/jquery.min.js"></script>
697 <script src="http://defaria.com/blogs/Status/mt-theme-scale2.js"></script>