点击▲关注 “ITPUB” 给公众号标星置顶
更多精彩 第一时间直达
前文回顾:
手把手教你升级到 Oracle 19c(1)| 教程来了 手把手教你升级到 Oracle 19c(2)| 教程来了 今天的内容是本套教材的第三部分,也是最后一部分。今天将向您介绍插拔式升级以及导入导出式升级。今天的内容由三部分组成,我们继续沿用之前的实验环境。 -1- non-CDB 插入 CDB 我们在之前的实验当中,将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满足插入条件。 第五步:将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已经可以连接并使用了,到这里,这小节的实验完成啦。 -2- 使用Full Transportable Export/Import技术 在这小节实验当中,我们使用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表空间创建数据,这里就不做演示了。 -3- 将 12c 的PDB 直接插入 19.3 CDB的实现升级 我们在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) 编辑:殷海英 本文由甲骨文云技术独家授权ITPUB 转载请联系 甲骨文云技术你「在看」吗?