Oracle12c 中,增加了可插接数据库的概念,即PDB,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB)。CDB全称为 ContainerDatabase,中文翻译为数据库容器,PDB全称为PluggableDatabase,即可插拔数据库。在ORACLE 12C之前,实例与数据库是一对一或多对一关系(RAC):即一个实例只能与一个数据库相关联,数据库可以被多个实例所加载。而实例与数据库不可能是一对 多的关系。当进入ORACLE 12C后,实例与数据库可以是一对多的关系。下面是官方文档关于CDB与PDB的关系图。

首先,容器数据库创建新用户并分配表空间时必须在没有PDB的情况下进行或PDB与CDB有相同的表空间的时候进行,否则会报错。如果是在PDB与CDB 有相同表空间的情况下给CDB用户分配表空间,则分配CDB的表空间给用户PDB的表空间并不受影响。而且,CDB用户必须以‘C##’为开头,否则创 建不了。如下:

1.这是在没有PDB的情况下创建用户“C##ukprod”并分配”USERS“(系统自带的表空间),如果不以C##开头的用户名就会报错。

2.在CDB中创建表空间TBLSPACE_OTH,而PDB中不存在该表空间,然后创建用户默认表空间为TBLSPACE_OTH将报错

3.在PDB中创建表空间TBLSPACE_OTH,注意文件名不能和CDB中的一样(在不同目录也没关系)

3.1 show con_name   --查看当前容器

3.2 alter session set container=UKPDB1;       --转换容器到PDB

alter session set container=CDB$ROOT;  --转换容器到CDB

通过查询可知:  “C##test”  的默认表空间是容器数据库  “CDB”  的,  跟插接式数据库  “PDB”  一点关系都没有。如果硬要说有关系的话就是  ”  如果 PDB中没有表空间  ’TBLSPACE_OTH‘  的话  CDB 中的用户就不能以  ’TBLSPACE_OTH‘  表空间做为默认表空间  ”  。

oracle推荐是把应用放在PDB中的,然而PDB中创建的用户你会发现按照以前11g的方法是连接不上的,如下图:

这是为什么呢?

原因是要写成conn test11/test11@UKPDB1

这个UKPDB1是tnsName,  如下图:

注意这个SERVER_NAME,并不是UKPDB1,可以用lsnrctl -status查看,我在本地客户端按照11g的惯例写了SERVER_NAME = UKPDB1;结果怎么也连不上,在本地注意把PDB的监听也配上。

oracle12c创建用户和表空间出现的问题的更多相关文章

  1. oracle12c创建用户指定表空间

    --1.创建临时空间 create temporary tablespace zyj_temp tempfile 'D:\app2\user\virtual\oradata\orcl\zyj_temp ...

  2. oracle常用SQL——创建用户、表空间、授权(12C)

    一.查询 查询用户所属 表空间 select username,default_tablespace from dba_users where username='xxx' 查询表空间情况 SELEC ...

  3. ORACLE创建用户,表空间,并且导出数据,导出表

    1.创建用户: create user toptea2 identified by "用户名" 2.给用户授权 grant create session to 用户名; grant ...

  4. oracle创建用户、表空间、临时表空间、分配权限步骤详解

    首先登陆管理员账号,或者有DBA权限的用户,接下来依次: --查询所有用户select * from dba_users;--创建新用户create user gpmgt identified by ...

  5. Oracle创建用户、表空间并设置权限

    代码: //dba账户登录 sqlplus 请输入用户名:dpp_data as sysdba 请输入口令:dpp_data //创建账号 create user techrpt_data ident ...

  6. 用sqlplus为oracle创建用户和表空间<转>

    用Oracle10g自带的企业管理器或PL/SQL图形化的方法创建表空间和用户以及分配权限是相对比较简单的,本文要介绍的是另一种方法,使用Oracle 9i所带的命令行工具:SQLPLUS来创建表空间 ...

  7. oracle 备份和还原还有创建用户、表空间、授权

    --找到存放dbf文件的路径--E:\oracle\product\10.2.0\oradata\orcl--可以通过此语句进行查询select * from v$datafile; --创建表空间c ...

  8. 用sqlplus为oracle创建用户和表空间

    用Oracle自带的企业管理器或PL/SQL图形化的方法创建表空间和用户以及分配权限是相对比较简单的, 本文要介绍的是另一种方法就是使用Oracle所带的命令行工具SQLPLUS来创建表空间. 打开S ...

  9. oracle 之创建用户,表空间,授权,修改用户密码

    1.创建表空间 create tablespace ilinkcargoagent logging datafile 'D:\app\Administrator\oradata\ilinkcargoa ...

随机推荐

  1. 【Java】线程池的作用

    在程序启动的时候就创建若干线程来响应处理,它们被称为线程池,里面的线程叫工作线程  第一:降低资源消耗.通过重复利用已创建的线程降低线程创建和销毁造成的消耗.  第二:提高响应速度.当任务到达时,任务 ...

  2. RTX——第15章 互斥信号量

    以下内容转载自安富莱电子: http://forum.armfly.com/forum.php 本章节开始讲解 RTX 的另一个重要的资源共享机制---互斥信号量(Mutex,即 Mutual Exc ...

  3. R 画structure图

    id percent  k1_B04_WL-1.fs_1   0.021 k31_B04_WL-1.fs_1   0.624 k21_B04_WL-1.fs_1   0.355 k1 K=3  数据输 ...

  4. Ajax初窥

    Ajax四个步骤 1. 创建Ajax对象2. 连接到服务器3. 发送请求4. 接收返回值 0x01 创建AJAX对象 方法1(非IE6.0) Var oAjax = new XMLHttpReques ...

  5. sqlserver 的一些好用的插件

    sqlserver 的一些好用的插件 1.http://www.red-gate.com/products/

  6. 【Unity笔记】检测当前的运行平台

    // 判断当前运行平台为Android平台时 if (Application.platform == RuntimePlatform.Android) { if (Input.GetKeyDown(K ...

  7. 欢迎使用markdowm编辑器

    欢迎使用Markdown编辑器写博客 [Mark一下CSDN用Markdown的写法而已] 本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown ...

  8. NIO与传统IO的区别<转>

    传统的socket IO中,需要为每个连接创建一个线程,当并发的连接数量非常巨大时,线程所占用的栈内存和CPU线程切换的开销将非常巨大.使用NIO,不再需要为每个线程创建单独的线程,可以用一个含有限数 ...

  9. MySQL命令学习(二)

    (13)where字句操作符 =            等于 <>          不等于 !=           不等于 <            小于 >        ...

  10. 关于Cocos2d-x的数据存储

    Cocos2d-x对数据的存储没有用到数据库,但是有用到一个类似数据库的小型数据库,就是数据存储.存储后的数据用XML的文件格式保存在C:\Users\Administrator\AppData\Lo ...