Chinaunix首页 | 论坛 | 博客
  • 博客访问: 706543
  • 博文数量: 147
  • 博客积分: 5347
  • 博客等级: 大校
  • 技术积分: 1453
  • 用 户 组: 普通用户
  • 注册时间: 2005-06-06 11:11
文章分类

全部博文(147)

文章存档

2014年(4)

2012年(9)

2011年(5)

2010年(28)

2009年(21)

2008年(29)

2007年(15)

2006年(17)

2005年(19)

我的朋友

分类: Oracle

2010-02-05 13:49:27


MAXDATAFILES and DB_FILES Parameters [ID 119507.1]  

  修改时间 10-JUL-2009     类型 BULLETIN     状态 PUBLISHED  

Checked for relevance on 19-Jun-2009


MAXDATAFILES and DB_FILES Parameters   
====================================
 
This article is mainly applicable to Oracle7 although the CREATE DATABASE 
and CREATE CONTROLFILE syntax are the same for Oracle8 and higher.  
The difference is that with Oracle8+ when MAXDATAFILES is reached the 
controlfile will expand automatically.

DEFINITIONS:   
------------------   
   
In the syntax for CREATE DATABASE, you will find a parameter called    
"MAXDATAFILES".  The value that is entered for this parameter (or     
some default if the parameter is left out) is stored in the CONTROL    
FILE upon database creation.  This is the "hard" limit on the number of     
datafiles which can be associated with this particular database.    
   
In the init.ora (init.ora on UNIX, __init.ora on VMS),    
there is a parameter "DB_FILES".  This is the limit on the total number of    
files associated with a particular INSTANCE of a database.  Since this     
parameter can be changed simply by editing the init.ora and shutting down    
and restarting the database, it is considered a "soft" limit.    

    
COMMON QUESTIONS:   
-----------------   

1 - What are the default values of MAXDATAFILES ?

    The default and the range of values of maxdatafiles and db_files are 
    operating system specific. Please refer to your operating system specific
    Oracle manuals.
  
            | 7.3.4 | 8.0.5 | 8.1.6 |  9.2  |  10.1   |  10.2
    ----------------------------------------------------------------
    UNIX    |  30   |  30   |  30   |   30  |   30    |   30
    ----------------------------------------------------------------
    VMS     |  32   |  32   |  -    |   32  |    -    |   30
    ----------------------------------------------------------------
    Windows |  32   | 254   | 254   |   32  |   32    |   -
    ----------------------------------------------------------------

2 - Why is there a limit on MAXDATAFILES?    
   
    Each platform uses a port-specific number of bits to store the ORACLE    
    file numbers.  Thus, MAXDATAFILES is limited by this number.    
    
    Typical values are:    
                     V7      8.0.5    8.1.6    9.2      10.1     10.2
                    -------- -------- ------ -------- -------- -------- 
     UNIX    Per TS          1022     1022    1022     1022     1022
             Per DB 1022     65536    65536   65534    65334    65334 
     VMS     Per TS          1022       -       -        -      1022
             Per DB 1022     65536      -                       65334
     WINDOWS Per TS          1022     1022       
             Per DB 1022     65536    65536   65534    65334    65334 
    
     Notice that each value is 2^n - 2 for some n.    
 
3 - Why would one set MAXDATAFILES to anything less than the port-specific    
    maximum?    
   
    Increasing the value of MAXDATAFILES increases the size of the    
    CONTROL FILE.    
    
4 - Why would one set DB_FILES to anything less than MAXDATAFILES?    
   
    Increasing the value of DB_FILES increases the size of the PGA, or    
    Program Global Area, which is allocated for every user process    
    connected to ORACLE.    
    
5 - How can I determine my machine's maximum limit on MAXDATAFILES?    
   
    Check your ORACLE Installation and User's Guide.    
    The index should point to a port-specific limit.    
    
6 - How can I determine where my CONTROL FILE(s) are?    
    
    In SVRMGR or SQL*PLUS depending on the version,  type: 
    show parameter control_files;    
    If you have multiple control files, you may find that some of them may    
    be cut off in the output from show parameter.  In this case, you can query 
    from V$CONTROLFILE;    

7 - How To Set Maxdatafiles While Creating Database With Dbca.
   
    You can change the Maxdatafiles value in the DBCA template which DBCA use
    for DB creation.
    

COMMONS ERRORS  :  ORA-1118 and ORA-1165 :
-----------------------------------------

ORA-01118: cannot add any more database files: limit of 32 exceeded
 
ORA-01165 : MAXDATAFILES may not exceed  when attempting to add 
                       datafiles to the database

These  erros  means that your database has hit the    
MAXDATAFILES limit, it is not a problem with the DB_FILES parameter,    
because if it was, an ORA-59: 'maximum number of DB_FILES exceeded'   
would arise.    
   
These errors occurs because you have hit the hard limit for the number of data   
files.

SOLVING ORA-1118 and ORA-1165 :
------------------------------

The following are possible options to get around these errors :     
   
1.  You should verify that you haven't reached a hard limit for MAXDATAFILES 
   imposed by the Operating System. This limit can be found in the O/S specific
   documentation.
   
   If MAXDATAFILES is already equal to the maximum value, then you must 
   restructure the database by reducing the number of datafiles associated with 
   each individual tablespace:

     a) export the objects from the tablespace
     b) drop the tablespace
     c) recreate the tablespace with less datafiles
     d) import the objects back into the tablespace

    In some cases, if the datafile size is too small, it might be usefull to 
    resize the datafiles. Make sure that you keep the datafile size lower than 
    the Operating System limitation on file sizes :

     > ALTER DATABASE DATAFILE 'D:\Oradata\Orcl\datafile\usr01.dbf' RESIZE 500M;

    Query DBA_SEGMENTS to find out all objects belonging to a particular  
    tablespace.

2.  Increase the MAXDATAFILES parameter.  It is possible for you to increase 
    the MAXDATAFILES limit without recreating the entire database.  This is done
    by recreating the control file only.     
   
3. Especially for Oracle8+ you should make sure that you do not encounter an 
   error against the maximum number of open database files (DB_FILES). It is 
   more likely that the value for DB_FILES is too low since the controlfile in 
   Oracle8 expands automatically as long as the number of the added datafile is
   lower then the value for DB_FILES. Normally the error message should 
   indicate this:

     ORA-00059 : maximum number of DB_FILES exceeded

4.  Recreate the database.  Since the MAXDATAFILES parameter is specified    
    upon database creation, recreating the database allows you to increase   
    this parameter.  
   
    In addition to your operating system documentation, you may want to    
    reference the following bulletins:   
 
    O7 - Creating an Oracle 7.X Database under Unix - 
   
RECREATING THE CONTROL FILE:   
----------------------------  
 
In Oracle7 or higher, you can create the control file.  In addition, you can get
Oracle to create the script for you.   To do this, perform the following steps:   
   
1.  With the database mounted or open, issue the following commands:    
    
    SQL> alter database backup controlfile to trace;    
    SQL> exit    
   
2.  A trace file will have been generated in your 'user_dump_dest'.   
    User_dump_dest is an init.ora parameter, and can be found by    
    issuing:   
   
    SQL> show parameter user_dump_dest   
   
    The easiest way to locate the correct trace is to look at its date.  A   
    file will exist with the current date and time.  The naming convention    
    for these files is operating system specific.   
   
3.  Once the file is located, search through the file for the word "CONTROL"    
   
    You should find:    
   
    # The following commands will create a new control file and use it    
    # to open the database.    
    # No data other than log history will be lost.  Additional logs may    
    ETC.ETC.    
    
4.  Copy this trace file to some location and rename it to end it ".sql",    
    for this example, it is called "recr_con.sql".     
   
5.  Edit the "recr_con.sql" deleting the trace header information.  Then  
    increase the value that you find next to the word "MAXDATAFILES".    
    
6.  Shutdown the database (NORMAL or IMMEDIATE, but not ABORT).    
   
7.  Take a full database backup at this time.    
   
8.  Remove the current control files.  It is essential to remove all control   
    files, otherwise, you will receive an error.  In addition, you CANNOT   
    REUSE the control file, since the size of the control file will increase   
    when you increase MAXDATAFILES.   
    
9.  Create the controlfile within SQLDBA:   
   
    SQL> connect internal     [if using sqldba or svrmgrl]
         or 
         connect / as sysdba  [if using sqlplus]
    SQL> @recr_con.sql    
    SQL> alter database open noresetlogs;    
    
    If you receive a "Statement processed" message, then your database is    
    now back up and running with a higher datafile limit.  It is recommended   
    to shutdown at this time and take a full backup.    
    
CREATE CONTROLFILE SYNTAX:   
-------------------------
   
The following is information on the create control file syntax, this    
information is fully documented in the Oracle SQL Reference Manual.   
   
The syntax of this command is similar to CREATE DATABASE.    
The defaults for any missing clauses are the same as the    
DATABASE defaults for CREATE DATABASE.    
    
CREATE CONTROLFILE [REUSE]    
   SET DATABASE name    
   [LOGFILE filespec [, filespec] ...]    
    RESETLOGS | NORESETLOGS    
   [MAXLOGFILES integer]    
   [DATAFILE filespec [, filespec] ...]    
   [MAXDATAFILES integer]    
   [MAXINSTANCES integer]    
   [ARCHIVELOG | NOARCHIVELOG]    
   [SHARED | EXCLUSIVE]    
    
Parameters:    
    
REUSE:  If present the control files may already exist.  The    
     new control files will overwrite the existing files.  If    
     this option is missing, the new control files must not    
     yet exist.  As in CREATE DATABASE, the names of the    
     control files are determined by the init.ora parameter    
     control_files.    
    
DATABASE:  Must match the database names in the data and log    
     files.                                                                   
       
LOGFILE:  This clause lists all the online logs that will be    
     used for this database.  If not specified the port    
     dependant defaults will be assumed.  The interpretation    
     of the filespecs depends on the next parameter.    
    
RESETLOGS:  If this flag is present the current contents of    
     the online logs are ignored.  The new control files will    
     contain flags requiring ALTER DATABASE OPEN RESETLOGS,    
     which initializes the logs.  Media recovery may be    
     applied as needed before the open.  Note that either    
     RESETLOGS or NORESETLOGS must be specified.  It is safest    
     to choose RESETLOGS and follow it with normal media    
     recovery.    
    
NORESETLOGS:  If specified, the log files must be the current    
     online logs.  They must not be restored backups, and all    
     log files must be listed.  Their headers are read to    
     construct the control file entries.  They are used for    
     recovery.  If archiving is enabled all the online logs    
     must be archived, even if they were already archived.    
     The SIZE option in the filespecs, if present, will be 
     used to validate the size of the file named.    
    
MAXLOGFILES:  Same as for CREATE DATABASE.  May be different    
     than the value in the original control file, but it may    
     not be smaller the maximum number of log files the    
     database ever contained - including ones that have been    
     dropped.  Set it greater than or equal to the value used    
     at CREATE DATABASE time.    
    
DATAFILE:  To ensure proper behavior, all datafiles for the    
     database must be listed.  It is possible to omit a non    
     system tablespace file only if media recovery is enabled    
     and you will not be doing an open reset logs on the first    
     open after the create controlfile.  If the omitted    
     file(s) contain(s) active rollback segments, the open    
     will most likely fail, in which case the missing    
     datafile(s) must be found, and the controlfile recreated.    
    
     All datafiles listed must be accessible since they are    
     assumed to be online.  They MAY be backup copies needing    
     recovery.  Their headers are read to construct the    
     control file records.  The SIZE option in the filespecs,              
     if present, is used to validate the size of the file    
     named.  The reuse option is ignored.  The next database    
     open validates that all the files are specified and that    
     the sizes match.    
    
MAXDATAFILES:  Same as for CREATE DATABASE.  May be different    
     than the value in the original control file, but it may    
     not be smaller the maximum number of data files the    
     database ever contained - including ones that have been    
     dropped.    
    
MAXINSTANCES:  Same as for CREATE DATABASE.  May be different    
     than the value in the original control file.    
    
[NO]ARCHIVELOG:  Same as for CREATE DATABASE.  May be    
     different than the value in the original control file.                     
   
     
     If you wish to archive logs, it is recommended that the    
     ARCHIVELOG option be used with CREATE CONTROLFILE even    
     though the option can later be enabled with an ALTER    
     DATABASE command.  NOARCHIVELOG is the default.    
    
SHARED: Same as for CREATE DATABASE.    
    
EXCLUSIVE: Same as for CREATE DATABASE.    
    
EXAMPLE:    
-------
    
CREATE CONTROLFILE    
SET DATABASE ORACLE    
LOGFILE '/releases1/6036p/dbs/log2ORACLE.dbf',    
        '/releases1/6036p/dbs/log3ORACLE.dbf'    
DATAFILE '/releases1/oracle/dbs/data_space.dbf',    
         '/releases1/6036p/dbs/usrORACLE.dbf'    
MAXDATAFILES 121    
NORESETLOGS;


References:
-----------
Oracle® Database Administrator's Reference
10g Release 2 (10.2) for hp OpenVMS

Oracle® Database Administrator's Reference
10g Release 2 (10.2) for UNIX-Based Operating Systems

显示相关信息 相关的


产品
  • Oracle Database Products > Oracle Database > Oracle Database > Oracle Server - Enterprise Edition
关键字
CONTROLFILE; DB_FILES
错误
ORA-1118; ORA-1165; ORA-59

阅读(1631) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~