Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1239751
  • 博文数量: 350
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 5668
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-23 17:53
文章分类

全部博文(350)

文章存档

2013年(350)

分类: Oracle

2013-04-24 13:32:33

接上篇"RHEL AS4下安装32位oracle10g",呵呵这篇介绍如何从10.2.0.1升级到10.2.0.3。

注:以下内容如未明确指定用户,默认均为oracle用户操作。

准备工作--安装补丁包:

1.下载补丁包p5337014_10203_LINUX.zip并解压unzip p5337014_10203_LINUX.zip

2.停止所有数据库服务,监听等

3.备份数据库,冷备热备均可,但必须是完全备份。推荐冷备,一旦有问题恢复也快。

4.安装补丁包:

[oracle@jsslinux oraupdate]$ cd Disk1

[oracle@jsslinux Disk1]$ ./runInstaller

按照提示一直下一步,直到:如图

打开一个终端窗口:

[oracle@jsslinux ~]$ su - root

执行提示的脚本,本例中:

[root@jsslinux ~]# /opt/ora10g/product/10.2.0/db_1/root.sh

完成后关闭终端,返回安装界面,确定。如图

这个时候别忙着启动数据库,补丁打完了,还需要升级数据库才行。

下面进入重头戏--升级数据库

选择题如下:

A. 使用DBUA升级(图型化界面,操作简单,据说出错机率高)

B. 手工升级(字符界面,操作稍复制,据说出错机率低)

选A,好,我不得不说,这不是一个不明智的选择。

以oracle用户登陆

打开终端,设置好环境变量$ORACLE_HOME,$ORACLE_SID,$PATH

执行dbua

[oracle@jsslinux ~]$ dbua

看到欢迎界面,如图

下一步,按照提示选择数据库(如果你要操作的数据库不在列表中,手工修改/etc/oratab添加SID),注意"升级完成后编译无效对象"的选项,建议选中,接着下一步。如果在操作之前没有备份数据库,可以在此选择备份。dbua执行的是冷备,需要估计好磁盘剩余空间。点击下一步,oracle开始升级操作,如图

如果运气好即没碰上bug,也没遭遇错误,那就可以finish了,如图

升级完成,Oracle自动打开数据库,赶紧连接进去看看数据是否还在:)

选B,好,我不得不又说,这不是一个不明智的选择。

1、以oracle用户登陆

打开终端,设置好环境变量$ORACLE_HOME,$ORACLE_SID,$PATH

[oracle@jsslinux dbs]$ export ORACLE_SID=jsscon

[oracle@jsslinux dbs]$ sqlplus "/ as sysdba"

SQL*Plus: Release 10.2.0.3.0 - Production on 星期三 11月 21 12:48:16 2007

Copyright (c) 1982, 2006, Oracle. All Rights Reserved.

已连接到空闲例程。

2、以升级模式启动数据库

SQL> startup upgrade

ORACLE 例程已经启动。

Total System Global Area 109051904 bytes

Fixed Size 1260360 bytes

Variable Size 92275896 bytes

Database Buffers 12582912 bytes

Redo Buffers 2932736 bytes

数据库装载完毕。

数据库已经打开。

3、重建数据字典,另:如果有归档的话,强烈建议首先关闭归档

SQL> spool /home/oracle/oraupgrade.log

SQL> @?/rdbms/admin/catupgrd.sql

...

...

SQL>

SQL> Rem *********************************************************************

SQL> Rem END catupgrd.sql

SQL> Rem *********************************************************************

SQL> SPOOL OFF

如果这一步顺利执行,升级已经完成了大半。

4、重启数据库

SQL> shutdown

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQL> startup

ORACLE 例程已经启动。

Total System Global Area 109051904 bytes

Fixed Size 1260360 bytes

Variable Size 92275896 bytes

Database Buffers 12582912 bytes

Redo Buffers 2932736 bytes

数据库装载完毕。

数据库已经打开。

5、编译无效对象

由于catupgrd.sql重建过程中可能造成一些对象失效,我们需要运行utlrp.sql重新编译那些无效对象(知道utlrp.sql功能了吧,黑黑,有事没事都可以执行一下)。

SQL> select count(1) from dba_objects where status='INVALID';

COUNT(1)

----------

108

已选择 1 行。

SQL> @?/rdbms/admin/utlrp.sql

...

...

SQL> DECLARE

2 threads pls_integer := &&1;

3 BEGIN

4 utl_recomp.recomp_parallel(threads);

5 END;

6 /

耐心等候吧。

SQL> Rem ================================================================

SQL> Rem END utlrp.sql

SQL> Rem ================================================================

SQL> select tablespace_name,status from dba_tablespaces;

--表空间都在

SQL> select username from dba_users;

--用户都在

SQL> select object_name from dba_objects where owner='JSS';

--用户对象都在

ok,恭喜,升级成功。。

注:dba_objects视图中也许会有一些类似BIN$BD34RX+6TICOMtVfhZZ6Zw==$0的对象存在,这是10g后提供的新功能,对象删除后并非真正被删,而是扔到回收站,这些对象就是回收站的对象,不用管它。

阅读(506) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~