I'm trying to configure the Oracle extproc to access the geodatabase with SQL, using the documentation here.

This is a Windows 2008 R2 server with 64 bit, and the Oracle server is also 64 bit.

I'm still getting the dreaded ORA-28595: Extproc agent : Invalid DLL Path when I run a spatial SQL query.

I tried to debug the issue by loading the dll using dependency walker, and saw that it was trying to load 64 bit dlls.

I know that SDE is still 32 bit, so I'm assuming that 32 bit-64 bit conflict is the cause of the problem.

I have configured this with a 32 bit Oracle RDBMS in the past.

Has anyone configured Oracle extproc to access the geodatabase with SQL with Oracle 64 bit?

  • ArcSDE hasn't permitted 32-bit since 10.1 was released. What version of Oracle are you using?
    – Vince
    Nov 7 '14 at 11:51
  • I've never had hs/admin configuration not work. What does SELECT * FROM user_libraries as SDE return?
    – Vince
    Nov 7 '14 at 13:12
  • @Vince: You are right; the ArcSDE Binary is 64 bit. I'll do the query from your comment and get back. Nov 7 '14 at 14:29

ArcGIS has supported 64-bit Oracle 11g since 9.3.1. In fact, ArcGIS Server has been exclusively 64-bit since 10.1 was released (Desktop continues to be 32-bit, so that might be the cause of this confusion).

Configuring the SDE.ST_GEOMETRY custom datatype for use with Oracle 11g clients other than ArcGIS requires up to four steps:

  1. Installing the datatype (usually in conjunction with the geodatabase install)
  2. Copying the appropriate DLL from the Desktop 10.n\DatabaseSupport folder to the database server (if not local)
  3. Configuring the Oracle installation to honor the ST_GEOMETRY DLL (which is described in the link you provided)
  4. Adjusting the user library path to point to the actual DLL install location (if non-local, or the location configured above is different than the value populated at installation)

This last step is described in Knowledge Base article 35473, and can be summarized:

sqlplus sde/password

SQL> SELECT library_name, file_spec FROM user_libraries;

  2  AS 'C:\actual\DLL\location\st_shapelib.dll';
  3  /

SQL> SELECT object_name FROM user_objects WHERE status = 'INVALID';

If that last query comes back with errors, then you'll need to recompile the SDE packages (easiest as SYS with EXECUTE sys.utl_recomp.recomp_serial('SDE'); ). If there are no invalid objects, you should be able to validate ST_GEOMETRY access with:

SQL> SELECT sde.ST_AsText(SDE.ST_Geometry('POINT (10 10)', 0)) FROM dual;
  • Your answer has been very helpful. It solved my issue. The only way I diverted from this answer is that the reconciliation has to be done by the sys user. Nov 8 '14 at 13:36
  • I did write that recompilation must be done as SYS.
    – Vince
    Nov 8 '14 at 14:26

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.