誰控制資料檔案最大數限制是 db_files還是控制檔案中的maxdatafiles??

pxbibm發表於2015-12-31

今天朋友問我資料庫的資料資料檔案已經到達最大限制了。
資料有兩個引數db_files和控制檔案中的maxdatafiles,
想測試一下如果引數這個db_files的限制會如何,而且controlfile中有個maxdatafiles的限制,不知道這兩個限制到底誰是真正生效的

SQL> show parameter db_files;


NAME                             TYPE        VALUE

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

db_files                             integer     200

 

[root@test ~]# vi /app/test.sh


# !/bin/bash

# echo "add tablespace"

for ((i=1;i<200;i++))

do

echo "alter tablespace users add datafile '/app/oradata/orcl/user${i}.dbf' size 1m;">>/tmp/test.txt

done

~

[root@test ~]# sh /app/test.sh

用生成的test.txt檔案在server端批次載入datafile,達到db_files的限制後出現:

alter tablespace users add datafile '/app/oradata/orcl/user197.dbf' size 1m


ORA-00059: 超出 DB_FILES 的最大值

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


  COUNT(*)

----------

       200


SQL> alter system set db_files=300 scope=spfile;


System altered


重啟資料庫後

SQL> show parameter db_files;


NAME                                 TYPE        VALUE

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

db_files                             integer     300


SQL> alter tablespace users add datafile 'f:\app\oradata\xiaoyu\user197.dbf' size 1m;


Tablespace altered

只要db_files夠,每當超過maxdatafiles,maxdatafiles會翻倍增加。
比如原來最大檔案數是100,當建立101個檔案時,最大檔案數會變成200,當建立201個檔案時,最大檔案數變成400,然後是800、1600,等

真正起主導地位的是parameter的引數db_files,並不是controlfile中的maxdatafiles引數,
而網路上有文章提到需要重建controlfile重置maxdatafiles大於db_files,而後修改db_files的方法是不可取的,
也提醒大家對於網路上的文章還是需要用辨別的眼光去看,官方文件都可能有錯誤,套用某位大師的認知,
不輕易相信任何人任何書籍的論點,必須要自己測試 推敲認知這個論點。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12798004/viewspace-1969028/,如需轉載,請註明出處,否則將追究法律責任。

相關文章