ORA-65096 invalid common user or role name

来源:互联网 发布:mac给ios手机装 编辑:程序博客网 时间:2024/05/16 08:01

环境:win7 64bit,oracle 12c(12.1.0.1.0)

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

先说基本用法:

先按11G之前进行

conn / as sysdba;

create user test identifed by test;


ORA-65096: 公用用户名或角色名无效.


查官方文档得知“试图创建一个通用用户,必需要用C##或者c##开头”,这时候心里会有疑问,什么是common user?不管先建成功了再说

create C##user test identifed by test;

创建成功


SQL>show con_name;


CON_NAME

------------------------------

CDB$ROOT


selectcon_id,dbid,NAME,OPEN_MODEfromv$pdbs;



    CON_ID       DBID NAME                           OPEN_MODE
---------- ---------- ------------------------------ ----------
         2 4066409480 PDB$SEED                       READ ONLY
         3 2270995695 PDBORCL                        MOUNTED

SQL>alter session set container=PDBORCL;

这时再用create user test identifed by test;建立用户就可以了。


以下文章原文:http://www.xifenfei.com/4432.html



CDB和PDB是ORACLE 12C一个很亮的新特性,由于他们的引入导致传统的ORACLE数据库管理理念不少发生了改变,这里列举了部分最基本的cdb和pdb管理方式
cdb和pdb关系图

ORACLE 12C版本

SQL>select*fromv$version;
 
BANNER                                                                               CON_ID
-------------------------------------------------------------------------------- ----------
OracleDatabase12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production              0
PL/SQL Release 12.1.0.1.0 - Production                                                    0
CORE    12.1.0.1.0      Production                                                        0
TNSforLinux: Version 12.1.0.1.0 - Production                                            0
NLSRTL Version 12.1.0.1.0 - Production                                                    0

启动关闭pdb

SQL> startup
ORACLE instance started.
 
Total System GlobalArea  597098496 bytes
FixedSize                 2291072 bytes
VariableSize            272632448 bytes
DatabaseBuffers          314572800 bytes
Redo Buffers                7602176 bytes
Databasemounted.
Databaseopened.
SQL>selectcon_id,dbid,NAME,OPEN_MODEfromv$pdbs;
 
    CON_ID       DBID NAME                          OPEN_MODE
---------- ---------- ------------------------------ ----------
         2 4048821679 PDB$SEED                       READONLY
         3 3313918585 PDB1                           MOUNTED
         4 3872456618 PDB2                           MOUNTED
 
SQL>alterPLUGGABLEdatabasepdb1open;
 
Pluggabledatabasealtered.
 
SQL>selectcon_id,dbid,NAME,OPEN_MODEfromv$pdbs;
 
    CON_ID       DBID NAME                          OPEN_MODE
---------- ---------- ------------------------------ ----------
         2 4048821679 PDB$SEED                       READONLY
         3 3313918585 PDB1                           READWRITE
         4 3872456618 PDB2                           MOUNTED
 
SQL>alterPLUGGABLEdatabasepdb1close;
 
Pluggabledatabasealtered.
 
SQL>selectcon_id,dbid,NAME,OPEN_MODEfromv$pdbs;
 
    CON_ID       DBID NAME                          OPEN_MODE
---------- ---------- ------------------------------ ----------
         2 4048821679 PDB$SEED                       READONLY
         3 3313918585 PDB1                           MOUNTED
         4 3872456618 PDB2                           MOUNTED
 
SQL>alterPLUGGABLEdatabaseallopen;
 
Pluggabledatabasealtered.
 
SQL>selectcon_id,dbid,NAME,OPEN_MODEfromv$pdbs;
 
    CON_ID       DBID NAME                          OPEN_MODE
---------- ---------- ------------------------------ ----------
         2 4048821679 PDB$SEED                       READONLY
         3 3313918585 PDB1                           READWRITE
         4 3872456618 PDB2                           READWRITE
 
SQL>alterPLUGGABLEdatabaseallclose;
 
Pluggabledatabasealtered.
 
SQL>selectcon_id,dbid,NAME,OPEN_MODEfromv$pdbs;
 
    CON_ID       DBID NAME                          OPEN_MODE
---------- ---------- ------------------------------ ----------
         2 4048821679 PDB$SEED                       READONLY
         3 3313918585 PDB1                           MOUNTED
         4 3872456618 PDB2                           MOUNTED
 
SQL>altersessionsetcontainer=pdb1;
 
Session altered.
 
SQL> startup
PluggableDatabaseopened.
SQL> selectcon_id,dbid,NAME,OPEN_MODEfromv$pdbs;
 
    CON_ID       DBID NAME                          OPEN_MODE
---------- ---------- ------------------------------ ----------
         3 3313918585 PDB1                           READWRITE

pdb的管理可以在cdb中进行也可以在pdb中进行,如果是cdb中进行,需要PLUGGABLE关键字,如果是pdb中直接和普通数据库一样

登录pdb

[oracle@xifenfei ~]$ lsnrctl status
 
LSNRCTLforLinux: Version 12.1.0.1.0 - Production on12-MAY-2013 08:07:02
 
Copyright (c) 1991, 2013, Oracle.  Allrights reserved.
 
Connectingto(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xifenfei)(PORT=1521)))
STATUSofthe LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR forLinux: Version 12.1.0.1.0 - Production
StartDate               11-MAY-2013 18:30:54
Uptime                    0 days 13 hr. 36 min. 8 sec
TraceLevel              off
Security                 ON:LocalOS Authentication
SNMP                     OFF
Listener Parameter File   /u01/app/grid/product/12.1/network/admin/listener.ora
Listener Log File         /u01/app/grid/diag/tnslsnr/xifenfei/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xifenfei)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=xifenfei)(PORT=5500))
(Security=(my_wallet_directory=/u01/oracle/12.1/db_1/admin/cdb/xdb_wallet))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service"+ASM"has 1 instance(s).
  Instance"+ASM", status READY, has 1 handler(s) forthis service...
Service"cdb"has 1 instance(s).
  Instance"cdb", status READY, has 1 handler(s) forthis service...
Service"cdbXDB"has 1 instance(s).
  Instance"cdb", status READY, has 1 handler(s) forthis service...
Service"pdb1"has 1 instance(s).
  Instance"cdb", status READY, has 1 handler(s) forthis service...
Service"pdb2"has 1 instance(s).
  Instance"cdb", status READY, has 1 handler(s) forthis service...
The command completed successfully
[oracle@xifenfei ~]$ tnsping pdb1
 
TNS Ping Utility forLinux: Version 12.1.0.1.0 - Production on12-MAY-2013 08:07:09
 
Copyright (c) 1997, 2013, Oracle.  Allrights reserved.
 
Used parameter files:
 
 
Used TNSNAMES adapter toresolve the alias
Attemptingtocontact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = xifenfei)
(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = pdb1)))
OK (20 msec)
[oracle@xifenfei ~]$ sqlplus sys/xifenfei@pdb1 assysdba
 
SQL*Plus: Release 12.1.0.1.0 Production onSun May 12 08:08:02 2013
 
Copyright (c) 1982, 2013, Oracle.  Allrights reserved.
 
 
Connectedto:
OracleDatabase12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
Withthe Partitioning, Automatic Storage Management, OLAP, Advanced Analytics
andRealApplication Testing options
 
SQL> show con_name;
 
CON_NAME
------------------------------
PDB1
 
 
[oracle@xifenfei ~]$ sqlplus / assysdba
 
SQL*Plus: Release 12.1.0.1.0 Production onSun May 12 08:09:14 2013
 
Copyright (c) 1982, 2013, Oracle.  Allrights reserved.
 
 
Connectedto:
OracleDatabase12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
Withthe Partitioning, Automatic Storage Management, OLAP, Advanced Analytics
andRealApplication Testing options
 
SQL>altersessionsetcontainer=pdb1;
 
Session altered.
 
SQL> show con_name;
 
CON_NAME
------------------------------
PDB1

pdb可以通过alter session container进入也可以直接通过tns方式登录

创建用户

SQL> show con_name;
 
CON_NAME
------------------------------
CDB$ROOT
 
SQL>selectcon_id,dbid,NAME,OPEN_MODEfromv$pdbs;
 
    CON_ID       DBID NAME                          OPEN_MODE
---------- ---------- ------------------------------ ----------
         2 4048821679 PDB$SEED                       READONLY
         3 3313918585 PDB1                           READWRITE
         4 3872456618 PDB2                           MOUNTED
 
SQL>createuserxff identified byxifenfei;
createuserxff identified byxifenfei
            *
ERRORatline 1:
ORA-65096: invalid common userorrole name
 
 
SQL> !oerr ora 65096
65096, 00000, "invalid common user or role name"
// *Cause:  An attempt was made tocreatea common userorrole withaname
//          that wass notvalidforcommon users orroles. Inadditionto
//          the usual rules foruserand role names, common userandrole
//          names must start withC##orc##andconsistonlyofASCII
//          characters.
// *Action: Specify a valid common userorrole name.
//
 
SQL>createuserc##xff identified byxifenfei;
 
Usercreated.
 
SQL>SELECTUSERNAME,CON_ID,USER_IDFROMCDB_USERSWHEREUSERNAME='C##XFF';
 
USERNAME       CON_ID    USER_ID
---------- ---------- ----------
C##XFF              1        103
C##XFF              3        104
 
SQL>altersessionsetcontainer=pdb1;
 
Session altered.
 
SQL> show con_name
 
CON_NAME
------------------------------
PDB1
SQL>createuserxff identified byxifenfei;
 
Usercreated.
 
SQL>createuserc##abc identified byxifenfei;
createuserc##abc identified byxifenfei
            *
ERRORatline 1:
ORA-65094: invalid localuseror role name

创建用户默认的是container=all,在cdb中只能创建全局用户(c##开头),会在cdb和所有的pdb中创建该用户(但是pdb中的全局用户需要另外授权才能够在pdb中访问)。在pdb中只能创建的用户为本地用户

用户授权

SQL>grantconnectto c##xff;
 
Grantsucceeded.
 
SQL>selectGRANTEE,con_idfromcdb_ROLE_PRIVSwhereGRANTED_ROLE='CONNECT'ANDGRANTEE='C##XFF';
 
GRANTEE                            CON_ID
------------------------------ ----------
C##XFF                                  1
 
SQL>grantresourcetoc##xff container=all;
 
Grantsucceeded.
 
SQL> selectGRANTEE,con_idfromcdb_ROLE_PRIVSwhereGRANTED_ROLE='RESOURCE'AND GRANTEE='C##XFF';
 
GRANTEE                            CON_ID
------------------------------ ----------
C##XFF                                  1
C##XFF                                  3

用户授权默认情况下是只会给当前container,在cdb中也可以指定container=all,对所有open的pdb且存在该用户都进行授权

修改参数

SQL>altersystemsetopen_cursors=500 container=all;
 
System altered.
 
SQL> conn sys/xifenfei@pdb1 assysdba
Connected.
SQL> show parameter open_cursors;
 
NAME                                TYPE        VALUE
------------------------------------ ----------- ------------------------------
open_cursors                        integer    500
SQL> altersystemsetopen_cursors=100;
 altersystemsetopen_cursors=100
*
ERRORatline 1:
ORA-01219:databaseorpluggable databasenotopen: queries allowed onfixed
tablesorviewsonly
 
 
SQL>alterdatabaseopen;
 
Databasealtered.
 
SQL>altersystemsetopen_cursors=100;
 
System altered.
 
SQL>  show parameter open_cursors;
 
NAME                                TYPE        VALUE
------------------------------------ ----------- ------------------------------
open_cursors                        integer    100
SQL> conn / assysdba
Connected.
SQL> show parameter open_cursors;
 
NAME                                TYPE        VALUE
------------------------------------ ----------- ------------------------------
open_cursors                        integer    500

这里可以看到在cdb中修改,pdb会继承进去;如果在pdb中修改会覆盖pdb从cdb中继承的参数含义

参考:
http://www.tuicool.com/articles/V3UJZfA
http://www.xifenfei.com/2013/05/oracle-12c-pdb-%E7%AE%A1%E7%90%86%E4%BB%8B%E7%BB%8D1.html


0 0
原创粉丝点击