有时候oracle的表空间不免会不够用,这时候该怎么修改表空间的大小呢?
其实有两种方法,一个给表空间在添加个数据文件,另一个是直接在原的基础上增加表空间的大小。
一、直接给表空间增加数据文件:
SQL> alter tablespace shoppingmall_tbs
2 add datafile 'h:\oracle\orcl\shoppingmall_tbs2.dbf'
3 size 5m
4 ;
表空间已更改。
二、在原来的基础上增加表空间的大小
SQL> alter database datafile 'h:\oracle\orcl\shoppingmall_tbs.dbf'
2 resize 15m
3 ;
数据库已更改。
之后可以查看语句有没有起作用
SQL> select tablespace_name,sum(bytes)/1024/1024 from dba_data_files
2 group by tablespace_name
3
SQL> /
TABLESPACE_NAME SUM(BYTES)/1024/1024
------------------------------ --------------------
SYSAUX 260
UNDOTBS1 25
USERS 5
SYSTEM 480
SHOPPINGMALL_TBS 20
当然如果一开始定义表空间的时候就把自动扩展和最大值设置好,以后也不必这么麻烦。
不过现在增加自动扩展和最大值也是没有问题的:
查看自动拓展是否启动(可以看到下面的shoppingmall_tbs.dbf是没有启动的):
SQL> select file_name,tablespace_name,autoextensible from dba_data_files;
FILE_NAME
--------------------------------------------------------------------------------
TABLESPACE_NAME AUT
------------------------------ ---
H:\WIN7\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
USERS YES
H:\WIN7\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
SYSAUX YES
H:\WIN7\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
UNDOTBS1 YES
FILE_NAME
--------------------------------------------------------------------------------
TABLESPACE_NAME AUT
------------------------------ ---
H:\WIN7\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
SYSTEM YES
H:\ORACLE\ORCL\SHOPPINGMALL_TBS.DBF
SHOPPINGMALL_TBS NO
H:\ORACLE\ORCL\SHOPPINGMALL_TBS2.DBF
SHOPPINGMALL_TBS NO
已选择6行。
接着让shoppingmall_tbs.dbf启动autoextend
SQL> alter database datafile 'h:\oracle\orcl\shoppingmall_tbs.dbf' autoextend on;
数据库已更改。
SQL> alter database datafile 'h:\oracle\orcl\shoppingmall_tbs.dbf'
2 autoextend on next 5m
3
SQL> /
数据库已更改。
SQL> alter database datafile 'h:\oracle\orcl\shoppingmall_tbs.dbf'
2 maxsize 30m
3
SQL> /
maxsize 30m
*
第 2 行出现错误:
ORA-01916: 需要关键字 ONLINE, OFFLINE, RESIZE, AUTOEXTEND 或 END/DROP
//这里给大家一个反面例子,maxsize要和autoextend等其中一个使用,单独使用是不行的。
SQL> alter database datafile 'h:\oracle\orcl\shoppingmall_tbs.dbf'
2 autoextend on next 5m
3 maxsize 30m
4
SQL> /
数据库已更改。