如何升级oracle版本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何升级oracle版本相关的知识,希望对你有一定的参考价值。

Oracle数据库升级也并非简单的事,这篇文章对Oracle那点事做了较详细的介绍:Oracle数据库升级或数据迁移方法研究
我还属于Oracle的菜鸟,就不献丑介绍了。
下面我就简单总结下,Oracle同版本升级的经历:
升级数据库:
1. 先检查数据库当前版本:SELECT * FROM v$version;
2. 使用RMAN或exp 进行全库备份
【这一步非常非常重要,因升级到数据部分时,虚拟机没空间了,导致VM崩溃,升级失败.orcl库也挂了,不得不从另一台Oracle上创建了一个Orcl,然后,冷备迁移过来,才得以重新升级。】
如:RMAN全备
export ORACLE_SID=orcl
rman target /
RMAN>backup full database plus archivelog //全备数据库,并且包括ArchiveLog。
3. 最后按下面步骤进行升级
<1> 先知道Oracle 7个更新文件的作用:
第一 和 二个包表示database , 如果升级数据库,只需要这2个文件即可。
第三个包表示grid, 用来升级RAC 的CRS。如果升级RAC 要先用这个文件。
第四个表示客户端,
第五个表示gateways,
第六个表示 examples, 这个是我们的示例文件安装包。
<2> 升级Oracle数据库
首先将第一和二个zip压缩包上传,并在同一个目录下解压,因为,它两的目录结构基本一致,并且这两压缩包的内容需要合并后才能,执行runInstaller文件。所有要在同一个目录下解压,这样会直接合并。
<3> 运行runInstaller,若没有图像界面会可能就需要有应答文件了,这个就需要再查了,
我测试时,有图形界面,所以直接用图形界面来升级:
需要注意几个地方:
A. 这是第一个地方,这里需要点,“Skip software updates"跳到软件更新
B.这里是选项安装新Oracle软件的位置,这里不能写旧的位置。
另注: 磁盘空间一定要5~10G, Oracle11.2.0.1升级到11.2.0.3需要4.1G。
C. 第三点:需要注意: /etc/oratab这个文件。
因为,更新到最后是更新数据库,更新数据库时,必须要有一个数据库是运行的.才能执行,并且更新数据库时,它是通过oratab文件来让你选择通过那个运行的数据库来尝试更新数据库。
4. 数据库更新完后,需要做以下事情:
首先,升级完成后,需要将Oracle必须的环境变量修改为升级后的Oracle软件路径。
需要修改: ORACLE_HOME.
如我的环境:
Oracle11.2.0.1时:
ORACLE_BASE=/home/oracle/ora
ORACLE_HOME=$ORACLE_BASE/product/11g/db_1
升级后,Oracle版本为:11.2.0.3,新的家目录为:
Oracle11.2.0.3: ORACLE_HOME=$ORACLE_BASE/product/11.2.0.3/db_1
<1> 先执行这个文件,用sysdba的权限:
SQL> SPOOL update.info
SQL> $ORACLE_HOME/rdbms/admin/utlu112i.sql
SQL> SPOOL OFF
查看日志是否有错误。
<2> 关闭数据库,并更新启动。
SQL> shutdown immediate
SQL> startup upgrade
SQL> select * from v$version; #查看Oracle的版本。
SQL> select status from v$instance;
STATUS
------------
OPEN MIGRATE
#下面开始执行升级脚本。
SQL> SPOOL update-info.log
SQL> @$ORACLE_HOME/rdbms/admin/catupgrd.sql
#下面是查看升级结果的; 这个不是很确定,因为参考博客的环境是,
# 是9i 升 10g
#SQL> @$ORACLE_HOME/rdbms/admin/utlu102s.sql
SQL> SPOOL OFF
完成后,需要查看升级日志,是否有保错,若有,则重新执行升级SQL脚本。
#升级完成后,需要重启DB.
SQL> shutdown immediate
SQL> startup
#下面是执行重新编译无效对象
SQL> @$ORACLE_HOME/rdbms/admin/utlrp.sql
#查看是否还存在无效对象,若为0,则表示升级完成。否则重新执行编译。
SQL> SELECT count(*) FROM dba_objects WHERE status='INVALID';
SQL> select name from v$database; #确认数据库的SID是否正确。
SQL> show user; #确认当前是否为sys用户。
SQL> select tablespace_name, bytes from dba_data_files; #确认表空间大小是否正确.
#下面这个步骤网文中没有,这是尚观视频中提到的,作用不明.
#SQL> @$ORACLE_HOME/rdbms/admin/catalog.sql
#最后,重启数据库没有问题就是升级成功了。
SQL> select status from v$instance;
STATUS
------------
OPEN  #注意,成功打开数据库后,这里将是OPEN,而非OPEN MIGRATE
参考技术A 正版吗

2021年初oracle最新版本是多少_Oracle升级该怎么选版本

如果是在几年前讨论Oracle升级的问题,其实会存在很多的异议,如今再来看待这个问题,我觉得情况有了变化,我来尝试重新解读一下这个问题。

1

Oracle数据库版本背景

首先来说下Oracle的版本背景。

根据Oracle的产品线规划,18c开始的新版本将是年度版,版本将是发布年度的最后两位数字。原本计划作为12.2.0.2的版本就是现在发布中的18c,12.2.0.3将以19c的版本形式发布。预期Oracle数据库19将是12.2的最后一个版本(“长期支持”版本)。

所以经历了8,8i,9i,10g,11g,12c之后,接下来的就是18c,19c,现在是2020年了,截止目前的最新版本还是19c,20c得等些时日了。

从版本V2发展至今,我细数了如下的一些版本情况。

781d8901739d3b4ac73a328b9a8605a1.png

如果要从整体看出版本的差异情况,可以看下面的柱状图。

这个图没有体现版本之间的时间差,仅仅从版本的变化情况来看。

dbf00e777a58dbc69ee580c1b121d4af.png

仅仅从这个图上就能够看出一种鲜明的差异,那就是类似SQL Server这样的年度版本,能够对于版本的差异没有那么敏感。

2

Oracle数据库版本规划

我们能够看到有很多的版本,如果要选择升级数据库,到底是选择12c还是18c,还是19c呢,我们来看一个版本路线图,可以参考在MOS 官方文章:Release Schedule of Current Database Releases (文档 ID 742060.1)

f808afa69e925519dca7dd79ca1a3b1e.png

这个图是理解整个内容的核心,可以看到19c的定位是长期版本,而且扩展服务的截止时间是目前最长的。

相比而言18c的生命周期就会短许多,有点像昙花一些的过渡版本,从性价比来看似乎还不如早一些的12.2.0.1这个版本,如何和当时的时间背景联系起来,应该是一批早期用户从11g升级,在没有12.2版本发布时,选择了升级到12.1.0.2,所以看到的12.2.0.1和18c的发布时间也很接近。

值得一提的是,在2020年4月15日,Oracle修改了12.2.0.1的扩展服务截止时间,从2020年12月1日扩展到了2020年3月31日。(Added Limited Error Correction for 12.2.0.1 from Dec 1, 2020 until March 31, 2022)

3

Oracle数据库服务支持

对于扩展服务,我们可能有些陌生,大体分来,支持的强度分为三个级别:Premier Support(最高优先级的支持),Extended Support(中等优先级的支持),Sustaining Support(最低优先级的支持)。

如果和上面的图联系起来,其实就是对于扩展服务打了一些补丁,可以举个例子来说明,比如主流版本是11g,那么会有一个相对稳定产品生命周期,比如是5年,那么在这5年内是官方大力支持的阶段,会修复一系列的版本bug,推出一些改进和新功能,临近产品生命周期,就需要考虑升级,如果不升级服务支持力度上就会打一定的折扣,比如说扩展服务周期是2年,那么2年后正常来说是无法下载一些补丁更新的,如果过了扩展服务周期还没有升级,如果是大客户,花钱继续支持也可以,如果又跨越了多个时段,但是原来的版本支持还是需要,就需要做定制化的支持了。

对于数据库版本来说,10g是个坎,升级到11g是个坎,升级到12c的选择空间从上图来看就比较有限了,目前可选的就是12.2.0.1,18c和19c了。我们来看下这3个版本,我来划一下重点。

a9412175aa0110e785f077ae7caad56f.png

从上面的图来看,为了求稳,我们不是选择最接近的低版本,而是要首选尽可能稳定的大版本,避免后续的大版本改动。如果说得更清楚些,那就是选择19c.

版本的情况基本说完了,我们来看下升级的正确姿势,因为环境的差异,肯定初始版本都不大相同。

4

Oracle数据库版本升级矩阵

对于11g的数据库来说,如果是11g的最新版本,则可以直接升级到19c,这是一个极大的利好消息,避免了过渡升级带来的潜在隐患和服务不可用过长。

对于12c以上的版本(12.1.0.2以上),则可以直接升级到19c。

升级的过程可以考虑纯手工方式升级数据字典,也可以考虑使用DBUA来做。

Oracle 19c - Complete Checklist for Upgrading to Oracle Database 19c (19.x) using DBUA (Doc ID 2545064.1)

如果使用DBUA来升级,直接升级可以参考如下的表格:

7788970cf35afb7eed8f7bfeb04729ba.png

对于有些版本来说,则不可以直接升级,就需要过渡,比如你的版本是11.2.0.2,则需要先升级到11.2.0.4之后才可以升级到19c.

5b638bef0221e7db95df4e08a472b9cf.png

5

尝鲜新版本

此外,如果我们想先尝尝鲜,做下测试,

Oracle提供了另外两种方式来体验新版本,一种是LiveSQL,链接是https://livesql.oracle.com,同时也可以通过http://dosc.oracle.com进行了解。

以上是关于如何升级oracle版本的主要内容,如果未能解决你的问题,请参考以下文章

ORACLE跨版本升级

2021年初oracle最新版本是多少_Oracle升级该怎么选版本

IFS 升级数据库版本

OPatch从 Oracle Database 19.3 升级到 Oracle Database

day04_oracle版本升级--10.2.0.1.0升级到10.2.0.4.0

[转帖]Oracle 各个版本的升级路线图