日期:2014-05-16 浏览次数:20496 次
既然是转载,那就注明出处:http://www.cnblogs.com/BenBen789/archive/2009/02/06/1385316.html
?
Oracle10g表空间创建的完整步骤
当在数据库中创建用户时,基于应用性能和管理方面的考虑,最好为不同的用户创建独立的表空间。
1.创建表空间
不论是 linux环境,还是 windows环境,都要首先创建好表空间的存放路径,如:
/opt/oracle/oradata/cocis 或 D:"oracle"oradata"cocis
若事先不创建该目录路径,则在创建表空间的时候会出错。
然后执行如下命令:
SQL> create tablespace cocis
2 datafile 'D:"oracle"oradata"cocis"cocis01.dbf'
3 size 100M AutoExtend On Next 10M Maxsize 2048M
4 extent management local uniform size 128K
5 segment space management auto
6 /
表空间已创建。
?
2.为应用创建用户
创建用户的同时,为用户指定缺省的永久表空间和临时表空间。
SQL> create user cocis identified by cocis
2 default tablespace cocis
3 temporary tablespace temp;
用户已创建。
?
查看用户
SQL> select username,default_tablespace,temporary_tablespace
2 from dba_users
3 where username='COCIS';
USERNAME?????????????????????? DEFAULT_TABLESPACE???????????? TEMPORARY_TABLESPACE
------------------------------ ------------------------------ ------------------
COCIS????????????????????????? COCIS????????????????????????? TEMP
?
SQL> select username,user_id,password,default_tablespace,temporary_tablespace
2 from dba_users
3 where username='COCIS';
USERNAME????????????????????????? USER_ID PASSWORD?????????????????????? TEMPORARY_TABLESPACE
?
------------------------------ ---------- ------------------------------ -----------------------
?
COCIS????????????????????????????????? 61 E031F623C0F15D34?????????????? COCIS
?
3.权限的授予
SQL> grant connect,resource to cocis;
授权成功。
?
注释:当用户创建之后,一般只需要授予 CONNECT和 RESOURCE这两个角色即可。若要单独进行授权,则需执行单独的授权命令,如 grant create table to cocis;等。
?
SQL> revoke unlimited tablespace from cocis;
撤销成功。
?
SQL> alter user cocis quota unlimited on cocis;
用户已更改。
?
注释:为了更严谨的管理,可以回收用户的 UNLIMITED TABLESPACE权限,然后对用户的空间限额进行单独授权。
?
-----------------------------------------------------
?
查看表空间使用情况
select df.tablespace_name "表空间名 ",totalspace "总空间 M",freespace "剩余空间 M",round((1-freespace/totalspace)*100,2) "使用率 %"
from
(select tablespace_name,round(sum(bytes)/1024/1024) totalspace
from dba_data_files
group by tablespace_name) df,
(select tablespace_name,round(sum(bytes)/1024/1024) freespace
from dba_free_space
group by tablespace_name) fs
where df.tablespace_name=fs.tablespace_name;