Cannot open Pervasive.SQL DB on OES Linux server

  • 3930238
  • 16-Oct-2006
  • 27-Apr-2012

Environment

Novell Open Enterprise Server (Linux based)
Windows XP SP2
Novell Client 4.91 SP2
Pervasive.SQL 2000i Service Pack 4

Situation

Can not open Pervasive.SQL database on OES Linux Server
Error message:"File open error 11"
Btrieve errors seen:
Btrieve status 11: "The specified filename is invalid"
Btrieve status 12: "The MicroKernel cannot find the specified file"

Resolution

This error can be resolved by using the correct configuration of Pervasive products.

1. Use the Pervasive Workgroup product (currently Pervasive PSQL v9.5 Workgroup for Windows) on the Windows machine. In this configuration you can place the database files on any share, including an OES Linux or NetWare server. Older versions are known to return Btrieve errors.

2. Use the Pervasive Engine (currently Pervasive PSQL v9.5 Server for Linux) on the server. In this case you will be running in Client/Server mode. When the Btrieve errors are returned with this configuration, the problem is that the Pervasive software cannot access the database files. The resolution to this problem requires configuration changes that allow the files to be accessed. From a high level, this requires that you

1) Grant rights for the psql user to access the NSS volume and,
2) Create a share pointing to the NSS volume.

Grant Rights:

The Pervasive database engine does not have sufficient rights (by default) to the NSS volume to access files. Following are the details on how to resolve the issue:

First of all, one must understand that the Pervasive database engine authenticates as the "psql" account which is a member of the"pvsw" group. This is a "local account" that doesn't have rights to the NSS volume so we need to grant rights for the psql to the NSS volume. OES Linux is installed with "Linux User Management" or LUM (which stores user accounts in eDirectory [Novell's LDAP repository]). Essentially, we need to create the equivalent pvsw group and psql accounts in eDirectory then we can use the"/sbin/rights" utility to grant rights for psql to the NSS Volume. Perform the following steps:

1. On the OES Linux machine open a terminal window (as root) and su psql. Type the "id" command and make note of the UID of psql and GID of pvsw. You will need these in the following steps.

2. On the OES Linux machine bring up iManager. Authenticate as"admin" then create a group named "pvsw". On the "Linux Profile" page for the group set the "Group ID" to the GID you recorded in step one. (If the option to set the GID is not available, upgrade to iManager v2.7.x or later.)

3. In iManager, create a user object named "psql". Under the"Linux Profile" page set the "User ID" to the UID you recorded from step one.

4. On the OES Linux machine open a terminal window (as admin, NOT root). Assign rights for the psql object to the NSS volume. Suppose the NSS volume is located at "/media/nss/DATAVOL" and the full distinguished name of the psql object in eDirecory is: psql.novell.treename. You would assign rights to psql as follows:

/sbin/rights - f /media/nss/DATAVOL - r rwfc trustee psql.novell.treename

This will assign rights to the psql object to the NSS volume.

Create a Share Pointing to the NSS Volume:

Next, the smb.conf file needs to be edit to add a section which will create a share pointing to the NSS volume. You should have a section such as:

[novell]
comment = novell share
path = /usr/novell/sys/novell
read only = No
guest ok = yes
writeable = yes
security = share

Leaving this section intact, add another section, such as:

[DATAVOL]
path = /media/nss/DATAVOL

Note that this change can be made to "the" smb.conf file (usually in /etc/samba/smb.conf), or it can be made to any smb.conf file. If made to another smb.conf, the Pervasive engine would need to be configured to use this alternate smb.conf file.

You must restart Pervasive for this change to take effect, since the smb.conf is read only once, when Pervasive is started. Note that to restart Pervsasive, you need to look in /etc/rc.d/init.d instead of /etc/init.d. Alternatively, you can simply restart the OES server.

Change Log

ewells, 01Feb2009, added iManager version information in step 2 of the "Grant Rights" section, per customer feedback.