DBCA静默建库中的两个小问题 (r9笔记第28天)
创建数据库,主要有手工建库,DBCA建库,OMF建库。手工建库会重新初始化数据字典,过程相对比较耗时,但是完全定制化;OMF建库的场景比较特别, 一般都是糅合在ASM中使用;DBCA图形化建库使用场景受限较大,其实DBCA还有另外一种快捷的方式就是DBCA静默建库,整个过程分分钟即可搞定。
如果说想简单使用,可以参考下面的例子,比如我们创建数据库为testdb,字符集为ZHS16GBK,命令如下:
dbca -silent -createDatabase -templateName $ORACLE_HOME/assistants/dbca/templates/General_Purpose.dbc -gdbname testdb -sid testdb -characterSet ZHS16GBK -nationalCharacterSet AL16UTF16
看起来简单的命令使用范围比较有限,其实还可以定制更多的选项,比如下面的一个例子,指定redo为200M,指定安装EM,指定数据库类型为OLTP,使用ASM
dbca -silent -createDatabase
-templateName $ORACLE_HOME/assistants/dbca/templates/General_Purpose.dbc -gdbNametestbi
-sidtestbi -sysPassword oracle -systemPassword oracle
-emConfiguration ALL
-dbsnmpPassword oracle
-sysmanPassword oracle
-hostUserName oracle -hostUserPassword oracle
-disableSecurityConfiguration ALL
-datafileDestination 'DATA01'
-redoLogFileSize 200
-storageType ASM -asmsnmpPassword‘oracle' -diskGroupName 'DATA01'
-characterSet UTF8 -nationalCharacterSet AL16UTF16
-totalMemory 20000 -memoryPercentage 20
-databaseType OLTP
对这个命令使用游刃有余,建库的时候就会很轻松。不过今天的重点是两个小问题。
第一个问题是手工建库失败报错,信息如下:
[oracle@testdb dbs]$ dbca -silent -createDatabase -templateName $ORACLE_HOME/assistants/dbca/templates/General_Purpose.dbc -gdbname testdb -sid testdb -characterSet ZHS16GBK -nationalCharacterSet AL16UTF16 -sysPassword oracle -systemPassword oracle -redoLogFileSize 500
Copying database files
100% complete
Look at the log file "/U01/app/oracle/cfgtoollogs/dbca/testdb/testdb2.log" for further details.
日志信息如下:
[oracle@testdb dbs]$ less /U01/app/oracle/cfgtoollogs/dbca/testdb/testdb2.log
Copying database files
TNS-04404: no error
caused by: oracle.net.config.ConfigException: TNS-04414: File error
caused by: TNS-04612: Null RHS for "testdb"
DBCA_PROGRESS : 100%
看这个日志似乎也看不出什么端倪来,其实可以到这个目录下,看看其它相关的日志。目录下有个日志叫trace.log里面的信息非常详细,可以作为我们分析问题的入口。
可以看到报错前会这样的日志信息:
[Thread-24] [ 2016-06-12 15:50:30.820 CST ] [NetworkUtils.getLocalListenerAddresses:1310] listener[4]=LISTENER_1522 address=(ADDRES
S=(PROTOCOL=TCP)(HOST=testdb.oracle.com)(PORT=1522))
[Thread-24] [ 2016-06-12 15:50:30.820 CST ] [NetworkUtils.addLocalListenerEntry:1380] addLocalListenerEntry addresses[0]=(ADDRESS=(
PROTOCOL=TCP)(HOST=testdb.oracle.com)(PORT=1521))
[Thread-24] [ 2016-06-12 15:50:30.820 CST ] [NetworkUtils.addLocalListenerEntry:1380] addLocalListenerEntry addresses[1]=(ADDRESS=(
PROTOCOL=TCP)(HOST=testdb.oracle.com)(PORT=1528))
[Thread-24] [ 2016-06-12 15:50:30.820 CST ] [NetworkUtils.addLocalListenerEntry:1380] addLocalListenerEntry addresses[2]=(ADDRESS=(
PROTOCOL=TCP)(HOST=testdb.oracle.com)(PORT=1525))
[Thread-24] [ 2016-06-12 15:50:30.820 CST ] [NetworkUtils.addLocalListenerEntry:1380] addLocalListenerEntry addresses[3]=(ADDRESS=(
PROTOCOL=TCP)(HOST=testdb.oracle.com)(PORT=1523))
很明显这是配置的多端口监听器。我们暂时把listener.ora改个名字,建库就很顺利了。
通过这个小例子也可以看出,我们在拷贝一套环境的时候还是需要注意网络的设置,如果默认存在,建库时还是会参考这些配置,会或多或少产生一些影响。
问题2:我在一台服务器上创建数据库,速度非常快,几秒钟就完成了。看日志没有任何异常,输出都很完成,进度显示也很全。
[oracle@BJ-4-31 ~]$ dbca -silent -createDatabase -templateName $ORACLE_HOME/assistants/dbca/templates/General_Purpose.dbc -gdbname accdb1 -sid accdb1 -characterSet ZHS16GBK -nationalCharacterSet AL16UTF16 -sysPassword oracle -systemPassword oracle -redoLogFileSize 500
Copying database files
1% complete
2% complete
4% complete
37% complete
Creating and starting Oracle instance
38% complete
40% complete
45% complete
50% complete
51% complete
56% complete
57% complete
61% complete
62% complete
Completing Database Creation
66% complete
70% complete
73% complete
74% complete
85% complete
86% complete
98% complete
100% complete
Look at the log file "/U01/app/oracle/cfgtoollogs/dbca/accdb1/accdb1.log" for further details.
使用sqlplus登录的显示却有些奇怪,而且查看数据目录下,没有生成任何的文件。唯一的文件就是/etc/oratab的记录了。
[oracle@BJ-4-31 ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Sun Jun 12 16:32:18 2016
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected.
SQL> exit
所以这个问题看起来真是纠结。
而问题的原因也很明显,就是/etc/hosts中的记录不全,只需补充主机IP的信息即可。
添加一条主机IP和主机名的映射,比如
10.11.1.2 testdb.oracle.com
当然回过头来,原因都是一些很零散的小问题,但是不重视,在紧急情况下,这就是大问题。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python Networkx基础知识及使用总结
- AkShare-沪深港通持股-个股排行
- Python SQLite常见异常及解决办法
- IPC—进程间通信的基础概念
- Python Django开发 经验技巧总结(一)
- Python SQLite 基本操作和经验技巧(二)
- AkShare-股票数据-主要股东
- 进程间通信的方式(1)
- Python Django开发 经验技巧总结(二)
- 进程间通信的方式(2)
- AkShare-股票数据-机构持股
- View的滑动方式 详细介绍
- AkShare-期货数据-分时数据
- Python 爬取留言板留言(三):多进程版+selenium模拟
- View事件分发、滑动冲突 详解