12
返回列表 发新帖
楼主: leeecho

controlfile里面的参数maxdatafile真的有用吗?

[复制链接]
论坛徽章:
15
数据库板块每日发贴之星
日期:2006-10-22 01:01:542014年新春福章
日期:2014-02-18 16:42:022013年新春福章
日期:2013-02-25 14:51:242012新春纪念徽章
日期:2012-01-04 11:51:22ITPUB十周年纪念徽章
日期:2011-11-01 16:21:152011新春纪念徽章
日期:2011-02-18 11:42:472011新春纪念徽章
日期:2011-01-04 10:24:02ITPUB9周年纪念徽章
日期:2010-10-08 09:31:21生肖徽章2007版:羊
日期:2009-09-10 11:27:42生肖徽章2007版:羊
日期:2009-03-10 21:16:04
11#
发表于 2006-11-26 16:12 | 只看该作者
好东东

使用道具 举报

回复
论坛徽章:
7
生肖徽章2007版:鸡
日期:2008-01-02 17:35:53生肖徽章2007版:鼠
日期:2008-01-02 17:35:53奥运会纪念徽章:篮球
日期:2008-05-28 09:41:002011新春纪念徽章
日期:2011-02-18 11:43:34ITPUB十周年纪念徽章
日期:2011-11-01 16:20:28奥运会纪念徽章:棒球
日期:2012-08-17 12:55:562013年新春福章
日期:2013-02-25 14:51:24
12#
 楼主| 发表于 2006-11-29 13:41 | 只看该作者
经过测试,结果如下:
我的版本:
SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.7.0 - Production
PL/SQL Release 9.2.0.7.0 - Production
CORE    9.2.0.7.0       Production
TNS for 32-bit Windows: Version 9.2.0.7.0 - Production
NLSRTL Version 9.2.0.7.0 - Production

SQL> show parameter db_files

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_files                             integer     200

也就说db_files的默认值是200,而controlfile里面的maxdatafile默认值为100。
而上次测试的结果是,一个数据库的数据文件总数(不包括临时文件)可以大于maxdatafile
如我的数据里面:
select count(*) from dba_data_files
----
115
下面继续增加数据文件:
alter tablespace tbs1 add datafile
'D:\ORACLE\ORADATA\LX\TBSDATA104.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA105.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA106.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA107.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA108.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA109.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA110.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA111.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA112.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA113.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA114.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA115.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA116.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA117.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA118.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA119.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA120.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA121.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA122.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA123.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA124.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA125.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA126.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA127.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA128.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA129.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA130.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA131.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA132.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA133.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA134.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA135.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA136.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA137.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA138.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA139.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA140.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA141.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA142.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA143.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA144.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA145.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA146.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA147.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA148.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA149.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA150.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA151.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA152.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA153.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA154.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA155.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA156.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA157.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA158.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA159.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA160.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA161.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA162.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA163.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA164.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA165.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA166.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA167.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA168.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA169.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA170.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA171.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA172.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA173.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA174.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA175.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA176.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA177.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA178.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA179.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA180.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA181.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA182.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA183.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA184.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA185.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA186.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA187.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA188.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA189.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA190.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA191.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA192.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA193.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA194.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA195.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA196.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA197.DBF' size 1M ,
'D:\ORACLE\ORADATA\LX\TBSDATA198.DBF' size 1M
autoextend off;

这里增加95个文件加上原有的115个也就是210个文件,执行上面的语句得到下面的错误:
ORA-00059: maximum number of DB_FILES exceeded

下面来修改db_files 的值:
SQL> alter system set db_files=210;
alter system set db_files=210
                 *
ERROR at line 1:
ORA-02095: specified initialization parameter cannot be modified
SQL> alter system set db_files=210 scope=spfile;
System altered.

看出db_files非动态参数,需要重启数据库,才能起作用。
重启数据库:
SQL> show parameter db_files

NAME                                 TYPE        VALUE
------------------------------------ ----------- -----------------------------
db_files                             integer     210

db_files起作用,然后再执行增加数据文件的语句,结果成功,这时数据库的数据文件正好为210:
select count(*) from dba_data_files
----
210

再增加数据文件就超过了db_files 的值210,就会报:
ORA-00059: maximum number of DB_FILES exceeded
错误。到这里我们就对db_files和maxdatafile的作用弄明白了。

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
122
马上加薪
日期:2014-02-19 11:55:14ITPUB官方微博粉丝徽章
日期:2011-06-28 19:45:36管理团队成员
日期:2011-05-07 01:45:082010广州亚运会纪念徽章:拳击
日期:2011-03-29 13:11:152010广州亚运会纪念徽章:篮球
日期:2011-02-20 22:50:172011新春纪念徽章
日期:2011-02-18 11:42:492011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:50
13#
发表于 2006-11-29 13:53 | 只看该作者
最初由 passionwu 发布
[B]那是不是说maxdatafiles这个参数是为了向前兼容而保留,在9i中已不起作用了呢? [/B]


从9i开始,控制文件中的maxdatafiles指定了控制文件中数据部分初始占用的空间,但是以后如果实际数据文件超过这个数,控制文件会动态扩展这部分空间

使用道具 举报

回复
论坛徽章:
22
蛋疼蛋
日期:2011-09-02 08:49:42ITPUB元老
日期:2013-10-29 19:15:25
14#
发表于 2006-11-29 14:05 | 只看该作者
好文~!

使用道具 举报

回复
论坛徽章:
45
生肖徽章:蛇
日期:2007-04-26 04:26:39生肖徽章:蛇
日期:2006-12-26 23:28:26生肖徽章:蛇
日期:2006-12-20 22:27:29生肖徽章:蛇
日期:2006-12-02 22:30:18生肖徽章:蛇
日期:2006-11-01 19:28:35生肖徽章:蛇
日期:2006-10-29 06:25:00生肖徽章:蛇
日期:2006-10-27 08:25:50生肖徽章:蛇
日期:2006-10-21 23:25:37生肖徽章:蛇
日期:2006-10-05 05:22:17生肖徽章:蛇
日期:2006-09-26 17:35:25
15#
发表于 2006-11-29 14:17 | 只看该作者
KAO,学习了

使用道具 举报

回复
论坛徽章:
8
CTO参与奖
日期:2009-01-15 11:42:46SQL大赛参与纪念
日期:2011-04-13 12:08:17蛋疼蛋
日期:2012-05-31 13:19:132013年新春福章
日期:2013-02-25 14:51:24优秀写手
日期:2014-03-13 06:00:16目光如炬
日期:2016-07-31 22:30:25火眼金睛
日期:2016-08-31 22:00:00授权会员
日期:2017-09-30 15:12:14
16#
发表于 2008-3-14 10:28 | 只看该作者
有收获,不错

使用道具 举报

回复
论坛徽章:
10
授权会员
日期:2008-03-13 10:32:44生肖徽章2007版:鸡
日期:2008-04-03 18:55:51数据库板块每日发贴之星
日期:2008-04-21 01:01:58奥运会纪念徽章:拳击
日期:2008-06-14 10:29:372014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11
17#
发表于 2008-3-14 10:42 | 只看该作者
通过v$controlfile_record_section可以查询datafile的记录情况
select * from v$controlfile_record_section where type='DATAFILE';

TYPE                   RECORD_SIZE  RECORDS_TOTAL   RECORDS_USED
-------------------- -----------------   --------------------     ---------------
DATAFILE            180                   100                        7

RECORD_SIZE 是每个DATAFILE记录的大小(单位:byte)
RECORDS_TOTAL 是controlfile可以存储的数据文件记录数,即create controlfile时的maxdatafiles参数值
RECORDS_USED 是controlfile中已经有多少个数据文件记录,即已经有几个数据文件

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表