Installing Informix IDS 11.x on Mac OS X

Problem

Installing IDS 11 on Mac OS X

Solution

After installing the server, update the sqlhosts file and replace the default host name by * so that the server listens on all IPs. The sqlhosts file may be names sqlhosts.ol_server_name, and its contents would look like:

ol_server_name onsoctcp * ol_server_name
dr_server_name drsoctcp * dr_server_name

References

When IDS 11 is officially released, more information will be published here. For now, the following links have pointers:


Migrating Data to DB2 9.7 LUW

Problem

You reached the limit or your unhappy with the performance or features of your database server, and you want to move to DB2. The transition can be simple with respect to your code, as it may be just a matter of changing a few lines of code for the connection string, and setting the correct compatibility mode in DB2. But how do you move your data?

Solution

IBM has published a data migration toolkit, that has been updated to work best with DB2 9.7. Make sure you have service pack 2 installed, which is the latest service pack available as of this writing.

If you are migrating from MySQL or PostgreSQL, enable the ability to do limits and offsets in the where clause with:
db2stop force
echo Set compatibility to 01 or 0F
db2set DB2_COMPATIBILITY_VECTOR=01
db2start

References


Trouble shooting sendmail base configuration

There is a simple command that can be used to make sure that the basic configuration of sendmail is correct:
echo \$Z | sendmail -d0.1
The output of that command should look like:

Version 8.13.1
Compiled with: DNSMAP HESIOD HES_GETMAILHOST LDAPMAP LOG MAP_REGEX
MATCHGECOS MILTER MIME7TO8 MIME8TO7 NAMED_BIND NETINET NETINET6
NETUNIX NEWDB NIS PIPELINING SASLv2 SCANF SOCKETMAP STARTTLS
TCPWRAPPERS USERDB USE_LDAP_INIT

============ SYSTEM IDENTITY (after readcf) ============
(short domain name) $w = host-name
(canonical domain name) $j = host-name.domain.com
(subdomain name) $m = domain.com
(node name) $k = host-name
========================================================


Get grep right

Problem

When you look for a process in the ps output, the command line of grep often shows up:
ps auwwx | grep sshd
root 648 0.0 0.0 3732 1012 ? S Apr06 0:00 /usr/sbin/sshd
user 20807 0.0 0.0 4836 680 pts/0 S 04:31 0:00 grep /sshd
$

This can make writing scripts for automating sys admin tasks difficult.

Solution

There are many ways to get around this problem. Grep has for example exclusion pattern option. However, there is a simple way when you use a shell that allows character regular expressions: using a simple expression that will not alter what you are searching for, yet prevent the command line itself from being matched. For example:
$ ps auwwx | grep /ssh[d]
root 648 0.0 0.0 3732 1012 ? S Apr06 0:00 /usr/sbin/sshd

Notice the grep command line doesn’t appear any more in the results.

References


Create Explain Tables in DB2 9.7

Problem

The explain tables allow to create access plans and visualize them. Before the explain feature of DB2 can be used, the EXPLAIN tables need to be generated.

Solution

To create the EXPLAIN tables, the following command needs to be issued while connected to the database that the access plain needs to be generated in:
CALL SYSPROC.SYSINSTALLOBJECTS('EXPLAIN','C',NULL,'EXPLAIN_SCHEMA')


Netapp Automation for DB2 9.7 (or Oracle)

Problem

You have one or more NetApp storage systems (F960 or later series), running Data ONTAP® 7G (or later). You would like to take advantage of the snapshot capabilities, to facilitate the database backup process. However, you don’t want to use the default root login for the automated logins, nor do you want to use the unsecure rsh, as these options would violate corporate security policies (especially if you have a compliance commitment to ISO 27002, PCI or HIPAA).

Solution

Create a restricted users that has only login access and the ability to manage snapshots:

  • Setup ssh on the filer:secureadmin setup ssh (it is recommended that you select long keys when you are asked 1024 and 768 for ssh v1 – ssh1 shouldn’t be enabled anyway – 2048 for ssh2).
  • Start ssh on the filer: secureadmin enable ssh2 (at this point you should be able to log in to the filer with ssh as root with your admin password)
  • Create group / role / user:
    useradmin user add snapuser -g Users
    useradmin role add snaps -c "Snapshot Manager" -a cli-snap*,login-ssh,login-telnet
    useradmin group add cli-snapshot-group -r snaps
    useradmin user modify snapuser -f -g cli-snapshot-group
    useradmin user list snapuser

    The last command allows you to check your work, and the output should like:
    Name: snapuser
    Info:
    Rid: 131075
    Groups: cli-snapshot-group
    Full Name:
    Allowed Capabilities: cli-snap*,login-ssh,login-telnet
    Password min/max age in days: 0/4294967295
    Status: enabled
  • Put your public keys in the authorized keys file on the filer:/etc/sshd/snapuser/.ssh/authorized_keys (typically you do that by mounting the filer root volume on one of your AIX boxes – any OS that can mount the root volume should work).
  • At this point you are ready to test by logging in via ssh to the snapuser account. Keep in mind that before you can successfully log in, you have to log out from the NetApp.

References


Migrating a directory to a separate filesystem on AIX

Problem

You have a directory that deserves it’s own file system for some reason. This could be because you need to increase throughput, manage backups separately, manage quotas separately or just to have a cleaner data architecture.

Solution

  • Create a new filesystem using mkfs
  • Mount the new filesystem temporarily to /mnt
  • Stop all processes that access the directory to move
  • Move all contents to the new filesystem using mv
  • umount /mnt
  • mount /new/filesystem /path/to/directory

This principle is pretty much the same of any Unix operating system.


NetApp bonded VLAN configuration

Problem

To maximize the benefit from the multi-port adapters on a NetApp, it is best to bond the ports together (some vendors refer to this as “trunk groups”). Then over the new bonded trunk, the various networks can be assigned as VLANs, maximizing the network throughput for each LAN the NetApp needs to communicate with.

Solution

In this example, I will show how to bond two interfaces together, and create three VLANs:

vif create multi vif0 e9a e9b
vlan create -g vif0 200
vlan add vif0 201 202
ifconfig vif0-200 10.10.0.25 netmask 255.255.0.0
ifconfig vif0-201 10.20.0.25 netmask 255.255.0.0
ifconfig vif0-202 10.30.0.25 netmask 255.255.0.0
savecore

References


Setting up shared VMWare Fusion host folders on CentOS and RHEL guest

Problem

How to view folders from the Mac that hosts the VMWare Fusion guest operating system CentOS or Red Hat Linux?

Solution

  • First, make sure that the VMWare Tools are installed. That always helps.
  • Next, in the WMWare configuration menu of the guest, set up the desired shared folders. There might be already a default shared folder pointing to the user’s home directory.
  • Next, in the guest OS, ls -ld /mnt/hgfs will display the available shared folders.

References

[CentOS-virt] CentOS 5.1 guide for VMware Fusion


OpenVPN write UDPv4: Can't assign requested address (code=49)

Problem

On Max OS X, when trying to connect to an OpenVPN gateway, you may encounter the following error:
2010-01-21 05:14:59 write UDPv4: Can't assign requested address (code=49)
2010-01-21 05:15:01 write UDPv4: Can't assign requested address (code=49)
...

The error would repeat itself indefinitely.

Root Cause

The TCP stack of the Mac has a bug that can cause the routing table to get corrupted.

Solution

The routing table needs to be flushed on the interface used to connect to the Internet. Typically,

  • en0: ethernet (wired) interface
  • en1: wlan (wireless) interface

The easiest way is to flush the routes is to reboot. The elegant way however is to shut down the interface connecting the Mac to the Internet, flush the routing table, and bring the interface back up. For example, assuming a wired connection, open a terminal or an X11 xterm window and issue the following commands:
sudo ifconfig en0 down
sudo route flush
sudo ifconfig en0 up

In case the command line hangs after the flush command, just open a new terminal and run the last command from there. When you are done, you can close all terminals. If you are connecting with wireless, replace en0 with en1.

References

OpenVPN error: write UDPv4: Can’t assign requested address (code=49)