ITPub博客

首页 > Linux操作系统 > Linux操作系统 > ORA-01686:max # files (%s) reached for the tablespace %s

ORA-01686:max # files (%s) reached for the tablespace %s

原创 Linux操作系统 作者:benn_wpj 时间:2010-10-29 13:59:28 0 删除 编辑
事实证明,一个表空间最多可以有1023个数据文件。
今天加空间的时候出错,ora-01686
SQL> alter tablespace USER_DATA
add datafile
'/data/oracle/user_data_1021.dbf' size 1921m,
'/data/oracle/user_data_1022.dbf' size 1921m,
'/data/oracle/user_data_1023.dbf' size 1921m,
'/data/oracle/user_data_1024.dbf' size 1921m;
alter tablespace USER_DATA
*
ERROR at line 1:
ORA-01686: max # files (1023) reached for the tablespace USER_DATA
Subject: OERR: ORA 1686 max # files (%s) reached for the tablespace %s
Doc ID: Note:48846.1 Type: REFERENCE
Last Revision Date: 10-JUN-1999 Status: PUBLISHED
Error: ORA 1686
Text: max # files (%s) reached for the tablespace %s
--------------------------------------------------------------
Cause: The number of files for a given tablespace has reached its maximum value
Action: Resize existing files in the tablespace, or partition the objects among multiple tablespaces, or move some objects to a different tablespace.

这个脚本失败,产生的文件会存在物理设备上,但数据库里的文件位置是错误的,一般为在$ORACLE_HOME/dbs下:
/u01/oracle/app/oracle/product/11.2.0/db_1/dbs/MISSING01035(但此文件并不存在)
所以当你删除该表空间以便设置大一点的文件而减少文件数目时,虽然可以正常删掉表空间(including datafiles),但物理设备上产生的文件并不会删除,所以要手动物理设备上的文件。

第一次遇到该问题,还猜测是否是控制文件中的参数maxdatafiles=1024限制,发现并不是该问题。它是来限制数据库中总的数据文件数目,但该参数并不起作用,起作用的倒是parameter file中db_files参数值,所以不用重建重建controlfile来突破此限制的。
SQL> alter system set db_files=100000 scope=spfile;
System altered.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORA-01131: DB_FILES system parameter value 100000 exceeds limit of 65534
可以看出数据文件最多有65534个。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13790829/viewspace-677049/,如需转载,请注明出处,否则将追究法律责任。

上一篇: Add column in 11g
请登录后发表评论 登录
全部评论

注册时间:2008-04-26

  • 博文量
    57
  • 访问量
    128376