Oracle中表空間編號(hào)與數(shù)據(jù)文件編號(hào)都是連續(xù)的,不會(huì)斷號(hào)。如果TS$中表空間出現(xiàn)了斷號(hào),
Oracle在啟動(dòng)時(shí)會(huì)進(jìn)行數(shù)據(jù)字典和控制文件的校驗(yàn),發(fā)現(xiàn)不一致時(shí),數(shù)據(jù)庫(kù)不能正常啟動(dòng)。
-
表空間被刪除時(shí)ts$表中并不會(huì)刪除相關(guān)表空間的記錄。只是把表空間的狀態(tài)置為3,即INVALID狀態(tài)。
如果再次創(chuàng)建同名的表空間,則Oracle會(huì)把TS$表中同名表空間的狀態(tài)由3置為1,ONLINE狀態(tài)。以此
來(lái)保證表空間號(hào)的連續(xù)。
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這三個(gè)表空間被刪除,但ts$中并沒(méi)有刪除相關(guān)記錄。只是把ONLINE$狀態(tài)置為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 3
9 Liang 3
10 rows selected
-- 數(shù)據(jù)文件編號(hào)一樣不會(huì)被刪除,將刪除的數(shù)據(jù)文件編號(hào)置為1(INVALID狀態(tài))。
SQL> SELECT file#,status$ FROM file$;
FILE# STATUS$
----- ------
1 2
2 2
3 2
4 2
5 2
6 2
7 1
7 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
重新創(chuàng)建數(shù)據(jù)文件時(shí),如果沒(méi)有狀態(tài)為1(INVALID)的數(shù)據(jù)文件,Oracle會(huì)新分配一個(gè)數(shù)據(jù)文件編號(hào)。
如果有狀態(tài)為1(INVALID)的數(shù)據(jù)文件編號(hào),不管新創(chuàng)建的數(shù)據(jù)文件是否與被刪除的數(shù)據(jù)文件同名。
Oracle都會(huì)重新利用被設(shè)置為狀態(tài)為1(INVALID)的數(shù)據(jù)文件編號(hào)。以保證數(shù)據(jù)文件編號(hào)的連續(xù)性。
新創(chuàng)建數(shù)據(jù)文件后,發(fā)現(xiàn)7號(hào)數(shù)據(jù)文件編號(hào)被設(shè)置為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
新建表空間時(shí),如果ts$中沒(méi)有同名,且狀態(tài)為3的表空間。Oracle會(huì)重新分配一個(gè)連續(xù)的表空間編號(hào)。
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
如果創(chuàng)建同名的表空間,Oracle會(huì)利用原有狀態(tài)為3的表空間,同時(shí)將狀態(tài)置為1.
SQL> CREATE tablespace LIANG DATAFILE 'D:\Oracle\TEST01.DBF' SIZE 10M;
Tablespace created
創(chuàng)建同名表空間LIANG后,8號(hào)表空間狀態(tài)由3變?yōu)?.
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
新創(chuàng)建的表空間不能與數(shù)據(jù)庫(kù)中已有的表空間同名。
SQL> CREATE tablespace TEST DATAFILE 'D:\Oracle\TEST02.DBF' SIZE 10M;
CREATE tablespace TEST DATAFILE 'D:\Oracle\TEST02.DBF' SIZE 10M
*
第 1 行出現(xiàn)錯(cuò)誤:
ORA-01543: 表空間 'TEST' 已存在
新創(chuàng)建的數(shù)據(jù)文件也不能與數(shù)據(jù)庫(kù)中已有的數(shù)據(jù)文件同名。
SQL> CREATE tablespace TEST2 DATAFILE 'D:\Oracle\TEST02.DBF' SIZE 10M;
CREATE tablespace TEST2 DATAFILE 'D:\Oracle\TEST02.DBF' SIZE 10M
*
第 1 行出現(xiàn)錯(cuò)誤:
ORA-01537: 無(wú)法添加文件 'D:\Oracle\TEST02.DBF' - 該文件已是數(shù)據(jù)庫(kù)的一部分 本文出自:億恩科技【www.yaz797.com】
服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]
|