Further hints to the use of Ingres.
If you want Ingres to start automatically
whenever Linux boots and stop when you shutdown or reboot the system, do
the following:
Log in as root.
Check if your Linux variant has System V or BSD style
init (init's man
page will tell that).
If your system conforms to System V, the
/etc/rc.d/init.d directory must exist.
Create a file there (call it ingres or any other name you
wish).
The file should contain at least the following:
#!/bin/sh
case $1 in
start)
echo "Starting Ingres"
su - ingres -c "ingstart"
;;
stop)
echo "Stopping Ingres"
su - ingres -c "ingstop"
;;
*)
echo "Usage: ingres {start|stop}"
exit 1
;;
esac
exit 0
|
Link the file as K01ingres to the directories
that correspond to the run levels in which Ingres
should stop:
# ln -s /etc/rc.d/init.d/ingres /etc/rc.d/rc0.d/K01ingres
# ln -s /etc/rc.d/init.d/ingres /etc/rc.d/rc1.d/K01ingres
# ln -s /etc/rc.d/init.d/ingres /etc/rc.d/rc6.d/K01ingres
|
Also link it as S99ingres to the directories
that correspond to the run levels in which Ingres
should start:
# ln -s /etc/rc.d/init.d/ingres /etc/rc.d/rc2.d/S99ingres
# ln -s /etc/rc.d/init.d/ingres /etc/rc.d/rc3.d/S99ingres
# ln -s /etc/rc.d/init.d/ingres /etc/rc.d/rc4.d/S99ingres
# ln -s /etc/rc.d/init.d/ingres /etc/rc.d/rc5.d/S99ingres
|
It is not important to call the links K01ingres
and S99ingres, the point is that the name starting with
K should contain a small number (so that
Ingres stops early when changing to a lower
runlevel) and the name starting with S should contain
a large number (so that Ingres starts after
everything else has started).
Naturally, the file names must not clash with names of existing files.
If you have a BSD style init,
put the following lines into /etc/rc.d/rc.local:
echo "Starting Ingres"
su - ingres -c "ingstart"
|
This will start Ingres.
(As a matter of fact, you can use /etc/rc.d/rc.local
even if you have a System V style init.)
To stop Ingres automatically, create a file in
/etc/shutdown.d
(call it, say, ingres) that contains the commands:
echo "Stopping Ingres"
su - ingres -c "ingstop"
|
No matter which type your system is, the files you create must be
executable files, owned by root.
Naturally, if your system provides a utility for configuring programs
to start and stop automatically (such as chkconfig in
RedHat), use that if you wish.
The easiest way to access an Ingres database
(at least, for beginners) is via the ingmenu program.
From ingmenu, you can reach
Ingres' forms-based utilities, by which you can
create, update and query tables, create, edit and run reports and
ABF or Vision applications.
Its usage is:
Test is the name of the database.
Without Ingres/Net, in theory it is not possible for
Ingres applications to access databases on
different machines.
However, there exists a method, not supported by CA, by which
sometimes you can come around this problem.
Let us suppose your application runs on host ingdev and the database
(called test) you would like to update or query resides
on host ingserv.
Your first task is to find out the port number of the appropriate
DBMS server running on ingserv.
You can use ipm for this purpose: as ingres, start
ipm on ingserv and choose option
.
In the list of servers select one that is of type INGRES
and handles the test database (you have to see either
test or ALL in column
Connecting to Databases).
You find the port number of the DBMS server in the
first column.
Let us suppose it is 1259.
On machine ingdev, set the shell variable II_DBMS_SERVER
in the following way:
$ export II_DBMS_SERVER='ingserv::1259'
|
Now run the command:
If it works, you have access to the test database
on host ingserv.
This solution is applicable only if both machines are of the same
architecture, the same operating system is running on both of them, the
character set is the same in both Ingres
installations, and so on: I do not know the full list of necessary conditions.
Therefore, I cannot guarantee that this trick will work.
On the other hand, if you restart Ingres
on host ingserv, the DBMS server process will get a
different TCP/IP port, therefore you probably have to
automate the fetching of the current port number to the application server.
You can use the show command of the
iinamu utility for this purpose.
The following command line gives the port number of the DBMS
server if there is only one server running:
$ echo show | iinamu | grep INGRES | tr -s ' ' '\t' | cut -f4
|
The Ingres installation includes a sample
application, created by ABF,
the traditional development tool of Ingres.
You can load it with the abfdemo command.
Unfortunately, the manuals of ABF
and Vision cannot be found either
on the Ingres CD or on the
CA site.
There is a problem with the SDK under glibc 2.1:
applications created by ABF or
Vision cannot be either compiled or run directly
from the database.
This problem is solved in the full Ingres version.
For the SDK, install the RedHat glibc 2.0 compatibility
packages.
If you do not have RedHat, download them from the following
URLs:
Besides the compatibility packages, you need an
Ingres patch.
It was posted on the Ingres newsgroup in September, 1999.
I have a copy of it, email me if you wish to install it.
The compatibility packages and the patch probably do not work for all
Linux distributions.
I only tested them on RedHat and Caldera Open Linux.
I leave you with a few pointers to important
Ingres sites:
Have fun!