日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

oracle 表空间维护

發(fā)布時(shí)間:2025/3/21 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle 表空间维护 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1:表空間概念

?

在ORACLE數(shù)據(jù)庫(kù)中,所有數(shù)據(jù)從邏輯結(jié)構(gòu)上看都是存放在表空間當(dāng)中,當(dāng)然表空間下還有段、區(qū)、塊等邏輯結(jié)構(gòu)。從物理結(jié)構(gòu)上看是放在數(shù)據(jù)文件中。一個(gè)表空間可由多個(gè)數(shù)據(jù)文件組成。

如下圖所示,一個(gè)數(shù)據(jù)庫(kù)由對(duì)應(yīng)一個(gè)或多個(gè)表空間,表空間邏輯上有一個(gè)或多個(gè)段(Segment)組成,物理上由一個(gè)或多個(gè)os file組成。

?

?

?

1.1基本的表空間

?

系統(tǒng)中默認(rèn)創(chuàng)建的幾個(gè)表空間:

??? SYSTEM

??? SYSAUX

??? USERS

??? UNDOTBS1

??? EXAMPLE

??? TEMP

系統(tǒng)中必須的表空間有那幾個(gè)?

答案:?SYSTEM、SYSAUX、TEMP、UNDO, 像USERS、EXAMPLE等表空間是可有可無(wú)的。

?

1.2表空間的分類

?

永久表空間??????????????? 存放永久性數(shù)據(jù),如表,索引等。

臨時(shí)表空間??????????????? 不能存放永久性對(duì)象,用于保存數(shù)據(jù)庫(kù)排序,分組時(shí)產(chǎn)生的臨時(shí)數(shù)據(jù)。

UNDO表空間???????????? 保存數(shù)據(jù)修改前的鏡象。

?

1.3表空間的管理

?

表空間的管理方式:

字典管理:全庫(kù)所有的空間分配都放在數(shù)據(jù)字典中。容易引起字典爭(zhēng)用,而導(dǎo)致性能問(wèn)題。

本地管理:空間分配不放在數(shù)據(jù)字典,而在每個(gè)數(shù)據(jù)文件頭部的第3到第8個(gè)塊的位圖塊,來(lái)管理空間分配。

?

2:創(chuàng)建表空間

1: CREATE TABLESPACE TBS_TR_DATA 2: DATAFILE '/oradata/rTBS_TR_DATA_001.dbf' 3: SIZE 64G 4: EXTENT MANAGEMENT LOCAL 5: SEGMENT SPACE MANAGEMENT AUTO ONLINE; 6:? 7:? 8:? 9: ALTER TABLESPACE TBS_TR_DATA 10: ADD DATAFILE '/oradata/rTBS_TR_DATA_002.dbf' 11: SIZE 64G 12: AUTOEXTEND OFF;

?

3:表空間管理

?

3.1?表空間信息

如何查看數(shù)據(jù)庫(kù)有哪些表空間?如何查看表空間對(duì)應(yīng)的數(shù)據(jù)文件?

查看表空間:

查看表空間可以通過(guò)下面幾個(gè)系統(tǒng)視圖查看基本信息

?

--包含數(shù)據(jù)庫(kù)中所有表空間的描述信息

SELECT * FROM DBA_TABLESPACES

?

--包含當(dāng)前用戶的表空間的描敘信息

SELECT * FROM USER_TABLESPACES

?

--包含從控制文件中獲取的表空間名稱和編號(hào)信息

SELECT * FROM V$TABLESPACE;

?

查看數(shù)據(jù)文件

--包含數(shù)據(jù)文件以及所屬的表空間的描述信息

SELECT * FROM DBA_DATA_FILES

?

--包含臨時(shí)數(shù)據(jù)文件以及所屬的表空間的描述信息

SELECT * FROM DBA_TEMP_FILES

?

--包含從控制文件中獲取的數(shù)據(jù)文件的基本信息,包括它所屬的表空間名稱、編號(hào)等

SELECT * FROM V$DATAFILE

?

--包含所有臨時(shí)數(shù)據(jù)文件的基本信息

SELECT * FROM V$TEMPFILE

?

?

3.1.1:查看默認(rèn)的TEMP表空間

數(shù)據(jù)庫(kù)級(jí)別

1: SQL> SELECT PROPERTY_NAME, PROPERTY_VALUE 2:? 3: 2 FROM DATABASE_PROPERTIES 4:? 5: 3 WHERE PROPERTY_NAME='DEFAULT_TEMP_TABLESPACE' 6:? 7: 4 ; 8:? 9: PROPERTY_NAME PROPERTY_VALUE 10:? 11: ------------------------------ ---------------------------- 12:? 13: DEFAULT_TEMP_TABLESPACE TEMP

用戶級(jí)別

1: SELECT USERNAME, DEFAULT_TABLESPACE FROM DBA_USERS

3.1.2:查看默認(rèn)的永久表空間

如果創(chuàng)建用戶時(shí),不指定其永久表空間,則會(huì)使用默認(rèn)的表空間。

?

1: SQL> SELECT PROPERTY_NAME, PROPERTY_VALUE 2:? 3: 2 FROM DATABASE_PROPERTIES; 4:? 5: PROPERTY_NAME PROPERTY_VALUE 6:? 7: ------------------------------ ------------------ 8:? 9: DEFAULT_TEMP_TABLESPACE TEMP 10:? 11: DEFAULT_PERMANENT_TABLESPACE USERS

3.1.3:查看默認(rèn)的表空間類型

?

如果不指定表空間類型,就會(huì)默認(rèn)使用DEFAULT_TBS_TYPE參數(shù)指定的表空間類型。

?

1: SQL> 2:? 3: SQL> SELECT PROPERTY_NAME, PROPERTY_VALUE 4:? 5: 2 FROM DATABASE_PROPERTIES 6:? 7: 3 WHERE PROPERTY_NAME='DEFAULT_TBS_TYPE'; 8:? 9: PROPERTY_NAME PROPERTY_VALUE 10:? 11: ------------------------------ ------------------ 12:? 13: DEFAULT_TBS_TYPE SMALLFILE

3.1.4:查看表空間情況

?

SELECT * FROM DBA_TABLESPACES

?

3.1.5:查看表空間的數(shù)據(jù)文件

?

永久表空間/UNDO表空間

SELECT * FROM DBA_DATA_FILES;

臨時(shí)表空間

SELECT * FROM V$TEMPFILE;

?

3.1.6:查看表空間使用情況

--SQL 1:

1: SELECT A.TABLESPACE_NAME AS TABLESPACE_NAME, 2: ROUND(A.BYTES/(1024*1024*1024),2) AS "TOTAL(G)" , 3: ROUND(B.BYTES/(1024*1024*1024),2) AS "USED(G)" , 4: ROUND(C.BYTES/(1024*1024*1024),2) AS "FREE(G)" , 5: ROUND((B.BYTES * 100) / A.BYTES,2) AS "% USED" , 6: ROUND((C.BYTES * 100) / A.BYTES,2) AS "% FREE" 7: FROM SYS.SM$TS_AVAIL A, SYS.SM$TS_USED B, SYS.SM$TS_FREE C 8: WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME 9: AND A.TABLESPACE_NAME = C.TABLESPACE_NAME;

計(jì)算表空間使用情況(考慮了數(shù)據(jù)文件自動(dòng)增長(zhǎng)情況)

1: SELECT UPPER(F.TABLESPACE_NAME) AS "表空間名稱", 2: ROUND(D.AVAILB_BYTES ,2) AS "表空間大小(G)", 3: ROUND(D.MAX_BYTES,2) AS "最終表空間大小(G)", 4: ROUND((D.AVAILB_BYTES - F.USED_BYTES),2) AS "已使用空間(G)", 5: TO_CHAR(ROUND((D.AVAILB_BYTES - F.USED_BYTES) / D.AVAILB_BYTES * 100, 6: 2), '999.99') AS "使用比", 7: ROUND(F.USED_BYTES, 6) AS "空閑空間(G)", 8: F.MAX_BYTES AS "最大塊(M)" 9: FROM ( 10: SELECT TABLESPACE_NAME, 11: ROUND(SUM(BYTES) / (1024 * 1024 * 1024), 6) USED_BYTES, 12: ROUND(MAX(BYTES) / (1024 * 1024 * 1024), 6) MAX_BYTES 13: FROM SYS.DBA_FREE_SPACE 14: GROUP BY TABLESPACE_NAME) F, 15: (SELECT DD.TABLESPACE_NAME, 16: ROUND(SUM(DD.BYTES) / (1024 * 1024 * 1024), 6) AVAILB_BYTES, 17: ROUND(SUM(DECODE(DD.MAXBYTES, 0, DD.BYTES, DD.MAXBYTES))/(1024*1024*1024),6) MAX_BYTES 18: FROM SYS.DBA_DATA_FILES DD 19: GROUP BY DD.TABLESPACE_NAME) D 20: WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME 21: ORDER BY 4 DESC

?

?

3.2?默認(rèn)表空間

?

在ORACLE 9i數(shù)據(jù)庫(kù)中,創(chuàng)建數(shù)據(jù)庫(kù)用戶時(shí),如果沒(méi)有指定默認(rèn)的永久性表空間,則系統(tǒng)使用SYSTME表空間分別作為該用戶的默認(rèn)永久表空間,默認(rèn)的臨時(shí)表空間為TEMP。在ORACLE 10/11g中,如果不指定默認(rèn)永久性表空間,則是USERS.默認(rèn)的臨時(shí)表空間為TEMP,當(dāng)然前提是你沒(méi)有修改過(guò)默認(rèn)永久表空間值或指定用戶的默認(rèn)永久性表空間。ORACLE允許使用自定義的表空間作為默認(rèn)永久性表空間,你可以用下面SQL查看數(shù)據(jù)庫(kù)的默認(rèn)永久表空間和默認(rèn)臨時(shí)表空間

SQL>SELECT * FROM database_properties?
WHERE PROPERTY_NAME = 'DEFAULT_PERMANENT_TABLESPACE';

SQL>SELECT * FROM database_properties?
WHERE PROPERTY_NAME ='DEFAULT_PERMANENT_TABLESPACE'

你可以使用ALTER DATABASE DEFAULT TABLESPACE語(yǔ)句可以設(shè)置數(shù)據(jù)庫(kù)的默認(rèn)永久性表空間,這樣建立用戶時(shí),默認(rèn)將使用指定的表空間。

數(shù)據(jù)庫(kù)級(jí)別:

永久表空間

SQL>ALTER DATABASE DEFAULT TABLESPACE USER;

臨時(shí)表空間

SQL>ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP;

用戶級(jí)別

?

SQL>ALTER USER USERNAM DEFAULT TABLESPACE NEW_TABLESPACE_NAME

查看用戶對(duì)應(yīng)的默認(rèn)表空間

SELECT?USERNAME, DEFAULT_TABLESPACE?FROM?DBA_USERS

注意事項(xiàng):

1:如果我們?cè)趧?chuàng)建用戶時(shí)指定了默認(rèn)表空間為DEFAULT_PERMANENT_TABLESPACE的值,那么在修改默認(rèn)表空間后,之前用戶的默認(rèn)表空間也會(huì)發(fā)生改變。

eg:

1: SQL> SELECT * FROM database_properties 2: 2 WHERE PROPERTY_NAME IN( 'DEFAULT_PERMANENT_TABLESPACE','DEFAULT_TEMP_TABLESPACE'); 3:? 4:? 5: PROPERTY_NAME PROPERTY_VALUE DESCRIPTION 6: ---------------- -------------------------------- ------------------------------------------------------------ 7: DEFAULT_TEMP_TABLESPACE TEMP Name of default temporary tablespace 8: DEFAULT_PERMANENT_TABLESPACE USERS Name of default permanent tablespace 9:? 10:? 11: SQL> CREATE USER U1 IDENTIFIED BY U1 DEFAULT TABLESPACE USERS; 12:? 13:? 14: SQL> SELECT USERNAME, DEFAULT_TABLESPACE, TEMPORARY_TABLESPACE FROM DBA_USERS WHERE USERNAME ='U1'; 15:? 16: USERNAME DEFAULT_TABLESPACE TEMPORARY_TABLESPACE 17: ------------------------------ ------------------------------ ------------------------------ 18: U1 19:? 20:? 21: SQL> ALTER DATABASE DEFAULT TABLESPACE TEST1; 22:? 23: Database altered 24:? 25: 修改了默認(rèn)永久性表空間后,此時(shí)查看用戶U1的DEFAULT_TABLESPACE值,發(fā)現(xiàn)其值也改為了TEST1,證實(shí)了結(jié)論1的正確性。 26:? 27: SQL> SELECT USERNAME, DEFAULT_TABLESPACE, TEMPORARY_TABLESPACE FROM DBA_USERS WHERE USERNAME ='U1'; 28:? 29: USERNAME DEFAULT_TABLESPACE TEMPORARY_TABLESPACE 30: ------------------------------ ------------------------------ ------------------------------ 31: U1 TEST1 TEMP 32:?

?

?

2:如果我們?cè)趧?chuàng)建用戶時(shí)沒(méi)有指定用戶表空間,那么默認(rèn)也會(huì)使用DB的默認(rèn)表空間,這時(shí)候如果我們修改了DB的默認(rèn)表空間,用戶的表空間也會(huì)發(fā)生改變。

將數(shù)據(jù)庫(kù)的默認(rèn)表空間切換為USERS

1: SQL> ALTER DATABASE DEFAULT TABLESPACE USERS; 2:? 3: Database altered 4:? 5: SQL> CREATE USER U2 IDENTIFIED BY U2; 6:? 7: User created 8:? 9: SQL> SELECT USERNAME, DEFAULT_TABLESPACE, TEMPORARY_TABLESPACE FROM DBA_USERS WHERE USERNAME ='U1'; 10:? 11: USERNAME DEFAULT_TABLESPACE TEMPORARY_TABLESPACE 12: ------------------------------ ------------------------------ ------------------------------ 13: U1 USERS TEMP 14:? 15: SQL> ALTER DATABASE DEFAULT TABLESPACE TEST1; 16:? 17: Database altered 18:? 19: SQL> SELECT USERNAME, DEFAULT_TABLESPACE, TEMPORARY_TABLESPACE FROM DBA_USERS WHERE USERNAME ='U1'; 20:? 21: USERNAME DEFAULT_TABLESPACE TEMPORARY_TABLESPACE 22: ------------------------------ ------------------------------ ------------------------------ 23: U1 TEST1 TEMP

3: 如果我們?cè)趧?chuàng)建用戶指定用戶的表空間是其他的表空間,那么我們修改DB的默認(rèn)表空間不會(huì)影響用戶的表空間。

eg:

?

1: SQL> CREATE USER U3 IDENTIFIED BY U3 DEFAULT TABLESPACE TEST2; 2:? 3: User created 4:? 5: SQL> SELECT USERNAME, DEFAULT_TABLESPACE, TEMPORARY_TABLESPACE FROM DBA_USERS WHERE USERNAME='U3'; 6:? 7: USERNAME DEFAULT_TABLESPACE TEMPORARY_TABLESPACE 8: ------------------------------ ------------------------------ ------------------------------ 9: U3 TEST2 TEMP 10:? 11: SQL> ALTER DATABASE DEFAULT TABLESPACE USERS; 12:? 13: Database altered 14:? 15: SQL> SELECT USERNAME, DEFAULT_TABLESPACE, TEMPORARY_TABLESPACE FROM DBA_USERS WHERE USERNAME='U3'; 16:? 17: USERNAME DEFAULT_TABLESPACE TEMPORARY_TABLESPACE 18: ------------------------------ ------------------------------ ------------------------------ 19: U3 TEST2 TEMP 20:?

4: DB的默認(rèn)表空間不能刪除,除非將默認(rèn)表空間指向其他表空間之后才可以刪除。

SQL> DROP TABLESPACE USERS;

DROP TABLESPACE USERS

ORA-12919: 不能刪除默認(rèn)永久表空間

5: 如果用戶的默認(rèn)表空間指向其他的表空間,當(dāng)這個(gè)表空間被drop 之后,用戶的默認(rèn)表空間會(huì)自動(dòng)指向DB的默認(rèn)表空間。

SQL> DROP TABLESPACE TEST2;

?

3.3?刪除表空間

?

除了SYSTEM表空間外,數(shù)據(jù)庫(kù)中的任何表空間可以刪除。刪除表空間時(shí),ORACLE僅僅是在控制文件和數(shù)據(jù)字典中刪除與表空間和數(shù)據(jù)文件相關(guān)的信息。默認(rèn)情況下,ORACLE并不會(huì)在操作操作系統(tǒng)中刪除相應(yīng)的數(shù)據(jù)文件,因此在成功執(zhí)行刪除表空間的操作后,需要手動(dòng)刪除該表空間在操作系統(tǒng)中對(duì)應(yīng)的數(shù)據(jù)文件。如果在刪除表空間的同時(shí)要?jiǎng)h除對(duì)應(yīng)的數(shù)據(jù)文件,則必須顯示的指定INCLUDING CONTENTS AND DATAFILES子句。注意:當(dāng)前的數(shù)據(jù)庫(kù)級(jí)的默認(rèn)表空間不能刪除,用戶級(jí)的可以刪除.否則會(huì)報(bào)錯(cuò):ORA-12919: Can not drop the default permanent tablespace

DROP TABLESPACE 表空間名 [INCLUDING CONTENTS [AND DATAFILES] [CASCADE CONSTRAINTS]]

SQL> DROP TABLESPACE URER01 INCLUDING CONTENTS;

如果在表空間中包含數(shù)據(jù)庫(kù)對(duì)象,則必須在DROP TABLESPACE語(yǔ)句中顯示的指定INCLUDING CONTENTS. 如果要再刪除表空間USER的同時(shí)刪除它所對(duì)應(yīng)的數(shù)據(jù)文件,則可以使用下面的語(yǔ)句

SQL>DROP TABLESPACE USER01 INCLUDING CONTENTS AND DATAFILES;

注意:刪除表空間時(shí),CONTENTS與DATAFILES選項(xiàng)錯(cuò)位,會(huì)報(bào)如下錯(cuò)誤:

SQL>DROP TABLESPACE TBS_STAGE_DAT INCLUDING DATAFILES AND CONTENTS

ORA-01911:contents keyword expected

SQL>DROP TABLESPACE TBS_STAGE_DAT INCLUDING CONTENTS AND DATAFILES

3.4?調(diào)整表空間

?

?

3.4.1?增加數(shù)據(jù)文件

?

如果發(fā)現(xiàn)某個(gè)表空間存儲(chǔ)空間不足時(shí),可以為表空間添加新的數(shù)據(jù)文件,擴(kuò)展表空間大小。但是一般建議預(yù)先估計(jì)表空間所需的存儲(chǔ)空間大小,然后為它建立若干適當(dāng)大小的數(shù)據(jù)文件。

例子:

1: ALTER TABLESPACE TBS_TR_IND 2:? 3: ADD DATAFILE '/oradata/rTBS_TR_IND_002.dbf' 4:? 5: SIZE 32G 6:? 7: AUTOEXTEND OFF; 8:? 9: SQL> ALTER TABLESPACE TBS_EDS_DAT 10:? 11: 2 ADD DATAFILE 'G:\datafile\TBS_EDS_DAT01.DBF' 12:? 13: 3 SIZE 100M 14:? 15: 4 AUTOEXTEND ON 16:? 17: 5 NEXT 10M 18:? 19: 6 MAXSIZE 20480M; 20:? 21: SQL> ALTER TABLESPACE temp01 22:? 23: 2 ADD TMPFILE 'D:\ORACLEDATA\temp01_02.dbf' SIZE 10M REUSE; 24:?

在添加新的數(shù)據(jù)文件時(shí),如果同名的操作系統(tǒng)已經(jīng)存在,ALTER TABLESPACE語(yǔ)句將失敗。如果要覆蓋同名的操作系統(tǒng)文件時(shí),則必須在后面顯示的指定REUSE子句。

SQL> ALTER TABLESPACE TBS_EDS_DAT

2 ADD DATAFILE 'G:\datafile\TBS_EDS_DAT01.DBF'

3 SIZE 100M

4 AUTOEXTEND ON

5 NEXT 10K

6 MAXSIZE 51200M;

ALTER TABLESPACE TBS_EDS_DAT

*

第 1 行出現(xiàn)錯(cuò)誤:

ORA-03206: AUTOEXTEND 子句中 (6553600) 塊的最大文件大小超出范圍

ORACLE支持的數(shù)據(jù)文件大小是由它的db_block_size和db_block的數(shù)量決定的。其中db_block(ORACLE塊)的數(shù)量是一個(gè)定值2**22-1(4194303).數(shù)據(jù)文件大小容量=塊數(shù)量*塊大小。下面列表說(shuō)明不同數(shù)據(jù)塊數(shù)據(jù)庫(kù)所能支持的最大物理文件大小:

數(shù)據(jù)塊的大小????????物理文件的最大值M??物理文件的最大值G

=============================================================================

2KB??????????????????????????? 8191M?????????????????????????????????? 8G

4KB????????????????????????? 16383M???????????????????????????????? 16G

8KB????????????????????????? 32767M???????????????????????????????? 32G

16KB??????????????????????? 65535M???????????????????????????????? 64G

32KB????????????????????? 131072M?????????????????????????????? 128G

64KB????????????????????? 262144M?????????????????????????????? 256G

?

3.4.2?調(diào)整數(shù)據(jù)文件大小

?

?

?

重置數(shù)據(jù)文件的大小

ALTER DATABASE DATAFILE '/database/oracle/oradata/gsp/tbs_dm_data_002.dbf'

RESIZE 500M;

?

3.4.3?刪除數(shù)據(jù)文件

?

ALTER TABLESPACE TEST

DROP DATAFILE '/database/oracle/oradata/gsp/tbs_dm_data_002.dbf'

?

?

3.4.4?移動(dòng)數(shù)據(jù)文件

?

?

現(xiàn)在有這樣一個(gè)案例:以前數(shù)據(jù)庫(kù)服務(wù)器只有一個(gè)容量比較小得磁盤(pán),數(shù)據(jù)文件全部放在D盤(pán),后來(lái)申請(qǐng)了一個(gè)1T的磁盤(pán),需要給D盤(pán)騰出一些空間(D盤(pán)爆滿了),現(xiàn)在想移動(dòng)一些大的數(shù)據(jù)文件到1T的磁盤(pán):

1: 1.1:連接數(shù)據(jù)庫(kù) 2:? 3: SQL> conn sysdba/manage as sysdba 4:? 5: 已連接。 6:? 7: 1.2:把要移動(dòng)數(shù)據(jù)文件的表空間脫機(jī) 8:? 9: SQL> ALTER TABLESPACE TBS_EDS_DAT OFFLINE NORMAL ; 10:? 11: 表空間已更改。 12:? 13: 1.3:移動(dòng)物理數(shù)據(jù)文件。 14:? 15: 1.4:重命名文件 16:? 17: SQL> ALTER DATABASE 18:? 19: 2 RENAME FILE 20:? 21: 3 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\WGODS\TBS_EDS_DAT.DBF' 22:? 23: 4 TO 24:? 25: 5 'G:\datafile\TBS_EDS_DAT.DBF'; 26:? 27: 數(shù)據(jù)庫(kù)已更改。 28:? 29: 1.5:表空間聯(lián)機(jī) 30:? 31: SQL> ALTER TABLESPACE TBS_DM_DAT ONLINE; 32:? 33: 表空間已更改。 34:? 35: 1.6:如果要?jiǎng)h除以前的數(shù)據(jù)文件,則必須先關(guān)閉數(shù)據(jù)庫(kù),手動(dòng)刪除文件,否則會(huì)報(bào)錯(cuò)。 36:? 37: SQL> shutdow immediate 38:? 39: 數(shù)據(jù)庫(kù)已經(jīng)關(guān)閉。 40:? 41: 已經(jīng)卸載數(shù)據(jù)庫(kù)。 42:? 43: ORACLE 例程已經(jīng)關(guān)閉。 44:? 45: SQL> startup 46:? 47: ORACLE 例程已經(jīng)啟動(dòng)。 48:? 49: Total System Global Area 612368384 bytes 50:? 51: Fixed Size 1250428 bytes 52:? 53: Variable Size 104860548 bytes 54:? 55: Database Buffers 499122176 bytes 56:? 57: Redo Buffers 7135232 bytes 58:? 59: 數(shù)據(jù)庫(kù)裝載完畢。 60:? 61: 數(shù)據(jù)庫(kù)已經(jīng)打開(kāi)。 62:?

Linux/Unix下

?

1: 1、查看表空間的文件分布 2:? 3: SQL> select TABLESPACE_NAME,FILE_NAME,BYTES/1024/1024 "MB" 4:? 5: from dba_data_files; 6:? 7: 2、將表空間離線 8:? 9: SQL> alter tablespace users offline; 10:? 11: 3、在操作系統(tǒng)下將數(shù)據(jù)文件移到另一位置 12:? 13: SQL> host mv /u01/app/oracle/oradata/ocp/users01.dbf /u02/ 14:? 15: SQL> host ls /u02/ 16:? 17: 4、修改控制文件的記錄指針 18:? 19: SQL> alter database rename file 20:? 21: '/u01/app/oracle/oradata/ocp/users01.dbf' to '/u02/users01.dbf'; 22:? 23: 或者 24:? 25: SQL> alter tablespace users rename datafile 26:? 27: '/u01/app/oracle/oradata/ocp/users01.dbf' to '/u02/users01.dbf'; 28:? 29: 注:執(zhí)行此項(xiàng)時(shí),目標(biāo)文件(TO后面的那一段)一定要存在。 30:? 31: 5、將表空間在線 32:? 33: SQL> alter tablespace users online; 34:? 35: 對(duì)于那些不能offline的表空間,只能關(guān)閉數(shù)據(jù),在mount狀態(tài)下修改,修改后再OPEN

?

3.4.5?數(shù)據(jù)文件脫機(jī)

?

?

?

ALTER DATABASE DATAFILE '/database/oracle/oradata/gsp/tbs_dm_data_002.dbf' OFFLINE;

?

?

3.4.6?數(shù)據(jù)文件聯(lián)機(jī)

?

?

ALTER DATABASE DATAFILE '/database/oracle/oradata/gsp/tbs_dm_data_002.dbf' ONLINE;

?

4:維護(hù)表空間

?

4.1?變更表空間狀態(tài)

?

?

表空間狀態(tài)有下面幾種狀態(tài):online、offline、read only、read write。

若要查看表空間的狀態(tài),可以通過(guò)下面SQL語(yǔ)句來(lái)查看。

?

1: SQL> SELECT TABLESPACE_NAME, CONTENTS, STATUS FROM DBA_TABLESPACES; 2: 3: TABLESPACE_NAME CONTENTS STATUS 4: ------------------------------ --------- --------- 5: SYSTEM PERMANENT ONLINE 6: UNDOTBS1 UNDO ONLINE 7: SYSAUX PERMANENT ONLINE 8: TEMP TEMPORARY ONLINE 9: USERS PERMANENT ONLINE 10: EXAMPLE PERMANENT ONLINE 11: TBS_DM_DATA PERMANENT READ ONLY 12: 13: 7 rows selected 14:? 15: 16: SQL> SELECT FILE#, STATUS, ENABLED FROM V$DATAFILE; 17: 18: FILE# STATUS ENABLED 19: ---------- ------- ---------- 20: 1 SYSTEM READ WRITE 21: 2 ONLINE READ WRITE 22: 3 ONLINE READ WRITE 23: 4 ONLINE READ WRITE 24: 5 ONLINE READ WRITE 25: 6 OFFLINE READ ONLY 26: 7 OFFLINE READ ONLY

?

4.1.1?表空間脫機(jī)

SQL>ALTER TABLESPACE TBS_DM_DAT OFFLINE IMMEDIATE;

設(shè)置脫機(jī)狀態(tài),可以使用下面4個(gè)參數(shù)來(lái)控制脫機(jī)方式

NORMAL 該參數(shù)表示將表空間以正常方式切換到脫機(jī)狀態(tài),在進(jìn)入脫機(jī)狀態(tài)過(guò)程中,ORACLE會(huì)執(zhí)行一次檢查點(diǎn), 將SGA區(qū)中與該表空間相關(guān)的臟緩存塊寫(xiě)入數(shù)據(jù)文件中,然后再關(guān)閉表空間的所有數(shù)據(jù)文件。如果在這過(guò)程中沒(méi)有發(fā)生任何錯(cuò)誤,則可以使用NORMAL參數(shù),這也是默認(rèn)的方式。

TEMPORARY 該參數(shù)將表空間以臨時(shí)方式切換到脫機(jī)狀態(tài)。這時(shí)ORACLE在執(zhí)行檢查點(diǎn)時(shí)并不會(huì)檢查各個(gè)數(shù)據(jù)文件的狀態(tài),即使某些數(shù)據(jù)文件處于不可用狀態(tài),ORACLE也會(huì)忽略這些錯(cuò)誤。這樣將表空間設(shè)置為聯(lián)機(jī)狀態(tài)時(shí),可能需要進(jìn)行數(shù)據(jù)恢復(fù)。

IMMEDIATE 該參數(shù)將表空間以立即方式切換到脫機(jī)狀態(tài),這時(shí)ORACLE不會(huì)執(zhí)行檢查點(diǎn),也不會(huì)檢查數(shù)據(jù)文件是否可用。而是直接將屬于表空間的數(shù)據(jù)文件設(shè)置為脫機(jī)狀態(tài)。下一次將表空間恢復(fù)為聯(lián)機(jī)狀態(tài)時(shí)必須進(jìn)行數(shù)據(jù)庫(kù)恢復(fù)。

FOR RECOVER 該參數(shù)將表空間以用于恢復(fù)方式切換到脫機(jī)狀態(tài),如果要對(duì)表空間進(jìn)行基于時(shí)間的恢復(fù),可以使用這個(gè)參數(shù)將表空間切換到脫機(jī)狀態(tài)。

如果數(shù)據(jù)庫(kù)運(yùn)行在非歸檔模式下(NOARCHIVELOG),由于無(wú)法保留恢復(fù)表空間所需要的重做數(shù)據(jù),所以不能將表空間以立即方式切換到脫機(jī)狀態(tài)。如果表空間脫機(jī)了,則查詢表空間下的表,會(huì)報(bào)錯(cuò)誤:ORA-00376 此時(shí)無(wú)法讀取文件 以及 ORA-01110:數(shù)據(jù)文件x......

?

注意:脫機(jī)(offline)一般用于數(shù)據(jù)庫(kù)的聯(lián)機(jī)備份,數(shù)據(jù)恢復(fù)等維護(hù)操作。有些表空間不能OFFLINE,如:SYTEM,UNDO等

1. SYTEM 不能offline,也不能read only

2. 當(dāng)前的UNDO表空空間,不能offline,也不能read only

3. 當(dāng)前的臨時(shí)表空間不能offline,也不能read only

4. SYSAUX可以offline 不能read only

SQL> ALTER TABLESPACE SYSTEM OFFLINE;

ALTER TABLESPACE SYSTEM OFFLINE

ORA-01541: system tablespace cannot be brought offline; shut down if necessary

SQL> ALTER TABLESPACE SYSTEM OFFLINE;

ALTER TABLESPACE SYSTEM OFFLINE

ORA-01541: system tablespace cannot be brought offline; shut down if necessary

4.1.2?表空間聯(lián)機(jī)

?

?

SQL> ALTER TABLESPACE TBS_DM_DAT ONLINE;

?

4.1.3?表空間只讀

?

?

?

SQL>ALTER TABLESPACE TBS_DM_DAT READY ONLY;

表空間只讀時(shí),其中的表,不能進(jìn)行任何DML操作, 否則會(huì)報(bào)錯(cuò):ORA-00372: file xxx cannot be modified at this time

ORA-01110: data file xx: ********。但是能刪除表。

?

4.1.4?表空間讀寫(xiě)

?

SQL>ALTER TABLESPACE TBS_DM_DAT READ WRITE;

?

?

4.1.5?表空間改名

在ORACLE 10g 之前,表空間的名稱是不能被修改的。在ORACLE 11G中,通過(guò)ALTER TABLESPACE 語(yǔ)句中使用RENAME子句,數(shù)據(jù)庫(kù)管理員可以修改表空間的名稱。

?

?

?

1: CREATE TABLESPACE TBS_DM_DAT 2: ATAFILE 'E:\APP\KERRY\ORADATA\ORCL\TBS_DM_DAT.DBF' 3: IZE 50M 4: XTENT MANAGEMENT LOCAL 5: EGMENT SPACE MANAGEMENT AUTO ONLINE 6:? 7:? 8: SQL>ALTER TABLESPACE TBS_DM_DAT RENAME TO TBS_DM_DATA 9:? 10: QL> SELECT TABLESPACE_NAME FROM DBA_TABLESPACES WHERE TABLESPACE_NAME = 'TBS_DM_DATA'; 11: 12: LESPACE_NAME 13: --------------------------- 14: _DM_DATA

4.1.6?開(kāi)啟自動(dòng)擴(kuò)展

?

ALTER DATABASE DATAFILE '/database/oracle/oradata/gsp/tbs_dm_data_002.dbf' AUTOEXTEND ON;

?

4.1.7?關(guān)閉自動(dòng)擴(kuò)展

?

?

ALTER DATABASE DATAFILE '/database/oracle/oradata/gsp/tbs_dm_data_002.dbf' AUTOEXTEND OFF;

5?表空間配額

?

表空間不足與用戶配額不足是兩種不同的概念。表空間的大小是指實(shí)際的用戶表空間的大小,而配額大小指的是用戶指定使用表空間的的大小。兩者的解決方式亦不相同

3.5.1 查看用戶的表空間配額

?

1: --查看所有用戶表空間的配額情況 2: SELECT * FROM DBA_TS_QUOTAS 3: 4: --查看當(dāng)前用戶表空間的配額情況 5: SELECT * FROM USER_TS_QUOTAS 6:? 7:? 8: SQL> DESC DBA_TS_QUOTAS 9: Name Type Nullable Default Comments 10: --------------- ------------ -------- ------- ------------------------------------------------ 11: TABLESPACE_NAME VARCHAR2(30) Tablespace name 12: USERNAME VARCHAR2(30) User with resource rights on the tablespace 13: BYTES NUMBER Y Number of bytes charged to the user 14: MAX_BYTES NUMBER Y User's quota in bytes. NULL if no limit 15: BLOCKS NUMBER Y Number of ORACLE blocks charged to the user 16: MAX_BLOCKS NUMBER Y User's quota in ORACLE blocks. NULL if no limit 17: DROPPED VARCHAR2(3) Y Whether the tablespace has been dropped

MAX_BYTES=-1表示沒(méi)有配額限制,

3.5.2 管理用戶表空間配額

用戶表空間限額的創(chuàng)建與更改:

1.創(chuàng)建用戶時(shí),指定限額

eg:

CREATE USER TEST IDENTIFIED BY TEST

DEFAULT TABLESPACE TS_TEST

TEMPORARY TABLESPACE TEMP

QUOTA 3M ON TS_TEST

PASSWORD EXPIRE;

2.更改用戶的表空間限額:

A:不對(duì)用戶做表空間限額控制:

查看是否沒(méi)有表空間限額限制

B:取消限額

這種方式是全局性的.

SQL> GRANT UNLIMITED TABLESPACE TO SCOTT;

或者針對(duì)特定的表空間的.

SQL>ALTER USER SCOTT QUOTA UNIMITED ON TBS_EDS_DAT;

SELECT * FROM SESSION_PRIVS WHERE PRIVILEGE='UNLIMITED TABLESPACE'

SQL> REVOKE UNLIMITED TABLESPACE FROM SCOTT;

C:制定配額

3. 可以分配自然也可以回收了:

revoke unlimited tablespace from TEST;

或者

alter user skate quota 0 on TB;

表空間大小不足問(wèn)題的解決:使用“ALTER TABLESPACE tablespace_name ADD DATAFILE filename SIZE size_of_file”命令向指定的數(shù)據(jù)增加表空間,根據(jù)具體的情況可以增加一個(gè)或多個(gè)表空間。

作者:瀟湘隱者 出處:http://www.cnblogs.com/kerrycode/

轉(zhuǎn)載于:https://www.cnblogs.com/shenlanzifa/p/5288795.html

總結(jié)

以上是生活随笔為你收集整理的oracle 表空间维护的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。