MapServer 4.6 on Mac OS X and Oracle Spatial 10g

Marco Marsella m.marsella at ITWORKS.IT
Sat Jun 18 07:54:47 EDT 2005


Hi all,

I am trying to get MapServer use an OracleSpatial 10g DB running on a  
SUN box. I have installed Oracle Instant Client on the Mac and I can  
use sqlplus to connect and query the DB.

Then I have built MS using the Oracle SDK and tried to connect.  
However, MS reports a problem with the creation of the OCI handlers:

[Tue Jun 14 15:38:30 2005] [error] PHP Warning:  [MapServer Error]:  
msDrawMap(): Failed to draw layer named 'Oracle'.\n in /Users/ 
marsella/Sites/mserve/htdocs/common/wrapper/drawmap.php on line 533
[Tue Jun 14 15:38:30 2005] [error] PHP Warning:  [MapServer Error]:  
msOracleSpatialLayerOpen(): Cannot create OCI Handlers. Connection  
failure. Check the connection string. Error: .\n in /Users/marsella/ 
Sites/mserve/htdocs/common/wrapper/drawmap.php on line 533
[Tue Jun 14 15:38:30 2005] [error] PHP Notice:  Use of undefined  
constant MS_CHILDERR - assumed 'MS_CHILDERR' in /Users/marsella/Sites/ 
mserve/htdocs/common/wrapper/drawmap.php on line 668

- I have set the following shell variables:

export DYLD_LIBRARY_PATH="/usr/local/oracle/lib"
export LD_LIBRARY_PATH="/usr/local/oracle/lib"
export JAVA_HOME=/Library/Java/Home
export SQLPATH=/usr/local/oracle
export TNS_ADMIN=/Users/marsella/Sites/mserve/eclo/etc

- I have tried SQL*Plus and it works using the following command:

/usr/local/oracle/sqlplus scott/tiger at locustgis1:1521/ECLO2

Then I have set the following SetEnvIf clauses in httpd.conf:

SetEnvIf Request_URI ".*" TNS_ADMIN "/Users/marsella/Sites/mserve/ 
eclo/etc"
SetEnvIf Request_URI ".*" SQLPATH "/usr/local/oracle"
SetEnvIf Request_URI ".*" LD_LIBRARY_PATH "/usr/local/oracle/lib"
SetEnvIf Request_URI ".*" DYLD_LIBRARY_PATH "/usr/local/oracle/lib"

I have checked that the tnsnames.ora file is readable by any user.  
The tnsnames.ora file is:
ECLO2 =
   (DESCRIPTION =
     (ADDRESS = (PROTOCOL = TCP)(HOST = locustgis1)(PORT = 1521))
     (CONNECT_DATA =
       (SERVER = DEDICATED)
       (SERVICE_NAME = ECLO2)
     )
   )


The layer is as follows:

     LAYER
         NAME "Oracle"
         TYPE POINT
         STATUS OFF
         CONNECTIONTYPE oraclespatial
         CONNECTION "scott/tiger@//locustgis1:1521/ECLO2" (I also  
tried "scott/tiger at ECLO2" with the same result)
         DATA "shape FROM OPS$LOCUST.test USING SRID 8307"
         CLASS
             NAME "Hoppers"
             SYMBOL "circle"
             COLOR 0 255 0
         END
     END

and the table test is:

SQL*Plus: Release 10.1.0.3.0 - Production on Tue Jun 14 15:32:18 2005
Copyright (c) 1982, 2004, Oracle.  All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - 64bit  
Production
With the Partitioning, OLAP and Data Mining options

SQL> describe OPS$LOCUST.test;
Name               Null?   Type
------------------- -------- ----------------------------
GA                                 NUMBER(38)
SHAPE                         OPS$LOCUST.SDO_GEOMETRY

Is there anything you see wrong ?

Thank you very much.

Marco



More information about the mapserver-users mailing list