数据库升级方法全解析
1. 12c升级的阶段划分
从12c开始,升级所需的SQL脚本会根据它们之间的依赖关系划分为不同阶段。一个阶段是一组SQL文件,可以选择并行(使用多个SQL进程)或串行(单个SQL进程)执行。在 catupgrd.sql
或 catproc.sql
中,会看到如下带有SQL文件的行:
@@cmpupgrd.sql --CATFILE –X
--CATCTL -S
@@catresults.sql
--CATCTL -R
--CATCTL –M
其中, -X
表示SQL文件包含多进程处理; -S
表示串行执行SQL文件; -R
表示重新连接到数据库。
catctl.pl
首先会收集所有SQL文件的详细信息并将其划分为阶段,然后使用指定数量的并行进程执行每个阶段。这种阶段模型的一个重要特性是, catctl.pl
可以将任何阶段作为起始阶段。例如,如果升级在第40阶段失败,那么重试可以从第40阶段开始,而不像11g R2那样需要从头开始。
catctl
的常用参数如下:
| 参数 | 描述 |
| ---- | ---- |
| -n | 用于并行操作的进程数 |
| -d | 包含要运行文件的目录 |
| -l | 用于存放输出日志的目录(若未指定,将在当