DBCA使用静默模式创建数据库
基本信息
数据库版本: oracle 11.2.0.4
操作系统版本: rh linux 7.5
在配置数据库时,我们没有用户界面,vnc没有安装,使用dbca静默模式创建数据库
dbca -silent …
在此处,使用模板文件,创建传统OLTP数据库
模板文件的位置:
$ORACLE_HOME//assistants/dbca/templates
Data_Warehouse.dbc
example01.dfb
example.dmp
General_Purpose.dbc
New_Database.dbt
Seed_Database.ctl
Seed_Database.dfb
关于模板的说明 :
Data Warehouse 数据仓库
Transaction Processing 事务处理
General Purpose 一般用途
使用General_Purpose.dbc模板文件创建数据库
查看General_Purpose.dbc文件的内容,通过分析可以看到我们需要在命令行传入的参数
cat General_Purpose.dbc
[oracle@waimao2 templates]$ cat General_Purpose.dbc
<?xml version = '1.0'?>
<DatabaseTemplate name="General_Purpose" description=" " version="11.2.0.0.0">
<CommonAttributes>
<option name="OMS" value="false"/>
<option name="JSERVER" value="true"/>
<option name="SPATIAL" value="true"/>
<option name="IMEDIA" value="true"/>
<option name="XDB_PROTOCOLS" value="true">
<tablespace id="SYSAUX"/>
</option>
<option name="ORACLE_TEXT" value="true">
<tablespace id="SYSAUX"/>
</option>
<option name="SAMPLE_SCHEMA" value="false"/>
<option name="CWMLITE" value="true">
<tablespace id="SYSAUX"/>
</option>
<option name="EM_REPOSITORY" value="true">
<tablespace id="SYSAUX"/>
</option>
<option name="APEX" value="true"/>
<option name="OWB" value="true"/>
<option name="DV" value="false"/>
</CommonAttributes>
<Variables/>
<CustomScripts Execute="false"/>
<InitParamAttributes>
<InitParams>
<initParam name="db_name" value=""/>
<initParam name="dispatchers" value="(PROTOCOL=TCP) (SERVICE={SID}XDB)"/>
<initParam name="audit_file_dest" value="{ORACLE_BASE}/admin/{DB_UNIQUE_NAME}/adump"/>
<initParam name="compatible" value="11.2.0.4.0"/>
<initParam name="remote_login_passwordfile" value="EXCLUSIVE"/>
<initParam name="processes" value="150"/>
<initParam name="undo_tablespace" value="UNDOTBS1"/>
<initParam name="control_files" value="("{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/control01.ctl", "{ORACLE_BASE}/fast_recovery_area/{DB_UNIQUE_NAME}/control02.ctl")"/>
<initParam name="diagnostic_dest" value="{ORACLE_BASE}"/>
<initParam name="db_recovery_file_dest" value="{ORACLE_BASE}/fast_recovery_area"/>
<initParam name="audit_trail" value="db"/>
<initParam name="memory_target" value="250" unit="MB"/>
<initParam name="db_block_size" value="8" unit="KB"/>
<initParam name="open_cursors" value="300"/>
<initParam name="db_recovery_file_dest_size" value="" unit="MB"/>
</InitParams>
<MiscParams>
<databaseType>MULTIPURPOSE</databaseType>
<maxUserConn>20</maxUserConn>
<percentageMemTOSGA>40</percentageMemTOSGA>
<customSGA>false</customSGA>
<archiveLogMode>false</archiveLogMode>
<initParamFileName>{ORACLE_BASE}/admin/{DB_UNIQUE_NAME}/pfile/init.ora</initParamFileName>
</MiscParams>
<SPfile useSPFile="true">{ORACLE_HOME}/dbs/spfile{SID}.ora</SPfile>
</InitParamAttributes>
<StorageAttributes>
<DataFiles>
<Location>{ORACLE_HOME}/assistants/dbca/templates/Seed_Database.dfb</Location>
<SourceDBName>seeddata</SourceDBName>
<Name id="1" Tablespace="SYSTEM" Contents="PERMANENT" Size="740" autoextend="true" blocksize="8192">{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/system01.dbf</Name>
<Name id="2" Tablespace="SYSAUX" Contents="PERMANENT" Size="470" autoextend="true" blocksize="8192">{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/sysaux01.dbf</Name>
<Name id="3" Tablespace="UNDOTBS1" Contents="UNDO" Size="25" autoextend="true" blocksize="8192">{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/undotbs01.dbf</Name>
<Name id="4" Tablespace="USERS" Contents="PERMANENT" Size="5" autoextend="true" blocksize="8192">{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/users01.dbf</Name>
</DataFiles>
<TempFiles>
<Name id="1" Tablespace="TEMP" Contents="TEMPORARY" Size="20">{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/temp01.dbf</Name>
</TempFiles>
<ControlfileAttributes id="Controlfile">
<maxDatafiles>100</maxDatafiles>
<maxLogfiles>16</maxLogfiles>
<maxLogMembers>3</maxLogMembers>
<maxLogHistory>1</maxLogHistory>
<maxInstances>8</maxInstances>
<image name="control01.ctl" filepath="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/"/>
<image name="control02.ctl" filepath="{ORACLE_BASE}/fast_recovery_area/{DB_UNIQUE_NAME}/"/>
</ControlfileAttributes>
<RedoLogGroupAttributes id="1">
<reuse>false</reuse>
<fileSize unit="KB">51200</fileSize>
<Thread>1</Thread>
<member ordinal="0" memberName="redo01.log" filepath="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/"/>
</RedoLogGroupAttributes>
<RedoLogGroupAttributes id="2">
<reuse>false</reuse>
<fileSize unit="KB">51200</fileSize>
<Thread>1</Thread>
<member ordinal="0" memberName="redo02.log" filepath="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/"/>
</RedoLogGroupAttributes>
<RedoLogGroupAttributes id="3">
<reuse>false</reuse>
<fileSize unit="KB">51200</fileSize>
<Thread>1</Thread>
<member ordinal="0" memberName="redo03.log" filepath="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/"/>
</RedoLogGroupAttributes>
</StorageAttributes>
</DatabaseTemplate>
可以看到我们在配置文件dbc模板中需要传入的参数有:
ORACLE_BASE
DB_UNIQUE_NAME
SID
这三个变量中ORACLE_BASE和SID是可以通过配置环境变量来取得
而DB_UNIQUE_NAME是可以通过dbca命令行来传入
查看dbca命令帮助
通过分析帮助信息来组织我们的dbca 命令行来实现创建数据库
dbca -help
[oracle@waimao2 templates]$ dbca -help
dbca [-silent | -progressOnly | -customCreate] {<command> <options> } | { [<command> [options] ] -responseFile <response file > } [-continueOnNonFatalErrors <true | false>]
有关详细信息, 请参阅手册。
可以输入以下命令之一:
通过指定以下参数创建数据库:
-createDatabase
-templateName <默认位置或完整模板路径中现有模板的名称>
[-cloneTemplate]
-gdbName <全局数据库名>
[-sid <数据库系统标识符>]
[-sysPassword <SYS 用户口令>]
[-systemPassword <SYSTEM 用户口令>]
[-emConfiguration <CENTRAL|LOCAL|ALL|NONE>
-dbsnmpPassword <DBSNMP 用户口令>
-sysmanPassword <SYSMAN 用户口令>
[-hostUserName <EM 备份作业的主机用户名>
-hostUserPassword <EM 备份作业的主机用户口令>
-backupSchedule <使用 hh:mm 格式的每日备份计划>]
[-centralAgent <Enterprise Manager 中央代理主目录>]]
[-disableSecurityConfiguration <ALL|AUDIT|PASSWORD_PROFILE|NONE>
[-datafileDestination <所有数据库文件的目标目录> | -datafileNames <含有诸如控制文件, 表空间, 重做日志文件数据库对象以及按 name=value 格式与这些对象相对应的裸设备文件名映射的 spfile 的文本文件。>]
[-redoLogFileSize <每个重做日志文件的大小 (MB)>]
[-recoveryAreaDestination <所有恢复文件的目标目录>]
[-datafileJarLocation <数据文件 jar 的位置, 只用于克隆数据库的创建>]
[-storageType < FS | ASM >
[-asmsnmpPassword <用于 ASM 监视的 ASMSNMP 口令>]
-diskGroupName <数据库区磁盘组名>
-recoveryGroupName <恢复区磁盘组名>
[-characterSet <数据库的字符集>]
[-nationalCharacterSet <数据库的国家字符集>]
[-registerWithDirService <true | false>
-dirServiceUserName <目录服务的用户名>
-dirServicePassword <目录服务的口令>
-walletPassword <数据库 Wallet 的口令>]
[-listeners <监听程序列表, 该列表用于配置具有如下对象的数据库>]
[-variablesFile <用于模板中成对变量和值的文件名>]]
[-variables <以逗号分隔的 name=value 对列表>]
[-initParams <以逗号分隔的 name=value 对列表>]
[-sampleSchema <true | false> ]
[-memoryPercentage <用于 Oracle 的物理内存百分比>]
[-automaticMemoryManagement ]
[-totalMemory <为 Oracle 分配的内存 (MB)>]
[-databaseType <MULTIPURPOSE|DATA_WAREHOUSING|OLTP>]]
通过指定以下参数来配置数据库:
-configureDatabase
-sourceDB <源数据库 sid>
[-sysDBAUserName <用户名 (具有 SYSDBA 权限)>
-sysDBAPassword <sysDBAUserName 用户名的口令>]
[-registerWithDirService|-unregisterWithDirService|-regenerateDBPassword <true | false>
-dirServiceUserName <目录服务的用户名>
-dirServicePassword <目录服务的口令>
-walletPassword <数据库 Wallet 的口令>]
[-disableSecurityConfiguration <ALL|AUDIT|PASSWORD_PROFILE|NONE>
[-enableSecurityConfiguration <true|false>
[-emConfiguration <CENTRAL|LOCAL|ALL|NONE>
-dbsnmpPassword <DBSNMP 用户口令>
-sysmanPassword <SYSMAN 用户口令>
[-hostUserName <EM 备份作业的主机用户名>
-hostUserPassword <EM 备份作业的主机用户口令>
-backupSchedule <使用 hh:mm 格式的每日备份计划>]
[-centralAgent <Enterprise Manager 中央代理主目录>]]
通过指定以下参数使用现有数据库创建模板:
-createTemplateFromDB
-sourceDB <服务采用 <host>:<port>:<sid> 格式>
-templateName <新的模板名>
-sysDBAUserName <用户名 (具有 SYSDBA 权限)>
-sysDBAPassword <sysDBAUserName 用户名的口令>
[-maintainFileLocations <true | false>]
通过指定以下参数使用现有数据库创建克隆模板:
-createCloneTemplate
-sourceSID <源数据库 sid>
-templateName <新的模板名>
[-sysDBAUserName <用户名 (具有 SYSDBA 权限)>
-sysDBAPassword <sysDBAUserName 用户名的口令>]
[-maintainFileLocations <true | false>]
[-datafileJarLocation <存放压缩格式数据文件的目录>]
通过指定以下参数生成脚本以创建数据库:
-generateScripts
-templateName <默认位置或完整模板路径中现有模板的名称>
-gdbName <全局数据库名>
[-scriptDest <所有脚本文件的目标位置>]
通过指定以下参数删除数据库:
-deleteDatabase
-sourceDB <源数据库 sid>
[-sysDBAUserName <用户名 (具有 SYSDBA 权限)>
-sysDBAPassword <sysDBAUserName 用户名的口令>]
通过指定以下选项来查询帮助: -h | -help
创建数据库
通过分析dbca -help后,我们组织命令行创建数据库:
dbca -silent -createDatabase -templateName General_Purpose.dbc -gdbName TEST -sysPassword password123 -systemPassword password123 -emConfiguration NONE -characterSet ZHS16GBK -nationalCharacterSet UTF8 -sampleSchema true -databaseType OLTP -totalMemory 20480 -redoLogFileSize 100
清除失败的步骤
5% 已完成
复制数据库文件
7% 已完成
9% 已完成
41% 已完成
正在创建并启动 Oracle 实例
43% 已完成
48% 已完成
53% 已完成
58% 已完成
59% 已完成
62% 已完成
64% 已完成
正在进行数据库创建
68% 已完成
71% 已完成
75% 已完成
85% 已完成
96% 已完成
100% 已完成
有关详细信息, 请参阅日志文件 "/app/oracle/cfgtoollogs/dbca/TEST/TEST0.log"。
创建数据库 :TEST
数据库类型:OLTP
sys/system密码:password123
EM: NONE
数据库字符集:ZHS16GBK
国家字符集,也就是NLS_NCHAR_CHARACTERSET:UTF8
配置内存:memory_target为20GB
每个redo log大小: 100M
创建过程的日志文件 :
[oracle@waimao2 TEST]$ vi /app/oracle/cfgtoollogs/dbca/TEST/TEST0.log
清除失败的步骤
DBCA_PROGRESS : 5%
复制数据库文件
DBCA_PROGRESS : 7%
DBCA_PROGRESS : 9%
DBCA_PROGRESS : 41%
正在创建并启动 Oracle 实例
DBCA_PROGRESS : 43%
DBCA_PROGRESS : 48%
DBCA_PROGRESS : 53%
DBCA_PROGRESS : 58%
DBCA_PROGRESS : 59%
DBCA_PROGRESS : 62%
DBCA_PROGRESS : 64%
正在进行数据库创建
DBCA_PROGRESS : 68%
DBCA_PROGRESS : 71%
DBCA_PROGRESS : 75%
DBCA_PROGRESS : 85%
DBCA_PROGRESS : 96%
DBCA_PROGRESS : 100%
数据库创建完成。有关详细信息, 请查看以下位置的日志文件:
/app/oracle/cfgtoollogs/dbca/TEST。
数据库信息:
全局数据库名:TEST
系统标识符 (SID):TEST
查看操作系统的信息:
/app/oracle/oradata/TEST
[oracle@waimao2 TEST]$ ls
control01.ctl redo01.log redo03.log system01.dbf undotbs01.dbf
example01.dbf redo02.log sysaux01.dbf temp01.dbf users01.dbf
数据库信息:
export ORACLE_SID=TEST
sqlplus / as sysdba
SQL> select name,open_mode from v$database;
NAME OPEN_MODE
--------- --------------------
TEST READ WRITE
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/app/oracle/oradata/TEST/system01.dbf
/app/oracle/oradata/TEST/sysaux01.dbf
/app/oracle/oradata/TEST/undotbs01.dbf
/app/oracle/oradata/TEST/users01.dbf
/app/oracle/oradata/TEST/example01.dbf
SQL> show parameter sga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 16G
sga_target big integer 16G SGA的大小
SQL> show parameter pga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target big integer 4G PGA的大小
SQL> show parameter memo
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
hi_shared_memory_address integer 0
memory_max_target big integer 0
memory_target big integer 0
shared_memory_address integer 0
SQL>
SQL> show parameter process
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes integer 1
cell_offload_processing boolean TRUE
db_writer_processes integer 6
gcs_server_processes integer 0
global_txn_processes integer 1
job_queue_processes integer 1000
log_archive_max_processes integer 4
processes integer 150 连接最大进程的数量,根据需要修改
processor_group_name string
SQL> show parameter session
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
java_max_sessionspace_size integer 0
java_soft_sessionspace_limit integer 0
license_max_sessions integer 0
license_sessions_warning integer 0
session_cached_cursors integer 50
session_max_open_files integer 10
sessions integer 288 会话数,根据需要修改
shared_server_sessions integer
SQL> show parameter dispa
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
dispatchers string (PROTOCOL=TCP) (SERVICE=TESTXD
B)
max_dispatchers integer
SQL>
SQL> show parameter server
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
fal_server string
gcs_server_processes integer 0
max_shared_servers integer
parallel_max_servers integer 120
parallel_min_servers integer 0
parallel_server boolean FALSE
parallel_server_instances integer 1
parallel_servers_target integer 768
rdbms_server_dn string
sec_return_server_release_banner boolean FALSE
shared_server_sessions integer
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
shared_servers integer 1
smtp_out_server string
SQL>
SQL> show parameter shared --会话的连接模式,shared_server为1,则使用专有连接模式
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
hi_shared_memory_address integer 0
max_shared_servers integer
shared_memory_address integer 0
shared_pool_reserved_size big integer 104018739
shared_pool_size big integer 0
shared_server_sessions integer
shared_servers integer 1
SQL>
归档模式:
SQL> archive log list
Database log mode No Archive Mode 根据需要进行开启
Automatic archival Disabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 2
Current log sequence 4
闪回区的大小 : 根据需要修改
SQL> show parameter recovery
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string /app/oracle/fast_recovery_area
db_recovery_file_dest_size big integer 4632M
recovery_parallelism
使用dbca -silent删除刚刚创建的数据库:
dbca -silent -deleteDatabase -sourceDB TEST -sysDBAUserName sys -sysDBAPassword password123
dbca -silent -deleteDatabase -sourceDB TEST -sysDBAUserName sys -sysDBAPassword password123
正在连接到数据库
4% 已完成
9% 已完成
14% 已完成
19% 已完成
23% 已完成
28% 已完成
47% 已完成
正在更新网络配置文件
48% 已完成
52% 已完成
正在删除实例和数据文件
76% 已完成
100% 已完成
有关详细信息, 请参阅日志文件 "/app/oracle/cfgtoollogs/dbca/TEST.log"。
下面是摘抄自网络的一些dbca命令,以做备忘记录:
https://www.cnblogs.com/zfox2017/p/7802871.html
通过模板来创建数据库
[oracle@jyrac1 ~]$ dbca -silent -createDatabase -templateName General_Purpose.dbc -gdbname ora11g -sid ora11g -responseFile NO_VALUE -characterSet AL32UTF8 -memoryPercentage 30 -emConfiguration LOCAL
以silent方式来删除数据库
[oracle@jyrac1 ~]$ dbca -silent -deleteDatabase -sourceDB ora11g -sysDBAUserName sys -sysDBAPassword zzh_2046
使用现有数据库jycs来创建模板
[oracle@jyrac1 ~]$ dbca -silent -createTemplateFromDB -sourceDB jycs -templateName jycstemplate -sysDBAUserName sys -sysDBAPassword zzh_2046
使用现有数据库jycs创建带数据文件的模板
[oracle@jyrac1 ~]$ dbca -silent -createCloneTemplate -sourceDB jycs -templateName jycsCloneTemplate -sysDBAUserName sys -sysDBAPassword zzh_2046 -datafileJarLocation /u01/app/oracle/11.2.0/db/assistants/dbca/templates
利用带数据文件的模板jycsCloneTemplate生成克隆数据库
[oracle@jyrac1 ~]$ dbca -silent -createDatabase -templateName jycsCloneTemplate.dbc -gdbName test -sid test -datafileJarLocation /u01/app/oracle/11.2.0/db/assistants/dbca/templates -datafileDestination /u01/app/oracle/oradata -responseFile NO_VALUE -characterset ZHS16GBK
利用不带数据文件的模板生成新的数据库
[oracle@jyrac1 ~]$ dbca -silent -createDatabase -templateName New_Database.dbt -gdbname jytest -sid jytest -datafileDestination /u01/app/oracle/oradata -responseFile NO_VALUE -characterset ZHS16GBK
使用response文件创建数据库
待后续整理