数据库表空间操作

注意点:
1.如果在PL/SQL 等工具里打开的话,直接修改下面的代码中[斜体加粗部分]执行
2.确保路径存在,比如 C:\oracle\oradata\Oracle11\ 也就是你要保存文件的路径存在
3.以下语句必须为dba权限的用户才可以执行成功。

分为四步
第1步:创建临时表空间

create temporary tablespace user_temp   
tempfile 'C:\oracle\oradata\Oracle11\user_temp.dbf'   
size 50m   
autoextend on   
next 50m maxsize 20480m   
extent management local;  

说明:

user_temp 为需要创建的临时表空间的名称,根据实际情况可以自行变更。
tempfile 后面为临时表空间文件存放的磁盘位置,文件不需要创建,但文件夹需要创建好。
Create [TEMPORARY] TABLESPACE tablespace_name TEMPFILE|DATAFILE 'fileName.dbf' size xx
#TEMPFILE|DATAFILE 指的是我们存储的数据文件的类型和名字。
#size 表示数据文件的大小
#[TEMPORARY] 如果我们创建的是临时表空间,那么需要在create关键字后加上TEMPORARY的关键字,而且使用TEMPFILE关键字。

创建永久表空间

create tablespace FNBANK   
datafile '/opt/11g/oracle/oradata/nontax/bank.dbf'   
size 50m   
autoextend on   
next 50m maxsize 20480m   
extent management local; 

创建临时表空间会报错:

 

ORA-02195: 尝试创建的PERMANENT对象在TEMPORARY表空间中

解决方案:把临时表空间删除。新建永久表空间

----删除表空间
DROP TABLESPACE 表空间名字 INCLUDING CONTENTS AND DATAFILES;

----查看表空间
select * from dba_tablespaces;

----查看表空间存储位置
select * from dba_data_files

第2步:创建数据表空间 

create tablespace user_data   
logging   
datafile 'C:\oracle\oradata\Oracle11\user_data.dbf'   
size 50m   
autoextend on   
next 50m maxsize 20480m   
extent management local; 

说明:
user_data 为需要创建的临时表空间的名称,根据实际情况可以自行变更。
datafile 后面为表空间文件存放的磁盘位置,文件不需要创建,但文件夹需要创建好。

第3步:创建用户并指定表空间

create user username identified by password   
default tablespace user_data   
temporary tablespace user_temp;
说明: 
username 为需要创建数据库用户的用户名,根据实际情况可以自行变更。
password为需要创建数据库用户的用户密码,根据实际情况可以自行变更
user_data 为分配给该用户的表空间,根据实际情况可以自行变更
user_data 为分配给该用户的临时表空间,根据实际情况可以自行变更

第4步:给用户授予权限

grant connect,resource,dba to username;  

说明:
username 为需要分配权限用户的用户名,根据实际情况可以自行变更。
connect,resource,dba 分别三种不同操作权限,根据实际情况可以自行变更。

实例:

CREATE TABLESPACE FS_BSAF_TBS
LOGGING
  DATAFILE '+DATA/bspjdb/datafile/FS_BSAF_TBS_01.dbf' SIZE 2G
  AUTOEXTEND ON NEXT 100M MAXSIZE 2G
  EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;

一个表空间的大小也不是可以通过添加数据文件的方式随便加的。
如果你建的是一般的表空间(smallfile)的话一个表空间的最大大小应该是4m个oracle块。
如果你建的是bigfile表空间的话,一个表空间的最大大小应该是4g个oracle块。
不过不建议把一个表空间建的太大,如果太大的话一方面备份花费的时间长,另外一方面是,对存放在该表空间上的数据不安全,如果表空间出错了,那么该表空间上的数据都会丢掉。

查看表空间的使用情况:

https://blog.csdn.net/high2011/article/details/50674081

posted @ 2018-03-25 23:11  shawWey  阅读(1383)  评论(0编辑  收藏  举报