Oracle-使用DBCA silent模式创建数据库

简介: Oracle 21C使用DBCA silent创建数据库

      DBA和后台开发人员偶尔会遇到要重建数据库的情况,大多数情况下,可以使用DBCA配置助手,以交互式方式,在图形界面中完成。但是在有些特殊的情况下,Oracle数据库服务器上没有安装图形界面,临时安装图形界面有比较困难或费时。这时该怎么办?

      遇到这种情况,有经验的DBA可以通过create database 命令创建,这种方式步骤比较繁琐,需要理解大量的创建参数,需要对Oracle数据库有比较深入的了解,有没有其它办法可以在命令行模式下重建数据库?

     Oracle 的DBCA提供了-silent(沉默)运行模式,使用这种模式创建数据库,不需要数据库服务器支持图形界面,步骤也相对简单一些,只需要编辑一个响应文件,然后运行DBCA命令。

1 环境准备

      使用DBCA创建数据库前,需要做一下准备,获取响应文件的模板,搜集一下响应文件需要的信息。

      DBCA命令位于数据库ORACLE_HOME目录下bin目录中,一般这个目录会在shell变量的PATH路径中,可以直接运行这个命令,不需要切换到ORACLE_HOME目录下bin目录运行。

      响应文件模板可以从网上找一个下载下来,也可以使用Oracle安装包中的响应文件模板。Oracle数据库安装完成后默认也安装了dbca的响应文件模板,这个模板在下面的目录中。

   

[oracle@iZ2ze0t8khaprrpfvmevjiZ dbca]$ pwd/opt/oracle/product/21c/dbhome_1/assistants/dbca


     这个目录中有一个响应文件的样本,可以根据自己的需要修改。要想启动dbca命令,虽然是命令行模式,也需要设置操作系统环境变量DISPLAY,可以设置成下面的值

[oracle@iZ2ze0t8khaprrpfvmevjiZ ~]$ exportDISPLAY=.0:0

       运行DBCA另一个要注意的是服务器etc目录下hosts文件中主机名不能解析为本地环回地址,否则,命令运行会报错,这个好像与java有关。

2 编辑响应文件

      DBCA的响应文件中大部分参数都是不是强制的,可以采用默认设置如下图所示:

[oracle@iZ2ze0t8khaprrpfvmevjiZ dbca]$ grep"# Mandatory     : NO" dbca.rsp -A2# Mandatory     : NO#-----------------------------------------------------------------------------characterSet=--# Mandatory     : NO#-----------------------------------------------------------------------------listeners=--# Mandatory     : NO#-----------------------------------------------------------------------------variablesFile=--# Mandatory     : NO#-----------------------------------------------------------------------------variables=--# Mandatory     : NO#-----------------------------------------------------------------------------initParams=--# Mandatory     : NO#-----------------------------------------------------------------------------memoryPercentage=--# Mandatory     : NO#-----------------------------------------------------------------------------databaseType=--# Mandatory     : NO#-----------------------------------------------------------------------------automaticMemoryManagement=--# Mandatory     : NO#-----------------------------------------------------------------------------totalMemory=[oracle@iZ2ze0t8khaprrpfvmevjiZ dbca]$ grep"# Mandatory     : YES" dbca.rsp -A2# Mandatory     : YES, if the value of registerWithDirService is TRUE#-----------------------------------------------------------------------------dirServiceUserName=--# Mandatory     : YES, if the value of registerWithDirService is TRUE#-----------------------------------------------------------------------------dirServicePassword=--# Mandatory     : YES, if the value of registerWithDirService is TRUE#-----------------------------------------------------------------------------walletPassword=[oracle@iZ2ze0t8khaprrpfvmevjiZ dbca]$ grep"# Mandatory     : NO" dbca.rsp -A2# Mandatory     : NO#-----------------------------------------------------------------------------characterSet=--# Mandatory     : NO#-----------------------------------------------------------------------------listeners=--# Mandatory     : NO#-----------------------------------------------------------------------------variablesFile=--# Mandatory     : NO#-----------------------------------------------------------------------------variables=--# Mandatory     : NO#-----------------------------------------------------------------------------initParams=--# Mandatory     : NO#-----------------------------------------------------------------------------memoryPercentage=--# Mandatory     : NO#-----------------------------------------------------------------------------databaseType=--# Mandatory     : NO#-----------------------------------------------------------------------------automaticMemoryManagement=--# Mandatory     : NO#-----------------------------------------------------------------------------totalMemory=

     在选择某些项后会有一些强制的选项

[oracle@iZ2ze0t8khaprrpfvmevjiZ dbca]$ grep"# Mandatory     : YES" dbca.rsp -A2# Mandatory     : YES, if the value of registerWithDirService is TRUE#-----------------------------------------------------------------------------dirServiceUserName=--# Mandatory     : YES, if the value of registerWithDirService is TRUE#-----------------------------------------------------------------------------dirServicePassword=--# Mandatory     : YES, if the value of registerWithDirService is TRUE#-----------------------------------------------------------------------------walletPassword=

        在创建数据库,大部分情况下要支持中文,不能采用默认的字符集,数据文件的存放目录通常也不会采用默认的设置,本次创建数据库用的响应文件是下面这个

responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v21.0.0gdbName=orcl
sid=orcl
sysPassword=sys123
systemPassword=sys123
emExpressPort=5500templateName=/opt/oracle/product/21c/dbhome_1/assistants/dbca/templates/General_Purpose.dbccharacterSet=AL32UTF8

     可以看到这个响应文件很简单,这个响应文件中,第一行是强制的,不能更改,templateName也是必须的,如果没有,创建数据库的过程中会报错退出。

3 创建数据库

      有了响应文件,就可以创建数据库了

[oracle@iZ2ze0t8khaprrpfvmevjiZ ~]$ dbca-silent-createDatabase-responseFile ./dbca.rsp
      [WARNING] [DBT-06208] The 'SYS' password entered does not conform to the Oracle recommended standards.
         CAUSE:
      a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
      b.The password entered is a keyword that Oracle does not recommend to be used as password
         ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
      [WARNING] [DBT-06208] The 'SYSTEM' password entered does not conform to the Oracle recommended standards.
         CAUSE:
      a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
      b.The password entered is a keyword that Oracle does not recommend to be used as password
         ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
      Prepare for db operation
10% complete
      Copying database files
40% complete
      Creating and starting Oracle instance
42% complete
46% complete
52% complete
56% complete
60% complete
      Completing Database Creation
66% complete
      Executing Post Configuration Actions
100% complete
      Database creation complete. For details check the logfiles at:
                /opt/oracle/cfgtoollogs/dbca/ORCL.

     数据库创建成功了,创建过程中的日志存储在/opt/oracle/cfgtoollogs/dbca/ORCL目录中。

4 创建数据库后的工作

4.1 登录数据库查看可插拔数据库信息

SQL> show pdbs;          CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------2 PDB$SEED                       READ WRITE YES

    可以看到,dbca没有创建可插拔数据库,这个和响应文件的默认值有关

# Name          : numberOfPDBs
# Datatype      : Number
# Description   : Specify the number of pdb to be created
# Valid values:0 to 4094# Default value :0--numberOfPDBs=#-----------------------------------------------------------------------------# Name          : pdbName
# Datatype      : String
# Description   : Specify the pdbname/pdbanme prefix if one or more pdb need to be created
# Valid values: Check Oracle21c Administrator's Guide# Default value : None--pdbName=

       从上面响应文件的部分内容可以看出,默认的pdb数量是0.也就是不创建可插拔数据库。

4.2 创建可插拔数据库

      创建可插拔数据库之前,需要创建可插拔数据库数据文件的目录,

SQL>! mkdir /opt/oracle/oradata/ORCL/pdb1
SQL>! ls -ld /opt/oracle/oradata/ORCL/pdb1
     drwxr-xr-x 2 oracle oinstall 6 Aug 1909:09/opt/oracle/oradata/ORCL/pdb1

      使用下面命令创建可插拔数据库,这个命令应在根容器数据库中运行

SQL>create pluggable database pdb1 admin user pdb1_admin identified by oracle roles=(connect)     file_name_convert=('/opt/oracle/oradata/ORCL/pdbseed','/opt/oracle/oradata/ORCL/pdb1');     Pluggable database created.

     创建完毕后查看启动创建的pdb

SQL> show pdbs;         CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------2 PDB$SEED                       READ WRITE YES
3 PDB1                           MOUNTED
SQL>alter pluggable database PDB1 open;      Pluggable database altered.
SQL> show pdbs;          CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------2 PDB$SEED                       READ WRITE YES
3 PDB1                           READ WRITE NO

     切换当前容易的会话为pdb1,创建表空间和用户,给用户授权

SQL>alter session set container=PDB1;     Session altered.
--查看一下pdb1的数据文件SQL>select file_name from dba_data_files;     FILE_NAME
--------------------------------------------------------------------------------/opt/oracle/oradata/ORCL/pdb1/undotbs01.dbf/opt/oracle/oradata/ORCL/pdb1/sysaux01.dbf/opt/oracle/oradata/ORCL/pdb1/system01.dbf--创建一个表空间SQL>create tablespace tbs_test datafile '/opt/oracle/oradata/ORCL/pdb1/test01.dbf' size 100M;     Tablespace created.
--创建用户,默认表空间设置为刚在创建的表空间       SQL>create user test default tablespace tbs_test identified by"test123";     User created.
--给用户授予资源和连接权限SQL> grant connect,resource to test;     Grant succeeded.

4.3 登录可插拔数据库

查看监听信息

[oracle@iZ2ze0t8khaprrpfvmevjiZ orcl]$ lsnrctl status
     LSNRCTL for Linux: Version 21.0.0.0.0 - Production on 19-AUG-202209:24:31
     Copyright (c) 1991, 2021, Oracle.  All rights reserved.
     Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=iZ2ze0t8khaprrpfvmevjiZ)(PORT=1521)))
     STATUS of the LISTENER
------------------------     Alias                     LISTENER
     Version                   TNSLSNR for Linux: Version 21.0.0.0.0 - Production
     Start Date                17-AUG-202213:40:13
     Uptime                    1 days 19 hr. 44 min. 17 sec
     Trace Level               off
     Security                  ON: Local OS Authentication
     SNMP                      OFF
     Listener Parameter File   /opt/oracle/homes/OraDBHome21cEE/network/admin/listener.ora
     Listener Log File         /opt/oracle/diag/tnslsnr/iZ2ze0t8khaprrpfvmevjiZ/listener/alert/log.xml
     Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=iZ2ze0t8khaprrpfvmevjiZ)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
     Services Summary...
     Service "c8209f27c6b16005e053362ee80ae60e" has 1 instance(s).
       Instance "orcl", status READY, has 1 handler(s) for this service...
     Service "e68ecedbc9564717e053f40b14acf0d9" has 1 instance(s).
       Instance "orcl", status READY, has 1 handler(s) for this service...
     Service "orcl" has 1 instance(s).
       Instance "orcl", status READY, has 1 handler(s) for this service...
     Service "orclXDB" has 1 instance(s).
       Instance "orcl", status READY, has 1 handler(s) for this service...
     Service "pdb1" has 1 instance(s).
       Instance "orcl", status READY, has 1 handler(s) for this service...
     The command completed successfully

Oracle已经创建了pdb1 的服务,用这个服务可以登录到pdb1可插拔数据库.

[oracle@iZ2ze0t8khaprrpfvmevjiZ ~]$ sqlplus test/test123@iZ2ze0t8khaprrpfvmevjiZ/pdb1




相关文章
|
19天前
|
Oracle 关系型数据库 Linux
【赵渝强老师】Oracle数据库配置助手:DBCA
Oracle数据库配置助手(DBCA)是用于创建和配置Oracle数据库的工具,支持图形界面和静默执行模式。本文介绍了使用DBCA在Linux环境下创建数据库的完整步骤,包括选择数据库操作类型、配置存储与网络选项、设置管理密码等,并提供了界面截图与视频讲解,帮助用户快速掌握数据库创建流程。
201 93
|
3月前
|
存储 Oracle 关系型数据库
服务器数据恢复—光纤存储上oracle数据库数据恢复案例
一台光纤服务器存储上有16块FC硬盘,上层部署了Oracle数据库。服务器存储前面板2个硬盘指示灯显示异常,存储映射到linux操作系统上的卷挂载不上,业务中断。 通过storage manager查看存储状态,发现逻辑卷状态失败。再查看物理磁盘状态,发现其中一块盘报告“警告”,硬盘指示灯显示异常的2块盘报告“失败”。 将当前存储的完整日志状态备份下来,解析备份出来的存储日志并获得了关于逻辑卷结构的部分信息。
|
1月前
|
SQL Oracle 关系型数据库
Oracle数据库创建表空间和索引的SQL语法示例
以上SQL语法提供了一种标准方式去组织Oracle数据库内部结构,并且通过合理使用可以显著改善查询速度及整体性能。需要注意,在实际应用过程当中应该根据具体业务需求、系统资源状况以及预期目标去合理规划并调整参数设置以达到最佳效果。
103 8
|
3月前
|
SQL Oracle 关系型数据库
比较MySQL和Oracle数据库系统,特别是在进行分页查询的方法上的不同
两者的性能差异将取决于数据量大小、索引优化、查询设计以及具体版本的数据库服务器。考虑硬件资源、数据库设计和具体需求对于实现优化的分页查询至关重要。开发者和数据库管理员需要根据自身使用的具体数据库系统版本和环境,选择最合适的分页机制,并进行必要的性能调优来满足应用需求。
131 11
|
3月前
|
Oracle 关系型数据库 数据库
数据库数据恢复—服务器异常断电导致Oracle数据库报错的数据恢复案例
Oracle数据库故障: 某公司一台服务器上部署Oracle数据库。服务器意外断电导致数据库报错,报错内容为“system01.dbf需要更多的恢复来保持一致性”。该Oracle数据库没有备份,仅有一些断断续续的归档日志。 Oracle数据库恢复流程: 1、检测数据库故障情况; 2、尝试挂起并修复数据库; 3、解析数据库文件; 4、导出并验证恢复的数据库文件。
|
3月前
|
存储 Oracle 关系型数据库
【赵渝强老师】Oracle RMAN的目录数据库
Oracle RMAN默认将备份元信息存储在控制文件中,但控制文件损坏或丢失会导致恢复失败,且备份增多会使控制文件无限增长。为解决这些问题,Oracle引入了RMAN目录数据库(Catalog Database),专门用于存储RMAN备份的元信息。使用目录数据库可提升备份管理效率,支持多数据库共享、长期备份历史记录存储,并可保存RMAN脚本。本文详细介绍了如何创建目录数据库、注册目标数据库及其操作步骤。
|
6月前
|
Oracle 安全 关系型数据库
【Oracle】使用Navicat Premium连接Oracle数据库两种方法
以上就是两种使用Navicat Premium连接Oracle数据库的方法介绍,希望对你有所帮助!
1189 28
|
4月前
|
存储 Oracle 关系型数据库
oracle数据恢复—oracle数据库执行错误truncate命令的数据恢复案例
oracle数据库误执行truncate命令导致数据丢失是一种常见情况。通常情况下,oracle数据库误操作删除数据只需要通过备份恢复数据即可。也会碰到一些特殊情况,例如数据库备份无法使用或者还原报错等。下面和大家分享一例oracle数据库误执行truncate命令导致数据丢失的数据库数据恢复过程。
|
6月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的闪回数据库
Oracle闪回数据库功能类似于“倒带按钮”,可快速将数据库恢复至 earlier 状态,无需还原备份。本文介绍了闪回数据库的使用方法及实战案例:包括设置归档模式、开启闪回功能、记录SCN号、执行误操作后的恢复步骤等。通过具体 SQL 操作演示了如何利用闪回数据库恢复被误删的用户数据。注意,使用此功能前需确保数据库为归档模式。
169 9

热门文章

最新文章

推荐镜像

更多