Solaris上安装了Oracle 9i。
通过脚本创建表空间的时候提示db_files达到最大值。
要怎么修改这个db_files,然后怎么应用?我试过找到home/oracle/oracle/product/9.2.0/dbs/init.ora文件,修改其中的db_files然后重新启动服务没有效果。

解决方案 »

  1.   

    db_files这个是建立数据库的时候提供的一个参数,写在controlfile里的,好像要通过重建控制文件才能更改
      

  2.   

    create database的时候的参数MAXDATAFILES 100
      

  3.   

    修改ORACLE7数据库maxdatafiles参数的方法 在安装ORACLE7时,一般对maxdatafiles(数据文件的最大个数)参数值不加修改或
    未意识到对其修改,而使用其默认值(往往比需要值要小)。但随着数据量的增多,需要不断
    地往表空间内增加数据文件,但是maxd atafiles的值限定了数据文件的最大个数,数据文件个
    数增加到最大值后,若再继续追加,就会导致“数据文件个数超过了最大值”的错误,以至后
     数据文件的最大个数因操作系统的不同而不同,但是,现在运行着的ORACLE7数据库
    中,数据文件的最大个数可以达到1000个以上,即maxdatafiles的参数值可设为1000或更大,
    远远大于其安装时的默认值(本系统安装时的默认值为30),如果遇到了“数据文件个数超过
    了最大值”的问题时,可通过修改maxdatafiles参数来解决,下面就介绍一下具体的修改方法
     1.实验环境 
     ALPHA8200服务器,操作系统Digial UNIX V3.2C,Oracle7.2数据库。
     2.准备工作 
     启动ORACLE数据库,进行下列操作: 
     $sqldba mode=line(回车) 
     SQLDBA>connect internal(回车)  SQLDBA>alter database backup controlfile to trace;( 回车)  SQLDBA>show parameter user_dump_dest(回车) 
     可以看到trace文件“ora_3044.trc”在/volora/oracle/rdbms/log目录下。
     将trace文件/volora/oracle/rdbms/log/ora_3044.trc拷贝成 df ileadd.sql。
     用vi编辑dfileadd.sql文件,修改maxdatafiles参数(由原来的30改为300)。
     Dfileadd.sql文件如下: 
     Dump file/volora/oracle/rdbms/log/ora_3044.trc
     Oracle7 Server Release7.2.2.3.0 with the64-bit opti on- Production Release
     With the distributed and parallel query options
     PL/SQL Release2.2.2.3.0- Production 
     ORACLE_HOME=/volora/oracle 
     ORACLE_SID= ora72 
     Oracle process number:8 Unix process id:3044 System name: OSF1 
     Node name: slserver.sl.cnpc.co.cn 
     Release: V3.2 
     Version:148 
     Machine: alpha 
     Wed Apr2315:54:281997 
     Wed Apr2315:54:281997 
     *** SESSION ID:(9.1455)1997.04.23.15.54.28.359
     # 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. Addi tional logs may
     # be required for media recovery of offline data fi les. Use this
     # only if the current version of all online logs ar e available.
     STARTUP NOMOUNT 
     CREATE CONTROLFILE REUSE DATABASE"ORA72" NORESETLOG S NOARCHIVELOG
     MAXLOGFILES32 
     MAXLOGMEMBERS2 
     MAXDATAFILES300 
     MAXINSTANCES8 
     MAXLOGHISTORY800 
     LOGFILE 
     GROUP1'/volora/oracle/dbs/log1ora72.dbf' SIZE500K,
     GROUP2'/volora/oracle/dbs/log2ora72.dbf' SIZE500K,
     GROUP3'/volora/oracle/dbs/log3ora72.dbf' SIZE500K
     DATAFILE 
     '/volora/oracle/dbs/systora72.dbf', 
     '/volora/oracle/dbs/rbsora72.dbf', 
     '/volora/oracle/dbs/tempora72.dbf', 
     '/volora/oracle/dbs/toolora72.dbf', 
     '/volora/oracle/dbs/usrora72.dbf', 
     '/volora/oracle/dbs/jhc.dbf', 
     '/volora/oracle/dbs/useradd.dbf' 
     ; 
     # Recovery is required if any of the datafiles are restored backups,
     # or if the last shutdown was not normal or immedia te.
     RECOVER DATABASE 
     # Database can now be opened normally. ALTER DATABASE OPEN; 
     将以上dfileadd.sql文件中横线上没用的斜体部分行删掉,存盘。 
     最后关闭数据库,并做好数据库的备份,包括数据和控制文件的备份,起码要用export
    将数据全部卸出。有条件的话,尽量做全备份,预防在数据库重建失败后瘫痪,因为下一步工
    作牵扯到对数据库的破坏和重新生成工作。
     3.修改maxdatafiles参数的过程 
     3.1删除/volora/oracle/dbs目录下面所有的控制文件(共3个):
     $rm*.ctl(回车) 
     3.2重新生成数据库(生成新的控制文件、数据文件等) 
     $sqldba mode=line(回车) 
     SQLDBA>connect internal(回车) 
     运行dfileadd.sql: 
     SQLDBA>@dfileadd.sql(回车) 
     ORACLE instance started. 
     Statement processed. 
     Media recovery complete. 
     Statement processed. 
     SQLDBA>alter database open noresetlogs;(回车) 
     至此,数据库的刷新工作已完成,可以投入正常运行了
      

  4.   

    抱歉,这几天比较忙,结帖迟了。
    问题已经解决了,用脚本重新建了数据库,在create database的时候指定了DB_FILES参数,并按照 NinGoo(宁哥)的方法重建了控制文件。
    感谢俩位的帮助,如果有人遇到类似问题欢迎与我交流,请邮件联系。[email protected]