服务器操做系统为Debian Squeeze AMD64,没有安装X,经过ssh远程访问。客户端为debian testing,安装有gnome桌面环境。html
先安装10.2.0.1,而后安装升级包10.2.0.4,比安装10g r2客户端多了一些操做,具体安装过程以下:linux
1、安装10.2.0.1c++
一、下载oracle 10g r2sql
下载回来的文件为10201_database_linux_x86_64.cpio.gz
$gunzip 10201_database_linux_x86_64.cpio.gz
$cpio -idmv < 10201_database_linux_x86_64.cpioshell
解压缩后全部的安装文件位于database目录下。数据库
二、检查硬件是否达到要求bash
物理RAM必须大于512M,如今的机器内存都没问题。超过8GB RAM时,swap应该在物理RAM的0.75倍以上。Enterprise Edition安装类型大约使用2G硬盘空间。
经过如下命令检查,若是不知足须要作相应的调整服务器
$grep MemTotal /proc/meminfo //检查物理内存大小
$grep SwapTotal /proc/meminfo //检查swap大小
$df -h //检查可用硬件空间大小oracle
三、安装须要的软件包,建立须要的符号连接app
安装依赖包
$sudo apt-get install build-essential ia32-libs ia32-libs-dev libc6 libc6-i386 libc6-dev libc6-dev-i386 rpm libstdc++5
若是不安装ia32-libs,安装时会提示
/…/client/runInstaller: 63: /…/client/install/.oui: not found
建立符号连接
#ln -sf /usr/bin/awk /bin/awk
#ln -sf /usr/bin/rpm /bin/rpm
#ln -sf /usr/bin/basename /bin/basename
四、建立oracle须要的组和用户
oracle安装使用的组
#groupadd oinstall
系统管理使用的组
#groupadd dba
建立用户oracle
#useradd -g oinstall -G dba oracle
为用户oracle设置密码
#passwd oracle
建立nobody用户和nobody组
#groupadd nobody
debian默认已经建立了nobody用户,其属于nogroup组,但$ORACLE_HOME/root.sh为$ORACLE_HOME/bin/extjob设置的组为nobody,因此这里也要建立nobody组,不然root.sh会抱怨
/bin/chgrp: invalid group: `nobody’
五、配置内核参数和oracle用户资源限制值
内核参数
oracle 10g要求的内核参数值以下
semmsl 250
semmns 32000
semopm 100
semmni 128
shmall 2097152
shmmax 物理内存的一半,以字节为单位
shmmni 4096
file-max 65536
ip_local_port_range 最小:1024 最大:65000
rmem_default 262144
rmem_max 262144
wmem_default 262144
wmem_max 262144
若是系统默认的内核参数值高于oracle 10g须要的值,则保持默认参数不变,不然用oracle 10g要求的值来修改内核参数。修改参数时在/etc/sysctl.d目录下新建oracle.conf,将新的参数值写入此文件
kernel.sem = 250 32000 100 128
kernel.shmmax = 8589934592
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 262144
net.core.rmem_max = 262144
net.core.wmem_default = 262144
net.core.wmem_max = 262144
kernel.sem参数值按semmsl semmns semopm semmni这个顺序指定,中间以空格隔开
为oracle用户所在组赋予分配大内存页的权限
#id oracle
uid=1001(oracle) gid=1001(oinstall) groups=1001(oinstall),1002(dba)
#echo “1002″ >/proc/sys/vm/hugetlb_shm_group
这样oracle才有权限分配大内存页,不然建库时会有错误提示:
ORA-27125:unable to create shared memory segment
不过这样设置重启后参数就丢失了,能够在/etc/sysctl.conf或/etc/sysctl.d/oracle.conf文件里面添加该参数
vm.hugetlb_shm_group=1002
以后运行命令
#sysctl -p
或
#sysctl -p /etc/sysctl.d/oracle.conf
可以使该参数在内核内存中当即生效
若是oracle出现如下错误提示
ORA-27102: out of memory
Linux-x86_64 Error: 28: No space left on device
则须要适当增长内核参数shmall的值
shmall是按页计数的全部共享内存的数量,能够设置shmall为SGA总量除以页面大小来解决这个错误
获取页面大小
$getconf PAGE_SIZE
4096
也就是说页面大小为4K,若是SGA总数为16G,则shmall的值为16*1024*1024/4=4194304
oracle用户资源限制值
在/etc/security/limits.d目录下新建文件oracle.conf,文件名随意,但扩展名必定要是conf,输入一下内容
#
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
在/etc/profile.d目录下新建文件oracle.sh,文件名随意,但扩展名必定要是sh,输入如下内容
#for oracle 10g r2
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
六、建立oracle基准目录
oracle安装目录的设置最好遵循oracle OFA(Optimal Flexible Architecture)规范的建议。
用如下命令来设置ORACLE BASE目录/var/oracle
#mkdir -p /var/oracle
#chown -R oracle:oinstall /var/oracle
#chmod -R 775 /var/oracle
七、设置oracle用户的环境
设置oracle的用户的主目录home为/var/oracle
#usermod -d /var/oracle oracle
修改oracle用户的shell为/bin/bash
#usermod -s /bin/bash oracle
从其余用户主目录下拷贝.profile,.bashrc,.bash_logout文件到oracle用户的主目录,在.bashrc文件增长下面的行
umask 022
而后
$source .bashrc
最后设置oracle用户远程ssh登陆时启用X11 Forward
也能够不使用X远程静默安装oracle
八、安装oracle 10g x86_64数据库
登陆到远程系统
$ssh -XY oracle@remotehost
执行oracle安装程序
$/path/to/client/runInstaller -ignoreSysPrereqs
由于oracle 10g认证的linux系统只有redhat-3, SuSE-9, redhat-4, UnitedLinux-1.0, asianux-1 和 asianux-2这几个,因此在其余linux发行版上安装时须要指定命令行参数-ignoreSysPrereqs,不然会提示:
Checking operating system version: must be redhat-3, SuSE-9, redhat-4, UnitedLinux-1.0, asianux-1 or asianux-2
Failed <<<<
而后退出安装
以后在本地机器能够看到OUI(Oracle Universal Installer)界面,后面的安装根据提示来就能够了。安装目录修改成/var/oracle/product/10.2.0/db_1
安装进度大约到65%时会有错误提示:
Error in invoking target 'collector' of makefile '/var/oracle/product/10.2.0/db_1/sysman/lib/ins_emdb.mk'.
这是oracle安装程序的一个bug,能够忽略此错误继续安装,对系统没什么影响。同时oraInventory/logs/目录下的安装日志文件里面会有以下相似错误提示:
INFO: /usr/bin/ld: i386 architecture of input file `/var/oracle/product/10.2.0/db_1/sysman/lib/snmccolm.o' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `/var/oracle/product/10.2.0/db_1/sysman/lib/libnmccol.a(nmccole.o)' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `/var/oracle/product/10.2.0/db_1/sysman/lib/libnmcbuf.a(nmcbuft.o)' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `/u01/ap
INFO: p/oracle/product/10.2.0/db_1/sysman/lib/libnmcbuf.a(nmcbufw.o)' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `/var/oracle/product/10.2.0/db_1/sysman/lib/libnmcbuf.a(nmcbufu.o)' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `/var/oracle/product/10.2.0/db_1/sysman/lib/libnmcbuf.a(snmcbufm.o)' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `/var/oracle/product/10.2.0/db_1/sysman/lib/
INFO: libnmcbuf.a(nmcbuff.o)' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `/var/oracle/product/10.2.0/db_1/sysman/lib//libnmadbg.a(nmadbg.o)' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `/var/oracle/product/10.2.0/db_1/sysman/lib//libnmadbg.a(snmadbg.o)' is incompatible with i386:x86-64 output
collect2: ld returned 1 exit status
INFO: make[1]: Leaving directory `/var/oracle/product/10.2.0/db_1/sysman/lib'
INFO: make[1]: *** [/var/oracle/product/10.2.0/db_1/sysman/lib/nmccollector] Error 1
make: *** [nmccollector] Error 2
这是由于oracle 10.2.0.1安装包为这几个i386目标文件提供了错误版本的x86_64连接库,以后安装patchser 10.2.0.4时relink nmccollector会成功。
关于此错误更详细的信息请参考Metalink NOTE 957982.1和Bug 8993720。
九、安装后配置
安装完成后,在oracle用户的.bashrc文件中添加如下ORACLE环境变量
export ORACLE_BASE=/var/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/client_1
export PATH=$ORACLE_HOME/bin:$PATH
export TNS_ADMIN=$ORACLE_HOME/network/admin
#export SQLPATH=$ORACLE_HOME/scripts
2、升级到patchset 10.2.0.4
一、升级软件
首先中止全部oracle服务,实际上若是安装完成10.2.0.1后当即进行升级的话,oracle的全部服务并无运行,也就没必要去中止它们
#/etc/init.d/oracle stop
oracle数据库的启动和关闭控制见Debian配置Oracle 10g自启动
而后运行升级包升级软件
$/path/to/patchset_directory/Disk1/runInstaller -ignoreSysPrereqs
按提示升级便可
二、升级数据库
若是此前并无建立数据库,那么升级到10.2.0.4到此就结束了,而后能够去建立新的数据库。
若是此前已经建立了数据库,那么按如下步骤升级数据库到10.2.0.4版本
启动监听器
$lsnrctl start
以sysdba身份登录数据库并运行升级脚本
$sqlplus / as sysdba;
SQL> STARTUP UPGRADE
SQL> SPOOL patch.log
SQL> @?/rdbms/admin/catupgrd.sql
SQL> SPOOL OFF
关闭并重启数据库
SQL> SHUTDOWN IMMEDIATE
SQL> STARTUP
编译无效PL/SQL包
SQL> @?/rdbms/admin/utlrp.sql
检查升级是否成功
SQL> SELECT COMP_NAME, VERSION, STATUS FROM SYS.DBA_REGISTRY;
若是全部组件的status都是valid表示升级成功
检查是否有升级错误
SQL>select * from utl_recomp_errors;
若是使用Oracle Recovery Manager catalog, 须要对catalog进行升级,以下:
$rman catalog username/password@alias
RMAN> UPGRADE CATALOG;
修改系统兼容性参数
SQL> alter system set compatible='10.2.0.4.0' scope=spfile;
SQL> SHUTDOWN
SQL> STARTUP
安装完成
UPDATE:
在Debian 当前的tesing分支Wheezy上安装oracle 10g时,须要增长如下两个符号连接:
#ln -sf /usr/lib/x86_64-linux-gnu/ /usr/lib64
#ln -sf /lib/x86_64-linux-gnu/libgcc_s.so.1 /lib64/libgcc_s.so.1
这是由于Wheezy开始支持multiarch,库路径作了比较大的调整。