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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM