oracle8ora-00059,ORA-00059错误分析以及MAXDATAFILES、DB_FILES参数修改

ORA-00059错误分析以及MAXDATAFILES、DB_FILES参数修改

1. 问题描述

本文的环境为:

OS: AIX 6.1

DB: oracle 10.2.0.5 rac

在扩表空间的容量,增加数据文件时,报了ORA-00059:达到最大的文件数量,错误的描述如下:

alter tablespace p_data_low add datafile '/dev/rora_p_data_31_l' size 25580m

*

ERROR at line 1:

ORA-00059: maximum number of DB_FILES exceeded

[@more@]

2.问题分析

2.1 使用oerr工具,查询一下导致该错误的原因和解决该问题的简单描述,如下:

$ oerr ora 00059

00059, 00000, "maximum number of DB_FILES exceeded"

// *Cause:The value of the DB_FILES initialization parameter was exceeded.

// *Action: Increase the value of the DB_FILES parameter and warm start.

2.2 检查数据库的DB_FILES参数设置,本例为DB_FILES=200 ,如下:

SQL> show parameter db_files

NAMETYPEVALUE

------------------------------------ ----------- ------------------------------

db_filesinteger200

2.3 统计数据库数据文件的数量,可以看到数据库数据文件的数量已经达到了参数DB_FILES设置的200阀值,如下:

SQL> select count(1) from v$datafile;

COUNT(1)

----------

200

ORACLE 通过两个参数来限制数据文件的数量,分别为MAXDATAFILES和DB_FILES.

MAXDATAFILES 是在控制文件创建的时候设置的,并且保存在控制文件中,oracle 10G RAC该参数的缺省设置为1024,

如果要修改这个参数,则需要通过重新建立控制文件来完成,该参数被称为'hard limit';

DB_FILES 是在spfile或者init{SID}.ora文件中设置的,可以被手工修改,重启数据库后就生效,被成为'soft limit';

各个操作系统和数据库版本的MAXDATAFILES最大限制值如下:

V78.0.58.1.69.210.110.2

-------- -------- ------ -------- -------- --------

UNIXPer TS10221022102210221022

Per DB 10226553665536655346533465334

VMSPer TS1022---1022

Per DB 102265536-65334

WINDOWS Per TS10221022

Per DB 10226553665536655346533465334

增加MAXDATAFILES参数,将增加控制文件的大小。所以需要加以限制。

当达到MAXDATAFILES阀值时,只要磁盘空间允许,控制文件将自动扩展.

增加DB_FILES参数,将增加了PGA的开销(增加了每个连接数据库的用户的PGA开销)。

3. 问题解决

3.1 查询控制文件中MAXDATAFILES参数的设定值。

先将控制文件的创建信息导出到dump文件中,在dump文件中可以查找到该参数的设定值。

SQL>alter database backup control file to trace;

SQL>host

$cd $ORACLE_BASE/admin/{ORACLE_SID}/udump

$ls -lt|more

$ ls -lt

total 312

-rw-r-----1 oracleoinstall17404 Jan 18 10:43 jlzdh1_ora_7274760.trc

-rw-r-----1 oracleoinstall858 Jan 18 10:26 jlzdh1_ora_7471420.trc

......

$more ./jlzdh1_ora_7274760.trc

......

STARTUP NOMOUNT

CREATE CONTROLFILE REUSE DATABASE "JLZDH" RESETLOGSNOARCHIVELOG

MAXLOGFILES 192

MAXLOGMEMBERS 3

MAXDATAFILES 1024

MAXINSTANCES 32

MAXLOGHISTORY 292

LOGFILE

GROUP 1 '/dev/rora_redo1_01'SIZE 380M,

GROUP 2 '/dev/rora_redo1_02'SIZE 380M,

GROUP 5 '/dev/rora_redo1_03'SIZE 380M,

GROUP 6 '/dev/rora_redo1_04'SIZE 380M

-- STANDBY LOGFILE

DATAFILE

'/dev/rora_system_01',

'/dev/rora_undotbs1_01',

'/dev/rora_sysaux_01',

'/dev/rora_n_data_01',

......

可看到MAXDATAFILES被设置为1024.

3.2 因为当前的文件数量未达到MAXDATAFILES参数值,所以不需要使用重新建立控制文件来修改该参数。

注:如果需要通过重新建立控制文件来修改MAXDATAFILES参数值,请参看我的博客文章http://djb1008.itpub.net/post/42280/526053

3.3 修改DB_FILES参数(RAC 环境,需要加上SID='*'

SQL>alter systemset db_files=1000 scope=spfile sid='*';

重新启动数据库

SQL>shutdown immediate;

SQL>STARTUP

如果是rac的话,可以使用srvctl命令,停止和启动数据库,如下:

$srvctl stop db -d orcl

$srvctl start db -d orcl

3.4 继续扩充表空间的容量,不再报错,命令执行成功。

SQL>alter tablespace p_data_low add datafile '/dev/rora_p_data_31_l' size 25580m

Tablespace altered.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值