您现在的位置是:首页 >技术杂谈 >数据库单实例升级网站首页技术杂谈

数据库单实例升级

2301_76957510 2023-06-27 04:00:03
简介数据库单实例升级

一、单实例环境,全时长二个半钟多。详细图文说明到这下载

1、停止所有oracle相关进程。

Emctlstop  dbconsole

Isqlplusctl  stop

Lsnrctl  stop

sqlplus /nolog

sql>conn /as sysdba

Connectedtoanidleinstance.

sql>shutdown

然后,冷备份下数据库cp

2、metalink搜索下载安装p6810189_10204_Linux-x86

[oracle@linux~]cdDisk1

[oracle@linuxDisk1~]$./runInstaller–jreLoc/opt/oracle/jdk1.6.0_18/jre/

备注:因为环境关系,我指定使用了最新的jdk1.6.0.18,如您的环境与我不同。直接执行./runInstaller即可。

按照图形化界面安装,指定之前的软件安装位置

打开一个终端窗口:

[oracle@linux~]su -

口令:

执行提示的脚本,本例中:[root@linux~]#/opt/oracle/product/10.2/db_1/root.sh完成后关闭终端,返回安装界面,确定。如图

Ok,先不要启动数据库,补丁软件安装完成,还需要升级数据库才行。

重要:升级数据库,按说明文档,安装完成后,PostinstallationTasks

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

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

DBUA方式:

oracle用户登陆

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

执行dbua

[oracle@linux~]$dbua

看到欢迎界面,如图见文档

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

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

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

手工升级:

1、以oracle用户登陆

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

[oracle@jsslinuxdbs]$export ORACLE_SID=stu

[oracle@jsslinuxdbs]$oracle@linux-oracle10g:/>sqlplus /no log

SQL*Plus:Release10.2.0.4.0-ProductiononTueMar915:14:182010

Copyright(c)1982,2007,Oracle.AllRightsReserved.

SQL>conn /as  sysdba;

Connected.

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

SQL>startup upgrade

ORACLE例程已经启动。

数据库装载完毕。

数据库已经打开。

3、重建数据字典,另:如果有归档的话,强烈建议首先关闭归档(升级会产生大量的归档文件)

SQL>SPOOL path.log(路径默认在oracle主目录下/opt/oracle/,这个日志会有点大30M,可以查看.

SQL>@$ORACLE_HOME/rdbms/admin/catupgrd.sql

...安装过程图省略(重建数据字典)

SQL>SPOOLOFF

如果这一步顺利执行,升级已经完成了大半。(这里要等待比较长一段时间)

如图

(如果上面的组件状态不是VALID,请检查path.log 日志,处理错误在重新执行catupgrd.sql

grep  error  path.log

4、执行完重建数据字典,重启数据库

SQL>SHUTDOWNIMMEDIATE

SQL>STARTUP

5、编译无效对象

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

@?/rdbms/admin/utlrp.sql

耐心等待,直至完毕,出现sql>

6、然后运行下面的命令来检查升级之后,所有组件的状态:

SQL>select comp_name,version,status from  sys.dba_registry;

显示值为VALID,则成功完成升级。如图

另:最好查看下。

SQL>selecttablespace_name,statusfromdba_tablespaces;

--表空间都在

SQL>selectusernamefromdba_users;

--用户都在

SQL>selectobject_namefromdba_objectswhereowner='SCOTT';

--用户对象都在

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

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。