关于create database语句在10g,11g中的不同(r5笔记第88天)

最近抽空练习了下手工建库,在10g的时候基本都在20分钟搞定,在11g中其实还可以更快,因为10g中需要配置的admin目录,需要创建bdump,udump之类的目录等等,在11g都被adr给默认替代了,只要提供了$ORACLE_BASE,就会默认在$ORACLE_BASE下生成对应的目录结构。 其它步骤完全可以按照10g的脚本来使用,没有任何问题,但是如果反过来,在11g里使用的一些语句在10g中可能会有一些问题,这一点也是在今天的测试中发现的一个小细节。 首先我在11g的库中创建了一个数据库实例,使用create database来完成,创建语句类似下面的形式。

CREATE DATABASE mynewdb
   USER SYS IDENTIFIED BY sys_password USER SYSTEM IDENTIFIED BY system_password 
LOGFILE GROUP 1 ('/u01/logs/my/redo01a.log','/u02/logs/my/redo01b.log') SIZE 100M BLOCKSIZE 512,
           GROUP 2 ('/u01/logs/my/redo02a.log','/u02/logs/my/redo02b.log') SIZE 100M BLOCKSIZE 512,
           GROUP 3 ('/u01/logs/my/redo03a.log','/u02/logs/my/redo03b.log') SIZE 100M BLOCKSIZE 512
   MAXLOGFILES 5
   MAXLOGMEMBERS 5
   MAXLOGHISTORY 1
   MAXDATAFILES 100
   CHARACTER SET AL32UTF8
   NATIONAL CHARACTER SET AL16UTF16
   EXTENT MANAGEMENT LOCAL
   DATAFILE '/u01/app/oracle/oradata/mynewdb/system01.dbf' SIZE 325M REUSE
   SYSAUX DATAFILE '/u01/app/oracle/oradata/mynewdb/sysaux01.dbf' SIZE 325M REUSE
   DEFAULT TABLESPACE users
      DATAFILE '/u01/app/oracle/oradata/mynewdb/users01.dbf'
      SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
   DEFAULT TEMPORARY TABLESPACE tempts1
      TEMPFILE '/u01/app/oracle/oradata/mynewdb/temp01.dbf'
      SIZE 20M REUSE
   UNDO TABLESPACE undotbs
      DATAFILE '/u01/app/oracle/oradata/mynewdb/undotbs01.dbf'
      SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;

这个语句基本不用修改太多的地方,基本就是文件的路径,结构部分不用做任何修改。 11g的实例很快就创建完成了。然后就想直接引用这个现成的脚本,简单修改一下路径,数据库实例名,在10g的环境中创建一个数据库实例。 但是却报出了下面的错误。

SQL> @createdb.sql
   LOGFILE GROUP 1 ('/u02/oracle/oradata/TEST10G/disk1/redo01a.log','/u02/oracle/oradata/TEST10G/disk2/redo01b.log') SIZE 100M BLOCKSIZE 512,
                                                                                                                               *
ERROR at line 4:
ORA-02165: invalid option for CREATE DATABASE

对于这个错误自己还是很疑惑,不知道是哪儿出了问题,开始以为是做路径替换的时候出了问题,排除了乱码等的影响。最后发现语句实在没有其它的问题了。 这个时候把10g的创建语句拿出来比较一下,发现有3处不同之处。

CREATE DATABASE mynewdb
   USER SYS IDENTIFIED BY pz6r58
   USER SYSTEM IDENTIFIED BY y1tz5p
 LOGFILE GROUP 1 ('/u01/oracle/oradata/mynewdb/redo01.log') SIZE 100M,
           GROUP 2 ('/u01/oracle/oradata/mynewdb/redo02.log') SIZE 100M,
           GROUP 3 ('/u01/oracle/oradata/mynewdb/redo03.log') SIZE 100M
   MAXLOGFILES 5
   MAXLOGMEMBERS 5
   MAXLOGHISTORY 1
   MAXDATAFILES 100
   MAXINSTANCES 1
   CHARACTER SET US7ASCII
   NATIONAL CHARACTER SET AL16UTF16
   DATAFILE '/u01/oracle/oradata/mynewdb/system01.dbf' SIZE 325M REUSE
   EXTENT MANAGEMENT LOCAL
   SYSAUX DATAFILE '/u01/oracle/oradata/mynewdb/sysaux01.dbf' SIZE 325M REUSE
   DEFAULT TABLESPACE tbs_1
   DEFAULT TEMPORARY TABLESPACE tempts1
      TEMPFILE '/u01/oracle/oradata/mynewdb/temp01.dbf' 
      SIZE 20M REUSE
   UNDO TABLESPACE undotbs 
      DATAFILE '/u01/oracle/oradata/mynewdb/undotbs01.dbf'
      SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;

第一处是关于redo日志组的设置,10g中默认配置一组日志中只有一个日志成员。在11g中是默认有2个 第二个不同之处是在10g中有一个配置MAXINSTANCES,在11g中缺没有,因为是单实例数据库,是在找不出理由是这个地方的不同引起的问题。 第三个问题就更加明显了,在10g中 只有一句default tablespace tbs_1 然后没有定义明细的信息,这个语句是不能运行的,还需要手工去补充,在11g中,语句已经补充完整了。只需要简单的根据自己的需求需要一下就可以了。 所以第二个第三个问题是很明显的,应该不是问题的原因,那么我们看看第一处不同,还有什么地方有可能会导出语句出问题。 11g中这样定义的

LOGFILE GROUP 1 ('/u01/logs/my/redo01a.log','/u02/logs/my/redo01b.log') SIZE 100M BLOCKSIZE 512,

10g中是这样定义的 LOGFILE GROUP 1 ('/u01/oracle/oradata/mynewdb/redo01.log') SIZE 100M, 除了日志成员的不同外,还有一个地方就是blocksize的不同了,在10g中没有blocksize的字样。 带着试试看的态度把blocksize去掉,然后再次运行语句,语句就运行成功了。 问题解决了,我们来看看blocksize是什么东东。 这个值是在数据库的源代码中固定的,与操作系统相关,默认的值为512. 在不同的os中可能会有所不同。 查看blocksize的配置,可以使用基表。 这个Log size可以从Oracle的内部视图中获得:

SQL> select max(lebsz) from x$kccle; MAX(LEBSZ) ---------- 512

所以可见在10g,11g的很多细节之处还是会存在一定的差距,11g中也在不断的进行改进。

原文发布于微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文发表时间:2015-07-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏LanceToBigData

MySQL(三)之SQL语句分类、基本操作、三大范式

一、SQL语句的分类   DML(Data Manipulation Langauge,数据操纵/管理语言) (insert,delete,update,se...

30450
来自专栏.NET开发者社区

一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](八)

前言 Hi, 大家好,还是星期五,还是Rector,又在图享网准时和大家见面了。 今天给大家带来系列教程《一步一步创建ASP.NET MVC5程序[Reposi...

52460
来自专栏Spark学习技巧

实战phoenix

一 安装部署 1, 下载 http://archive.apache.org/dist/phoenix/ 本文下载的是apache-phoenix-4.12....

428100
来自专栏哲学驱动设计

Rafy 框架 - 使用 SqlTree 查询

本文介绍如何使用 Rafy 框架中的 Sql Tree 查询: 除了开发者常用的 Linq 查询,Rafy 框架还提供了 Sql 语法树的方式来进行查询。 这种...

22370
来自专栏听Allen瞎扯淡

Fetch Size 与 JDBC 内存管理

接触到 JDBC 的 Fetch Size 这个属性缘起一个性能问题,项目中需要将一个有千万级数据量的表中的记录导出到文件中去。按照正常的路数,先初始化连接;接...

28620
来自专栏DeveWork

WordPress主题下funtions.php的一段“恶意”代码

不多说了,相信有很多WordPresser都知道这段在WordPress主题下fountions.php的“恶意”代码,之所以为“恶意”加个双引号是想说:其实也...

324100
来自专栏沃趣科技

事件统计 | performance_schema全方位介绍

在上一篇 《事件记录 | performance_schema全方位介绍"》中,我们详细介绍了performance_schema的事件记录表,恭喜大家在学习p...

25230
来自专栏偏前端工程师的驿站

MyBatis魔法堂:Insert操作详解(返回主键、批量插入)

一、前言                                      数据库操作怎能少了INSERT操作呢?下面记录MyBatis关于INSERT...

1.2K80
来自专栏岑玉海

Hive Tunning(二)优化存储

接着上一章我们讲的hive的连接策略,现在我们讲一下hive的数据存储。 下面是hive支持的数据存储格式,有我们常见的文本,JSON,XML,这里我们主要...

43140
来自专栏清风

原创哈希数据导出算法 原

16470

扫码关注云+社区

领取腾讯云代金券