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

目录:

一、前言

二、使用普通用户

三、自动启动PDB

一、前言

  最近电脑上安装了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查了下,确实没查到(不是没有):

SQL> select username from dba_users where username like ‘SCOTT‘;

未选定行

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

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##”:

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下面使用。

参考文献:

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

http://blog.csdn.net/yuguanquan1990/article/details/17495331

http://www.askmaclean.com/archives/autostart-pdb-pluggable-database.html

http://blog.csdn.net/liou825/article/details/10054589

时间: 2024-08-24 03:01:59

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

Oracle 12c 添加scott用户

对于熟悉Oracle或者接触过Oracle的人,scott这个用户大家一定相当的熟悉.12c推出了可插拔数据库,在一个容器cdb中以多租户的形式同时存在多个数据库pdb.pdb中默认不包含scott用户. 为了做数据泵的实验,需要一个测试用户,因此需要在pdb中添加scott用户. oracle 12c自带了scott的脚本,$ORACLE_HOME/rdbms/admin/utlsampl.sql 内容如下: Rem Copyright (c) 1990, 2006, Oracle. All

oracle 12c 中scott账户与表问题

之前安装了12c版本,最近做练习发现怎么没有scott用户和11g自带的emp,dept等等的表.于是尝试解锁用户,发现用户不存在 SQL> alter user scott account unlock; alter user scott account unlock            * ERROR at line 1: ORA-01918: user 'SCOTT' does not exist 手动创建用户,出错,和11g不太一样 SQL> create user scott id

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

在windows 7 64位上安装Oracle 12c没有设定字符集,采用的是操作系统默认字符集:WE8MSWIN1252,将字符集修改为:ZHS16GBK.由于过程不可逆,首先需要备份数据库.1.数据库全备 2.查询当前字符集 SQL> select * from nls_database_parameters where parameter='NLS_CHARACTERSET'; PARAMETER VALUE ----------------------------------------

Oracle 12c orcl不能直接创建用户了,开机不自动启动PDB,这些怎么办

Oracl 12c启用了PDB.CDB模式 1.orcl不能创建用户 使用pdborcl登录,这个才是以前11g的orcl数据库的概念 2.pdborcl库不自动启动 alter pluggable database pdborcl save state instances=all; 执行就可以了(使用sysdba登录执行) 小惊喜 sqlplus直接登录sysdba失败,使用sqlplus sys as sysdba登录 原文地址:https://blog.51cto.com/zl0828/2

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

Oracle12c版本中引入了新的CDB和PDB 默认登陆CDB后创建的用户为全局用户必须以c##开头 如果要访问CDB中的表,可以用GRANT命令赋权 但是上面的赋权并不会再PDB中生效 如果要这个用户访问PDB中的表,怎么做呢? 先切换到PDB容器 alter session set container=pdborcl; 打开PDB startup 然后再用GRANT赋权 GRANT CREATE SESSION TO C##TEST; GRANT CONNECT, REOURCE TO C

Oracle 12c 创建表空间和用户并为用户授权

创建临时表空间 create temporary tablespace test_temptempfile 'D:\app\orcl\oradata\temproryTestUserSpace\test_temp1.dbf'size 10m autoextendon next 10m maxsize 50m extent management local; 创建数据表空间create tablespace test_data loggingdatafile 'D:\app\orcl\oradat

Oracle 12c RAC 移动MGMTDB 数据库 数据文件方法

注:本文谢绝转载! 在之前的Blog里介绍了Oracle12c RAC 中的MGMTDB的概念,参考: Oracle 12cRAC MGMTDB 说明 http://blog.csdn.net/tianlesoftware/article/details/41804553 而在默认情况下,MGMTDB 的数据文件是存放在OCR voting disk的磁盘组里的,为了节省OCR 磁盘组空间,我们也可以把MGMTDB 转移走. 当然,这里的移动位置,也是从一个共享位置移动到另一个共享位置. 具体

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

12c推出了可插拔数据库,在一个容器cdb中以多租户的形式同时存在多个数据库pdb.在为pdb做数据泵导入导出时和传统的数据库有少许不同.           1,需要为pdb添加tansnames           2,导入导出时需要在userid参数内指定其tansnames的值,比如 userid=user/[email protected]   数据泵导入导出例子 1.查看当前的SID,查看pdb并切换到容器数据库,这里的pluggable数据库是pdborcl [[email pro

CentOS 7部署Oracle 12c企业版数据库

一.安装Oracle 12c 1.安装CentOS 7操作系统的注意事项 由于本次安装Oracle 12c软件是在CentOS 7系统上实现的,那么首先安装CentOS 7操作系统,安装要求如下: 防火墙的配置选项设置为禁用: SELinux设置为禁用: 默认安装设置为软件开发: 内核选择3.10.0-862.el7.x86_64及以上版本: 2.前置条件的准备 Oracle数据库是一个相对庞大的应用软件,对服务器的系统类型.内存和交换分区.硬盘空阿金.内核参数.软件环境.用户环境等都有相应的要