自Oracle 12.2发布以来,就会面临两类升级的需求,一类是12.1升级到12.2,毕竟12.1和12.2的发布时间间隔有5年左右的时间,这个时间段内已经有一些线上业务使用了12.1,现在升级到12.2的意愿就会更加强烈。另外一种是低版本升级到12.2,这类需求的一个很大的驱动就是11.2.0.4的服务期限受限。
数据库升级有很多种方式,比如下面的这个升级方案概览,就涉及到很多种场景的考虑。
一般来说,图形的DBUA升级方式比较方便,虽然升级的过程很简便,但是有一个最大的风险点就是不可控因素,所以对于大中型的升级项目,还是会优先选择手工方式升级。
那么对于12.1升级到12.2,是否有什么方案呢,因为单纯看上面的方案还是有一定的局限性,这么说还是有一定的背景的。
对于启用多租户的12c环境,抛开升级,单纯的创建PDB,我们可以有两种方式,一种是远程克隆,基于db link,另外一种是unplug,plugin的方式,而和升级结合起来,思路还是很相似。
我们来简单看看这两种方案。
SQL> CREATE PLUGGABLE DATABASE tbillmob FROM tbillmob@tbillmob_link
file_name_convert=('/U01/app/oracle/oradata/new12c/NEW12C/tbillmob','/U01/app/oracle/oradata/test12cs/tbillmob') ;
CREATE PLUGGABLE DATABASE tbillmob FROM tbillmob@tbillmob_link
*
ERROR at line 1:
ORA-17628: Oracle error 17630 returned by remote Oracle server
ORA-17630: Mismatch in the remote file proto col version client server
出现这个问题还是因为版本的差异,这里需要在源库打一个补丁,可以参考mos文档。
Patch 18633374: COPYING ACROSS REMOTE SERVERS: ASMCMD-8016, ORA-17628, ORA-17630, ORA-06512 这样对于源库来说,打补丁就需要停源库的服务,也就意味着维护窗口。
另外一类方案就是在源库unplug,在目标库plugin,
SQL> create pluggable database upg121 using '/U01/app/oracle/oradata/test12cs/upg121/UPG121.xml' nocopy tempfile reuse; 看起来迁移一个PDB从12.1到12.2真是太容易了,其实不然,因为对于相应的PDB还是需要单独升级,可以使用一个新的命令来做。比如PDB的名字是upg121,就可以使用如下的命令。
$ORACLE_HOME/bin/dbupgrade -c upg121