oracle建表为什么不在用户指定的表空间里面
我贴出我的建表语句如下(我是在PL/SQL上操作的):----用system用户登录Oracle创建用户onezero,分配权限CREATEUSERonezeroIDEN...
我贴出我的建表语句如下(我是在PL/SQL上操作的):
----用system用户登录Oracle创建用户onezero,分配权限
CREATE USER onezero IDENTIFIED BY onezero
PROFILE DEFAULT
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP //users表,TEMP表是数据库自己有的。
ACCOUNT UNLOCK;
GRANT DBA TO onezero WITH ADMIN OPTION;
----在这里我就用onezero用户登录创建了一张表试试,因为我看到网上说:以后该用户登录,创建的任何数据库对象都属于users 和temp表空间,这就不用在每创建一个对象给其指定表空间了
但是我创建一张表后,在没有指定表空间的时候发现创建的表并没有在USERS里面,而是在system表空间下面。
我对Oracle不熟悉。认为可能是要在onezero 这个用户下面建立表空间才能达到上面的效果。如是我在onezero用户下又建了如下表空间:
-----用创建的DBA用户onezero登录,创建属于此用户的表空间
--创建临时表空间
create temporary tablespace ems_temp
tempfile 'D:\oracle\oradata\shanyi\ems_temp.dbf'
size 32m
autoextend on
next 32m maxsize 100m
extent management local;
--创建数据表空间
CREATE TABLESPACE ems
DATAFILE 'D:\oracle\oradata\shanyi\ems.dbf'
SIZE 60M
AUTOEXTEND ON
NEXT 32m MAXSIZE 100M
EXTENT MANAGEMENT LOCAL;
再次创建表还是一样在system表空间里面。请大家帮忙看下。我这样建表空间,建用户对不对?我后面用ONEZERO建立的表空间ems_temp和ems是不是重复了?没有必要,大家有什么好的建议。谢谢了
我用DBA用户下能达到这样的效果吗? 展开
----用system用户登录Oracle创建用户onezero,分配权限
CREATE USER onezero IDENTIFIED BY onezero
PROFILE DEFAULT
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP //users表,TEMP表是数据库自己有的。
ACCOUNT UNLOCK;
GRANT DBA TO onezero WITH ADMIN OPTION;
----在这里我就用onezero用户登录创建了一张表试试,因为我看到网上说:以后该用户登录,创建的任何数据库对象都属于users 和temp表空间,这就不用在每创建一个对象给其指定表空间了
但是我创建一张表后,在没有指定表空间的时候发现创建的表并没有在USERS里面,而是在system表空间下面。
我对Oracle不熟悉。认为可能是要在onezero 这个用户下面建立表空间才能达到上面的效果。如是我在onezero用户下又建了如下表空间:
-----用创建的DBA用户onezero登录,创建属于此用户的表空间
--创建临时表空间
create temporary tablespace ems_temp
tempfile 'D:\oracle\oradata\shanyi\ems_temp.dbf'
size 32m
autoextend on
next 32m maxsize 100m
extent management local;
--创建数据表空间
CREATE TABLESPACE ems
DATAFILE 'D:\oracle\oradata\shanyi\ems.dbf'
SIZE 60M
AUTOEXTEND ON
NEXT 32m MAXSIZE 100M
EXTENT MANAGEMENT LOCAL;
再次创建表还是一样在system表空间里面。请大家帮忙看下。我这样建表空间,建用户对不对?我后面用ONEZERO建立的表空间ems_temp和ems是不是重复了?没有必要,大家有什么好的建议。谢谢了
我用DBA用户下能达到这样的效果吗? 展开
2个回答
展开全部
为用户指定表空间时,同时还需要为该用户在指定的表空间中分派定额才能在指定的表空间中创建表.你为用户授予了DBA的权限,自然就拥有了SYS用户的权限,所以可以往system表空间中写入数据.当你没有授予DBA权限时,是绝对不会在你所指定的表空间中创建表的.表空间ems_temp与ems是属于不同的表空间.
SQL>revoke dba from ONEZERO;/*撤消DBA权限
SQL>grant create session,create table to ONEZERO;/*为用户分派适当的权限
SQL>alter user ONEZERO default tablespace ems_temp quota unlimited on ems_temp;/*为用户ONEZERO在ems_temp表空间中分派定额,这里是无限限的unlimited,即用户可以无限制的使用该表空间.也可以为其指定相应的大小.
SQL>revoke dba from ONEZERO;/*撤消DBA权限
SQL>grant create session,create table to ONEZERO;/*为用户分派适当的权限
SQL>alter user ONEZERO default tablespace ems_temp quota unlimited on ems_temp;/*为用户ONEZERO在ems_temp表空间中分派定额,这里是无限限的unlimited,即用户可以无限制的使用该表空间.也可以为其指定相应的大小.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询