有个问题,表空间a的有数据文件a1.dbf跟a2.dbf,设定的自增500MB,至max,现在磁盘还有空间但是a2.dbf停止自增了,现在只要插入数据就出现死锁
谁知道可能是什么原因引起的..然后我又建了个a3.dbf,希望数据写入的时候往这里面写,临时解决下问题,但是数据不往这个数据文件里面写,谁知道怎么规定么最后我把a2.dbf手动增大了..迫切希望有高手帮忙解决下问题,感激不尽
谁知道可能是什么原因引起的..然后我又建了个a3.dbf,希望数据写入的时候往这里面写,临时解决下问题,但是数据不往这个数据文件里面写,谁知道怎么规定么最后我把a2.dbf手动增大了..迫切希望有高手帮忙解决下问题,感激不尽
--先定位表空间
select tablespace_name from dba_data_files;
--比如需要修改的表空间为tb1
--则执行如下:给表空间tb1添加数据文件d:/tb1.dbf,文件大小500M,自增开启。
alter tablespace tb1 add datafile 'd:/tb1.dbf' size 500M autoextend on next 50M;
autoextend on
next 50m
maxsize 1000m;
SELECT t.file_name,t.tablespace_name,
AUTOEXTENSIBLE "是否可以自动增长",INCREMENT_BY "每次增长多少个块",
SUM(bytes)/(1024*1024) "已分配的大小(MB)",sum(t.maxbytes)/(1024*1024) "可使用最大值(MB)"
FROM dba_data_files t
GROUP BY t.file_name,t.tablespace_name,AUTOEXTENSIBLE,INCREMENT_BY;你可以使用你的数据文件给过滤一下,在查询,此时查看结果集中:
1、是否可以自动增长,若不可以,先定位等会操作,不可以的话,“每次增长的块”以及“可使用最大值(MB)”字段自动就会转化为0。2、若为自动增长,查看上限“可使用最大值(MB)”是否不太大,若不太大,就加大容量,或者不受限制(当然不受限制就是受到磁盘本身以及32G位图管辖范围的控制)。3、若达到较大的空间,此时其实是建议新建数据文件。其实如果要将数据文件设置为自动增长,上面已经有答案了,我大概说下一些默认参数即可。一个模板例子:
alter database datafile 'D:\ORACLE\ORADATA\ORCL104\AA.DD'
autoextend on
next 2m
maxsize 400m其中:
autoextend on 设置为ON 就是自动增长了,如果后面两项不设置的话,此时每次增长默认为一个快的大小,而没有最大值的限制,一个块的大小可以通过表空间视图或者show parameter db_block_size查看,一般是8K。关闭:autoextend的方式是:
alter database datafile 'D:\ORACLE\ORADATA\ORCL104\AA.DD' autoextend off;
此时后面的next、maxsize参数自动失效,变成0。next 2m 代表每次增加2m的空间大小,当autoextend on时,此时默认值为一个块的大小。
maxsize 400m代表数据设置为自动增长情况下的最大值,当autoextend on时,默认为无最大值,若以前设置过最大值,现在不想要最大值,而且保持自动增长,此时设置为:
alter database
datafile 'D:\ORACLE\ORADATA\ORCL104\AA.DD'
autoextend on maxsize unlimited;试验如下:
C:\Documents and Settings\xieyu>set oracle_sid=orcl104C:\Documents and Settings\xieyu>sqlplus / as sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on 星期二 7月 20 19:06:52 2010Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining optionsSQL> show parameter db_block_size;NAME TYPE VALUE
------------------------------------ ----------- -----
db_block_size integer 8192SQL> set lines 200
SQL> col FILE_NAME FOR A60;SQL> select FILE_NAME,AUTOEXTENSIBLE,MAXBYTES,INCREMENT_BY
2 FROM dba_data_files
FILE_NAME AUT MAXBYTES INCREMENT_BY
------------------------------------------------------------ --- ---------- ------------
D:\ORACLE\ORADATA\ORCL104\SYSTEM01.DBF YES 3.4360E+10 1280
D:\ORACLE\ORADATA\ORCL104\UNDOTBS01.DBF YES 3.4360E+10 640
D:\ORACLE\ORADATA\ORCL104\SYSAUX01.DBF YES 3.4360E+10 1280
D:\ORACLE\ORADATA\ORCL104\USERS01.DBF YES 3.4360E+10 160SQL> create tablespace tt datafile
2 'D:\ORACLE\ORADATA\ORCL104\aa.dd' size 100m;表空间已创建。SQL> select FILE_NAME,AUTOEXTENSIBLE,MAXBYTES,INCREMENT_BY
2 FROM dba_data_files;FILE_NAME AUT MAXBYTES INCREMENT_BY
------------------------------------------------------------ --- ---------- ------------
D:\ORACLE\ORADATA\ORCL104\SYSTEM01.DBF YES 3.4360E+10 1280
D:\ORACLE\ORADATA\ORCL104\UNDOTBS01.DBF YES 3.4360E+10 640
D:\ORACLE\ORADATA\ORCL104\SYSAUX01.DBF YES 3.4360E+10 1280
D:\ORACLE\ORADATA\ORCL104\USERS01.DBF YES 3.4360E+10 160
D:\ORACLE\ORADATA\ORCL104\AA.DD NO 0 0SQL> alter database datafile 'D:\ORACLE\ORADATA\ORCL104\AA.DD' autoextend on next 2m;数据库已更改。SQL> select FILE_NAME,AUTOEXTENSIBLE,MAXBYTES,INCREMENT_BY
2 FROM dba_data_files;FILE_NAME AUT MAXBYTES INCREMENT_BY
------------------------------------------------------------ --- ---------- ------------
D:\ORACLE\ORADATA\ORCL104\SYSTEM01.DBF YES 3.4360E+10 1280
D:\ORACLE\ORADATA\ORCL104\UNDOTBS01.DBF YES 3.4360E+10 640
D:\ORACLE\ORADATA\ORCL104\SYSAUX01.DBF YES 3.4360E+10 1280
D:\ORACLE\ORADATA\ORCL104\USERS01.DBF YES 3.4360E+10 160
D:\ORACLE\ORADATA\ORCL104\AA.DD YES 3.4360E+10 256SQL> alter database datafile 'D:\ORACLE\ORADATA\ORCL104\AA.DD' autoextend on next 2m maxsize 400m;数据库已更改。SQL> select FILE_NAME,AUTOEXTENSIBLE,MAXBYTES,INCREMENT_BY
2 FROM dba_data_files;FILE_NAME AUT MAXBYTES INCREMENT_BY
------------------------------------------------------------ --- ---------- ------------
D:\ORACLE\ORADATA\ORCL104\SYSTEM01.DBF YES 3.4360E+10 1280
D:\ORACLE\ORADATA\ORCL104\UNDOTBS01.DBF YES 3.4360E+10 640
D:\ORACLE\ORADATA\ORCL104\SYSAUX01.DBF YES 3.4360E+10 1280
D:\ORACLE\ORADATA\ORCL104\USERS01.DBF YES 3.4360E+10 160
D:\ORACLE\ORADATA\ORCL104\AA.DD YES 419430400 256SQL> alter database datafile 'D:\ORACLE\ORADATA\ORCL104\AA.DD' autoextend on next 2m maxsize unlimited;数据库已更改。SQL> select FILE_NAME,AUTOEXTENSIBLE,MAXBYTES,INCREMENT_BY
2 FROM dba_data_files;FILE_NAME AUT MAXBYTES INCREMENT_BY
------------------------------------------------------------ --- ---------- ------------
D:\ORACLE\ORADATA\ORCL104\SYSTEM01.DBF YES 3.4360E+10 1280
D:\ORACLE\ORADATA\ORCL104\UNDOTBS01.DBF YES 3.4360E+10 640
D:\ORACLE\ORADATA\ORCL104\SYSAUX01.DBF YES 3.4360E+10 1280
D:\ORACLE\ORADATA\ORCL104\USERS01.DBF YES 3.4360E+10 160
D:\ORACLE\ORADATA\ORCL104\AA.DD YES 3.4360E+10 256SQL> alter database datafile 'D:\ORACLE\ORADATA\ORCL104\AA.DD' autoextend off;数据库已更改。SQL> select FILE_NAME,AUTOEXTENSIBLE,MAXBYTES,INCREMENT_BY
2 FROM dba_data_files;FILE_NAME AUT MAXBYTES INCREMENT_BY
------------------------------------------------------------ --- ---------- ------------
D:\ORACLE\ORADATA\ORCL104\SYSTEM01.DBF YES 3.4360E+10 1280
D:\ORACLE\ORADATA\ORCL104\UNDOTBS01.DBF YES 3.4360E+10 640
D:\ORACLE\ORADATA\ORCL104\SYSAUX01.DBF YES 3.4360E+10 1280
D:\ORACLE\ORADATA\ORCL104\USERS01.DBF YES 3.4360E+10 160
D:\ORACLE\ORADATA\ORCL104\AA.DD NO 0 0