Michael Doran Home Page
Contact | Site Map | Search  
This page is deprecated: please read archives disclaimer.

Implementing a
Stand-Alone Continuous OPAC

Introduction | Overview | Tasks

Acronyms
The following acronyms will be used in order to avoid repeating these two mouthfuls:
    VDBS - Voyager Database Server
    SCOPAC - Stand-alone Continuous OPAC Server

General Information
This tutorial was developed for Solaris which is the predominant Voyager server operating system. Commands and command parameters as well as file locations and syntax may vary for AIX. This tutorial is not meant for Windows sites. Most of the tasks will require superuser permissions (i.e. you must be logged in as the "root" user).

Creating Users and Groups
If you decide to use a Voyager application server as your SCOPAC, you likely already have the correct users and groups, and you just need to verify that. Otherwise you will need to add them.

Voyager
User Groups
Name UID shell Primary GID Secondary GID
oracle 100 ksh endeavor 102 dba 101
voyager 102 ksh endeavor 102 dba 101
library 102 rksh endeavor 102    
Note: These are our UIDs/GIDs - yours may be different.


First make sure the UIDs and GIDs are not already in use on the SCOPAC, or if they are, that they are associated with the above users and groups:
    grep ":10[02]:"  /etc/passwd
    grep ":10[12]:"  /etc/group
If needed, create the groups and users:
 groupadd -g 102 endeavor
 groupadd -g 101 dba 
 useradd  -u 102 -g 102 -G 101 -m -d /export/home/voyager -s /bin/ksh  voyager
 useradd  -u 100 -g 102 -G 101 -m -d /export/home/oracle  -s /bin/ksh  oracle
 useradd  -u 102 -g 102 -o     -m -d /export/home/library -s /bin/rksh library
If you will not be opening up the ASCII OPAC during your upgrade, you can omit the library user. Note that logins created with useradd remain locked until the passwd command is executed. Note: Admintool is also an option if you are more comfortable using a GUI utility.

Ideally, they should have the same user ID and group ID on the SCOPAC as they have on the VDBS. In answer to a question regarding this issue, Endeavor's Mark Wilson told us, "The Oracle instance does have some dependencies on the GID. I would recommend changing the destination system's UID and GID to match the production server."

If the Voyager UIDs and GIDs are already in use, you can probably use others but you will have to make some ownership adjustments either during or after the restore of Voyager files from tape. If your Voyager files are copied and/or restored with the original UIDs and GIDs and they do not correspond with the appropriate Voyager user(s) and group(s) on your SCOPAC, there are various strategies for doing a recursive change of ownership; utilising the find command is probably as good as any:
   find /m1 -user  100 -exec chown oracle   {} \;
   find /m1 -user  102 -exec chown voyager  {} \;
   find /m1 -group 101 -exec chgrp dba      {} \;
   find /m1 -group 102 -exec chgrp endeavor {} \;
Also create the file /export/home/work.log and give it chmod 666 permissions.

Preparing a disk
The Voyager database files will take up a fairly good chunk of disk space. The ideal solution is if your SCOPAC server has an extra hard disk that can be used for SCOPAC duties. The tutorial will assume a separate disk.

The disk should be formatted so that it has a single slice (partition) after which you should create a filesystem with newfs and also run fsck.

Restoring from backup
Using Legato Networker (also known as Solstice Backup):
  • start nwrecover on the SCOPAC
  • change client to VDBS
    (restoring from a different client will probably require some permissions configuration via the nwadmin application)
  • select filesystems to restore (see below)
  • restore (ours takes about 30 minutes for ~20GB)
Suggested resources if using ufsrestore: Required Voyager database files
You can be selective about this -- over the months and years a lot of stuff accumulates on the /m1 filesystem, much of it not needed for Continuous OPAC. You can minimize the disk space needed on SCOPAC, by only taking the files that are required to operate the database. All of the required files should be in the following directories:
        /m1/oracle
                  /app/*
                  /data/*
                  /oradata/*
                  /tmp/*
        /m1/voyager
                   /bin/*
                   /imagedb/*
                   /lib/*
                   /xxxdb/*
                   /utility/*
                   /tmp/*
Voyager /etc/inet/inetd.conf file entries
#
#               Voyager Entries -- PRODUCTION DATABASE
#
Popacsvr        stream  tcp     nowait  voyager /m1/voyager/xxxdb/sbin/Popacsvr      Popacsvr
Pcatsvr         stream  tcp     nowait  voyager /m1/voyager/xxxdb/sbin/Pcatsvr       Pcatsvr
Pacqsvr         stream  tcp     nowait  voyager /m1/voyager/xxxdb/sbin/Pacqsvr       Pacqsvr
Pcircsvr        stream  tcp     nowait  voyager /m1/voyager/xxxdb/sbin/Pcircsvr      Pcircsvr
Prptsvr         stream  tcp     nowait  voyager /m1/voyager/xxxdb/sbin/Prptsvr       Prptsvr
Pmediab         stream  tcp     nowait  voyager /m1/voyager/xxxdb/sbin/Pmediab       Pmediab
Pfilesvr        stream  tcp     nowait  voyager /m1/voyager/xxxdb/sbin/Pfilesvr      Pfilesvr
Pkeysvr         stream  tcp     nowait  voyager /m1/voyager/xxxdb/sbin/Pkeysvr       Pkeysvr
Psysadminsvr    stream  tcp     nowait  voyager /m1/voyager/xxxdb/sbin/Psysadminsvr  Psysadminsvr
Pcallslipsvr    stream  tcp     nowait  voyager /m1/voyager/xxxdb/sbin/Pcallslipsvr  Pcallslipsvr
Pscansvr        stream  tcp     nowait  voyager /m1/voyager/imagedb/sbin/Pscansvr    Pscansvr
Pzrouter        stream  tcp     nowait  voyager /m1/voyager/xxxdb/sbin/Pzrouter      Pzrouter
Don't forget to send the inetd daemon a hangup signal so that it will reread the edited config file:
# ps -ef | grep inetd
    root   162     1  0   Feb 13 ?        0:03 /usr/sbin/inetd -s -t
# kill -HUP <pid>
Voyager /etc/services file entries
Popacsvr        7000/tcp                # OPAC Server
Pcatsvr         7010/tcp                # Cataloging Server
Pacqsvr         7020/tcp                # Acquisitions Server
Pcircsvr        7030/tcp                # Circulation Server
Prptsvr         7040/tcp                # Reporting Server
Psysadminsvr    7050/tcp                # System Administration Server
Pkeysvr         7060/tcp                # Keyword Server
Pfilesvr        7070/tcp                # File/Abstracts Server
Pcallslipsvr    7080/tcp                # Request server
Pscansvr        7081/tcp                # Scandoc server
Pmediab         7085/tcp                # Media Scheduling server
Pz3950svr       7090/tcp                # Z39.50 Server
Pzrouter        7091/tcp                # Z39.50 Client Router
Piasock         7500/tcp                #Image Server Image File Manager
Oracle network configuration files
cd /m1/oracle/app/oracle/product/8.0.5/network/admin/
cd /m1/oracle/app/oracle/product/8.1.7/network/admin/

# diff listener.ora.scopac listener.ora.vdbs
10c10
<         (ADDRESS= (PROTOCOL= TCP)(Host= scopachost)(Port= 1521))
---
>         (ADDRESS= (PROTOCOL= TCP)(Host= vdbshost)(Port= 1521))

# diff tnsnames.ora.scopac tnsnames.ora.vdbs
14c14
<     (ADDRESS = (PROTOCOL= TCP)(Host= scopachost)(Port= 1521))
---
>     (ADDRESS = (PROTOCOL= TCP)(Host= vdbshost)(Port= 1521))
Oracle oratab file
# mkdir -p /var/opt/oracle
# chown oracle:dba /var/opt/oracle
Copy the oratab file from the VDBS /var/opt/oracle directory to the SCOPAC, retaining the ownerships and permissions.

Oracle parameter file
A few of the Oracle 8.0.5 parameters that Endeavor utilizes for performance tuning are keyed to the number of processors the server has. If your SCOPAC and VDBS servers have the same number of processors, you shouldn't have to edit this file. In our case, our VDBS has six CPUs, and our SCOPAC candidates have either one or two CPUs. The parameter file, initLIBR.ora should be in the /m1/oracle/app/oracle/admin/LIBR/pfile directory. File comments should indicate which parameters need to be changed and what the values should be.
# diff initLIBR.ora.scopac initLIBR.ora.vdbs
89c89
< spin_count = 2000             # = 2000 + ((#CPUS -1) *1780) or 2000 if only one CPU
---
> spin_count = 10900            # = 2000 + ((#CPUS -1) *1780) or 2000 if only one CPU
91,92c91,92
< log_simultaneous_copies = 2   # 2 * # CPUS
< db_block_lru_latches = 2      # 2 * # CPUS
---
> log_simultaneous_copies = 12  # 2 * # CPUS
> db_block_lru_latches = 12     # 2 * # CPUS
Note that these CPU-dependent parameters are obsoleted in Oracle9i.

Oracle memory settings
Important: The /etc/system file is essential for booting the server. Before editing this file, 1) always make a backup copy, and 2) familiarize yourself with how to specify the backup system file when booting from a firmware prompt. Note that unlike most other configuration files, comments are preceded by an asterisk ("*"). See "man -s 4 system" for more info.
* Memory settings for Oracle for Voyager Continuous OPAC
set semsys:seminfo_semmap=10
set semsys:seminfo_semmni=400
set semsys:seminfo_semmns=4000
set semsys:seminfo_semmnu=400
set semsys:seminfo_semmsl=400
set shmsys:shminfo_shmmax=2047000000
set shmsys:shminfo_shmmin=1
set shmsys:shminfo_shmmni=400
set semsys:seminfo_semume=10
* set semsys:seminfo_semopm=10
* set semsys:seminfo_semusz=96
* set semsys:seminfo_semvmx=32767
* set semsys:seminfo_semaem=16384
* set shmsys:shminfo_shmseg=10

forceload:      sys/semsys
forceload:      sys/shmsys

set slowscan=600
* End of memory settings for Oracle for Voyager Continuous OPAC
Note that the /etc/system file is only read during boot time, therefore a reboot is required before these memory setting become effective.

Voyager config files
/m1/voyager/xxxdb/etc/ascopac/opac.ini

# diff opac.ini.scopac opac.ini.vdbs
2c2
< Server=scopachost
---
> Server=vdbshost
5c5
< FileServer=scopachost
---
> FileServer=vdbshost

/m1/voyager/xxxdb/etc/webvoyage/voyager.ini

# diff voyager.ini.scopac voyager.ini.vdbs
7c7
< Server=scopachost.yourdomain.edu
---
> Server=vdbshost.yourdomain.edu
10c10
< FileServer=scopachost.yourdomain.edu
---
> FileServer=vdbshost.yourdomain.edu
WebVoyage configuration files
You will want to transfer assorted files from your WebVoyage server (if it is a separate server from you VDBS) to the SCOPAC server. The customized files will generally be in these directories:
	/m1/voyager/xxxdb
			 /etc/webvoyage/*
			 /etc/webvoyage/local/*
			 /ini/*
			 /webvoyage/html/*
Note: don't overwrite the voyager.ini file edited in a previous step.

Setting read-only access
Method 1   Turn off any WebVoyage buttons that patrons would use to access their information by commenting out the appropriate lines in the opac.in file. If you have implemented MyOPAC, this method may be more complicated and may involve additional configuration files.
/m1/voyager/xxxdb/etc/webvoyage/local/opac.ini  [Toolbar_Top]  [Toolbar_Bottom]

# diff opac.ini.scopac opac.ini.vdbs
229,234c229,234
< #Btn04Text=Patron
< #Btn04GraphicUp=UpPatron.gif
< #Btn04GraphicDown=DownPatron.gif
< #Btn04GraphicDisabled=DisabledPatron.gif
< #Btn04Function=PATRON
< #Btn04Link=
---
> Btn04Text=Patron
> Btn04GraphicUp=UpPatron.gif
> Btn04GraphicDown=DownPatron.gif
> Btn04GraphicDisabled=DisabledPatron.gif
> Btn04Function=PATRON
> Btn04Link=
319,324c319,324
< #Btn04Text=Patron
< #+Btn04GraphicUp=UpPatron.gif
< #+Btn04GraphicDown=DownPatron.gif
< #+Btn04GraphicDisabled=DisabledPatron.gif
< #Btn04Function=PATRON
< #Btn04Link=
---
> Btn04Text=Patron
> +Btn04GraphicUp=UpPatron.gif
> +Btn04GraphicDown=DownPatron.gif
> +Btn04GraphicDisabled=DisabledPatron.gif
> Btn04Function=PATRON
> Btn04Link=
Method 2   Set the Oracle xxxdb tablespace to read-only within the Oracle Server Manager utility. This is offered for information purposes only since we use Method 1. This is what Endeavor recommends so contact support for more information.
SVRMGR> alter tablespace xxxdb read only
Method 3 Mount the /m1 filesystem disk read-only. This method is only mentioned so that it can be ruled out as a possibility. It should not be used, since it may cause Oracle to abort on start up.

About Aliases
A server on a network typically has an IP address and a hostname. In TCP/IP networking, a name service such as DNS resolves the hostname to the server's IP address. An alias is an additional name that also resolves to that IP address.

Why use an alias if the server already has a perfectly good hostname? By associating a particular alias with a service, that service (and all client requests for that service) can then be tranferred from one physical server to another simply by changing two DNS entries. (And assuming that the service runs on both servers, naturally!)

An example of this would be Endeavor's FTP service:
	# nslookup ftp.endinfosys.com
	...
	Name:    hurler.endinfosys.com
	Address:  207.56.64.46
	Aliases:  ftp.endinfosys.com
If your WebVoyage server has an alias, and you use the alias for all URL links and in configuration files such as voyager.ini, then switching end-users over to a Continuous OPAC is trivial. It requires no editing or rerouting of URL links in web pages or editing or replacement of config files.

Before (and after) the upgrade

DNS setup before and after upgrade diagram

During the upgrade

DNS setup during upgrade diagram