数据文件个数大于1024时ORACLE数据文件FILE_ID及RELATIVE_FNO的变化示例(二)

2014-11-24 09:03:58 · 作者: · 浏览: 2
ate v_sql ;
end loop;
end ;
/
#######CREATE TABLESPACE已经指定一个数据文件,此时表空间TEST1内有1021个数据文件。
查询:
col file_name for a38
BYS@ bys3>select * from (select file_name,file_id,relative_fno from dba_data_files where tablespace_name='TEST1' order by file_id desc) where rownum<5;
FILE_NAME FILE_ID RELATIVE_FNO
-------------------------------------- ---------- ------------
/u01/oradata/bys3/test1/test1020.dbf 1025 2
/u01/oradata/bys3/test1/test1019.dbf 1024 1
/u01/oradata/bys3/test1/test1018.dbf 1023 1023
/u01/oradata/bys3/test1/test1017.dbf 1022 1022
################

3.手动输入命令,新建数据库文件,在增加到第1024个数据文件时会报错。 --测试得出表空间最大文件数是1023

BYS@ bys3>alter tablespace test1 add datafile '/u01/oradata/bys3/test1/test1021.dbf' size 1m;
Tablespace altered.
BYS@ bys3>alter tablespace test1 add datafile '/u01/oradata/bys3/test1/test1022.dbf' size 1m;
Tablespace altered.
BYS@ bys3>alter tablespace test1 add datafile '/u01/oradata/bys3/test1/test1023.dbf' size 1m;
alter tablespace test1 add datafile '/u01/oradata/bys3/test1/test1023.dbf' size 1m
*
ERROR at line 1:
ORA-01686: max # files (1023) reached for the tablespace TEST1

#####################################################################

4.查看此时文件号,相对文件号信息,对比并总结。

BYS@ bys3>select count(file_name) from dba_data_files where tablespace_name='TEST1';
COUNT(FILE_NAME)
----------------
1023
BYS@ bys3>select * from (select file_name,file_id,relative_fno from dba_data_files where tablespace_name='TEST1' order by file_id desc) where rownum<10;
FILE_NAME FILE_ID RELATIVE_FNO
-------------------------------------- ---------- ------------
/u01/oradata/bys3/test1/test1022.dbf 1027 4
/u01/oradata/bys3/test1/test1021.dbf 1026 3
/u01/oradata/bys3/test1/test1020.dbf 1025 2
/u01/oradata/bys3/test1/test1019.dbf 1024 1 ---可以看到相对文件号大于1023时,自动变为1--TEST1表空间的1

/u01/oradata/bys3/test1/test1018.dbf 1023 1023
/u01/oradata/bys3/test1/test1017.dbf 1022 1022
/u01/oradata/bys3/test1/test1016.dbf 1021 1021
/u01/oradata/bys3/test1/test1015.dbf 1020 1020
/u01/oradata/bys3/test1/test1014.dbf 1019 1019
BYS@ bys3>select * from (select file_name,file_id,relative_fno from dba_data_files order by file_id ) where rownum<10;
FILE_NAME FILE_ID RELATIVE_FNO
-------------------------------------- ---------- ------------
/u01/oradata/bys3/system01.dbf 1 1
/u01/oradata/bys3/sysaux01.dbf 2 2
/u01/oradata/bys3/undotbs01.dbf 3 3
/u01/oradata/bys3/user01.dbf 4 4
/u01/oradata/bys3/test1/test001.dbf 5 5
/u01/oradata/bys3/test1/test1.dbf 6 6
/u01/oradata/bys3/test1/test2.dbf 7 7
/u01/oradata/bys3/test1/test3.dbf 8 8
/u01/oradata/bys3/test1/test4.dbf 9 9
BYS@ bys3>select file_name,file_id,relative_fno from dba_data_files where relative_fno=1;
FILE_NAME FILE_ID RELATIVE_FNO
-------------------------------------- ---------- ------------
/u01/oradata/bys3/system01.dbf 1 1
/u01/oradata/bys3/test1/test1019.dbf 1024 1
####################################################

5.再创建一个TEST2表空间,然后使用循环新建1022个数据文件-此时TEST2有1023个数据文件。

创建表空间TEST2:
create tablespace test2 datafile '/u01/oradata/bys3/test2/test001.dbf' size 1m;
使用循环2为test1表空间增加1022个大小为1M的数据文件
declare
v_sql2 varchar2(1000) ;
begin
for i in 1..1022 loop
v_sql2 := 'alter tablespace test2 add datafile ''/u01/oradata/bys3/test2/test'||i||'.dbf'' size 1m';
execute immediate v_sql2 ;
end loop;
end ;
/
#########CREATE TAB