今天朋友问我数据库的数据数据文件已经到达最大限制了。
数据有两个参数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/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/12798004/viewspace-1969028/