Oracle系列之表空間

2022-05-10 18:47:18 字數 3475 閱讀 1712

涉及到表的處理請參看原表結構與資料

oracle建表插資料等等

select tablespace_name from dba_tablespaces;--dba許可權使用者查詢資料庫中的表空間

select * from all_tables where tablespace_name='tablespace_name';--查詢表空間中的表,注意大寫

select tablespace_name,table_name from user_tables where table_name='tb_employee';--查詢表處於哪個表空間

--建立使用者的時候定義預設表空間,設定使用者預設的表空間和臨時的表空間,並設定使用者建立的資料物件最大只能是3m,設定初始賬戶為鎖定狀態

create user db_user identified by password default tablespace tablespace_name temporary tablespace tablespace_name quota 3m on tablespace_name account lock;

create tablespace tablespace_name datafile 'e:\tablespace_name.dbf' size 20m uniform size 128k;--建立表空間

create table table_name(deptno number(4),dname varchar2(14),loc varchar2(13)) tablespace tablespace_name;--為表指定表空間

create index index_name on table_name(column_name) tablespace tablespace_name;--為索引指定表空間

alter user db_user default tablespace tablespace_name;--修改使用者預設表空間

擁有unlimited tablespace許可權的使用者可在任意表空間上操作(grant unlimited tablespace to db_user)。沒有unlimited tablespace許可權的使用者要在非預設表空間上操作需要在目標表空間有一定的配額,即在目標表空間分配給使用者一定的空間或者不限制空間。

alter user db_user quota 100m||unlimited on tablespace_name;

當建立表空間時,表空間處於聯機的(online)狀態,此時該錶空間是可以訪問的,並且該錶空間是可以讀寫的,即可以查詢該錶空間的資料,而且還可以在表空間執行各種語句。但是在進行系統維護或是資料維護時,可能需要改變表空間的狀態。一般情況下,由特權使用者或是dba來操作。

alter tablespace tablespace_name offline;--1. 使表空間離線

alter tablespace tablespace_name online;--2. 使表空間聯機 

當建立表空間時,表空間可以讀寫,如果不希望在該錶空間上執行update,delete,insert操作,那麼可以將表空間修改為唯讀

alter tablespace tablespace_name read only;--3. 唯讀表空間

(修改為可寫是 alter tablespace tablespace_name read write;)

我們給大家舉乙個例項,說明唯讀特性:

select * from all_tables where tablespace_name='tablespace_name';--知道tablespace_name,顯示該錶空間包括的所有表,查詢表空間中的表,注意大寫

select tablespace_name, table_name from user_tables where table_name='tb_employee';--知道table_name,檢視該錶屬於那個表空間

通過2.我們可以知道system.tb_employee是在system這個表空間上,現在我們可以將system改為唯讀的但是我們不會成功,因為system是系統表空間,如果是普通表空間,那麼我們就可以將其設為唯讀的,給大家做乙個演示,可以加強理解。

alter tablespace tablespace_name read only;

alter tablespace tablespace_name read write;--使表空間可讀寫

一般情況下,由特權使用者或是dba來操作,如果是其它使用者操作,那麼要求使用者具有drop tablespace系統許可權。

drop tablespace tablespace_name including contents and datafiles;--刪除表空間

說明:including contents表示刪除表空間時,刪除該空間的所有資料庫物件,而datafiles表示將資料庫檔案也刪除。

表空間是由資料檔案組成的,表空間的大小實際上就是資料檔案相加後的大小。那麼我們可以想象,假定表tb_employee存放到tablespace_name表空間上,初始大小就是2m,當資料滿2m空間後,如果在向tb_employee表插入資料,這樣就會顯示空間不足的錯誤。

案例說明:

1. 建立乙個表空間 fj01

2. 在該錶空間上建立乙個普通表 mydment 其結構和dept一樣

3. 向該表中加入資料 insert into mydment select * from dept;

4. 當一定時候就會出現無法擴充套件的問題,怎麼辦?

5. 就擴充套件該錶空間,為其增加更多的儲存空間。有三種方法:

1. 增加資料檔案

alter tablespace fj01 add datafile 'e:\fj01.dbf' size 20m;

2. 增加資料檔案的大小

alter tablespace tablespace_name 'e:\fj01.dbf' resize 20m;

這裡需要注意的是資料檔案的大小不要超過500m。

3. 設定檔案的自動增長。

alter tablespace tablespace_name 'e:\fj01.dbf' autoextend on next 10m maxsize 500m extend management local;

刪除表空間及其所有內容,同時刪除其所對應的資料檔案:

drop tablespace tablespace_name including contents and datafiles;

刪除表空間及其所有內容,同時刪除其所對應的資料檔案,以及其他表空間中與表空間相關的參照完整性約束:

drop tablespace tablespace_name including contents and datafiles cascade constraints;

oracle之表空間

表空間 執行需要dba許可權 1.建立表空間 create tablespace sp001 datafile d sp001.dbf size 20m uniform size 128k 2.指定表建立到哪個表空間上 create table mypart deptno number 2 dnam...

oracle之表空間

一 dba tablespaces和user tablespaces兩個資料字典 1 dba tablespaces 記錄的是具有管理員許可權的使用者的表空間,需要登入具有管理員許可權的使用者才能訪問 desc dba tablespaces 2 user tablespaces 記錄的是普通使用者...

ORACLE之表空間

表空間 create tablespace tablespace name datafile d oracle product 10.2.0 oradata edwtest tablespace name size 1g extent management local segment space m...