Oracle DB: Созданное табличное пространство не отображается в разделе DBA_TS_Quotas

#oracle

Вопрос:

В моем домашнем задании меня просят создать табличное пространство под названием ИНСТРУМЕНТЫ. Поэтому я использовал следующую команду:

 CREATE TABLESPACE TOOLS
DATAFILE 'tools1_data.dbf'
SIZE 10M;
 

Итак, я получил результат, который "Tablespace created"

Меня попросили назначить существующего пользователя для этого табличного пространства, и я сделал это успешно без каких-либо проблем. Однако, когда я запрашиваю dba_ts_quotas, я не могу увидеть это табличное пространство в этом списке:

введите описание изображения здесь

Что я могу здесь сделать не так? Любое понимание здесь очень ценится. Заранее спасибо.

Ответ №1:

Вы можете найти информацию о табличных пространствах только в dba_ts_quotas том случае, если вы предоставляете квоту на нее определенному пользователю.

Квота-это объем пространства, который конкретный пользователь может использовать в определенном табличном пространстве.

DBA_TS_QUOTAS описывает квоты табличных пространств для всех пользователей.

Поэтому вы должны выдать

 ALTER USER xxxx QUOTA yyy ON tablespacename ;
 

Где

  • xxxx является ли пользователь, которому вы предоставляете квоту на определенное табличное пространство
  • yyyy это квота. Это может быть целое число с K в килобайтах, M в мегабайтах или G в гигабайтах. Если вы не хотите ограничивать квоту, вы используете затем quota unlimited
  • tablespacename это созданное вами табличное пространство.

Пример

 ALTER USER SCOTT QUOTA UNLIMITED ON TOOLS;
 

ДЕМОНСТРАЦИЯ

 SQL> create tablespace tbdemo datafile '/bbdd_odcgrc1r/datos/tbdemo.dbf' size 10M autoextend on next 10m maxsize 10g ;

Tablespace created.

SQL> alter user test1 quota unlimited on tbdemo ;

User altered.

SQL> desc dba_ts_quotas
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 TABLESPACE_NAME                           NOT NULL VARCHAR2(30)
 USERNAME                                  NOT NULL VARCHAR2(128)
 BYTES                                              NUMBER
 MAX_BYTES                                          NUMBER
 BLOCKS                                             NUMBER
 MAX_BLOCKS                                         NUMBER
 DROPPED                                            VARCHAR2(3)

SQL> select tablespace_name,username,max_bytes from dba_ts_quotas
  2  where tablespace_name = 'TBDEMO' ;

TABLESPACE    USERNAME       MAX_BYTES
--------------------------------------
TBDEMO        TEST1          -1
 

-1 указывает неограниченную квоту для этого табличного пространства для пользователя TEST1

Комментарии:

1. Это правильный ответ. Спасибо за помощь!!

2. добро пожаловать @CrazyCoder