语法中的可选项顺序写反造成的 ORA-01970错误

昨天一位网友在看完我曾经录制的《数据库手工备份与克隆》视频后 http://www.boobooke.com/v/bbk1201

发现在做实验的过程当中,创建控制文件的时候出现了一个ORA-01970的错误,后来解决掉但是没有在视频中播放出来。

于是找了一个测试环境,重现一下这个错误。

首先找到一个LINUX服务器,已经存在一个数据库(未使用归档模式,这里只为了重现一下这个错误)。

1.关闭掉这个数据库,把系统表空间拷贝到新建的目录。

2.新建一个初始化参数文件,修改目录地址,控制文件地址。

3.export ORACLE_SID=newdb

4.startup nomount

5.新建控制文件

CREATE CONTROLFILE SET REUSE DATABASE "newdb" NORESETLOGS NOARCHIVELOG MAXLOGFILES 32 MAXLOGMEMBERS 2 MAXDATAFILES 32 MAXINSTANCES 1 MAXLOGHISTORY 449LOGFILE GROUP 1 '/path/oracle/dbs/t_log1.f' SIZE 5M, GROUP 2 '/path/oracle/dbs/t_log2.f' SIZE 5MDATAFILE '/path/oracle/dbs/system01.f'CHARACTER SET UTF8;

6.报出异常

CREATE CONTROLFILE set reuse DATABASE “test” RESETLOGS ARCHIVELOG

*

ERROR at line 1:

ORA-01970: You must specify a database name for CREATE CONTROLFILE

排错:

注意看到SET  REUSE,不注意的话就觉得没有问题,但是看看语法,其实是有顺序的。

CREATE CONTROLFILE [ REUSE ] [ SET ] DATABASE database [ logfile_clause ] { RESETLOGS | NORESETLOGS } [ DATAFILE file_specification [, file_specification ]... ] [ { MAXLOGFILES integer | MAXLOGMEMBERS integer | MAXLOGHISTORY integer | MAXDATAFILES integer | MAXINSTANCES integer | { ARCHIVELOG | NOARCHIVELOG } | FORCE LOGGING } [ MAXLOGFILES integer | MAXLOGMEMBERS integer | MAXLOGHISTORY integer | MAXDATAFILES integer | MAXINSTANCES integer | { ARCHIVELOG | NOARCHIVELOG } | FORCE LOGGING ]... ] [ character_set_clause ] ;

实际上问题就出在REUSE和SET的顺序上

让我们看看解释:

REUSE

Specify 

REUSE

 to indicate that existing control files identified by the initialization parameter 

CONTROL_FILES

can be reused, overwriting any information they may currently contain. If you omit this clause and any of these control files already exists, then Oracle Database returns an error.

SET

Use 

SET

 

DATABASE

 to change the name of the database. The name of a database can be as long as eight bytes.

把SET和REUSE的顺序颠倒就OK了,如果控制文件不存在的话把REUSE去掉也行.

CREATE CONTROLFILE REUSE SET DATABASE "newdb" NORESETLOGS NOARCHIVELOG MAXLOGFILES 32 MAXLOGMEMBERS 2 MAXDATAFILES 32 MAXINSTANCES 1 MAXLOGHISTORY 449LOGFILE GROUP 1 '/path/oracle/dbs/t_log1.f' SIZE 5M, GROUP 2 '/path/oracle/dbs/t_log2.f' SIZE 5MDATAFILE '/path/oracle/dbs/system01.f'CHARACTER SET UTF8;

这个问题告诉我们,语法一定要严谨。

时间: 2024-10-31 19:59:10

语法中的可选项顺序写反造成的 ORA-01970错误的相关文章

搜狗输入法修改文字选项顺序技巧

  小编想打一个"哟"字,却发现开头几个选项都是颜文字,十分不方便. 小编琢磨了一会才发现这些原来都是可以手动修改的. 下面小编就要与大家分享如何修改搜狗输入法中的文字选项顺序. 首先我们右键点击搜狗输入法浮动窗,在弹出的菜单中点击进入到"设置属性": 进入"高级设置"中的"自定义短语设置": 随后点击"直接编辑配置文件"-"确定": 打开配置文件后我们找到"yo"对

嵌入式-单片机程序在裸机状态下还能安逻辑顺序写下来,现在想跑ucos,不知道在任务函数中怎么写了

问题描述 单片机程序在裸机状态下还能安逻辑顺序写下来,现在想跑ucos,不知道在任务函数中怎么写了 一心就想着源程序里的那些信号量,邮箱什么的,怎么给他用上,实际中是不是根本不用考虑他们的,信号量这个东西自己用一个全局变量是不是也能达到同样效果 解决方案 没明白你的意思,使用UCOS的话,根祼机状态下写程序没有什么区别.你在Task任务里面按顺序逻辑写就是了. 解决方案二: ucos里面不是有作者的信号量,之类的东西吗,那我是不是不用考虑哪个呢?我用全局变量代替 解决方案三: 可以用全局变量代替

Microsoft SQL Server 2005 中的 XML 选项

本文介绍 Visual Studio 2005/SQL Server 2005 环境中用于处理 XML 数据的三个选项,包括使用方案以及指导用户在各选项之间进行选择的指南. 一.System.Xml.SQLXML 和 XML 数据类型简介 本节简要介绍 Microsoft SQL Server 2000 中提供的 XML 支持的发展历史,并概要介绍 Microsoft Visual Studio 2005/SQL Server 2005 环境中提供的用于处理 XML 和关系数据的三个选项.这三个

Excel中怎么改变行列顺序

  Excel中怎么改变行列顺序           1.在工作表的列标签上单击选择整行,按住"Shift"键将鼠标指针放置到该行的上边框上拖动鼠标,此时将出现T形虚线框,如图1所示.将该虚线框拖放到需要的位置后释放鼠标,该行将被移动到此位置,行的排列顺序发生改变,如图2所示. 图1 按住"Shift"键拖动行边框 图2 该行放置到指定的位置 2.在工作表中选择整行后按"Ctrl+X"键剪切该行,然后在工作表中选择目标行.在"开始&qu

css样式表中的样式覆盖顺序

原文:css样式表中的样式覆盖顺序 有时候在写CSS的过程中,某些限制总是不起作用,这就涉及了CSS样式覆盖的问题,如下   <!DOCTYPE html> <html lang="en"> <head> <style> #navigator { position: absolute; background-color: red; } .current_bg { background-color: green; } </style&

在ASN.1语法中,怎么知道某个类型是上下文相关的还是通用的?

问题描述 在ASN.1语法中,怎么知道某个类型是上下文相关的还是通用的? 还有在IEC61850的MMS中,Confirmed-RequestPDU :: = SEQUENCE{InvokeID Unsigned32ListOfModifiers SEQUENCE OF Modifier OPTIONALService ConfirmedServiceRequestService-ext [79] Request-Detail OPTIONAL}wireshark抓包对这个结构的编码为02 02

mysql 基础语法中的一些问题

问题描述 mysql 基础语法中的一些问题 select COUNT(*), order.ordersid from order mysql 中哪里错了 为什么select COUNT(*) from order:和select order.ordersid from order:都对 还有我之前使用oracle 并没有在每个表名上加两个小点并且没有问题为什么mysql必须加点 还有oracle中select o.a oa,o.b ob from order o;没有问题,可是mysql报错,我

ThinkPad笔记本电脑引导列表中无光驱选项解决办法

常见引导设备在BIOS中的呈现样式: CD/DVD.SATA ODD.ATAPI CD.CD-ROM Drive等表示光驱设备SATA HDD.ATA HDD.Hard Drive等表示硬盘设备ATA SSD表示固态硬盘设备USB CD-ROM表示外接USB光驱引导,需要在开机前连接好,否则无法识别USB FDD.USB HDD.USB ZIP表示外接USB设备引导,需要在开机前连接好,否则无法识别Removable Devices也表示外接USB设备引导,需要在开机前连接好,否则无法识别PCI

Linux: 介绍make menuconfig中的每个选项含义【转】

转自:http://blog.csdn.net/gaoyuanlinkconcept/article/details/8810468 介绍make menuconfig中的每个选项含义 Linux 2.6.19.x 内核编译配置选项简介作者:金步国 版权声明本文作者是一位自由软件爱好者,所以本文虽然不是软件,但是本着 GPL 的精神发布.任何人都可以自由使用.转载.复制和再分发,但必须保留作者署名,亦不得对声明中的任何条款作任何形式的修改,也不得附加任何其它条件.您可以自由链接.下载.传播此文档