oracle建立資料庫和使用者、表空間,管理表空間和資料檔案簡介
介紹
表空間是資料庫的邏輯組成部分
從物理上將:資料庫資料存放在資料檔案中
從邏輯上將:資料庫則是存放在表空間中
表空間由一個或是多個數據檔案組成
資料庫的邏輯結構
介紹:
Oracle中邏輯結構包括表空間、段、區、塊
說明:
資料庫由表空間構成
而表空間又是由段構成
而段又是由區構成
而區又是由Oracle塊構成
這樣的一種結果,可以提高資料庫的效率
表空間
介紹:
表空間用於從邏輯上組織資料庫的資料
資料庫邏輯上是由一個或是多個表空間組成的
表空間的作用:
1、控制資料庫佔用的磁碟空間
2、dba可以將不同資料型別部署到不同的位置。這樣有利於提高i/o效能,同時利於備份和恢復等管理操作
oracle建立資料庫和使用者、表空間
oracle的使用方式和mysql和sql server他們不同,oracle在建立資料庫的時候要對應一個使用者,資料庫和使用者一般一一對應,
mysql和sql server 直接通過create databse “資料庫名” 就可以直接建立資料庫了,而oracle建立一個數據庫需要以下三個步驟:
- 建立兩個表空間和對應的資料檔案(.DBF),若已存在使用者和關聯的資料庫,則需先刪除使用者和資料庫
- 建立使用者與上面建立的檔案形成對映關係
- 給使用者新增許可權
一、建立兩個表空間和對應的資料檔案(monitor.dbf 和monitor_temp.dbf 兩個檔案) ,若已存在使用者和關聯的資料庫,則需先刪除使用者和資料庫
CREATE TABLESPACE monitor LOGGING DATAFILE 'D:\app\owner\oradata\orcl\monitor.dbf' SIZE 100M AUTOEXTEND ON NEXT 32M MAXSIZE 500M EXTENT MANAGEMENT LOCAL; create temporary tablespace monitor_temp tempfile 'D:\app\owner\oradata\orcl\monitor_temp.dbf' size 100m autoextend on next 32m maxsize 500m extent management local;
tablespace:表空間名
datafile:'資料檔案路徑'
size:資料檔案的大小
maxsize:表資料檔案最大大小
uniformsize區的大小;
二、建立使用者與上面建立的檔案形成對映關係(使用者名稱為monitor,密碼為monitor)
CREATE USER monitor IDENTIFIED BY monitor DEFAULT TABLESPACE monitor TEMPORARY TABLESPACE monitor_temp;
三、新增許可權
grant connect,resource,dba to monitor; grant create session to monitor;
有時候也會用到刪除資料庫和刪除使用者的操作,這裡也給出刪除的語句
四、刪除資料庫
DROP TABLESPACE monitor INCLUDING CONTENTS AND DATAFILES;
五、刪除使用者
drop user monitor cascade;
管理表空間和資料檔案簡介
建立表空間
建立表空間是使用createtablespace命令完成的,要注意時,一般情況下,建立表空間是特權使用者或是dba來執行的,
如果用其它使用者來建立表空間,則使用者必須要具有createtablespace的系統許可權
建立資料表空間
在建立資料庫後,為便於管理表,最好建立自己的表空間
createtablespacetangtao001datafile'd:\t001.dbf'size20muniformsize128k;
使用資料表空間
向新建的表空間新增表:
createtablemyDept(deptnonumber(4),dnamevarchar2(15),locvarchar2(13))tablespacetangtao001;
說明:執行完上述命令後,會建立名稱為tangtao001的表空間,併為該表空間建立名稱為t001.dbf的資料檔案,區的大小為128k
1、顯示錶空間資訊
a)查詢資料字典檢視dba_tablespaces。顯示錶空間資訊
selecttablespace_namefromdba_tablespaces;
2、顯示錶空間所包含的資料檔案
a)查詢資料字典檢視dba_data_files,可以顯示錶空間所包含的資料檔案
selectfile_name,bytesfromdba_data_fileswheretablespace_name='表空間名';
改變表空間的狀態
當建立表空間時,表空間處於聯機的(online)狀態,此時該表空間是可以訪問的,並且該表空間是可以讀寫的,即可以查詢該表空間的資料,而且還可以在表空間執行各種語句。
但是在進行系統維護或是資料維護時,可能需要改變表空間的狀態,一般情況下,由特權使用者或是dba來操作
1、使表空間離線
altertablespace表空間名offline;
2、使表空間聯機
altertablespace表空間名online;
3、只讀表空間
a)當建立表空間時,表空間可以讀寫,如果不希望在該表空間上執行update、delete、insert操作,那麼可以將該表空間修改為只讀
altertablespace表空間名readonly;
案例:
1、知道表空間名。顯示該表空間的所有表
select*fromtall_tableswheretablespace_name='表空間名';
2、知道表明,檢視該表屬於哪個表空間
selecttablespace_name,table_namefromuser_tableswheretable_name='emp';
注意:
通過2,可以知道scott.emp是在system這個表空間上,現在可以將system改為只讀,但是不會成功。因為system是系統表空間,如果是普通表空間,可以將其設為只讀
刪除表空間
一般情況下,有特權使用者或是dba來操作,如果是其它使用者操作,那麼要求使用者具有droptablespace系統許可權
droptablespace表空間名includingcontentsanddatafiles;
說明:
Includingcontents表示刪除表空間,刪除該表空間的所有資料庫物件,而datafiles表示將資料庫檔案也刪除
擴充套件表空間
表空間是由資料檔案組成的,表空間的大小實際上就是資料檔案相加後的大小。那麼我們可以想象。假定表employee存放到tangtao001表空間上,初始大小就是2m。
當資料滿2m空間後,如果在向employee表插入資料,這樣就會顯示空間不足的錯誤
案例說明:
1、建立一個表空間tangtao001
2、在該表空間上建立一個普通標mydment其結構和dept一樣
3、向該表中加入資料insertintomydmentselect*fromdept;
4、當一定時候就會出現無法擴充套件的問題,怎麼辦?
5、就擴充套件該表空間,為其增加更多的儲存空間。有三種方法:
1、增加資料檔案
altertablespace表空間名adddatafile'資料檔案存放路徑'size資料檔案大小;
2、增加資料檔案的大小
altertablespace表空間名adddatafile'資料檔案存放的路徑'resize資料檔案新的大小;
這裡需注意,資料檔案的大小不要超過500m
3、設定檔案的自動增長
altertablespace表空間名adddatafile'資料檔案存放路徑'autoextendonnext每次增加的大小maxsize資料檔案大小的最大值;
移動資料檔案
有時,如果資料檔案所在的磁碟損壞時,該資料檔案不能再使用,為了能夠重新使用,需要將這些檔案的副本移動到其它的磁碟,然後恢復
案例說明:
1、確定資料檔案所在的表空間
selecttablespace_namefromdba_data_fileswherefile_name='d:\t01.dbf';
2、使表空間離線
a)確保資料檔案的一致性,將表空間轉變為offline的狀態
altertablespacetangtao001offline;
3、使用命令移動資料檔案到指定的目標位置
hostmoved:t01.dbfc:t01.dbf;
4、執行altertablespace命令
a)在物理上移動了資料後,還必須執行altertablespace命令對資料庫檔案進行邏輯修改
altertablespacetangtao001renamedatafile'd:t01.dbf'to'c:t01.dbf';
5、使得表空間聯機
a)在移動了資料檔案後,為了使使用者可以訪問該表空間,必須將其轉變為online的狀態
altertablespacetangtao001online;
表空間小結
1、瞭解表空間和資料檔案的作用
2、掌握常用表空間,undo表空間和臨時表空間的建立方法
3、瞭解表空間的各個狀態
a)Online
b)Offline
c)Readwrite
d)Readonly
4、瞭解移動資料檔案的原因,即使用altertablespace和alterdatatable命令移動資料檔案的方法
參考博文:
https://www.cnblogs.com/qintangtao/archive/2012/11/04/2753549.html
https://www.cnblogs.com/0201zcr/p/4669548.html