Migrating from Unix to Linux:
Migrating to Linux from Proprietary UNIX
Migrating into Linux can be very easy or very difficult, depending on your existing Oracle
configuration. It is not uncommon to see small “dialect” differences between implementations of
UNIX, especially with respect to display output and command arguments.
Those shops that find a migration difficult are those that have made extensive use of operating
system utilities for their Oracle functions:
External scheduling of Oracle tasks
– Crontab
– Windows “at” scheduling
Extensive use of OS shell scripts
– Automated e-mail alerts (new dumps, alert log messages, Linux syslog messages)
– File system alerts
– Server overload alerts
If you avoid the OS trap and use Oracle to schedule all Oracle tasks you can easily port your
database across OS platforms. This is especially true if you migrate to Oracle10g where Oracle
automatically collects OS metrics and has a built-in alert and scheduling mechanism:
Migrate to Oracle10g
Schedule all Oracle tasks with dbms_scheduler
Use the Oracle dbms_alert package to replace OS scripting
Let’s take a closer look at the syntax differences between proprietary UNIX and Linux so that
you can appreciate the challenge of migration.
Linux command syntax
Users of proprietary UNIX will immediately recognize many similarities between Sun, HP, AIX
and Linux commands. However, there are significant syntax issues, especially with regard to
command arguments and the output from Linux utilities:
Linux Command Syntax examples
Display the number of CPUs cat /proc/cpuinfo|grep processor|wc –l
Show top CPU% ps aux|sort -n +2
Display top-10 CPU consumers ps aux|sort -rn +2|head -10
RAM memory display free
Shutdown server as root /sbin/shutdown -r now
Kill all xxx processes pkill [-9] “xxx”
Show swap paging space /sbin/swapon -s
Show Linux syslog errors tail /var/log/messages
Show swap disk details swapon -s
See held memory segments ipcs -m
Show Linux system parms sysctl -a
Linux command history files history|more
Migrating from Sun to Linux can be especially problematic because of the syntax differences and
the different output from the utilities such as vmstat and netstat. This can cause considerable re-
writing of shell scripts.
vmstat Linux:
>vmstat 2 5
procs memory swap io system cpu
r b w swpd free buff cache si … bi bo in cs us sy id
1 0 0 140 90372 726988 26228 0 … 0 0 14 7 0 0 4
0 0 0 140 90372 726988 26228 0 … 0 2 103 11 0 0 100
vmstat Solaris:
>vmstat 2 5
procs memory page disk faults cpu
r b w swap free re mf pi po … s6 -- -- in sy cs us sy id
0 0 0 2949744 988800 0 4 0 0 … 0 0 0 148 200 41 0 0 99
0 0 0 2874808 938960 27 247 0 1 … 0 0 0 196 434 64 1 2 98
Display number of CPU’s:
Linux:
>cat /proc/cpuinfo|grep processor|wc -l
16
Solaris:
>psrinfo -v|grep "Status of processor"|wc -l
8
RAM Size in Linux:
>free
total used free shared buffers cached
Mem: 3728668 504688 3223980 41316 430072 29440
-/+ buffers/cache: 45176 3683492
Swap: 265032 608 264424
RAM Size in Solaris:
>prtconf|grep -i mem
Memory size: 2048 Megabytes
memory (driver not attached)
virtual-memory (driver not attached)
Netstat Differences
On any Sun and Linux server the netstat utility provides information about all network traffic
touching the server. However the output is different:
Solaris netstat
>netstat
TCP: IPv4
Local Address Remote Address Swind Send-Q Rwind Recv-Q State
------------- ------------------- ----- ------ ----- ------ -----------
sting.32773 ting.1521 32768 0 32768 0 ESTABLISHED
sting.1521 ting.32773 32768 0 32768 0 ESTABLISHED
sting.32774 ting.1521 32768 0 32768 0 ESTABLISHED
Linux netstat
In Linux, we see that the output from netstat is quite different from Solaris:
>netstat
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 donsrv1.rov:netbios-ssn intranet.janet.com:1351 ESTABLISHED
tcp 0 0 donsrv1.janet.com:1120 sting.janet.com:ssh TIME_WAIT
tcp 0 40 donsrv1.janet.com:ssh hpop3-146.gloryroa:1096 ESTABLISHED
Ironically the syntax differences between proprietary UNIX and Linux can hinder your migration
and shops that use SFU on Windows often have a far easier migration. In sum, those Oracle
shops that avoid OS utilities such as scheduling (crontab) and shell scripts will find database
migration very easy.