Oracle表空間操作

轉載至紅黑聯盟--http://www.2cto.com/database/201402/278907.html


(1) 數據文件查詢

Select FILE_NAME from dba_data_files;

SQL> select file_name fromdba_data_files;

FILE_NAME

--------------------------------------------------------------------------------

/data/EDWPRD/users01.dbf

/data/EDWPRD/sysaux01.dbf

/data/EDWPRD/undotbs01.dbf

/data/EDWPRD/system01.dbf

/data/EDWPRD/user_data.dbf

#查看tempfile

SQL> select status,enabled, name,bytes/1024/1024 file_size from v_$tempfile;

#查看臨時文件使用情況

SQL> select * from GV_$TEMP_SPACE_HEADER

(2)查看現有表空間

SQL> select tablespace_namename,block_size,contents from dba_tablespaces;

NAME BLOCK_SIZE CONTENTS

------------------------------ -------------------

SYSTEM 8192 PERMANENT

UNDOTBS1 8192 UNDO

SYSAUX 8192 PERMANENT

TEMP 8192 TEMPORARY

USERS 8192 PERMANENT

USER_DATA 8192 PERMANENT

USER_TEMP 8192 TEMPORARY

#查看錶空間剩餘容量

select distinct(tablespace_name) fromdba_free_space;

TABLESPACE_NAME

------------------------------

UNDOTBS1

SYSAUX

USERS

SYSTEM

USER_DATA

SQL> select * from dba_free_space;

SQL> select t.tablespace_name,round(sum(bytes/(1024*1024)),0) ts_size

2 from dba_tablespaces t,dba_data_files d where t.tablespace_name = d.tablespace_name

3 group by t.tablespace_name;

TABLESPACE_NAME TS_SIZE

------------------------------ ----------

SYSAUX 250

UNDOTBS1 25

USERS 5

SYSTEM 480

USER_DATA 50

SQL> selecttablespace_name,bytes/1024/1024 cur_size,user_bytes/1024/1024 asuser_bytes,status,online_status from dba_data_files;

TABLESPACE_NAME CUR_SIZE USER_BYTESSTATUS ONLINE_

------------------------------ -------------------- --------- -------

USERS 5 4.9375 AVAILABLE ONLINE

SYSAUX 250 249.9375 AVAILABLE ONLINE

UNDOTBS1 25 24.9375 AVAILABLE ONLINE

SYSTEM 480 479.9375 AVAILABLE SYSTEM

USER_DATA 50 49.9375 AVAILABLE ONLINE

(3)和數據有關的字典

數據庫:

V$DATABASE 同義詞 V_$DATABASE,記錄系統的運行情況;

表空間:

DBA_TABLESPACES 記錄系統表空間的基本信息;

DBA_DATA_FILES 記錄系統數據文件及表空間的基本信息;

DBA_FREE_SPACE 記錄系統表空間的剩餘空間的信息;

控制文件:

V$CONTROLFILE 記錄系統控制文件的路徑信息;

V$PARAMETER 記錄系統各參數的基本信息;

v$CONTROLFILE_RECORD_SECTION 記錄系統控制運行的基本信息;

數據文件:

DBA_DATA_FILES 記錄系統數據文件及表空間的基本信息;

v$DATAFILE 記錄來自控制文件的數據文件信息;

v$FILESTAT 記錄數據文件讀寫的基本信息;

(4)查看字段

#查看字段

SQL> select distinct segment_type fromdba_segments;

SEGMENT_TYPE

------------------

LOBINDEX

INDEX PARTITION

TABLE PARTITION

NESTED TABLE

ROLLBACK

LOB PARTITION

LOBSEGMENT

INDEX

TABLE

CLUSTER

TYPE2 UNDO

(5)添加臨時文件

alter tablespace temp add tempfile'/data/EDWPRD/temp02.dbf' size 10m;

(6)用戶及表空間

#查看當前用戶所在表空間

select username,default_tablespace fromuser_users;

#查看當前用戶的表

select table_name,tablespace_name fromuser_tables;

TABLE_NAME TABLESPACE_NAME

------------------------------------------------------------

DEPT USERS

EMP USERS

BONUS USERS

SALGRADE USERS

#查看某個表的字段

select * from user_tab_columns whereTable_Name='用戶表';

(7)添加表空間

/*分爲四步 */

/*第1步:創建臨時表空間 */

create temporary tablespace user_temp

tempfile'D:\oracle\oradata\Oracle9i\user_temp.dbf'

size 50m

autoextend on

next 50m maxsize 20480m

extent management local;

/*第2步:創建數據表空間 */

create tablespace user_data

logging

datafile'D:\oracle\oradata\Oracle9i\user_data.dbf'

size 50m

autoextend on

next 50m maxsize 20480m

extent management local;

/*第3步:創建用戶並指定表空間 */

create user username identified bypassword

default tablespace user_data

temporary tablespace user_temp;

/*第4步:給用戶授予權限 */

grant connect,resource,dba to username;

#刪除表空間

DROP TABLESPACE tablespace_name INCLUDINGCONTENTS AND DATAFILES;

(8)區間

extent是“區間”的意思

在oracle數據庫中:extent management 有兩種方式 extent management local(本地管理); extentmanagement dictionary(數據字典管理)

默認的是local

每種也有兩種大小增長方式:

uniform:默認爲1M大小,在temp表空間裏爲默認的,但是不能被應用在undo表空間

本地管理表空間與字典管理表空間相比大大提高了管理效率和數據庫性能,其優點如下:

  1.減少了遞歸空間管理

  本地管理表空間是自己管理分配,而不是象字典管理表空間需要系統來管理空間分配,本地表空間是通過在表空間的每個數據文件中維持一個位圖來跟蹤在此文件中塊的剩餘空間及使用情況。並及時做更新。這種更新只對表空間的額度情況做修改而不對其他數據字典表做任何update操作,所以不會產生任何回退信息,從而大大減少了空間管理,提高了管理效率。同時由於本地管理表空間可以採用統一大小分配方式(UNIFORM),因此也大大減小了空間管理,提高了數據庫性能。

  2.系統自動管理extents大小或採用統一extents大小

  本地管理表空間有自動分配(AUTOALLOCATE)和統一大小分配(UNIFORM)兩種空間分配方式,自動分配方式(AUTOALLOCATE)是由系統來自動決定extents大小,而統一大小分配(UNIFORM)則是由用戶指定extents大小。這兩種分配方式都提高了空間管理效率。

  3.減少了數據字典之間的競爭

  因爲本地管理表空間通過維持每個數據文件的一個位圖來跟蹤在此文件中塊的空間情況並做更新,這種更新只修改表空間的額度情況,而不涉及到其他數據字典表,從而大大減少了數據字典表之間的競爭,提高了數據庫性能。

  4.不產生回退信息

  因爲本地管理表空間的空間管理除對錶空間的額度情況做更新之外不修改其它任何數據字典表,因此不產生回退信息,從而大大提高了數據庫的運行速度。

  5.不需合併相鄰的剩餘空間

  因爲本地管理表空間的extents空間管理會自動跟蹤相鄰的剩餘空間並由系統自動管理,因而不需要去合併相鄰的剩餘空間。同時,本地管理表空間的所有extents還可以具有相同的大小,從而也減少了空間碎片。

  6.減少了空間碎片

  7.對臨時表空間提供了更好的管理


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章