【Oracle12C】部署服务建立用户及建库建表中遇到的问题以及12C的一些新特性

这是一篇oracle小白的不堪折磨,苦苦挣扎所作,所费心血颇深。

Oracle12C与11g版本的差异

在创建用户时遇到一个问题(我的发现都是根据遇到的问题来研究的):
问题描述:
在创建服务所需用户时提示ORA-65096:公用用户名或角色无效。
问题原因:
根据Oracle官方文档得知,12C版本创建公有用户名(CDB用户)必须以c##或C##开头,测试后发现登陆时也必须加C##用户名登陆。

CDB与PDB解释:
Oracle 12C引入了CDB与PDB的新特性,在ORACLE 12C数据库引入的多租用户环境(Multitenant Environment)中,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB)。
CDB全称为Container Database,中文翻译为数据库容器,PDB全称为Pluggable Database,即可插拔数据库。
在ORACLE 12C之前,实例与数据库是一对一或多对一关系(RAC):即一个实例只能与一个数据库相关联,数据库可以被多个实例所加载。而实例与数据库不可能是一对多的关系。当进入ORACLE 12C后,实例与数据库可以是一对多的关系。
下面是官方文档给出的概念图:

我的理解:这个结构有点类似于docker的关系。一个管理库(CDB)来管理所有的可插拔数据库(PDB),如果你想在PDB库中创建用户是不用加c##的,但是同样这个用户也只能在这一个PDB库中使用,无法应用到其他库中。
创建公有用户的示例sql:
CREATE USER c##test IDENTIFIED BY test DEFAULT TABLESPACE test ACCOUNT UNLOCK ;
同样在做授权或登陆等操作时也必须加c##:
GRANT RESOURCE TO c##test;

附带PDB与CDB有关的一些常用SQL语句:
创建PDB空间的示例语句(需要先创建表空间文件):
create tablespace TSCREDITLOG datafile ‘/home/oracle/app/oracle/creditdb/CREDITLOG/TSCREDITLOG01.dbf‘ size 20M;

查询所有的PDB及CDB的Name:
SELECT name, pdb FROM v$services ORDER BY name;

只查看PDB库:show pdbs;
(PDB我看到的有两种状态 读写和只读 )

打开所有PDB库: alter pluggable database all open;
切换到某个PDB(容器切换):ALTER SESSION SET container=NAMEPDB;
切换到CDB:alter session set container=cdb$root;
察看现在的容器的名称:show ?conname;


操作中遇到的一些问题以及解决方式:

只是报错为问号或乱码:字符集不一致导致 :
运行:alter session set nls_language=american;
如果数据库提示符都为问号乱码:
需要在oracle用户下.bash_profile中添加环境变量NLS_LANG
创建表空间失败问题:
1.表空间文件夹授权有问题;
2.表空间文件夹不存在
创建表时提示创建失败(提示权限不足,没有用户等等):
检查了创建用户的脚本,在第一遍执行的时候返回的都是授权成功或者创建成功但是没有权限,所以重新执行了一遍,问题解决(问题规律—大招:很多问题都可以通过重启实例或者重新执行来解决)。
创建表空间错误ORA-65048:
在可插入数据库PDBORCL中处理当前DDL语句时出错 ORA-00959:表空间‘TEST’不存在
只需要重启数据库即可解决!
?Oracle数据库的启动与关闭方法
??sql>shutdown abort;? ? --一一异常关闭,但是最快的关机方式,因新装的数据库,就没有那么多顾忌。
sql>startup?
可以开心的正常创建用户了~~

Navicat无法连接oracle12c问题,提示没有匹配的验证协议:
问题原因:Navicat有一个OCI.dll文件版本过低。再深入的没研究,下面直接放找到的解决方法。
需要Oracle 的二个文件:
百度云链接:http://pan.baidu.com/s/1jIfQ95G 密码:wm9l
如果没有Navicat就去百度下一个(Nacicat for oracle)
这里直接把 instantclient-basic-nt-12.1.0.2.0.zip 解压到 Navicat for Oracle 的解压目录的instantclient_10_2目录下
然后这个目录下多了instantclient_12_1 这个目录 ,然后再把instantclient-sqlplus-nt-12.1.0.2.0.zip 解压到 instantclient_12_1下
完成
最后打开Navicat for Oracle 单击 工具->选项-> OCI
这里有二个选项 参考我的路径就知道了
OCI 你的路径\instantclient_12_1.oci.dll
SQL 你的路径\instantclient_12_1.sqlplus.exe

然后新建连接,连接数据库:

搞定。

原文地址:http://blog.51cto.com/13632960/2087183

时间: 2024-09-29 10:39:13

【Oracle12C】部署服务建立用户及建库建表中遇到的问题以及12C的一些新特性的相关文章

MYSQL系列1_MySQL的安装,可视化工具的使用,以及建库建表等

原文:MYSQL系列1_MySQL的安装,可视化工具的使用,以及建库建表等 大家都知道MYSQL是开源的数据库,现在MYSQL在企业中的使用也越来越多,本人之前用过SQL SERVER数据库,因业务需要和自己的兴趣想要学习MYSQL,对于MYSQL,本人还是新手,请大家多多指正. 1.安装mysql 本人安装的版本是mysql5.6 Mysql 5.6的安装包下载地址:http://pan.baidu.com/s/1o6qHG5G 安装过程比较简单,基本上是下一步下一步,安装过程中需要设置mys

MySQL建库建表

一直使用SQL SERVER 数据库:最近项目使用MY SQL感觉还是有一点不适应.不过熟悉之后就会好很多. MY SQL 安装之后会有一个管理工具MySQL Workbench 感觉不太好用,数据库备份导入总会出现一些奇怪的问题:后来从下载SQLYog 感觉用的比较爽. 下面分别介绍下使用SQLYog管理工具和sql语句分别建库建表. 一.使用SQLYog建库建表 其实使用SQLYog工具进行建库建表和SQL Server 没什么区别都是可视化:只要点击对应按钮,填写内容即可: 步骤如下: 1

SQL Server建库-建表-建约束

----------------------------------------SQL Server建库-建表-建约束创建School数据库-------------------------------------- --创建School数据库之前:首先判断数据库是否存在,若存在则删除后再创建,若不存在则创建----exists关键字:括号里边能查询到数据则返回‘true’ 否则返回‘false’if exists(select * from sysdatabases where name =

建库建表的困难之处

本文想讨论建数据表的困难之处,不求面面俱到. 这里假设了,是先建库建表,再写代码,才会有下面的讨论.当然现在有新的CodeFirst的技术存在,但是我觉得这些讨论应该还有用处. 数据表分类 数据表分为两种:一种描述[物],另一种描述[事]. 描述物的,比如说学生表,有姓名,出生日期,性别,班级等字段. 描述事的,比如说销售订单主从表,有开单日期,单号,商品ID,数量,售价,金额,总金额等等字段. 拆分组合 事和物,都具有可以拆分组合的特点.我怎么知道拆成什么样合适? 一个人,可以拆成头部,脖子,

使用T-sql建库建表建约束

为什么要使用sql语句建库建表? 现在假设这样一个场景,公司的项目经过测试没问题后需要在客户的实际环境中进行演示,那就需要对数据进行移植,现在问题来了:客户的数据库版本和公司开发阶段使用的数据库不兼容怎么移植? 行之有效的办法就是编写比较通用的SQL语句,编写完毕后存入*.sql文件中,最后复制到客户的计算机中,并执行*.sql文件中的SQL语句,从而实现后台数据库的移植.所以我们很有必要掌握如何使用SQL语句,实现创建数据库.创建表.添加约束和创建登录账户等! 使用SQl语句创建和删除数据库

建立触发器后,不能像表中插入数据,是什么原因

建立触发器后,不能像表中插入数据,是什么原 USE [cai2016]GO/****** Object:  Trigger [dbo].[trigger_yunum]    Script Date: 2017/3/29 17:30:30 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOalter trigger [dbo].[trigger_yunum] on [dbo].[newmoo_case_cgxd]   for  insert a

oracle 11g 建库 建表 增 删 改 查 约束

一.建库 1.(点击左上角带绿色+号的按钮) 2.(进入这个界面,passowrd为密码.填写完后点击下面一排的Test按钮进行测试,无异常就点击Connect) 二.建表 1-1. create table 表名1( Tid number(4) --primary key 列级约束(主键), Tname varchar(10) --ont null  非空约束,只能定义在列级约束, Tsex varchar2(2)--check (tsex='男'  or  tsex='女') 检查约束, T

(笔记)Mysql实例:建库建表并插入数据2

drop database if exists school;  // 如果存在SCHOOL则删除create database school;  // 建立库SCHOOLuse school;  // 打开库SCHOOLcreate table teacher(  // 建立表TEACHER    id int(3) auto_increment not null primary key,    name char(10) not null,    address varchar(50) de

mysql数据库建库建表实例

一.实例. drop database if exists school; //如果存在SCHOOL则删除create database school; //建立库SCHOOLuse school; //打开库SCHOOLcreate table teacher //建立表TEACHER(    id int(3) auto_increment not null primary key,    name char(10) not null,    address varchar(50) defa