一、前言

  最近电脑上安装了oracle 12c数据库,想体验下新特性。安装完后,便像11g一样在dos窗口进行下面的操作:

SQL*Plus: Release 12.1.0.2.0 Production on 星期日 8月 9 13:06:33 2015

Copyright (c) 1982, 2014, Oracle.  All rights reserved.

连接到:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing opt
ions SQL> alter user scott account unlock identified by tiger;
alter user scott account unlock identified by tiger
*
第 1 行出现错误:
ORA-01918: 用户 'SCOTT' 不存在

神马情况!难道没有SCOTT用户?用sql查了下,确实没查到(不是没有):

1
2
3
SQL> select username from dba_users where username like 'SCOTT';
 
未选定行

哦,那我就自己建个吧(当时想多了o.o):

1
2
3
4
5
SQL> create user scott identified by tiger;
create user scott identified by tiger
            *
第 1 行出现错误:
ORA-65096: 公用用户名或角色名无效

。。。。。

呵呵,刚刚接触12c的新手估计都会犯这样的错误吧。其实oracle 12c在结构上做出了调整,引入了CDB和PDB的概念。具体可以看下潇湘隐者的文章:

http://www.cnblogs.com/kerrycode/p/3386917.html

其实,我刚才的操作是在CDB中的操作,用sys默认登录的是CDB,但是如果想在CDB中创建用户(可以理解为公共用户)的话,那么必须在用户名前面加上“c##”:

1
2
3
SQL> create user c##joker identified by joker;
 
用户已创建。

oracle 这么做的目的是为了区分CDB的用户(前面带“c##”的用户)和PDB用户。那么问题来了,如何使用普通用户呢?网上查阅了很多资料,但都是说不清楚,今天总结下吧。

二、使用普通用户

其实,oracle 12c的普通用户必须在PDB下使用,PDB可以自己创建,也可以使用12c自带的。首先,查看下12c自带的PDB吧:

SQL>  select con_id, dbid, guid, name , open_mode from v$pdbs;

    CON_ID       DBID GUID                             NAME                           OPEN_MODE

---------- ---------- -------------------------------- ------------------------------ ----------
4071321146 E89E8DA2866E3157E043DE07A8C09238 PDB$SEED READ ONLY
1930201447 E89E9418B882350CE043DE07A8C092B6 PDBORCL MOUNTED SQL>

要想链接到PDBORCL,必须要在tns文件下加入如下内容:

PDBORCL =   (DESCRIPTION =     (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))     (CONNECT_DATA =       (SERVER = DEDICATED)       (SERVICE_NAME = PDBORCL)     )   )

这样,我们就可以链接PDBORCL了。

首先,要启动PDBORCL,先用sys登录到CDB,进行如下操作:

SQL> alter session set container = PDBORCL;

会话已更改。

SQL> STARTUP

这样我们就可以用sys登录到PDBORCL了:

SQL> conn sys@pdborcl/admin  as sysdba
已连接。

我们查一下用没有SCOTT用户:

SQL> select username from dba_users where username like '%SCOTT%';

USERNAME
-------------------------------------------------------------------- SCOTT

原来,SCOTT在PDBORCL下。

SQL> alter user scott account unlock identified by tiger;

用户已更改。

SQL> conn scott@pdborcl/tiger
已连接。
SQL> select ename,empno,job from emp offset 5 rows fetch next 5 rows only; ENAME EMPNO JOB
---------- ---------- ---------
BLAKE 7698 MANAGER
CLARK 7782 MANAGER
SCOTT 7788 ANALYST
KING 7839 PRESIDENT
TURNER 7844 SALESMAN

这样,我们就可以像11g那样使用像scott这样的普通用户了!

三、自动启动PDB

我们可以通过创建触发器的方式来自动启动PDB,用不着每次还得先用sys登录CDB,然后启动PDB。触发器代码如下:

CREATE OR REPLACE TRIGGER open_all_pdbs
AFTER STARTUP
ON DATABASE
BEGIN
EXECUTE IMMEDIATE 'alter pluggable database all open';
END open_all_pdbs;

我们实验一下:

SQL> CREATE OR REPLACE TRIGGER open_all_pdbs
2 AFTER STARTUP
3 ON DATABASE
4 BEGIN
5 EXECUTE IMMEDIATE 'alter pluggable database all open';
6 END open_all_pdbs;
7 / 触发器已创建 SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。 Total System Global Area 1660944384 bytes
Fixed Size 3046320 bytes
Variable Size 989856848 bytes
Database Buffers 654311424 bytes
Redo Buffers 13729792 bytes
数据库装载完毕。
数据库已经打开。
SQL> conn scott@pdborcl/tiger
已连接。

总结:

要想像11g那样使用普通用户,就得在PDB下面使用。

###SAMPLE 3

感谢sunansheng

问题描述:
客户端连接Oracle 12c的时候,报错误:

ORA-28040: No matching authentication protocol

问题原因:
Oracle 12c的参数SQLNET.ALLOWED_LOGON_VERSION默认等于11。当我们使用11g JDBC之前版本的thin驱动连接的时候,就会报错。

解决方法:
在数据库服务器上的oracle/network/admin/sqlnet.ora文件添加一行SQLNET.ALLOWED_LOGON_VERSION=8,重启数据库,重新连接数据库,可以成功连接,问题解决。
————————————————
版权声明:本文为CSDN博主「sunansheng」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sunansheng/java/article/details/45849409

转 Oracle 12c 使用scott等普通用户的方法的更多相关文章

  1. Oracle 12c 使用scott等普通用户的方法

    目录: 一.前言 二.使用普通用户 三.自动启动PDB 一.前言 最近电脑上安装了oracle 12c数据库,想体验下新特性.安装完后,便像11g一样在dos窗口进行下面的操作: SQL Produc ...

  2. Oracle 12c中文乱码,修改字符集的方法

    在windows 7 64位上安装Oracle 12c没有设定字符集,采用的是操作系统默认字符集:WE8MSWIN1252,将字符集修改为:ZHS16GBK.由于过程不可逆,首先需要备份数据库. 1. ...

  3. Oracle 12c 添加scott用户

    对于熟悉Oracle或者接触过Oracle的人,scott这个用户大家一定相当的熟悉.12c推出了可插拔数据库,在一个容器cdb中以多租户的形式同时存在多个数据库pdb.pdb中默认不包含scott用 ...

  4. Oracle 12c PDB和CDB全局用户权限问题

    Oracle12c版本中引入了新的CDB和PDB 默认登陆CDB后创建的用户为全局用户必须以c##开头 如果要访问CDB中的表,可以用GRANT命令赋权 但是上面的赋权并不会再PDB中生效 如果要这个 ...

  5. Oracle 12c pdb的数据泵导入导出

    12c推出了可插拔数据库,在一个容器cdb中以多租户的形式同时存在多个数据库pdb.在为pdb做数据泵导入导出时和传统的数据库有少许不同.           1,需要为pdb添加tansnames ...

  6. 疯狂安装oracle 12c,此版本没有scott这个用户

    今天要学习oracle,然后寻思下个吧,结果出现了很多问题,在此分享一下,搞疯了,太痛苦了,学的教程是用的 Oracle 11g,我去官网下载的Oracle 12g,文件很大,好不容易装好了,寻思就这 ...

  7. Oracle 12c 数据库中scott用户不存在的解决方法

    -- 使用超级管理员登录CONN sys/change_on_install AS SYSDBA ;-- 创建c##scott用户CREATE USER c##scott IDENTIFIED BY ...

  8. Oracle 12c用户和安全管理

    前言: Oracle 12c的多租户(multitenant)环境与SQL Server的架构非常相似,CDB$ROOT类似于master.PDB$SEED类似于model.各个pluggable d ...

  9. oracle 12c创建可插拔数据库(PDB)与用户详解

    前言 由于oracle 12c使用了CDB-PDB架构,类似于docker,在container-db内可以加载多个pluggable-db,因此安装后需要额外配置才能使用. 一.修改listener ...

随机推荐

  1. CSS3秘笈复习:第八章

    一.背景的所有属性: 属性 作用 可选项 1.background-image 定义一张图片 url(...) 2.background-repeat 控制重复 no-repeat | repeat- ...

  2. F#中的自定义隐式转换

    我们知道隐式变换在可控情况下会使代码变得简洁.熟悉C#的都知道C#中可以自定义隐式变换,例如 public class A { private int data; public static impl ...

  3. 11.hibernate的连接查询

    1.创建如下javaweb项目结构 2.在项目的src下创建hibernate.cfg.xml主配置文件 <?xml version="1.0" encoding=" ...

  4. Python之生产者&、消费者模型

    多线程中的生产者和消费者模型: 生产者和消费者可以用多线程实现,它们通过Queue队列进行通信. import time,random import Queue,threading q = Queue ...

  5. Payoneer官网注册教程,免费申请美国银行账号

    在我搞网赚项目的过程中,碰到境外收款付款的问题,起初我用Paypal贝宝,手续费高得惊人!相信做电商外贸的朋友深有体会.幸而发现了Paypal替代产品Payoneer,注册简单,手续费低,还有中文网站 ...

  6. jvm的可见性的理解

    同步包括两方面的含义: 独占性和可见性. 很多人仅仅理解了独占性,而忽略了可见性. 根据Java Language Specification中的说明, jvm系统中存在一个主内存(Main Memo ...

  7. Oracle Day05 集合与数据处理

    1.集合 --集合操作: 并集.交集.差. select deptno,job,sum(sal) from emp group by deptno,job union select deptno,to ...

  8. JMeter基础

    转载自虫师-http://www.cnblogs.com/fnng/archive/2012/12/21/2828440.html JMeter 介绍: 一个非常优秀的开源的性能测试工具. 优点:你用 ...

  9. 快速破解ps方法

    1.首先现在ps安装包和破解包. 2.运行Block Adobe Activation,防止ADOBE激活程序启动,按操作提示即可. 3.运行Adobe CS6安装程序. 4.选择“试用”. 5.输入 ...

  10. 使用非 GUI 模式运行 JMeter 压力测试

    使用非 GUI 模式,即命令行模式运行 JMeter 测试脚本能够大大缩减所需要的系统资源.使用命令jmeter -n -t <testplan filename> -l <list ...