ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Linux下Oracle10.2.0.1升级到oracle10.2.0.4详细操作记录

Linux下Oracle10.2.0.1升级到oracle10.2.0.4详细操作记录

原创 Linux操作系统 作者:zhanglincon 时间:2009-05-14 20:26:32 0 删除 编辑
 
提示:#后跟命令表示以root用户操作,$后跟命令表示以oracle用户操作。

首先到oracle网站下载安装包和patch包。

1. 安装前工作

1.1 删除历史数据库和oracle软件

确认实例并删除数据库:

$ dbca

删除oracle软件:
$ export ORACLE_HOME=/u01/app/oracle/product/1020/db_1
$ $ORACLE_HOME/bin/emctl stop dbconsole
$ ps -ef | grep dbconsole | grep -v grep    (检查)
$ $ORACLE_HOME/bin/lsnrctl stop
$ ps -ef | grep tnslsnr | grep -v grep    (检查)
$ $ORACLE_HOME/bin/isqlplusctl stop
$ ps -ef | grep isqlplus | grep -v grep    (检查)   
$ $ORACLE_HOME/bin/searchctl stop
$ ps -ef | grep ultrasearch | grep -v grep    (检查)
$ $ORACLE_HOME/oui/bin/runInstaller

1.2 安装前工作-硬件检查

# xhost +    (设置pc客户端的ip,确保能显示OUI界面)
# cat /proc/meminfo | grep Mem    (至少1g内存)
# cat /proc/meminfo | grep Swap    (参考如下)
1-2g内存 swap为内存的1.5倍
2-8g内存 swap大小等同内存
8g以上 swap为内存的0.75倍
# df -h /tmp    (至少400m可用空间)
# df -h /u01    (1.5-3.5g的磁盘空间,视安装类型而异)
# grep "model name" /proc/cpuinfo    (确保安装文件是当前cpu类型的版本,安装文件是10201_database_linux32.zip)

1.3 安装前工作-软件检查

# cat /etc/issue    (查看linux版本)
# uname -r    (查看内核版本)
# rpm -q package_name
对于RHEL5

gcc-3.2.3-2
make-3.79
binutils-2.11
openmotif-2.2.2-16
setarch-1.3-1
compat-gcc-7.3-2.96.122
compat-gcc-c++-7.3-2.96.122
compat-libstdc++-7.3-2.96.122
compat-libstdc++-devel-7.3-2.96.122

openmotif-2.2.2-16
compat-db-4.0.14.5


rpm -q  patchset_name(partial) 察看是否已经安装  或者下面的命令
[root@db-study patch]# rpm -qa | grep  compat-libstdc++-
compat-libstdc++-296-2.96-132.7.2
compat-libstdc++-33-3.2.3-47.3

 

rpm -q gcc make binutils openmotif setarch compat-db compat-gcc \
compat-gcc-c++ compat-libstdc++ compat-libstdc++-devel


rpm -ivh patchset_name  安装命令


对于RHEL4,以下packages或更高版本必须安装:
binutils-2.15.92.0.2-13.EL4
compat-db-4.1.25-9
compat-libstdc++-296-2.96-132.7.2    (未安装)
control-center-2.8.0-12
gcc-3.4.3-22.1.EL4
gcc-c++-3.4.3-22.1.EL44
glibc-2.3.4-2.9
glibc-common-2.3.4-2.9
gnome-libs-1.4.1.2.90-44.1
libstdc++-3.4.3-22.1
libstdc++-devel-3.4.3-22.1
make-3.80-5
pdksh-5.2.14-30
sysstat-5.0.5-1
xscreensaver-4.18-5.rhel4.2
setarch-1.6-1
软件包安装:
# From RedHat AS4 Disk 2
cd /media/cdrom/RedHat/RPMS
rpm -Uvh setarch-1*
rpm -Uvh compat-libstdc++-33-3*
rpm -Uvh make-3*
rpm -Uvh glibc-2*
# From RedHat AS4 Disk 3
cd /media/cdrom/RedHat/RPMS
rpm -Uvh openmotif-2*
rpm -Uvh compat-db-4*
rpm -Uvh libaio-0*
rpm -Uvh gcc-3*
# From RedHat AS4 Disk 4
cd /media/cdrom/RedHat/RPMS
rpm -Uvh compat-gcc-32-3*
rpm -Uvh compat-gcc-32-c++-3*

1.4 安装前工作-网络检查

# cat /etc/nsswitch.conf | grep hosts    (应包含hosts: files dns)
# hostname    (OUI需要主机名解析,确保能解析)
# domainname    (确保无信息)
# cat /etc/hosts | grep `eval hostname`    (应有ip和主机名的对应,没有则添加)
$ export ORACLE_HOSTNAME=node1    (对于多网卡主机,设置ORACLE_HOSTNAME变量,node1是通过hostname命令得到的主机名)

1.5 建操作系统组和用户
# /usr/sbin/usermod -g oinstall -G dba[,oper] oracle    (如果用户存在需要修改的话,oper组可选)
# id nobody    (确保nobody用户存在,是无权限用户,oracle安装后需要用到)
# /usr/sbin/useradd nobody    (如果不存在就新建)
 
# mkdir -p /u01/app
# groupadd -g 115 dba
# groupadd -g 116 oinstall
# useradd -u 116 -g 115 -d /u01/app/oracle -s /bin/bash -c "Oracle Software Owner" -p oracle oracle
# chown -R oracle:dba /u01
# passwd oracle
# su - oracle

1.6 配置内核参数

(oracle推荐参考,如果实际值高于推荐值则无需修改):
Parameter    Value            File
semmsl        250            /proc/sys/kernel/sem
semmns        32000            /proc/sys/kernel/sem
semopm        100            /proc/sys/kernel/sem
semmni        128            /proc/sys/kernel/sem
shmall        2097152         /proc/sys/kernel/shmall
shmmax         1/2 Memory(bytes)    /proc/sys/kernel/shmmax
shmmni         4096             /proc/sys/kernel/shmmni
file-max     65536             /proc/sys/fs/file-max
ip_local_port_range Minimum:1024     /proc/sys/net/ipv4/ip_local_port_range
        Maximum: 65000       
rmem_default     1048576         /proc/sys/net/core/rmem_default
rmem_max     1048576         /proc/sys/net/core/rmem_max
wmem_default     262144             /proc/sys/net/core/wmem_default
wmem_max     262144             /proc/sys/net/core/wmem_max
# /sbin/sysctl -a | grep sem     (显示信号参数)
# /sbin/sysctl -a | grep shm     (显示共享内存)
# /sbin/sysctl -a | grep file-max (显示文件句柄最大数)
# /sbin/sysctl -a | grep ip_local_port_range (显示显示端口号范围)
# /sbin/sysctl -a | grep rmem_default
# /sbin/sysctl -a | grep rmem_max
# /sbin/sysctl -a | grep wmem_default
# /sbin/sysctl -a | grep wmem_max
如果要修改以上信息:
# vi /etc/sysctl.conf    
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 1048576
net.core.rmem_max = 1048576
net.core.wmem_default = 262144
net.core.wmem_max = 262144
# /sbin/sysctl -p    (修改以后让参数生效)

为了提升性能增加oracle用户的shell限制:
# vi /etc/security/limits.conf
oracle              soft    nproc   2047
oracle              hard    nproc   16384
oracle              soft    nofile 1024
oracle              hard    nofile 65536
# vi /etc/pam.d/login
session    required     /lib/security/pam_limits.so
session    required     pam_limits.so
# vi /etc/profile or /etc/csh.login    (65536为最大打开文件描述符的数目,16384为单用户最大可用进程数)
if [ $USER = "oracle" ]; then
        if [ $SHELL = "/bin/ksh" ]; then
              ulimit -p 16384
              ulimit -n 65536
        else
              ulimit -u 16384 -n 65536
        fi
fi
# vi /etc/selinux/config    (使安全linux标志失效)
SELINUX=disabled

1.7 建立软件目录

Oracle Base目录:/mount_point/app/oracle_sw_owner
Oracle Inventory目录:oracle_base/oraInventory        (OUI建立)
Oracle Home目录:oracle_base/product/10.2.0/db_1    (OUI建立)
# more /var/opt/oracle/oraInst.loc    (确认Oracle Inventory目录是否存在)
# more /etc/oratab    (确认Oracle Home目录是否存在)
如果Oracle Base目录不存在则建立:
# mkdir -p /u01/app/oracle
# chown -R oracle:oinstall /u01/app/oracle
# chmod -R 775 /u01/app/oracle
确认数据库和恢复文件的存储:
文件系统(RAID或LV且做了stripe-and-mirror-everything即SAME)、ASM、裸设备(不支持存放恢复目录),推荐ASM但本例使用文件系统。
如果使用文件系统,数据库文件和恢复文件最好存放到不同的物理磁盘上;
建立数据库文件目录:
# mkdir /u01/oradata
# chown oracle:oinstall /u01/oradata
# chmod 775 /u01/oradata
建立恢复文件目录(闪存区):
# mkdir /orahome/flash_recovery_area
# chown oracle:oinstall /orahome/flash_recovery_area
# chmod 775 /orahome/flash_recovery_area

1.8 配置oracle用户环境

设置oracle用户环境变量:
$ vi .bash_profile
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1; export ORACLE_HOME
ORACLE_SID=ORCL; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"; export NLS_LANG
umask 022   
##以下这段如果在/etc/profile里设置过就不用在这里设置
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
    ulimit -p 16384
    ulimit -n 65536
else
    ulimit -u 16384 -n 65536
fi
fi
$ . .bash_profile
验证环境变量设置:
$ umask
$ env | more

2 安装过程

2.1 安装unzip软件并解压oracle压缩文件

# uncompress unzip_lnx.Z 或者 gzip -d unzip_lnx.Z
# mv unzip_lnx /usr/local/bin/
# chmod 751 unzip_lnx
# su - oracle
$ cd /orahome/wangnc    (进入软件存放目录)
$ unzip_lnx 10201_database_linux32.zip     (解压)

2.2 开始安装

$ cd database
$ DISPLAY=192.168.41.42:0.0; export DISPLAY    (192.168.41.42是使用如xmanager之类仿真终端的PC客户端的ip)
$ ./runInstaller    (安装原则是:有高级或定制选项就点击进去自己设置,这样加深对数据设置的理解)
oracle内存:服务器物理内存的50%
oracle进程数:500
连接模式:共享服务器模式
其它设置:默认
按照提示用root用户执行$ORACLE_HOME/root.sh脚本。

2.3 安装后记住

几个J2EE应用配置(node1是主机名):
iSQL*Plus URL: http://node1:5560/isqlplus
iSQL*Plus DBA URL: http://node1:5560/isqlplus/dba
Enterprise Manager 10g Database Control URL: http://node1:1158/em

其中它们的端口信息记录在:
$ more $ORACLE_HOME/install/portlist.ini

3 安装后工作

3.1 打patches

到metalink上找该版本的patches并安装。
后续介绍直接升级为10.2.0.4步骤,补丁一次性打齐。

3.2 其它工作(可以忽略)

备份root.sh:
$ cd $ORACLE_HOME
$ cp root.sh root.sh.enc

编译失效对象:
$ sqlplus "/as sysdba"
SQL> @?/rdbms/admin/utlrp.sql

生成客户端静态库libclntst10.a备用:
$ $ORACLE_HOME/bin/genclntst

设置oracle启动标志为Y,这样oracle自带的dbstart和dbshut才能够发挥作用:
$ vi /etc/oratab
orcl:/u01/app/oracle/product/10.2.0/db_1:Y
然后通过dbstart/dbshut启停数据库:
$ dbstart    (位于$ORACLE_HOME/bin下,日志位于$ORACLE_HOME/startup.log)
$ dbshut    (位于$ORACLE_HOME/bin下,日志位于$ORACLE_HOME/shutdown.log)
建议修改一下dbstart脚本:
$ vi dbstart    (因为该脚本默认监听目录不是oracle_home,所以没法自动启动监听)
ORACLE_HOME_LISTNER=$ORACLE_HOME    (日志位于$ORACLE_HOME/listener.log)

安装Companion CD里其它oracle产品:
$ unzip_lnx 10201_companion_linux32.zip
$ cd companion
$ ./runInstaller
注意:HTML DB没法安装,不知道这个伴侣盘是咋做的,安装了Oracle Database 10g Product 10.2.0.1。
Ultra Search URL: http://node1:5620/ultrasearch
Ultra Search 管理工具 URL: http://node1:5620/ultrasearch/admin

4. 数据库基本操作

用浏览器登陆企业管理器    http://IP:1158/em/    sys/oracle sysdba
登陆isqlplus    http://172.16.1.171:5560/isqlplus    system/oracle
登陆isqlplus dba:http://172.16.1.171:5560/isqlplus/dba
会提示登录框,注意这里不是数据库用户,而是isqlplus应用服务器要求的用户和密码。要以DBA身份登陆isqlplus,必须先配置好oc4j用户。

oc4j可以使用两种身份认证方式:
基于xml配置文件(jazn-data.xml)
基于LDAP(Oracle Internet Directory)

本文只涉及第一种方式,也就是采用xml配置文件认证的方式,该配置文件位于$ORACLE_HOME/oc4j/j2ee/isqlplus /application-deployments/isqlplus/config。但是该配置文件中的密码是加密过的,所以我们不能手动修改该文件,而是通过JAZN(Java AuthoriZatioN)来配置。JAZN是oracle提供的一个JASS(Java Authentication and Authorization Service)工具。

1).进入到目录
$ cd $ORACLE_HOME/oc4j/j2ee/isqlplus/application-deployments/isqlplus/

2).执行以下命令(telnet窗口里,用户名admin,密码welcome):
$ $ORACLE_HOME/jdk/bin/java -Djava.security.properties=$ORACLE_HOME/sqlplus/admin/iplus/provider -jar $ORACLE_HOME/oc4j/j2ee/home/jazn.jar -shell
RealmLoginModule username: admin
RealmLoginModule password:********
JAZN:>

3).新建用户并授予isqlplus DBA的权限
JAZN:> adduser "iSQL*Plus DBA" wangnc iamwangnc
JAZN:> grantrole webDba "iSQL*Plus DBA" wangnc

4).其它可选操作
列出用户:
JAZN:> listusers
iSQL*Plus DBA/admin
iSQL*Plus DBA/wangnc
删除用户:
JAZN:> remuser "iSQL*Plus DBA" wangnc
修改用户密码:
JAZN:> setpasswd "iSQL*Plus DBA" wangnc iamwangnc newpasswd
撤销用户登陆isqlplus DBA的权限
JAZN:> revokerole webDba "iSQL*Plus DBA" wangnc

5).退出JAZN命令环境
JAZN:> exit

isqlplus服务在10gR2中无需重启,再进入网址 http://ip:port/isqlplus/dba,在弹出的对话框中输入wangnc和iamwangnc,就可以进入到数据库登陆界面了,此时可以用数据库用户sys或system以sysdba或sysoper身份登陆了。而且以后也不会弹出那个isqlplus应用服务器的用户和密码提示框了。

其实进去后发现和isqlplus普通界面差不多,另外又有个EM可以搞定DBA工作,不知道搞个isqlplus dba有什么用,还不如直接sqlplus登陆管理呢。

5. 安装10gR2(10.2.0.4) Patch Set 3


5.1 更新时区定义

如果当前数据对象里含有TIMESTAMP WITH LOCAL TIME ZONE (TSLTZ) and TIMESTAMP WITH TIME ZONE (TSTZ)这两种数据类型和TZ_OFFSET函数,则需要打此patch、
SQL> SELECT version FROM v$timezone_file; 只要结果不等于4即需要升级。
see OracleMetalink document 553812.1 "Actions for the DSTv4 update in the Release 10.2.0.4 patchset".

5.2 停止相关进程

$ emctl stop dbconsole
$ isqlplusctl stop
$ lsnrctl stop
$ sqlplus '/as sysdba'
SQL> shutdown immediate

5.3 备份数据库(推荐)

5.4 开始打软件的patch


$ xhost +
$ cd /u01
$ unzip_lnx p6810189_10204_Linux-x86.zip    (解压补丁包)
$ cd Disk1/
$ ./runInstaller
如果ORACLE_HOME和ORACLE_SID设置没问题,默认安装即可。期间会要求以root身份执行$ORACLE_HOME/root.sh脚本。

5.5 执行dbua升级oracle数据库(xmanager仿真终端里)
$ lsnrctl start
$ dbua    (时间较长)
期间选择备份数据库,并可以修改flash_recovery_area的位置和大小。

5.6 其它升级后工作

如果用到了rman catalog,那么得升级catalog:
$ rman catalog username/password@alias
RMAN> UPGRADE CATALOG;
运行changePerm.sh放宽新建目录和文件的权限,使其它客户端能访问:
$ cd $ORACLE_HOME/install
$ ./changePerm.sh
5.7 最后验证你的升级成果,是不是都是10.2.0.4了!
SQL> select comp_name, version, status from sys.dba_registry;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8554499/viewspace-598176/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-03-24

  • 博文量
    79
  • 访问量
    206179