当前位置: 首页 > 安装 > 正文

我们的文章会在微信公众号IT民工的龙马人生博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢!
由于博客中有大量代码,通过页面浏览效果更佳。

写脚本的背景

在Oracle数据库管理领域,数据库创建是一个常见但繁琐的任务。传统的图形化DBCA(Database Configuration Assistant)虽然用户友好,但在生产环境中往往不够灵活和高效,特别是用自定义建库的时候,需要开图形界面,还需要慢慢的手动去选,所以在10年之前写了这个以Oracle 11G为主的自动创建脚本,通过命令方式一键实现自定义创建数据库。从Oracle 12C开始,dbca命令行方式已经支持自定义创建数据库、自定义选择组件了,所以这个脚本也没有更新的价值。当然这个脚本其实不仅仅实现了自定义建数据库,还包括了数据库创建完成以后一些最佳实践的配置,这里由于每个人对最佳实践需求不同,所以在分享的脚本中暂时注释这部分内容,感兴趣的可以自己看里面的内容。

脚本还是奔着最易容、最少的参数原则编写,虽然脚本脚本支持很多参数的自定义,就算不输入参数,脚本都会获取到默认值。比如单机环境dbca.pl -d htz就可以创建htz数据库了,集群环境:dbca.pl -d dbname -N node1,node2 -G diskgroup

使用方法

脚本是用pl写的,所以需要安装perl或者调用Oracle数据库自带的perl也是一样的。脚本还依赖与操作系统环境ORACLE_BASE和ORACLE_HOME,如果未配置,脚本运行会报错。

基本用法

脚本支持的参数和每个参数的说明。

dbca.pl -help
mkdir /Users/yihan/Documents/owner/pgsql/logs
Open Log File
      dbca.pl -d dbname -g 5 -t rac -N node1,node2 -arch true -storagetype asm  -redosize 2048 -c zhs16gbk -p 2000 
      dbca.pl -d dbname -N node1,node2  -G diskgroup (rac)
      dbca.pl -d dbname -P htzpdb1,htzpdb2 -N node1,node2  -G diskgroup (rac) 
      dbca.pl -d dbname (single)
              -d          dbname
              -P          pdb name
              -g          log group number every thread(default 6)
              -G          diskgroup for datafile
              -D          directory for datafile when storagetype is fs(default oracle_base/oradata)
              -n          log file number every log group(default 1)
              -t          database type rac/single (default sigle)
              -N          node name for rac database
              -s          memory management type auto/manual (default manual)
              -sgasize    sga_max_size(M) 
              -c          characset
              -p          process number (default)
              -C          database compent (default little) 
              -arch       database archive mode true/fasle (default false) 
              -fra        location for fra(default datafile group name)
              -storagetype storege type(file|asm (default file))
              -undosize   undo tablespace size (default 32767M)
              -redosize   redo logfile size (default 2048M)
              -systemsize system tablespace size (default 5120M)
              -sysauxsize sysaux tablespace size (default 10240M)
              -fileextend datafile auto extend  true/false(default false)

创建单实例数据库

./dbca.pl -d mydb -c zhs16gbk -p 2000

创建RAC数据库

./dbca.pl -d myracdb -t rac -N node1,node2 -G +DATA -arch true

实际应用场景

1. 实际创建的案例

[oracle@rac11g1 ~]$ perl dbca.pl -d racdb -t rac -N rac11g1,rac11g2 -G DG_DATA -c ZHS16GBK -undosize 1024 -redosize 50 -systemsize 700 -sysauxsize 1024 -fileextend true
Open Log File
      20170226075425:           INFO: User Input  : [$dbName] = racdb
      20170226075425:           INFO: User Input  : [$dbRedoGroupNumber] = 6
      20170226075425:           INFO: User Input  : [$dbRedoFileNumber] = 1
      20170226075425:           INFO: User Input  : [$dbProcess] = 2000
      20170226075425:           INFO: User Input  : [$dbType] = rac
      20170226075425:           INFO: User Input  : [$dbNodeList] = rac11g1,rac11g2 
      20170226075425:           INFO: User Input  : [$dbCharacset] = ZHS16GBK
      20170226075425:           INFO: User Input  : [$dbStorageType] = asm
      20170226075425:           INFO: User Input  : [$dbGroupName] = DG_DATA
      20170226075425:           INFO: User Input  : [$dbFra] = DG_DATA
      20170226075425:           INFO: User Input  : [$dbUndoSize] = 1024
      20170226075425:           INFO: User Input  : [$dbRedoSize] = 50
      20170226075425:           INFO: User Input  : [$dbSystemSize] = 700
      20170226075425:           INFO: User Input  : [$dbSysauxSize] = 1024
      20170226075425:           INFO: User Input  : [$dbFileExtend] = true
      20170226075425:           INFO: User Input  : [$dbArch] = false
      20170226075425:           INFO: User Input  : [$dbMemManType] = MANUAL
      20170226075425:           INFO: User Input  : [$dbMemSgaMaxSize] = 2259559
      20170226075425:           INFO: User Input  : [$dbMemTarget] = 0
      20170226075425:           INFO: User Input  : [$dbMemCacheSize] = 1626882
      20170226075425:           INFO: User Input  : [$dbMemSharepoolSize] = 338933
      20170226075425:           INFO: User Input  : [$dbMemLargepoolSize] = 45191
      20170226075425:           INFO: User Input  : [$dbMemStreampoolSize] = 0
      20170226075425:           INFO: Copy template File to template Dir
      20170226075425:           INFO: Create Dbca Command
      20170226075425:           INFO: Begin Exec Dbca Command
      20170226075425:           INFO: For details check the logfiles at: /oracle/app/oracle/cfgtoollogs/dbca/racdb
      20170226081038:           INFO: Begin Change Database Memory Parameter
      20170226081038:           INFO: End Change Database Memory Parameter
      20170226081038:           INFO: Begin Change Database Memory Parameter
      20170226081038:           INFO: End Change Database Memory Parameter
      20170226081038:           INFO: Begin Change Database Parameter
      20170226081039:           INFO: End Change Database Parameter
      20170226081039:           INFO: Begin Change Database Job Info
      20170226081049:           INFO: End Change Database Job Info
      20170226081049:           INFO: Begin Change Database Profile Info
      20170226081049:           INFO: End Change Database Profile Info
      20170226081049:           INFO: Begin Change Database Awr Info
      20170226081049:           INFO: End Change Database Awr Info
      20170226081049:           INFO: Begin Create New Profile For Other User
      20170226081049:           INFO: Begin Create New Profile For Other User
      20170226081049:           INFO: Begin Change Default User Password And Profile
      20170226081049:           INFO: End Change Default User Password And Profile

注意事项和最佳实践

默认创建的组件

组件也是采用尽可能少的原则去组件,不需要的组件就没有创建,其实这个里面的JAVAVM灯这些组件都完全可以不用创建。

COMP_ID         COMP_NAME                                          SCHEMA          VERSION    STATUS
--------------- -------------------------------------------------- --------------- ---------- ----------
XDB             Oracle XML Database                                XDB             11.2.0.4.0 VALID
EXF             Oracle Expression Filter                           EXFSYS          11.2.0.4.0 VALID
RUL             Oracle Rules Manager                               EXFSYS          11.2.0.4.0 VALID
OWM             Oracle Workspace Manager                           WMSYS           11.2.0.4.0 VALID
CATALOG         Oracle Database Catalog Views                      SYS             11.2.0.4.0 VALID
CATPROC         Oracle Database Packages and Types                 SYS             11.2.0.4.0 VALID
JAVAVM          JServer JAVA Virtual Machine                       SYS             11.2.0.4.0 VALID
XML             Oracle XDK                                         SYS             11.2.0.4.0 VALID
CATJAVA         Oracle Database Java Packages                      SYS             11.2.0.4.0 VALID
RAC             Oracle Real Application Clusters                   SYS             11.2.0.4.0 VALID

脚本的获取方式

所有的脚本都已经同步到群公告当中,大家可以叫我微信:18081072613,我拉大家进群。

总结

dbca.pl脚本代表了Oracle数据库管理自动化的最佳实践。它不仅解决了传统图形化DBCA的局限性,还提供了部署所需的标准化、一致性和可重复性。通过使用这个脚本,DBA可以:

  • 显著提高数据库创建效率
  • 确保配置的一致性和标准化
  • 支持大规模自动化部署
  • 减少人为错误和配置偏差

对于需要频繁创建数据库或管理大量数据库实例的团队来说,这个脚本是一个不可或缺的工具。它体现了自动化运维在数据库管理中的应用,将复杂的数据库创建过程转化为简单、可靠、可重复的自动化流程。

通过合理使用这个脚本,可以大大提升Oracle数据库管理的效率和质量,是现代数据库运维的重要工具之一。
——————作者介绍———————–
姓名:黄廷忠
现就职:Oracle中国高级服务团队
曾就职:OceanBase、云和恩墨、东方龙马等
电话、微信、QQ:18081072613
个人博客: (http://www.htz.pw)
CSDN地址: (https://blog.csdn.net/wwwhtzpw)
博客园地址: (https://www.cnblogs.com/www-htz-pw)


Oracle DBA必备工具:11G命令自定义创建数据库脚本:等您坐沙发呢!

发表评论

gravatar

? razz sad evil ! smile oops grin eek shock ??? cool lol mad twisted roll wink idea arrow neutral cry mrgreen

快捷键:Ctrl+Enter