有个问题,表空间a的有数据文件a1.dbf跟a2.dbf,设定的自增500MB,至max,现在磁盘还有空间但是a2.dbf停止自增了,现在只要插入数据就出现死锁
谁知道可能是什么原因引起的..然后我又建了个a3.dbf,希望数据写入的时候往这里面写,临时解决下问题,但是数据不往这个数据文件里面写,谁知道怎么规定么最后我把a2.dbf手动增大了..迫切希望有高手帮忙解决下问题,感激不尽

解决方案 »

  1.   


    --先定位表空间
    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;
      

  2.   

    扩充表空间的办法有两种: 办法1: alter   database   datafile   'D:\mahanso.dbf   '   resize   200m; 办法2: alter   tablespace   scottsp   add   datafile   'D:\mahanso01.dbf '   size   100m 
    autoextend   on 
    next   50m 
    maxsize   1000m; 
      

  3.   

    请楼主首先定位问题,第一你的数据文件现在多大,ORACLE内部每个数据文件大小的最大上限为32G,在确认这个问题无误后,然后就查阅你的参数信息:
    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
      

  4.   

    要了我老命了,每次只能顶3下,为了顶上来我又注册了个账号。谁帮忙解答下?oracle的数据文件最大规定是32G,要是满了的话再出现这种问题扩展也没得扩展了。因此非常想了解写数据的时候规则,往哪个数据文件里面写?
      

  5.   

    文件最大500M 每次增加3M 在一些情况下 文件本身 还有2M  但自增是3M  这样可能卡在某个数据文件上了  当你手工增大后 可正常使用  同时 写数据是按表空间写的  里面一引数据可以写到新增的表空间 具体可做试验!
      

  6.   

    恩,请高手顺便解答下ORACLE往多个数据文件中写数据的时候具体写入规则,可以自己做规定么