web-dev-qa-db-fra.com

Oracle restreint l'utilisateur à utiliser les utilisateurs de tablespace

J'ai un test de schéma que Schema a possède son propre "test" de table de table. Mais lorsque je crée une index sur les utilisateurs de tablespace, il a créé. Comment puis-je limiter à utiliser les utilisateurs de table à table dans la base de données Oracle?

CREATE UNIQUE INDEX "TEST"."INDEX1" ON "TEST"."TESTTABLE" ("TESTNO") 
PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) 
TABLESPACE "USERS"

Le succès informatique, je veux que l'utilisateur de test ne puisse créer aucun objet sur les utilisateurs à table Espace. Il possède son propre espace de table de test. Y a-t-il une configuration? Si l'utilisateur utilise l'espace de table "test" au lieu de "utilisateurs" de table de table?

2
AhmetMelihBaşbuğ

L'utilisateur TEST peut avoir le UNLIMITED TABLESPACE Privilège ou un quota défini sur le USERS tablespace. Pour les révoquer:

revoke unlimited tablespace from test;
alter user test quota 0 on users;

Si l'utilisateur avait le UNLIMITED TABLESPACE Privilège sans aucun quota défini, vous devez définir un quota sur le TEST tableespace, de sorte que l'utilisateur puisse l'utiliser à nouveau après les commandes ci-dessus:

alter user test quota unlimited on test;
6
Balazs Papp

+1 Pour la réponse de Balazs et souhaitez partager un scénario ici.

Si vous accordez RESOURCE rôle à n'importe quel utilisateur, l'utilisateur obtient UNLIMITED TABLESPACE Privilège (avant 12c) qui permet à l'utilisateur de créer ses objets sur n'importe quel espace de table. Vous pouvez toujours créer index (vous avez CREATE TABLE privilège) sur le USERS tablespace après révocation UNLIMITED TABLESPACE Privilège de TEST utilisateur mais vous ne pouvez pas insérer de données à ce sujet parce que vous devriez avoir un quota de le faire.

Voici la démo:

SQL> create tablespace test_tbs datafile '/u01/app/Oracle/oradata/orcl/test_tbs.dbf' size 50M;

Tablespace created.

SQL> create user test identified by test default tablespace test_tbs quota unlimited on test_tbs;

User created.



SQL> grant create session, resource to test;

Grant succeeded.

SQL> conn test/test
Connected.
SQL> create table testtable(testno number);

Table created.

SQL> CREATE UNIQUE INDEX "TEST"."INDEX1" ON "TEST"."TESTTABLE" ("TESTNO") 
PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) 
TABLESPACE "USERS";  2    3    4    5    6  

Index created.

SQL> select * from session_privs;

PRIVILEGE
----------------------------------------
CREATE SESSION
UNLIMITED TABLESPACE
CREATE TABLE
CREATE CLUSTER
CREATE SEQUENCE
CREATE PROCEDURE
CREATE TRIGGER
CREATE TYPE
CREATE OPERATOR
CREATE INDEXTYPE

10 rows selected.

SQL> conn / as sysdba
Connected.
SQL> revoke unlimited tablespace from test;

Revoke succeeded.

SQL> alter user test quota 0 on users;     

User altered.

SQL> conn test/test  
Connected.
SQL> drop index index1;

Index dropped.

SQL> CREATE UNIQUE INDEX "TEST"."INDEX1" ON "TEST"."TESTTABLE" ("TESTNO") 
PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) 
TABLESPACE "USERS";  2    3    4    5    6  

Index created.

SQL> insert into testtable values(1);
insert into testtable values(1)
            *
ERROR at line 1:
ORA-01950: no privileges on tablespace 'TEST_TBS'


SQL> conn / as sysdba
Connected.
SQL> alter user test quota unlimited on test_tbs;

User altered.

SQL> conn test/test
Connected.


SQL> insert into testtable values(1);
insert into testtable values(1)
            *
ERROR at line 1:
ORA-01950: no privileges on tablespace 'USERS'
1
JSapkota