首页 > 数据库 >ORA-01501: CREATE DATABASE 失败ORA-01100: 数据库已装载(已解决)

ORA-01501: CREATE DATABASE 失败ORA-01100: 数据库已装载(已解决)

时间:2023-09-05 14:34:06浏览次数:47  
标签:01501 CDB 01100 数据库 区别 PDB ORA

相信可能有很多用oracle数据库做项目数据库的同学们都多多少少有遇到这个错误。上网搜索的时候,大部分的答案都是需要在建库时加前缀“C##”,或者是修改可插拔数据库PDB的状态等。这些答案可能解决了大多数人的问题,但像我们本身使用多种类型数据库的人来说,习惯就容易让我们与正确答案迷失方向。

首先我遇到这个问题的起始需求是:建一个数据库。

使用的语句是:Create database KG;

ORA-01501: CREATE DATABASE 失败ORA-01100: 数据库已装载(已解决)_数据库

获得的结果:

ORA-01501: CREATE DATABASE 失败

ORA-01100: 数据库已装载

后来我分析了一下为什么会产生这个错误,按理来说,这个建库语句是没有语法问题的,后来我便从错误代码ORA-01501开始分析,发现很多人出现了这个问题。比较大众的说法是oracle自12C版本开始后 ,有了PDB和CDB的概念,也就是多租户模式概念,从oracle的官网也可以得知这个概念。简洁的来说,CDB和PDB之间的关系可以类比于操作系统中的容器和应用程序的关系。CDB就像一个操作系统,可以容纳多个PDB,每个PDB就像一个独立的应用程序,可以在CDB中运行、管理和维护。oracle12C后的版本为了支持多租户的架构,引入了“C##”前缀创建用户,用以区别普通用户与容器数据库的区别~为什么是“c##”的格式,还因为在Oracle 12C之前,用户的名称必须以字母开头,并且不能以"#"字符开头。所以也有这个原因。

解决方案:可以直接用创建用户的方式创建数据库。

For example:create user c##GZTEST02;

ORA-01501: CREATE DATABASE 失败ORA-01100: 数据库已装载(已解决)_数据库_02

试试能不能正常建表:

ORA-01501: CREATE DATABASE 失败ORA-01100: 数据库已装载(已解决)_数据库_03

ORA-01501: CREATE DATABASE 失败ORA-01100: 数据库已装载(已解决)_数据库_04

可以啦~问题正常解决。在这里,建立了一个公共用户相当于建立了一个数据库~我觉得这样好理解。至于PDB和PDB的区别和一些查询权限等的区别,有兴趣的同学可以留言~我出一期比较精细的,或者后期放在后台自取PDF。

当然,个人系统差异原因,不是所有的都是这个原因,只能作为参考。

我觉得解决问题比较主要的还是对概念的理解:

  1. oracle12C和之前版本的区别 (PDB 和 CDB 的区别)c##
  2. 建表语句的习惯 create database xxx 变更为 create user ***

我的公众号是 : 会用数据库  会经常发表一些关于数据库bug解决 及 理论实践的文章 如果这篇文章能帮到你 欢迎关注我的公众号噢!!谢谢

标签:01501,CDB,01100,数据库,区别,PDB,ORA
From: https://blog.51cto.com/u_16248023/7372006

相关文章

  • Java JDK安装 - OracleJDK(CentOS 7 + OracleJDK 8u201)
    Linux系统-部署-运维系列导航 关于JVM、JRE与JDK  1.JVM(JavaVirtualMechinal)Java虚拟机,是整个java实现跨平台的最核心的部分,负责解释执行字节码文件,是可运行java字节码文件的虚拟计算机。当使用Java编译器编译Java程序时,生成的是与平台无关的字节码,这些字节码只......
  • Oracle报 ORA-00054资源正忙的解决办法
    只需三步:第一步:selectsession_idfromv$locked_object;第二步:SELECTsid,serial#,username,osuserFROMv$sessionwheresid=967;第三步:ALTERSYSTEMKILLSESSION'967,59523';其他问题:1.查询数据库中的锁select*fromv$lock;select*fromv$lockwhereblock=1;2......
  • 20230522 java.time.temporal.TemporalField
    介绍java.time.temporal.TemporalFieldpublicinterfaceTemporalField时间域Afieldofdate-time,suchasmonth-of-yearorminute-of-hour日期和时间使用域来表示,这些域将时间线划分为对人类有意义的内容。此接口的实现代表这些域。最常用的单位在ChronoField中定义......
  • 20230522 java.time.temporal.TemporalAccessor
    介绍java.time.temporal.TemporalAccessorpublicinterfaceTemporalAccessor时间访问器定义对时间对象的只读访问,例如日期、时间、偏移量或组合日期、时间和偏移量对象的基本接口类型大多数日期和时间信息都可以表示为数字。这些是使用TemporalField建模的,其中使用long......
  • 20230522 java.time.temporal.Temporal
    介绍java.time.temporal.TemporalpublicinterfaceTemporalextendsTemporalAccessor时间定义对时间对象的读写访问的框架级接口日期、时间和偏移量对象的基本接口类型,可以使用进行修改操作APIisSupportedbooleanisSupported(TemporalUnitunit);minusplusunt......
  • oracle建立账号赋予权限
    --建立账号createuser账号identifiedby密码--赋予连接数据库的权限grantconnectto账号--赋予查看视图的权限,也包含形成视图的表GRANTSELECTON视图TO账号  CREATESESSION--建立会话RESOURCE角色:--是授予开发人员的CREATECLUSTER--......
  • win2016系统php7.4安装oracle oci8扩展
    查看php版本,判断操作系统是否64位;phpinfo();判断PHP是否TS查看ThreadSafety的值,如果是disabled就是NTS,否则是TS,下载的时候要区分;下载扩展oci82.2.0forWindows:https://pecl.php.net/package/oci8/2.2.0/windows下载并解压,把php_oci8.dll,php_oci8_11g.dll,php_oci8_12c......
  • Caused by: java.sql.SQLSyntaxErrorException: ORA-00923: 未找到要求的 FROM 关键字
    最终是,查询条件,入参为null,所导致。JDBCgetParameterTypecallfailed-usingfallbackmethodinsteadRA-00923:FROMkeywordnotfoundwhereexpected 进一步,这个错误,在job执行的时候,会导致,oracle游标不够ORA-01000maximumopencursorsexceeded   参考: ......
  • ORACLE 常用的SQL语法和数据对象 选择自 i_like_database 的 Blog
    一.数据控制语句(DML)部分1.INSERT (往数据表里插入记录的语句)INSERTINTO表名(字段名1,字段名2,……)VALUES(值1,值2,……);INSERTINTO表名(字段名1,字段名2,……) SELECT字段名1,字段名2,……FROM另外的表名;字符串类型的字段值必须用单引号括起来,例......
  • Oracle-TableSpace Move To
    SELECTowner,segment_name,partition_name,tablespace_name,'ALTERTABLE'||a.segment_name||'movePARTITION'||a.partition_name||'tablespaceTESTDB;'FROMdba_segmentsaWHERE1=1--ANDowner='TEST'--A......