oracle cdb 创建用户,Oracle12C 数据库创建用户与数据表,CDB与PDB启动测试

对于12c之前的数据库创建用户方式,大家都会写创建语句。但是12c开始因为有了CDB和PDB的说法,实现扩展数据库,则创建用户方式则有所不同。

当12c数据库创建完成后,使用sqlplus  / as sysdba  方式登录数据库连接的是CDB,如果要创建用户则需要使用固定模式:

示例如下:

SQL> show parameter name

NAME                                 TYPE        VALUE

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

cell_offloadgroup_name               string

db_file_name_convert                 string

db_name                              string      ora12c

db_unique_name                       string      ora12c

global_names                         boolean     FALSE

instance_name                        string      ora12c

lock_name_space                      string

log_file_name_convert                string

pdb_file_name_convert                string

processor_group_name                 string

service_names                        string      ora12c

SQL> CREATE USER c##comm_ora12c IDENTIFIED BY comm_oracle DEFAULT TABLESPACE users;

User created.

SQL> grant connect,resource to c##comm_ora12c;  用户成功创建并授权成功!

SQL>

Grant succeeded.

SQL>

上述命令是创建了通用的CDB用户,注意必须使用c##开头。

查询授权:

SQL> col GRANTED_ROLE for a30

SQL> run

1* select * from cdb_ROLE_PRIVS where GRANTED_ROLE='RESOURCE' AND GRANTEE='C##COMM_ORA12C'

GRANTEE              GRANTED_ROLE                   ADM DEF COM     CON_ID

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

C##COMM_ORA12C       RESOURCE                       NO  YES NO           1

SQL> select * from cdb_ROLE_PRIVS where GRANTED_ROLE='CONNECT' AND GRANTEE='C##COMM_ORA12C';

GRANTEE              GRANTED_ROLE                   ADM DEF COM     CON_ID

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

C##COMM_ORA12C       CONNECT                        NO  YES NO           1

SQL>

SQL> conn c##comm_ora12c

Enter password:

Connected.

SQL> show user

USER is "C##COMM_ORA12C"

SQL> create table test12c (id number(10,0) primary key,name varchar2(30));

Table created.

SQL>表成功创建

SQL> insert into TEST12C values(1,'测试12c');

insert into TEST12C values(1,'测试12c')

*

ERROR at line 1:

ORA-01950: no privileges on tablespace 'USERS'

SQL> 此时无法插入数据!

SQL> alter user C##COMM_ORA12C QUOTA unlimited ON users TEMPORARY TABLESPACE temp;

User altered.

SQL> insert into TEST12C values(1,'测试12c');

1 row created.

SQL> commit;   数据插入成功!

通过上述实验可以看出12c 版本与之前数据库版本的不同之处。注意CDB与PDB之间关系!

SQL> select con_id,dbid,NAME,OPEN_MODE from v$pdbs;

CON_ID       DBID NAME                 OPEN_MODE

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

2 4062021294 PDB$SEED             READ ONLY

3 2255993317 PDB12C1              MOUNTED

4 1951738610 PDB12C2              MOUNTED

SQL>此时PDB还处于mount状态。

如果要启动PDB;

SQL> alter PLUGGABLE database PDB12C1 open;

Pluggable database altered.

SQL> select con_id,dbid,NAME,OPEN_MODE from v$pdbs;

CON_ID       DBID NAME                           OPEN_MODE

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

2 4062021294 PDB$SEED                       READ ONLY

3 2255993317 PDB12C1                        READ WRITE

4 1951738610 PDB12C2                        MOUNTED

SQL> PDB12C1 成功启动,PDB12C2同理。

上述问题可以参考最新官方文档,找到解决方案!

官方文档叙述:

Examples

All of the following examples use the example tablespace, which exists in the seed database and is accessible to the sample schemas.

Creating a Database User: ExampleIf you create a new user with PASSWORD EXPIRE, then the user's password must be changed before the user attempts to log in to the database. You can create the user sidney by issuing the following statement:

CREATE USER sidney

IDENTIFIED BY out_standing1

DEFAULT TABLESPACE example

QUOTA 10M ON example

TEMPORARY TABLESPACE temp

QUOTA 5M ON system

PROFILE app_user

PASSWORD EXPIRE;

The user sidney has the following characteristics:

The password out_standing1

Default tablespace example, with a quota of 10 megabytes

Temporary tablespace temp

Access to the tablespace SYSTEM, with a quota of 5 megabytes

Limits on database resources defined by the profile app_user (which was created in "Creating a Profile: Example")

An expired password, which must be changed before sidney can log in to the database

Creating External Database Users: ExamplesThe following example creates an external user, who must be identified by an external source before accessing the database:

CREATE USER app_user1

IDENTIFIED EXTERNALLY

DEFAULT TABLESPACE example

QUOTA 5M ON example

PROFILE app_user;

The user app_user1 has the following additional characteristics:

Default tablespace example

Default temporary tablespace example

5M of space on the tablespace example and unlimited quota on the temporary tablespace of the database

Limits on database resources defined by the app_user profile

To create another user accessible only by an operating system account, prefix the user name with the value of the initialization parameter OS_AUTHENT_PREFIX. For example, if this value is "ops$", then you can create the externally identified user external_user with the following statement:

CREATE USER ops$external_user

IDENTIFIED EXTERNALLY

DEFAULT TABLESPACE example

QUOTA 5M ON example

PROFILE app_user;

Creating a Global Database User: ExampleThe following example creates a global user. When you create a global user, you can specify the X.509 name that identifies this user at the enterprise directory server:

CREATE USER global_user

IDENTIFIED GLOBALLY AS 'CN=analyst, OU=division1, O=oracle, C=US'

DEFAULT TABLESPACE example

QUOTA 5M ON example;

Creating a Common User in a CDBThe following example creates a common user called c##comm_user in a CDB. Before you run this CREATE USER statement, ensure that the tablespaces example and temp_tbs exist in all of the containers in the CDB.

CREATE USER c##comm_user

IDENTIFIED BY comm_pwd

DEFAULT TABLESPACE example

QUOTA 20M ON example

TEMPORARY TABLESPACE temp_tbs;

The user comm_user has the following additional characteristics:

The password comm_pwd

Default tablespace example, with a quota of 20 megabytes

Temporary tablespace temp_tbs

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值