语法中的可选项顺序写反造成的 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;

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

目录
相关文章
|
存储 XML 网络协议
|
5月前
|
存储 安全 数据库
抖音封号能注销吗?请问
一、封号与注销的底层逻辑关系 账号状态机模型
|
9月前
|
Shell 数据库
【YashanDB知识库】YAS-00402 failed to connect socket, errno 111, error message "Connection refused"
【YashanDB知识库】YAS-00402 failed to connect socket, errno 111, error message "Connection refused"
【YashanDB知识库】YAS-00402 failed to connect socket, errno 111, error message "Connection refused"
|
10月前
|
人工智能 云计算 数据中心
阿里云当选UALink联盟董事会成员,推进新一代GPU互连技术!
阿里云当选UALink联盟董事会成员,推进新一代GPU互连技术!
490 2
|
存储 内存技术
内存条RAM详细指南
内存条(RAM)是电脑中用于临时存储数据和程序的部件,CPU依赖它执行操作。内存条经历了从主内存扩展到读写内存整体的发展,常见类型包括SDRAM和DDR SDRAM。内存容量、存取时间和奇偶校验是衡量其性能的关键指标。在选购时,应考虑类型、容量、速度和品牌,知名品牌的内存条提供更好的可靠性和稳定性。
5207 2
|
缓存 算法 固态存储
VSAN数据恢复——开启重删压缩的全闪存VSAN下虚拟机数据恢复案例
VMware VSAN超融合架构,11台服务器节点。每台服务器节点上创建1个磁盘组,磁盘组包括1块PCIe固态硬盘(作为缓存盘)和8-10块SSD(作为数据盘),组成VSAN存储空间来存放虚拟机文件。启用了去重和压缩功能。 一台服务器节点上的一块PCIE缓存盘出现故障,导致VSAN逻辑架构问题。2台虚拟机磁盘组件出现问题,虚拟机无法正常使用。
|
机器学习/深度学习 人工智能 自然语言处理
耳朵没错,是声音太真了,字节豆包语音合成成果Seed-TTS技术揭秘
【7月更文挑战第5天】字节跳动的Seed-TTS技术在语音合成领域实现重大突破,生成的语音与真人难辨真假。基于深度学习的模型能模拟多种情感、口音,适用于智能客服、有声读物等场景。尽管面临计算资源需求大、个别情况合成质量不稳及潜在伦理问题,该技术仍标志着语音合成的新高度。[论文链接](https://arxiv.org/abs/2406.02430)**
863 1
|
Linux Ubuntu 网络安全
Linux 命令学习之dpkg命令详解
<p>dpkg是一个Debian的一个命令行工具,它可以用来安装、删除、构建和管理Debian的软件包。<br> 下面是它的一些命令解释:<br> 1)安装软件<br> 命令行:dpkg -i &lt;.deb file name&gt;<br> 示例:dpkg -i avg71flm_r28-1_i386.deb<br> 2)安装一个目录下面所有的软件包<br> 命令行:dp
4249 0
|
消息中间件 Serverless 网络性能优化
消息队列 MQ产品使用合集之客户端和服务器之间的保活心跳检测间隔是怎么设置的
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
存储 人工智能 弹性计算
【Hello AI】集群极速部署工具FastGPU
FastGPU是一套阿里云推出的人工智能计算极速部署工具。您可以通过其提供的便捷的接口和自动工具,实现人工智能训练和推理任务在阿里云IaaS资源上的快速部署。本文主要分为产品介绍、组成模块、典型流程这几个部分进行讲解。