Oracle的相对文件号(RFN)和绝对文件号(AFN)概念一直不太清楚,最近总结了下,特地记录下来。
绝对文件号是整个数据库唯一的;
相对文件号只在表空间唯一,就是说每个表空间都有自己的相对文件号;相对文件号对于整个数据库来说是不唯一的;
每个表空间的最大文件数为1023。
下面通过一些示例来看看相对文件号是如何产生的。
SQL> select tablespace_name from dba_tablespaces;
TABLESPACE_NAME
------------------------------
SYSTEM
RBS
USERS
TEMP
TOOLS
INDX
DRSYS
7 rows selected.
SQL> select file_id,relative_fno from dba_data_files where tablespace_name='SYSTEM';
FILE_ID RELATIVE_FNO
---------- ------------
1 1
SQL> select file_id,relative_fno from dba_data_files where tablespace_name='USERS';
FILE_ID RELATIVE_FNO
---------- ------------
3 3
9 9
10 10
11 11
12 12
13 13
14 14
15 15
.. ..
.. ..
.. ..
1020 1020
1021 1021
1022 1022
1023 1023
1024 1
通过上面的输出可以看到,相对文件号尽量同绝对文件号保持一致,直到表空间中的文件数超出1023。
现在对users表空间添加一个数据文件,然后看看相对文件和绝对文件的变化。
SQL> ALTER TABLESPACE USERS ADD DATAFILE 'D:\U01\ORACLE\TEST\ORADATA\USER001.DBF' SIZE 1m;
Tablespace altered.
SQL> select file_id,relative_fno from dba_data_files where tablespace_name='USERS';
FILE_ID RELATIVE_FNO
---------- ------------
3 3
9 9
10 10
11 11
12 12
13 13
14 14
15 15
.. ..
.. ..
.. ..
1020 1020
1021 1021
1022 1022
1023 1023
1024 1
1025 2 --已经添加了一个相对文件号为2的数据文件。
接下来,再对任意表空间添加一个数据文件,然后再对users表空间添加数据文件。
SQL> ALTER TABLESPACE TOOLS ADD DATAFILE 'D:\U01\ORACLE\TEST\ORADATA\TOOLS001.DBF' SIZE 1m;
Tablespace altered.
SQL> select file_id,relative_fno from dba_data_files where tablespace_name='TOOLS';
FILE_ID RELATIVE_FNO
---------- ------------
8 8
1026 3
SQL> ALTER TABLESPACE USERS ADD DATAFILE 'D:\U01\ORACLE\TEST\ORADATA\USER002.DBF' SIZE 1m;
Tablespace altered.
SQL> select file_id,relative_fno from dba_data_files where tablespace_name='USERS';
FILE_ID RELATIVE_FNO
---------- ------------
3 3
9 9
10 10
11 11
12 12
13 13
14 14
15 15
.. ..
.. ..
.. ..
1020 1020
1021 1021
1022 1022
1023 1023
1024 1
1025 2
1027 4 --这里添加的是相对文件号为4的数据文件,因为已经存在3号文件
绝对文件号是整个数据库唯一的;
相对文件号只在表空间唯一,就是说每个表空间都有自己的相对文件号;相对文件号对于整个数据库来说是不唯一的;
每个表空间的最大文件数为1023。
下面通过一些示例来看看相对文件号是如何产生的。
SQL> select tablespace_name from dba_tablespaces;
TABLESPACE_NAME
------------------------------
SYSTEM
RBS
USERS
TEMP
TOOLS
INDX
DRSYS
7 rows selected.
SQL> select file_id,relative_fno from dba_data_files where tablespace_name='SYSTEM';
FILE_ID RELATIVE_FNO
---------- ------------
1 1
SQL> select file_id,relative_fno from dba_data_files where tablespace_name='USERS';
FILE_ID RELATIVE_FNO
---------- ------------
3 3
9 9
10 10
11 11
12 12
13 13
14 14
15 15
.. ..
.. ..
.. ..
1020 1020
1021 1021
1022 1022
1023 1023
1024 1
通过上面的输出可以看到,相对文件号尽量同绝对文件号保持一致,直到表空间中的文件数超出1023。
现在对users表空间添加一个数据文件,然后看看相对文件和绝对文件的变化。
SQL> ALTER TABLESPACE USERS ADD DATAFILE 'D:\U01\ORACLE\TEST\ORADATA\USER001.DBF' SIZE 1m;
Tablespace altered.
SQL> select file_id,relative_fno from dba_data_files where tablespace_name='USERS';
FILE_ID RELATIVE_FNO
---------- ------------
3 3
9 9
10 10
11 11
12 12
13 13
14 14
15 15
.. ..
.. ..
.. ..
1020 1020
1021 1021
1022 1022
1023 1023
1024 1
1025 2 --已经添加了一个相对文件号为2的数据文件。
接下来,再对任意表空间添加一个数据文件,然后再对users表空间添加数据文件。
SQL> ALTER TABLESPACE TOOLS ADD DATAFILE 'D:\U01\ORACLE\TEST\ORADATA\TOOLS001.DBF' SIZE 1m;
Tablespace altered.
SQL> select file_id,relative_fno from dba_data_files where tablespace_name='TOOLS';
FILE_ID RELATIVE_FNO
---------- ------------
8 8
1026 3
SQL> ALTER TABLESPACE USERS ADD DATAFILE 'D:\U01\ORACLE\TEST\ORADATA\USER002.DBF' SIZE 1m;
Tablespace altered.
SQL> select file_id,relative_fno from dba_data_files where tablespace_name='USERS';
FILE_ID RELATIVE_FNO
---------- ------------
3 3
9 9
10 10
11 11
12 12
13 13
14 14
15 15
.. ..
.. ..
.. ..
1020 1020
1021 1021
1022 1022
1023 1023
1024 1
1025 2
1027 4 --这里添加的是相对文件号为4的数据文件,因为已经存在3号文件
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14284241/viewspace-534846/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/14284241/viewspace-534846/