暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

手把手教你升级到Database 19c(3)

甲骨文云技术 2019-12-14
2757

今天的内容是本套教材的第三部分,也是最后一部分。今天将向您介绍插拔式升级以及导入导出式升级。今天的内容由三部分组成,我们继续沿用之前的实验环境。

我们在之前的实验当中,将upgr这个数据库从11.2.0.4升级到19.3,但这个数据库目前还是non-CDB数据库。在本实验当中,想将这个升级后的non-CDB插入到19.3的CDB当中。这里需要注意的是,如果是non-CDB以PDB的形式插入CDB,首先要将这个non-CDB升级到与目标CDB相同的版本。我们在当前的环境中,有一个叫做CDB2的19.3的容器数据库,我们稍后就将upgr这个19.3的non-CDB以PDB的形式插入CDB2.

第一步:来到upgr,将这个数据库设定为只读模式

第二步:生成目标PDB的描述文件

我们生成upgr这个数据库的描述文件,为下一步将它插入到CDB2这个容器数据库做准备。

第三步:关闭upgr数据库,为插入CDB2做准备

第四步:来到目标容器数据库CDB2,检查兼容性,看是否满足插入条件

在这里,我们执行一个匿名存储过程,来判断目标数据库CDB2,是否满足插入条件。此处脚本较大,如果您想通过复制的方式来执行,可以点击本文下方的“阅读原文”来到Mike部落格查看原始脚本。

我们查看结果,显示当前的CDB2满足插入条件。

第五步:将upgr插入CDB2

刚才我们在upgr环境下生成了upgr的描述文件,现在我们在cdb2的环境下执行插入动作。请注意,这个操作是在cbd2环境的SQL Plus当中完成的。我们将upgr这个数据库插入到cdb2当中,给它的新名字是pdb1。


大家通过观察发现,我们新插入的数据库pdb1(原来的upgr),只能启动到mount状态,我们尝试启动它,会收到如下错误信息。告诉我们要执行一个脚本,将原来的non-CDB进行转换。

第六步:执行脚本,修正pdb1的错误

我们来到pdb1,然后执行将non-CDB转换成pdb的脚本,这个脚本大概要执行20-30分钟,具体的执行时间要看您的机器配置。

执行完毕的结果如下:

第七步:将pdb1打开,尝试连接

在这里,我们将刚转换好的pdb1先关闭,然后再打开,之后执行save state。这些操作都是在pdb1的环境当中完成的。您接着上面的会话直接执行就可以了。这里给大家留一个小问题,我们执行save state的目的是什么呢?执行之后,我们在下次打开数据库的时候会怎样呢?请大家自己去网路上检索答案。

接下来,我们来到容器数据库,看看pdb1的状态。

我们退出SQL Plus,尝试连接看看。

pdb1已经可以连接并使用了,到这里,这小节的实验完成啦。

在这小节实验当中,我们使用Full Transportable Export/Import技术将一个11.2.0.4的数据库中的表空间直接插入到19.3的容器数据库中的PDB里面。我们现在有一个11.2.0.4的数据库叫做FTEX,我们要将它通过使用Full Transportable Export/Import技术,将它的users表空间直接插入19.3的CDB2当中的pdb2。

第一步:我们在CDB2当中创建一个新的PDB名字叫做pdb2

第二步:打开pdb2,创建目录对象并授权,创建指向11.2.0.4 FTEX的database link

这一步有好多的动作要完成,首先要将pdb2打开,并设定save state,当然您不设定也可以。save state是做什么的?有答案了吗?

我们将pdb2打开之后,创建一个目录对象,并给system用户授予访问权限。之后我们创建一个指向11.2.0.4数据库FTEX的database link。

第三步:我们来到FTEX数据库将users表空间设定为只读模式,并拷贝数据文件

这一步,我们先来到FTEX数据库,将要导入的表空间设为只读模式,之后在操作系统上,将这个表空间的数据文件复制到19.3的环境下。

第四步:使用数据泵导入

来到cdb2,使用数据泵导入,这个操作要执行几分钟。执行结果有25个错误,暂时不必理会。

第五步:将FTEX数据库的users表空间恢复读写状态,然后将这个数据库关闭

既然导入的操作已经完成,我们将原来的11.2.0.4当中的users表空间恢复为读写状态,后面暂时也不用FTEX数据库,所以可以将它关闭了。

第六步:连接pdb2

如果当初您在ftex数据库的users表空间下创建一些测试表,您在cdb2中的pdb2里面就可以看到这些表数据了。我在操作的时候,没有在ftex的users表空间创建数据,这里就不做演示了。

我们在12.2.0.1 CDB1当中有一个pdb叫做pdb3,将这个数据库插入到CDB2(19.3)当中实现升级。

第一步:我们先来到12.2.0.1数据库cdb1的环境,将当中的pdb3打开

第二步:Preupgrade.jar and Unplug

我们通过jar包对pdb3做unplug操作。

第三步:将pdb3从cdb1中删除

执行升级前的预备脚本,然后将pdb3删除,这个脚本要执行2-3分钟。

第四步:将pdb3插入cdb2

我们首先执行检测脚本,这个脚本比较长,大家可以来到Mike的部落格去复制原始脚本,https://mikedietrichde.com/hol-19c-unplug-plug-upgrade/

我们发现检查结果出现了NO,我们要通过语句查询一下是什么原因。

目前找到3个原因,我觉得第一个是主要原因,后两个可以暂时忽略。第一个原因说的是,pdb的版本与cdb不兼容,我们要通过下面的操作将它升级。

第五步:执行pdb转换动作

首先通过pdb转换的方式创建pdb3

然后将pdb3打开到升级模式。

第六步:升级pdb3,这个过程耗时要20-40分钟

本文主要展示升级步骤,具体每个知识点的内容都足够拿出来分为多期进行讲解,所以关于命令的细节,请各位参考Oracle官方文档。在文档中有针对每个参数的详细描述。

经过差不多20分钟的等待,您将看到如下结果,表明升级成功。

第七步:清理无效对象,执行升级后脚本

这两个脚本将清除数据库中无效数据及完成升级后的一些修复动作。

到此,升级完成。我们查看一下pdb3的状态。

到这里,使用Mike大神的教程做的所有试验都完成了,在Mike大神的教程中另有一个将本地数据库升级入云端的实验,也许在后续的文章中再向大家介绍。本文译者为数据库初学者,有疏漏和不足之处,还请各位多多包涵。感谢您点阅,谢谢!

相关链接:

手把手教你升级到Database 19c(1)

手把手教你升级到Database 19c(2)

扫描下方QR Code即刻预约ADW演示

编辑:殷海英

最后修改时间:2020-01-13 22:21:47
文章转载自甲骨文云技术,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论