![深入解析Oracle:数据库的初始化](https://wfqqreader-1252317822.image.myqcloud.com/cover/558/730558/b_730558.jpg)
2.1 数据库创建模板
使用模板创建数据库通常速度都会很快,原因就在于数据文件是从种子数据库中恢复出来的,而不需要通过SQL语句创建文件及字典对象等信息,图2-2展示了创建过程的第一个步骤,是“复制数据库文件”而不是“创建数据文件”。
![](https://epubservercos.yuewen.com/A2F12B/3728990404097701/epubprivate/OEBPS/Images/figure_0065_0040.jpg?sign=1739139441-ofyaPRxOxkWt5fNRPi5xTU7yreMoZq39-0-dc176dc11f5b63d798599a2674d31bc0)
图2-2 复制数据库文件
这里通过脚本说明一下通过模板创建数据库和定制数据库的不同。创建名为eygle的数据库实例,首先eygle.sql脚本记录如下内容:
set verify off
ACCEPT sysPassword CHAR PROMPT 'Enter new password for SYS: ' HIDE
ACCEPT systemPassword CHAR PROMPT 'Enter new password for SYSTEM: ' HIDE
host D:\Oracle\11.2.0\bin\orapwd.exe file=D:\Oracle\11.2.0\database\PWDeygle.ora force=y
@D:\Oracle\admin\eygle\scripts_template\CloneRmanRestore.sql
@D:\Oracle\admin\eygle\scripts_template\cloneDBCreation.sql
@D:\Oracle\admin\eygle\scripts_template\postScripts.sql
@D:\Oracle\admin\eygle\scripts_template\lockAccount.sql
@D:\Oracle\admin\eygle\scripts_template\postDBCreation.sql
在不同平台和版本上,这个过程是完全类似的,以下是Linux平台上12c版本的创建脚本:
host /u01/app/oracle/product/12.01.24/dbhome_1/bin/orapwd
file=/u01/app/oracle/product/12.01.24/dbhome_1/dbs/orapwEYGLE force=y extended=y
@/u01/app/oracle/admin/EYGLE/scripts/CloneRmanRestore.sql
@/u01/app/oracle/admin/EYGLE/scripts/cloneDBCreation.sql
@/u01/app/oracle/admin/EYGLE/scripts/plugDatabase.sql
@/u01/app/oracle/admin/EYGLE/scripts/postScripts.sql
@/u01/app/oracle/admin/EYGLE/scripts/postDBCreation.sql
@/u01/app/oracle/admin/EYGLE/scripts/lockAccount.sql
整个过程中,首先调用的脚本是CloneRmanRestore.sql,该脚本中记录如下内容:
SET VERIFY OFF
connect "SYS"/"&&sysPassword" as SYSDBA
set echo on
spool D:\Oracle\admin\eygle\scripts_template\CloneRmanRestore.log append
startup nomount pfile="D:\Oracle\admin\eygle\scripts_template\init.ora";
@D:\Oracle\admin\eygle\scripts_template\rmanRestoreDatafiles.sql;
spool off
这个脚本首先启动实例到NOMOUNT模式,然后调用rmanRestoreDatafiles.sql来恢复数据文件。