首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将CDB仅表空间分配给CDB用户?

如何将CDB仅表空间分配给CDB用户?
EN

Database Administration用户
提问于 2021-01-18 14:36:29
回答 1查看 393关注 0票数 0
  • 我可以创建如下所示的CDB表空间:(全部使用:sqlplus / as sysdba)
代码语言:javascript
复制
-- create unique table space for admin
CREATE TABLESPACE admints DATAFILE '/path/to/admints.dbf' SIZE 20M AUTOEXTEND ON;
  • 我可以创建一个具有默认表空间"system“的CDB用户,因为所有PDB都有一个"system”表空间:
代码语言:javascript
复制
-- create admin user on CDB (the defaut tablespace is "system")
CREATE USER C##admin IDENTIFIED BY P@ssw0rd DEFAULT TABLESPACE system QUOTA UNLIMITED ON system ACCOUNT UNLOCK;
  • 我无法使用默认表空间“admints”创建用户:
代码语言:javascript
复制
CREATE USER C##admin IDENTIFIED BY P@ssw0rd DEFAULT TABLESPACE admints QUOTA UNLIMITED ON admints ACCOUNT UNLOCK
*
ERROR at line1:
ORA-65048: error encountered when processing the current DDL statement in
pluggable database ORCLPDB
ORA-00959: tablespace 'ADMINTS' does not exist
  • 而且我不能在我创建的表空间上给我创建的用户分配配额,因为它只在CDB上,而不是为每个PDB创建的。是这样吗?
代码语言:javascript
复制
ALTER USER  C##admin quota unlimited on admints unlimited
*
ERROR at line1:
ORA-65048: error encountered when processing the current DDL statement in
pluggable database ORCLPDB
ORA-00959: tablespace 'ADMINTS' does not exist
  • “承认”表空间只为CDB创建一次,而不是为每个PDB创建一次。
  • 我想在国开行上的“接纳”表空间上创建C##admin用户的表,并且有一个无限的配额。
  • 我希望C#admin至少有对所有PDB的读取访问权限,所以我不能卸载它们。
  • 有可能吗?
EN

回答 1

Database Administration用户

回答已采纳

发布于 2021-01-18 17:21:55

所有容器都有一个默认的表空间:

代码语言:javascript
复制
SQL> select p1.name, p2.property_name, p2.property_value
from v$containers p1 join cdb_properties p2 on (p1.con_id = p2.con_id)
where property_name = 'DEFAULT_PERMANENT_TABLESPACE' order by 1;

NAME       PROPERTY_NAME                  PROPERTY_VALUE
---------- ------------------------------ --------------------
CDB$ROOT   DEFAULT_PERMANENT_TABLESPACE   USERS
PDB1       DEFAULT_PERMANENT_TABLESPACE   USERS
PDB2       DEFAULT_PERMANENT_TABLESPACE   SALES

创建用户而不指定任何内容:

代码语言:javascript
复制
SQL> create user c##myadmin identified by password;

User created.

SQL> select p1.name, u.default_tablespace
from v$containers p1 join cdb_users u on (p1.con_id = u.con_id)
where username = 'C##MYADMIN' order by 1;

NAME       DEFAULT_TABLESPACE
---------- ------------------------------
CDB$ROOT   USERS
PDB1       USERS
PDB2       SALES

然后在根容器中更改用户:

代码语言:javascript
复制
SQL> show con_name

CON_NAME
------------------------------
CDB$ROOT
SQL> alter user c##myadmin default tablespace admints quota unlimited on admints container=current;

User altered.

SQL> select p1.name, u.default_tablespace
from v$containers p1 join cdb_users u on (p1.con_id = u.con_id)
where username = 'C##MYADMIN' order by 1;

NAME       DEFAULT_TABLESPACE
---------- ------------------------------
CDB$ROOT   ADMINTS
PDB1       USERS
PDB2       SALES

SQL> select c.name, q.tablespace_name, q.max_bytes
from v$containers c join cdb_ts_quotas q on (c.con_id = q.con_id)
where q.username = 'C##MYADMIN';

NAME       TABLESPACE_NAME                 MAX_BYTES
---------- ------------------------------ ----------
CDB$ROOT   ADMINTS                                -1
票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/283492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档