关于oracle的ORA-00059错误

[复制链接]
查看11 | 回复7 | 2012-6-20 17:38:14 | 显示全部楼层 |阅读模式
今天在外面,突然有个同事说给表空间添加数据文件时报错:ORA-00059: maximum number of DB_FILES exceeded。
最后发现参数db_files为200.
select count(*) from dba_data_files;
200
原来是数据文件到了最大。
网上有人说除了修改db_files参数,还要修改控制文件的maxdatafiles的参数。
可是有人说,只要修改db_files后,重启数据库即可。
哪位遇到过这样的问题 ,到底哪个方法比较安全。因为修改控制文件还要备份数据库,所以觉得比较麻烦,呵呵
回复

使用道具 举报

千问 | 2012-6-20 17:38:14 | 显示全部楼层
如果建库时设定的maxdatafiles是200,那么也需要改。
maxdatafiles跟初始化文件里的db_files不是一个东西。
回复

使用道具 举报

千问 | 2012-6-20 17:38:14 | 显示全部楼层
刚做了个实验:
SQL> select count(*) from dba_data_files;
COUNT(*)
----------
7
SQL> alter system set db_files=7 scope=spfile;
System altered.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area167772160 bytes
Fixed Size
1218316 bytes
Variable Size
79694068 bytes
Database Buffers 83886080 bytes
Redo Buffers
2973696 bytes
Database mounted.
Database opened.
SQL> show parameter db_files
NAME
TYPEVALUE
------------------------------------ ----------- ------------------------------
db_files
integer 7
SQL> col file_name format a30
SQL> alter tablespace test01add datafile '/opt/ora10g/oradata/orcl/test0102.dbf' size 10m;
alter tablespace test01add datafile '/opt/ora10g/oradata/orcl/test0102.dbf' size 10m
*
ERROR at line 1:
ORA-00059: maximum number of DB_FILES exceeded
注:从以上可以看到db_files已经起作用了,现在数据库中已经有7个数据文件,所以不能添加了。
SQL> alter system set db_files=200 scope=spfile;
System altered.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area167772160 bytes
Fixed Size
1218316 bytes
Variable Size
79694068 bytes
Database Buffers 83886080 bytes
Redo Buffers
2973696 bytes
Database mounted.
Database opened.
SQL> show parameter db_files
NAME
TYPEVALUE
------------------------------------ ----------- ------------------------------
db_files
integer 200
SQL> alter tablespace test01add datafile '/opt/ora10g/oradata/orcl/test0102.dbf' size 10m;
Tablespace altered.
SQL>
注:现在db_files是200,所以可以加数据文件了。
回复

使用道具 举报

千问 | 2012-6-20 17:38:14 | 显示全部楼层
创建数据库或控制文件时会给MAXDATAFILES一个默认值,如果以后增加数据文件超过MAXDATAFILES,但是小于db_files,那么会自动增加MAXDATAFILES
所以你只需要增加db_files就可以了。
回复

使用道具 举报

千问 | 2012-6-20 17:38:14 | 显示全部楼层
什么版本?以前一些老版本需要重建控制文件的, 9i以后的都不用了,直接db_files增大重新启动即可
回复

使用道具 举报

千问 | 2012-6-20 17:38:14 | 显示全部楼层
多大的库这么多数据文件?
回复

使用道具 举报

千问 | 2012-6-20 17:38:14 | 显示全部楼层
10g的库,这个库之前的维护不太及时。
很多数据库的数据文件只有2G,2G数据文件所在的物理磁盘也满了,新扩了物理磁盘,可是无法创建新的数据文件,呵呵
回复

使用道具 举报

千问 | 2012-6-20 17:38:14 | 显示全部楼层
bucuo哈!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行