我们的文章会在微信公众号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命令自定义创建数据库脚本:等您坐沙发呢!