Acu4GL® for Oracle FAQ



October 31, 2002
  1. I'm using a UNIX or Linux computer. How can I relink the runtime if the Makefile is not generated correctly?
  2. Can I create an Oracle table with "OPEN OUTPUT"? Should I do this?
  3. What do I need to know about Oracle and Transaction Management?
  4. Why would the same program successfully access the same table for one user but not for another?
  5. What do I need to know about Oracle cursors?
  6. What if I upgrade to a new release of Oracle?


  1. I'm using a UNIX or Linux computer. How can I relink the runtime if the generated Makefile is not working?
    In the Makefile, the Oracle libraries must be specified by their correct names in the correct order for a successful relink. Try the following in the FSI_LIBS line to see if it resolves relinking problems:

       FSI_LIBS = -L$ORACLE_HOME/lib -lclntsh `cat $ORACLE_HOME/lib/sysliblist`

    In the above, $ORACLE_HOME should be replaced with the full path that it is set to in the OS environment. For example, if

       ORACLE_HOME=/opt/oracle

    Then the FSI_LIBS line should be:

       -L/opt/oracle/lib -lclntsh `cat /opt/oracle/lib/sysliblist`

    You should check to make sure that the "libclntsh" library exists (it can have several possible suffixes ".o", ".a", .so", ".sl", etc.) before making these changes.

    Back to top


  2. Can I create an Oracle table with "OPEN OUTPUT"? Should I do this?
    You can create an Oracle Table with OPEN OUTPUT; however you must create the Oracle database first - just as you must create a directory before you may place a file in it.

    That said, Acucorp suggests that you create Oracle tables with OPEN OUTPUT only if they are temporary in nature, because such tables automatically include possibly undesirable settings, such as the "GRANT PRIVILEGES TO PUBLIC" setting. A Database Administrator should create all regular permanent tables with attention to optimization, permissions, and constraints.

    Back to top


  3. What do I need to know about Oracle and Transaction Management?
    Since all Oracle activity occurs within transactions, as determined by Oracle's design, understanding of Transaction Management concepts is strongly advised.

    If your COBOL application already uses transaction management verbs:

    • START TRANSACTION
    • COMMIT TRANSACTION
    • ROLLBACK TRANSACTION

    you will be in the best position, because these verbs force similar commands to be sent to Oracle. In this case, the concepts of Transaction Management should already be familiar to you.

    If you do not currently use transaction management verbs in your application, you should read the Acu4GL User's Guide, specifically sections:

    • C.1 on Oracle Transaction Management concepts, and
    • C.4 on configuration variables for information on the COMMIT_COUNT environment variable, which will give you a level of control over Oracle's transaction management behavior.

    Back to top


  4. Why would the same program successfully access the same table for one user but not for another?
    Perhaps the successful user is the table's "owner", as defined within the Oracle database. Table names in Oracle have the form owner.table_name. If you are not the owner, you must refer to the table with the owner as a prefix; this is not required of the owner. See section C.4 of the Acu4GL User's Guide for information on the USER_PATH configuration variable, where you set up a search order by the various table owner names. (When you use this variable, be sure to specify a "." in the path to find tables owned by the current user.)

    Back to top


  5. What do I need to know about Oracle cursors?
    A "cursor" is a temporary holder for results from a database query. It's like a virtual table, with the rows and columns specified by the query. Acu4GL for Oracle uses cursor caching for efficiency. Just how many cursors are cached is up to settings you can choose in Acu4GL and in Oracle:

    • The Acu4GL for Oracle configuration variable MAX_CURSORS determines how many cursors will be available to your application.
    • The Oracle initialization variable open_cursors specifies how many cursors will be available to any application using Oracle.

    Read section C.2.4 of the Acu4GL User's Guide for further information and some excellent examples on the settings for these two variables.

    Back to top


  6. What if I upgrade to a new release of Oracle?
    As long as Acu4GL supports the new release of Oracle, you can simply uninstall and reinstall Acu4GL for Oracle, specifying the new release when asked during installation.

    Back to top

Your Session will expire in 90 minutes
Notification will be shown in:
600 seconds