深入解析Oracle:数据库的初始化
上QQ阅读APP看书,第一时间看更新

2.1 数据库创建模板

使用模板创建数据库通常速度都会很快,原因就在于数据文件是从种子数据库中恢复出来的,而不需要通过SQL语句创建文件及字典对象等信息,图2-2展示了创建过程的第一个步骤,是“复制数据库文件”而不是“创建数据文件”。

图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来恢复数据文件。