Oracle DBCA高级玩法:从模板选择、脚本调用到多租户
《Oracle DBCA高级玩法:从模板选择、脚本调用到多租户》要点: 作者介绍 杨建荣,DBAplus社群联合发起人.现就职于搜狐畅游,OracleACE-A、YEP成员,超7年数据库开发和运维经验,擅长电信数据业务、数据库迁移和性能调优.持Oracle10GOCP,OCM,MySQLOCP认证,《OracleDBA工作笔记》作者. 本篇文章的思路如下: 1.DBCA-熟悉而又陌生 2.Oracle中创建数据库的模板 3.解读seed模板的原理 4.解析seed模板创建数据库的过程 5.解析DBCA的调用脚本 6.DBCA和技术趋势发展的关系 1)DBDA和多租户的关系 2)通过DBCA创建DataGuard 一、DBCA-熟悉而又陌生但凡是学过Oracle的同学,对DBCA(DatabaseConfigurationAssistant,DBCA)都不会陌生,有了这个工具,使得创建数据库成为可能.而DBCA本身有图形和静默两种方式.其中静默方式看起来高大上一些,因为一个看似复杂的创建数据库的过程,用一个命令就可以轻松搞定.静默安装的命令类似下面的形式,其中创建的数据库为testdb,字符集为ZHS16GBK. dbca-silent-createDatabase-templateName$ORACLE_HOME/assistants/dbca/templates/General_Purpose.dbc-gdbnametestdb-sidtestdb-characterSetZHS16GBK-sysPasswordoracle-systemPasswordoracle 这样就了解了DBCA的整个过程吗?肯定不是. 二、Oracle中创建数据库的模板首先需要了解一下上面命令里提到的模板General_Purpose.dbc,在10g中是分为四个模板(通用,OLTP,OLAP,定制)可供选择,而11g中目前存在三种模板可供选择,就是通用/OLTP、OLAP和定制类型,主要是通用模板和OLTP模板耦合度太高,所以11g中我们看到的是三个模板,如下图所示. 需要说明的是对于模板类型有seed和noseed两种,主要的区别在于是否包含数据文件(对应上图红色标识的“IncludesDatafiles”),简单来说,seed就是从RMAN备份中还原恢复数据库,由于是这个过程是使用通用模板,不能做其他更多的定制修改,但是最大的特点是创建速度快,OLTP和OLAP的模板就属于seed模板类型;而“定制数据库”模板则属于noseed模板,不包含数据文件,需要使用createdatabase命令创建数据库,需要初始化数据字典,安装组件等,创建时间要长很多,对于大部分系统业务来说,需要根据自己的需求来选择合适的模板类型. 三、解读seed模板的原理seed模板的方式是使用RMAN恢复来完成,那么数据备份在哪里呢?在$ORACLE_HOME/assistants/dbca/templates下面.
可能到这里还不大明白,其实在这里Seed_Database.dfb就是RMAN的备份. 而可以很清楚看到数据库的db_name是seed_database这样的字眼,其实是在创建的过程中修改了db_name,如果用数据库的工具来理解,就是一个nid修改db_name. 如果我们通过strings的方式解析这些文件就会发现db_name是seeddata. 四、解析seed模板创建数据库的过程当然DBCA静默这个过程很容易实践.我们花几分钟就能手工完成这个过程. 首先假设我们需要创建的数据库为testdb,我们初始化目录结构. 1、如何处理参数文件 然后在$ORACLE_HOME/dbs下初始化参数文件initseeddata.ora,内容如下:
这里尤其注意参数的设置,db_name为seeddata,控制文件的目录为testdb相关.完成这一步我们就可以上道了. 启动数据库到nomount阶段,证明参数文件是设置生效了.
2、如何处理控制文件 而要启动到mount阶段,控制文件怎么处理,我们是从模板的路径下拷贝一个,就可以启动到mount阶段了.
3、如何处理Redo日志 那数据文件,redo这些文件怎么处理,我们先来处理redo,数据文件稍后处理. 当前的redo的设置如下,目前来看是不可用的情况,因为路径是不符合需求的.
|