Oracle运行在32位/64位内核模式的AIX 5L操作系统上
目标
-------------
此文章根据32位/64位硬件和32位/64位内核,说明AIX 4L和AIX 5L之间的区别。本文解释了如何在64位的硬件上的AIX 5L系统上运行32位8.1.7版本和64位9.0.2版本。
应用范围
-----------------
Oracle用户在AIX 5L平台安装Oracle。
AIX 5L系统和oracle的兼容性
-------------------------------------------------
简介:
-----------
AIX 5L是来自IBM最新的操作系统版本。它的设计利用先进的64位系统和软件架构。AIX 5L中的L代表其与LINXU的密切关系。这也就说明AIX 5L的这个版本支持一些LINUX的API和工具。
内核模式:
--------------------------
在AIX 5L中的一个新的功能是可以运行在64位或者32位内核模式。但是在64位内核模式运行需要64位的硬件支持。
在AIX 5.2版本中默认安装的是32位内核,JFS2拥有64位内核(增强journaled文件系统),在安装时被激活。
使用下面的命令检查出机器是否可以运行在64位内核模式:
$ /usr/sbin/bootinfo –p
如果仅仅能运行在32位内核上,则执行命令后返回字符串“32”,如果既能运行在64位又能运行在32位内核模式,则执行命令后会返回“chrp”。
查看当前内核运行模式适用如下命令:
$ /usr/sbin/bootinfo –k
如果当前是32位内核,则返回“32”,如果返回“64”,则说明当前为64位内核。
内核模式间的转换:
---------------------------------
在不重装系统的情况下,在32位和64位内核之间转换时可能的。
请参考注释:169426,1—关于如何改变AIX 5L系统的内核模式更多的信息:
注释:不要在一个mp系统上启动unix_up 内核,或者在32-bit h/w上启动64位内核。这样做的话会导致失败,之后你不得不使用维护模式去修复它。
不同内核模式的兼容性:
-------------------------------------------------
应用程序的开发和编译使用32位的内核模式,在大多数情况下,在64位内核模式下也能良好的运行。
唯一的情况是,32位的应用程序不能运行在64位的内核模式下,如果一个应用程序只能运行在32位内核模式,那他就需要使用内核扩展(一个可以扩展内核的应用程序,例如,提供一个新的系统响应应用程序)。
一个例子就是Oracle 8.1.7,它只能在32位模式具有内核扩展功能。然而,Oracle 9.2.0没有这样的限制,它可以运行在64位模式下。
Oracle与AIX 5L的兼容性:
------------------------------------------------
就像在前面所提到的,Oracle 8.1.7使用最低32位内核扩展。在默认的媒介中没有提供对64位内核模式的版本兼容,但是可以打补丁2896876,这个补丁必须在使用64位内核模式之前被安装。
内核可以运行在32位或64位模式。在Oracle 8.1.7和Oracle 9.2.0版本不要求在之前使用补丁。如果随后要用到Oracle8i版本,那要求打补丁2896876。
另一方面,针对AIX 5L系统的Oracle 9.2.0版本,不用使用任何这样的32位内核扩展,因此它可以运行在任何内核模式。
因此,我们可以将Oracle 9.2.0运行在32位和64位内核模式。
综上所述,如果用户需要在AIX 5L上运行Oracle 8.1.7和Oracle 9.2.0,它或者必须将内核运行在32位模式,或者安装允许使用32位和64位模式的补丁—2896876。如果你要将内核模式改变到32位并且在这台服务器上运行6.2.0 版本,那么下面一行应该被包含在/etc/inittab中:
Load64bit:2:wait:/etc/methods/cfg64 >/dev/console 2 >&1 #Enable 64-bit execs
它运行64位应用程序运行在32内核上。
下面的注释可能是有用的:
注释:242678,1,“如何在AIX 5L上检验应用补丁2896876(rootpre.sh)”
针对AIX 4.3.3和AIX 5L的Oracle版本;
----------------------------------------------------------------------------
AIX 4.3.3版本中的64位ABI,在AIX 5L下是不被支持的。
将现有的64位应用程序从现有的AIX 4.3.x迁移的AIX 5L上要求重新编译源代码,并可能改变应用程序源代码以确保被使用的数据类型的一致性和正确性。
基于这种限制,从9.2.0版本开始,Oracle 针对AIX4.3.3和AIX 5L使用不同的CD。对此,用户应该谨慎,以防使用错误的CD,因为这两个版本是不兼容的。这也是为什么64位的版本9.0.1和8.0.7/64不能再AIX 5L上运行。
对于AIX 5L-CD,产品编号是A99331-01到A99334-01。
对于AIX 4.3.3-CD,产品编号是A99342-01到A99345-01。
其它有用的指令:
------------------------------------
检查Oracle是32位还是64位:
$ORACLE_HOME/bin> file oracle
如果是32位:
Oracle:executable (RISC System/6000) or object module not stripped.
如果是64位:
Oracle:64-bit AIX executable or object module not stripped.
检查64位扩展是否被装载:
$lslpp –l bos.64bit
如果是32位:
Lslpp: 0504-132 fileset bos.64bit not installed.
在AIX 4.3.3,如果是64位:
文件集水平状态描述
-----------------------------------------------------------
Path: /usr/lib/objrepos bos.64bit 4.3.3.78 COMMITTED Base Operating System 64 bit
Runtime
在AIX 5.1,如果和64位:
文件集水平状态描述:
------------------------------------------------------------
Path:/usr/lib/objrepos bos.64bit 5.1.0.35 COMMITTED B ase Operating System 64 bit
Runtime
检查操作系统是32位还是64位:
$locale64
如果是32位:
Exec():0509-036 Cannot load program locale64 because of the following errors:
0509-032 Cannot run a 64-bit program on a 32-bit machine.
如果是64位:
LANG=en_US
LC_COLLATE=”en_US”
LC_CTPE=”en_US”
LC_NUMERIC=”en_US”
LC_TIME=”en_US”
LC_MESSAGES=”en_US”
LC_ALL=
检查内核是32位的还是64位的:
$ls –l /unix
如果是32位;
Lrwxrwxrwx 1 root system 21 Mar 25 2002 /unix@ -> /usr/lib/boot/unix_mp
如果是64位的:
Rwxrwxrwx 1 root system 21 Jun 04 2002 /unix -> /usr/lib/boot/unix_64
对于AIX 5.2 64位版本:
-----------------------------------------------
检查硬件是32位的还是64位的:
$getconf HARDWARE_BITMODE
64(如果硬件是64位)
检查内核是32位还是64位:
Command: getconf KERNES_BITMODE
64(如果内核在32位模式中启动)