oracle数据文件编号,oracle中表空间与数据文件编号的连续性
oracle数据⽂件编号,oracle中表空间与数据⽂件编号的连续性ORACLE中表空间编号与数据⽂件编号都是连续的,不会断号。如果TS$中表空间出现了断号,
oracle在启动时会进⾏数据字典和控制⽂件的校验,发现不⼀致时,数据库不能正常启动。
表空间被删除时ts$表中并不会删除相关表空间的记录。只是把表空间的状态置为3,即INVALID状态。
如果再次创建同名的表空间,则oracle会把TS$表中同名表空间的状态由3置为1,ONLINE状态。以此
来保证表空间号的连续。
ORACLE 10g中sql.bsq记录了ts$的online$列与file$的status$列的含义:
ts$
online$  /* 1 = ONLINE, 2 = OFFLINE, 3 = INVALID */
file$
status$  /* 1 = INVALID, 2 = AVAILABLE */
Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0
Connected as SYS
UNDOTBS2,LIANG,Liang这三个表空间被删除,但ts$中并没有删除相关记录。只是把ONLINE$状态置为3(INVALID)
SQL> SELECT ts#,name ,online$  FROM  ts$;
TS# NAME        ONLINE$
--- -----------      -------
0 SYSTEM              1
1 SYSAUX              1
2 UNDOTBS1          1
3 TEMP                  1
4 USERS                1
5 UNDOTBS2          3
6 EXAMPLE            1
7 TBS_REPORT      1
8 LIANG                  39 Liang                  310 rows selected
-- 数据⽂件编号⼀样不会被删除,将删除的数据⽂件编号置为1(INVALID状态)。
SQL> SELECT  file#,status$ FROM  file$;
FILE# STATUS$
工资发放制度----- ------
1      2
2      2
3      2
4      2
5      2
6      2
7      17 rows selected
SQL> SELECT d.file_id,d.tablespace_name, d.file_name  FROM dba_data_files d
2  order by d.file_id;
FILE_ID TABLESPACE_NAME  FILE_NAME
------- ---------------- ----------------------------------------------------
1 SYSTEM          D:/ORACLE/LIANGWEI/ORADATA/LIANGWEI/SYSTEM01.DBF
2 SYSAUX          D:/ORACLE/LIANGWEI/ORADATA/LIANGWEI/SYSAUX01.DBF
3 UNDOTBS1        D:/ORACLE/LIANGWEI/ORADATA/LIANGWEI/UNDOTBS01.DBF
4 USERS            D:/ORACLE/LIANGWEI/ORADATA/LIANGWEI/USERS01.DBF
5 EXAMPLE          D:/ORACLE/LIANGWEI/ORADATA/LIANGWEI/EXAMPLE01.DBF
6 TBS_REPORT      D:/ORACLE/LIANGWEI/ORADATA/LIANGWEI/TBS_REPORT1.DBF
6 rows selected
SQL> CREATE  tablespace test DATAFILE 'D:/ORACLE/TEST02.DBF' SIZE 10M;
Tablespace created
重新创建数据⽂件时,如果没有状态为1(INVALID)的数据⽂件,oracle会新分配⼀个数据⽂件编号。
怎么查户口如果有状态为1(INVALID)的数据⽂件编号,不管新创建的数据⽂件是否与被删除的数据⽂件同名。
oracle都会重新利⽤被设置为状态为1(INVALID)的数据⽂件编号。以保证数据⽂件编号的连续性。
新创建数据⽂件后,发现7号数据⽂件编号被设置为2(AVAILABLE)
SQL> SELECT  file#,status$ FROM  file$;
FILE# STATUS$
-
---- -------
如何养肝护肝
1      2
2      2
3      2
4      2
5      2
6      2
7      2
7 rows selected
SQL> SELECT d.file_id,d.tablespace_name, d.file_name  FROM dba_data_files d order by d.file_id; FILE_ID TABLESPACE_NAME  FILE_NAME
------- ------------------  ----------------------------------------------------
1 SYSTEM          D:/ORACLE/LIANGWEI/ORADATA/LIANGWEI/SYSTEM01.DBF
2 SYSAUX          D:/ORACLE/LIANGWEI/ORADATA/LIANGWEI/SYSAUX01.DBF
3 UNDOTBS1      D:/ORACLE/LIANGWEI/ORADATA/LIANGWEI/UNDOTBS01.DBF
4 USERS            D:/ORACLE/LIANGWEI/ORADATA/LIANGWEI/USERS01.DBF
5 EXAMPLE        D:/ORACLE/LIANGWEI/ORADATA/LIANGWEI/EXAMPLE01.DBF
6 TBS_REPORT  D:/ORACLE/LIANGWEI/ORADATA/LIANGWEI/TBS_REPORT1.DBF
7 TEST                D:/ORACLE/TEST02.DBF
7 rows selected
新建表空间时,如果ts$中没有同名,且状态为3的表空间。oracle会重新分配⼀个连续的表空间编号。
SQL> SELECT ts#,name ,online$  FROM  ts$;
TS# NAME      ONLINE$
--- ----------    -------
0 SYSTEM          1
1 SYSAUX          1
2 UNDOTBS1      1
3 TEMP              1
4 USERS            1
5 UNDOTBS2      3
6 EXAMPLE        1
7 TBS_REPORT  1
8 LIANG              3
9 Liang              3
10 TEST              1
11 rows selected
如果创建同名的表空间,oracle会利⽤原有状态为3的表空间,同时将状态置为1.SQL>  CREATE  tablespace LIANG DATAFILE 'D:/ORACLE/TEST01.DBF' SIZE 10M;
Tablespace created
北京是否提前供暖创建同名表空间LIANG后,8号表空间状态由3变为1.
SQL> SELECT ts#,name ,online$  FROM  ts$;
TS# NAME          ONLINE$
--- ---------- ----------
措施费包括0 SYSTEM              1
1 SYSAUX              1
2 UNDOTBS1        1
3 TEMP                  1
4 USERS                1文件无法删除
5 UNDOTBS2        3
6 EXAMPLE            1
7 TBS_REPORT      1
8 LIANG                  1
9 Liang                  3
10 TEST                  1
11 rows selected
新创建的表空间不能与数据库中已有的表空间同名。
SQL> CREATE  tablespace TEST DATAFILE 'D:/ORACLE/TEST02.DBF' SIZE 10M;
CREATE  tablespace TEST DATAFILE 'D:/ORACLE/TEST02.DBF' SIZE 10M
*
第 1 ⾏出现错误:
ORA-01543: 表空间 'TEST' 已存在
新创建的数据⽂件也不能与数据库中已有的数据⽂件同名。SQL> CREATE  tablespace TEST2 DATAFILE 'D:/ORACLE/TEST02.DBF' SIZE 10M;
CREATE  tablespace TEST2 DATAFILE 'D:/ORACLE/TEST02.DBF' SIZE 10M
*
第 1 ⾏出现错误:
ORA-01537: ⽆法添加⽂件 'D:/ORACLE/TEST02.DBF' - 该⽂件已是数据库的⼀部分

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。