2.1 选择升级方法
如前所述,可使用两种直接升级方式和两种间接升级方式。本节将详细描述这些选项,同时描述它们的使用方法。
一般来说,直接升级方式将最快地执行升级,因为它们就地升级数据库。而其他方法涉及通过数据库连接或Data Pump Export复制数据。对于非常大型的数据库,通过间接方法彻底重建数据库所需要的时间使其成为不可行的选择。但就地升级也存在一个缺点,即无法重新组织数据文件、表空间或段,Oracle Database 12c中现已废弃的旧对象仍保留在数据库中。
第一种直接方法依赖于DBUA(Database Upgrade Assistant,数据库升级助手)。DBUA是一种交互式工具,用于指导升级过程。DBUA评估当前的数据库配置,并推荐在升级过程中可以实施的修改。接受推荐后,DBUA在后台执行升级,同时显示进度面板。DBUA在方法上非常类似于DBCA(Database Configuration Assistant,数据库配置助手)。如第1章所述,DBCA是成功升级所需要的步骤和参数的图形化界面。
第二种直接方法称为“手动升级”。DBUA在后台运行脚本,而手动升级方式需要数据库管理员亲手运行脚本。手动升级方法提供了大量的控制,但也增加了升级过程中的风险等级,因为升级步骤必须按正确的顺序执行。
可使用Oracle Data Pump Export/Import(从Oracle Database 10g开始引入)作为升级数据库的间接方法。使用这种方法,从旧版本数据库中导出数据,然后将这些数据导入使用新版本Oracle软件的数据库中。该过程可能需要磁盘空间来存放源数据库中、Export转储文件中以及目标数据库中数据的多个副本。虽然付出了这些代价,但这种方法在选择迁移哪些数据方面提供了很大的灵活性,即可以选择导出特殊的表空间、模式、表和行。
使用Data Pump方法,不升级原数据库,而是提取该数据库的数据并移动,然后可以删除该数据库,或与新数据库并行运行,直到新数据库测试完毕。在执行导出/导入的过程中,选择并重新插入数据库的每一行。如果数据库非常大,则导入过程可能花费较长的时间,从而影响将升级的数据库及时提供给用户的能力。主要原因在于网络的带宽限制:如果有10Gbps或更快的网络连接,则可为多个模式(其至单独的表)在网络上并行运行Data Pump。关于Data Pump实用程序的更多细节请参见第12章。
在数据复制方法中,提交一系列CREATE TABLE AS SELECT……或INSERT INTO……SELECT命令,这些命令穿过数据库链接(参阅第16章)以检索源数据。然后,基于独立源数据库中数据的查询,在Oracle 12c数据库中创建表。该方法允许以增量方式引入数据,并限制迁移的行和列。然而,需要非常小心的是,复制的数据能维持表之间所有必需的关系,以及任何索引或约束之间所有必需的关系。与Data Pump方法一样,对于大型数据库,这种方法可能需要相当长的时间。
注意:
如果同时改变操作平台,可使用可移植的表空间将数据从旧数据库移动到新数据库。对于非常庞大的数据库,该方法可能比其他数据复制方法更快捷。可参阅第17章以了解关于可移植表空间的细节。
为选择正确的升级方法,需要预先评估团队的专业技术、迁移的数据以及迁移期间允许的数据库停机时间。一般来说,对于超大型数据库,可选用DBUA;而对于较小的数据库,则可使用间接方法。