Oracle 11g系列:數據表對象


  Oracle數據庫的下一層邏輯結構並非數據表,而是表空間。每個數據表都屬於唯一的表空間。

  1、Oracle表空間

  與數據表相同,Oracle表空間是一個邏輯對象,而非物理對象,是數據庫的組成部分。當使用SQL語句對數據庫進行操作時,操作的都是邏輯對象,而非直接操作物理文件。一個數據庫可以有多個表空間,一個表空間可以有多個數據表。

  Oracle表空間的Oracle數據庫高性能的保證,對於訪問頻繁的數據表,可以將其放入單獨的表空間中,並存儲與高性能磁盤;將其他訪問較少的數據表規划於單獨的表空間,並存儲與性能相對較低的磁盤,以實現合理利用服務器資源,最大限度提供數據庫性能。另外一種應用場景為將更新頻繁的數據表規划於單獨的表空間,而很少更新的數據表規划於其他的表空間,在備份數據庫時,可以針對不同表空間指定不同的備份周期,在最大程度減小備份數據庫占用的系統資源。

  不同的表空間對應着不同的物理文件,當某個表空間物理文件損壞時,不會影響其他表空間的正常使用,提高了數據庫的安全性。另外可以將數據庫實際數據與日志規划為不同的表空間,並存儲與不同的磁盤。即使數據庫所在磁盤出現問題,還可以利用另一磁盤的日志文件恢復數據庫,從而降低了數據丟失的風險。

  1.1、創建Oracle表空間

  Oracle表空間是一個邏輯概念,創建時需要指定物理文件,即為實際數據分配磁盤空間。表空間的物理文件為數據文件(datafile),同時指定數據文件初始大小。

  1>、創建基本表空間

CREATE TABLESPACE MEMBER DATAFILE 'F:\DATABASE\ORADATA\MEMBER_DATA.DBF' SIZE 20M

  數據文件的初始大小是必須參數,其完整鷺江必須包含在單引號中。

  2>、指定數據文件的可擴展性

  當存儲在某個數據文件中的數據量超過了其初始大小時,數據文件可以進行自動擴展,使用autoextend選項。

CREATE TABLESPACE MEMBER DATAFILE 'F:\DATABASE\ORADATA\MEMBER_DATA.DBF' SIZE 20M
AUTOEXTEND ON

  autoextend選項值為“on”,表空間的數據文件可以自動擴展。若設置為“off”,則關閉自動擴展功能。

  3>、指定數據文件的增長幅度

  數據文件自動增長時,每次默認增長64K。當某個表空間數據更新很快,數據量的增長很快時,就會頻繁地要求增加數據文件的大小。此時需要為每次的增長幅度設定一個合理的值,避免頻繁執行增加數據文件大小的動作,影響數據庫性能。

  設定自動增長幅度使用next選項。

CREATE TABLESPACE MEMBER DATAFILE 'F:\DATABASE\ORADATA\MEMBER_DATA.DBF' SIZE 20M
AUTOEXTEND ON NEXT 5M

  4>、指定數據文件的最大尺寸

  數據文件可以自動增長,但是無限制的增長往往帶來風險。除非特殊需要,應為每個表空間的數據文件設定最大尺寸。

  為數據文件設定最大尺寸使用maxsize選項。

CREATE TABLESPACE MEMBER DATAFILE 'F:\DATABASE\ORADATA\MEMBER_DATA.DBF' SIZE 20M
AUTOEXTEND ON NEXT 5M MAXSIZE 500M

  如果不限制數據文件的最大尺寸,使用unlimited來代替實際值。

CREATE TABLESPACE MEMBER DATAFILE 'F:\DATABASE\ORADATA\MEMBER_DATA.DBF' SIZE 20M
AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED

  5>、查看表空間是否創建成功

  表空間成功創建之后,會在數據庫系統表中添加相應的記錄,並且創建相應的物理文件。可以通過查詢視圖dba_data_files中的記錄和實際數據文件存在性,來判斷表空間是否創建成功。

  查看表空間信息的SQL語句:

select file_name,tablespace_name from dba_data_files order by file_name

  6>、為一個表空間創建多個數據文件

  一個表空間可以有多個數據文件,為一個表空間創建多個數據文件需要指定多個數據文件的完整路徑和詳細的選項參數。各數據文件參數之間使用逗號(“,”)分隔。

CREATE TABLESPACE MEMBER DATAFILE 'F:\DATABASE\ORADATA\MEMBER_DATA_01.DBF' SIZE 20M,'F:\DATABASE\ORADATA\MEMBER_DATA_02.DBF' SIZE 10M

  1.2、查看表空間

  可以通過查詢視圖dba_tablespaces和視圖dba_data_files來獲得數據庫的表空間信息。dba_tablespaces可以用來查看所有表空間的基本信息,dba_data_files可以用來查看相關數據文件的信息。

select tablespace_name,status,allocation_type from dba_tablespaces

  1.3、修改數據庫默認表空間

  默認表空間是相對用戶來說的,每個用戶登錄Oracle時,都有一個默認的工作空間。當進行與表空間相關操作時,如果為顯示指定表空間,則該操作將作用於用戶的默認表空間。

  查詢每個用戶的默認表空間:

select user_id,username,default_tablespace from dba_users

  修改數據庫默認表空間的SQL語句:

alter database default tablespace MEMBER

  1.4、修改表空間名稱

  修改表空間名稱使用rename to命令,不能對數據的系統表空間進行重命名。

ALTER TABLESPACE MEMBER01 RENAME TO MEMBER02

  1.5、刪除表空間

  如果某個表空間沒有存在的必要,可以執行刪除表空間命令,以釋放磁盤空間。刪除表空間的命令為drop tablespace。刪除表空間有兩種方式,一是僅僅刪除其在數據庫中的記錄,另一種是將記錄和數據文件一起刪除。

  1>、僅刪除其在數據庫中記錄的SQL語句

DROP TABLESPACE MEMBER01

  2>、刪除表空間及其數據文件的SQL語句

  including contents and datafiles表明當刪除該表空間時,應將數據文件一並刪除。

DROP TABLESPACE MEMBER01 INCLUDING CONTENTS AND DATAFILES

  2、創建Oracle數據表

  利用SQL語句查看數據表所屬的表空間:

select table_name,tablespace_name from user_tables
DESCRIBE T_USER

  3、修改Oracle數據表結構

  1>、使用rename選項修改列名

ALTER TABLE T_USER RENAME COLUMN USER_EMAIL TO EMAIL

  2>、使用modify選項修改列的屬性

ALTER TALBE T_USER MODIFY (USER_NAME VARCHAR2(15))

  一次修改多個屬性

ALTER TALBE T_USER MODIFY (USER_NAME VARCHAR2(15), EMAIL VARCHAR2(30))

  3>、添加列

ALTER TABLE T_USER ADD (REMARK VARCHAR2(50))

  4>、刪除列

ALTER TABLE T_USER DROP COLUMN REMARK

  5>、修改表名

ALTER TABLE T_USER RENAME TO T_USERS

  4、刪除數據表

DROP TABLE T_USERS
DROP TABLE T_USERS CASCADE CONSTRAINS
  有時某些數據表的列被其他表引用,如外鍵引用時,直接使用DROP TABLE將無法刪除該表,此時需要使用CASCADE CONSTRAINS選項,CASCADE CONSTRAINS表示刪除表時,將一起作用於約束。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM