基礎知識5——建立和管理表空間
建立和管理表空間
表空間時模式資料的倉庫,包括資料字典.所有資料庫必須有SYSTEM和SYSAUX表空間,實際中還有臨時表空間和撤銷表空間.在建立資料庫時,通常已經建立了這4個表空間.此後DBA可以為使用者資料建立更多表空間,為撤銷和臨時資料建立更多表空間.
1 CREATE SMALLFILE TABLESPACE "NEWTBS"
2 DATAFILE 'D:\oracle\product\10.2.0\oradata\bob\newtbs01.dbf'
3 SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE 200M
4 LOGGING
5 EXTENT MANAGEMENT LOCAL
6 SEGMENT SPACE MANAGEMENT AUTO
7 DEFAULT NOCOMPRESS;
1-表空間預設是smallfile,可以由多個資料檔案組成,bigfile下只有一個資料檔案
2-資料檔案的名稱和位置
3-建立的資料檔案大小為100MB,變滿後自動擴大10MB,最大為200MB,預設方式下不啟用自動擴充套件
4-表空間中針對段的所有操作都生成重做,預設屬性,也可為極少操作比如生成索引等禁用重做的生成
5-表空間將使用點陣圖來分配區間,預設方式
6-表空間中的段將使用點陣圖來跟蹤塊的使用情況,預設方式
7-表空間中的段不壓縮,預設方式
所有表空間都應該在本地管理!
更改表空間
重新命名錶空間及其資料檔案
ALTER TABLESPACE tablespaceoldname RENAME TO tablespacenewname;
改起來挺簡單,但是很多站點依賴與命名約定將表空間與資料檔案關聯在一起,要重新命名資料檔案必須使資料檔案離線.
具體請看:
http://blog.itpub.net/25025926/viewspace-1064894/
使表空間聯機或離線
ALTER TABLESPACE tablespacename OFFLINE [ NORMAL | IMMEDIATE | TEMPORARY ];
normal離線預設方式,強制實施針對所有表空間資料檔案的檢查點,包含表空間的塊的資料庫緩衝區快取中的每個髒緩衝區都將寫入到資料檔案中,此後表空間和資料檔案處於離線狀態.
immediate很極端,立即使表空間和資料檔案離線,不會轉儲任何髒緩衝區,這麼整資料檔案將受到損壞,聯機之前必須應用重做日誌的變更向量進行恢復,只有檔案已損壞,無法完成檢查點時,才會這麼整.
temporary離線針對所有可以執行檢查點操作的所有檔案實施檢查點,然後按順序使表空間及檔案離線.任何受損的檔案將立即離線.
將表空間標記為只讀:
ALTER TABLESPACE tablespacename [ READ ONLY | READ WRITE ]
只讀後,不能用DML更改,但能刪除,費解麼?因為刪除表並不對錶產生實際影響,針對資料字典的事務,會刪除描述表及其列的行;
重調錶空間大小
可以向其新增資料檔案,也可調整現有資料檔案的大小. 如果建立檔案時使用AUTOEXTEND,則可根據需要自動向上調整資料檔案的大小,
否則只能使用alter database命令手動方式更改:
ALTER DATABASE DATAFILE filename RESIZE n [ M | G | T ]; --MGT指的是檔案大小MB,GB,TB
比如來個例子:
alter database datafile 'd:\oracle\user02.dbf' resize 100m;
要向表空間新增一個檔案:
alter tablespace tablespacename add datafile 'D:\oracle\newfile02.dbf' size 100m;
可新增自動擴充套件
alter database datafile 'D:\oracle\newfile02.dbf' autoextend on next 100m maxsize 2g;
更改警報閾值
例項的MMON程式準實時監控每個表空間的滿度,預設表空間滿度超過85%,將發出警報;超過97%發出嚴重警報.
建議用em管理警報閾值
刪除表空間
DROP TABLESPACE tablespacename [ INCLUDING CONTENTS [ AND DATAFILES ] ];
如不指定INCLUDING CONTENTS關鍵字,表空間包含任何物件,則提示刪除失敗;如沒指定AND DATAFILES關鍵字,則刪除表空間及其內容,但資料檔案還保留在磁碟上,需作業系統命令刪除(windows平臺必須手動刪除資料檔案).
OMF
有了oracle管理的檔案(oracle managed file OMF),DBA將不必瞭解有關檔案系統的任何知識,將以完全自動的方式完成資料庫檔案的建立,要啟用OMF,請設定一部分或所有下列例項引數:
db_create_file_dest --指定所有資料檔案的預設位置
db_create_online_log_dest_1 --指定聯機重做日誌檔案的預設位置
db_create_online_log_dest_2
db_create_online_log_dest_3
db_create_online_log_dest_4
db_create_online_log_dest_5
db_recovery_file_dest --設定歸檔重做日誌檔案和備份檔案的預設位置.
除設定預設檔案位置外,OMF還生成檔名並在預設方式下設定檔案大小.
又到了練習時間了,整個例子建立表空間並更改其屬性,此後啟用OMF
建立表空間
create tablespace newtbs
datafile 'D:\oracle\product\10.2.0\oradata\bob\newtbs_01.dbf' size 20m
extent management local autoallocate
segment space management auto;
在新的表空間建立表,並確定第一個區間的大小
create table newtab (c1 date) tablespace newtbs;
select extent_id,bytes from dba_extents
where owner='SYS' and segment_name='NEWTAB'
手動新增區間,重複執行以下命令來觀察每個新區建的大小:
alter table newtab allocate extent
使表空間離線
alter tablespace newtbs offline/online
設為只讀,再改為可讀寫
alter tablespace newtbs read only/read write
啟用OMF來建立資料檔案
alter system set db_create_file_dest='D:\oracle\product\10.2.0\oradata\bob';
使用最少的語法建立表空間
create tablespace omftbs;
確定OMF檔案的特性
select file_name,bytes,autoextensible,maxbytes,increment_by
from dba_data_files where tablespace_name='OMFTBS'
調整OMF檔案,使其更合理
alter database datafile
'D:\oracle\product\10.2.0\oradata\bob\omf.dbf' resize 500m soso
刪除表空間
drop tablespace omftbs including contents and datafiles;
管理表空間中的空間
區間管理:始終應該用本地管理,不要是用字典管理.
管理段空間:始終應該使用自動管理
要檢視任何表空間是否使用手動管理,請用此命令:
select tablespace_name,segment_space_management from dba_tablespaces
TABLESPACE_NAME SEGMENT_SPACE_MANAGEMENT
-----------------------------------
SYSTEM MANUAL
UNDOTBS1 MANUAL
SYSAUX AUTO
TEMP MANUAL
USERS AUTO
EXAMPLE AUTO
BOBTEST AUTO
繼續練習,使用非預設的手動空間管理建立表空間:
create tablespace manualsegs segment space management manual;
手動技術確認新表空間存在
select segment_space_management from dba_tablespaces
where tablespace_name='MANUALSEGS';
在表空間中建立表和索引:
create table mantab (c1 number) tablespace manualsegs;
create index mantabi on mantab(c1) tablespace manualsegs;
新建將使用自動段空間管理(預設方式)的表空間:
create tablespace autosegs;
將物件移入新表空間
alter table mantab move tablespace autosegs;
alter index mantabi rebuild online tablespace autosegs;
確認物件位於正確的表空間中:
select tablespace_name from dba_segments
where segment_name like 'MANATAB%';
刪除原始的表空間:
drop tablespace manualsegs including contents and datafiles;
將新表空間重新命名為原來的名稱:
alter tablespace autosegs rename to manualsegs;
刪除表空間進行清理
drop tablespace manualsegs including contents and datafiles;
表空間時模式資料的倉庫,包括資料字典.所有資料庫必須有SYSTEM和SYSAUX表空間,實際中還有臨時表空間和撤銷表空間.在建立資料庫時,通常已經建立了這4個表空間.此後DBA可以為使用者資料建立更多表空間,為撤銷和臨時資料建立更多表空間.
1 CREATE SMALLFILE TABLESPACE "NEWTBS"
2 DATAFILE 'D:\oracle\product\10.2.0\oradata\bob\newtbs01.dbf'
3 SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE 200M
4 LOGGING
5 EXTENT MANAGEMENT LOCAL
6 SEGMENT SPACE MANAGEMENT AUTO
7 DEFAULT NOCOMPRESS;
1-表空間預設是smallfile,可以由多個資料檔案組成,bigfile下只有一個資料檔案
2-資料檔案的名稱和位置
3-建立的資料檔案大小為100MB,變滿後自動擴大10MB,最大為200MB,預設方式下不啟用自動擴充套件
4-表空間中針對段的所有操作都生成重做,預設屬性,也可為極少操作比如生成索引等禁用重做的生成
5-表空間將使用點陣圖來分配區間,預設方式
6-表空間中的段將使用點陣圖來跟蹤塊的使用情況,預設方式
7-表空間中的段不壓縮,預設方式
所有表空間都應該在本地管理!
更改表空間
重新命名錶空間及其資料檔案
ALTER TABLESPACE tablespaceoldname RENAME TO tablespacenewname;
改起來挺簡單,但是很多站點依賴與命名約定將表空間與資料檔案關聯在一起,要重新命名資料檔案必須使資料檔案離線.
具體請看:
http://blog.itpub.net/25025926/viewspace-1064894/
使表空間聯機或離線
ALTER TABLESPACE tablespacename OFFLINE [ NORMAL | IMMEDIATE | TEMPORARY ];
normal離線預設方式,強制實施針對所有表空間資料檔案的檢查點,包含表空間的塊的資料庫緩衝區快取中的每個髒緩衝區都將寫入到資料檔案中,此後表空間和資料檔案處於離線狀態.
immediate很極端,立即使表空間和資料檔案離線,不會轉儲任何髒緩衝區,這麼整資料檔案將受到損壞,聯機之前必須應用重做日誌的變更向量進行恢復,只有檔案已損壞,無法完成檢查點時,才會這麼整.
temporary離線針對所有可以執行檢查點操作的所有檔案實施檢查點,然後按順序使表空間及檔案離線.任何受損的檔案將立即離線.
將表空間標記為只讀:
ALTER TABLESPACE tablespacename [ READ ONLY | READ WRITE ]
只讀後,不能用DML更改,但能刪除,費解麼?因為刪除表並不對錶產生實際影響,針對資料字典的事務,會刪除描述表及其列的行;
重調錶空間大小
可以向其新增資料檔案,也可調整現有資料檔案的大小. 如果建立檔案時使用AUTOEXTEND,則可根據需要自動向上調整資料檔案的大小,
否則只能使用alter database命令手動方式更改:
ALTER DATABASE DATAFILE filename RESIZE n [ M | G | T ]; --MGT指的是檔案大小MB,GB,TB
比如來個例子:
alter database datafile 'd:\oracle\user02.dbf' resize 100m;
要向表空間新增一個檔案:
alter tablespace tablespacename add datafile 'D:\oracle\newfile02.dbf' size 100m;
可新增自動擴充套件
alter database datafile 'D:\oracle\newfile02.dbf' autoextend on next 100m maxsize 2g;
更改警報閾值
例項的MMON程式準實時監控每個表空間的滿度,預設表空間滿度超過85%,將發出警報;超過97%發出嚴重警報.
建議用em管理警報閾值
刪除表空間
DROP TABLESPACE tablespacename [ INCLUDING CONTENTS [ AND DATAFILES ] ];
如不指定INCLUDING CONTENTS關鍵字,表空間包含任何物件,則提示刪除失敗;如沒指定AND DATAFILES關鍵字,則刪除表空間及其內容,但資料檔案還保留在磁碟上,需作業系統命令刪除(windows平臺必須手動刪除資料檔案).
OMF
有了oracle管理的檔案(oracle managed file OMF),DBA將不必瞭解有關檔案系統的任何知識,將以完全自動的方式完成資料庫檔案的建立,要啟用OMF,請設定一部分或所有下列例項引數:
db_create_file_dest --指定所有資料檔案的預設位置
db_create_online_log_dest_1 --指定聯機重做日誌檔案的預設位置
db_create_online_log_dest_2
db_create_online_log_dest_3
db_create_online_log_dest_4
db_create_online_log_dest_5
db_recovery_file_dest --設定歸檔重做日誌檔案和備份檔案的預設位置.
除設定預設檔案位置外,OMF還生成檔名並在預設方式下設定檔案大小.
又到了練習時間了,整個例子建立表空間並更改其屬性,此後啟用OMF
建立表空間
create tablespace newtbs
datafile 'D:\oracle\product\10.2.0\oradata\bob\newtbs_01.dbf' size 20m
extent management local autoallocate
segment space management auto;
在新的表空間建立表,並確定第一個區間的大小
create table newtab (c1 date) tablespace newtbs;
select extent_id,bytes from dba_extents
where owner='SYS' and segment_name='NEWTAB'
手動新增區間,重複執行以下命令來觀察每個新區建的大小:
alter table newtab allocate extent
使表空間離線
alter tablespace newtbs offline/online
設為只讀,再改為可讀寫
alter tablespace newtbs read only/read write
啟用OMF來建立資料檔案
alter system set db_create_file_dest='D:\oracle\product\10.2.0\oradata\bob';
使用最少的語法建立表空間
create tablespace omftbs;
確定OMF檔案的特性
select file_name,bytes,autoextensible,maxbytes,increment_by
from dba_data_files where tablespace_name='OMFTBS'
調整OMF檔案,使其更合理
alter database datafile
'D:\oracle\product\10.2.0\oradata\bob\omf.dbf' resize 500m soso
刪除表空間
drop tablespace omftbs including contents and datafiles;
管理表空間中的空間
區間管理:始終應該用本地管理,不要是用字典管理.
管理段空間:始終應該使用自動管理
要檢視任何表空間是否使用手動管理,請用此命令:
select tablespace_name,segment_space_management from dba_tablespaces
TABLESPACE_NAME SEGMENT_SPACE_MANAGEMENT
-----------------------------------
SYSTEM MANUAL
UNDOTBS1 MANUAL
SYSAUX AUTO
TEMP MANUAL
USERS AUTO
EXAMPLE AUTO
BOBTEST AUTO
繼續練習,使用非預設的手動空間管理建立表空間:
create tablespace manualsegs segment space management manual;
手動技術確認新表空間存在
select segment_space_management from dba_tablespaces
where tablespace_name='MANUALSEGS';
在表空間中建立表和索引:
create table mantab (c1 number) tablespace manualsegs;
create index mantabi on mantab(c1) tablespace manualsegs;
新建將使用自動段空間管理(預設方式)的表空間:
create tablespace autosegs;
將物件移入新表空間
alter table mantab move tablespace autosegs;
alter index mantabi rebuild online tablespace autosegs;
確認物件位於正確的表空間中:
select tablespace_name from dba_segments
where segment_name like 'MANATAB%';
刪除原始的表空間:
drop tablespace manualsegs including contents and datafiles;
將新表空間重新命名為原來的名稱:
alter tablespace autosegs rename to manualsegs;
刪除表空間進行清理
drop tablespace manualsegs including contents and datafiles;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25025926/viewspace-1067918/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 基礎知識5——表空間和資料檔案
- 基礎知識6——建立和管理角色
- 基礎知識6——建立和管理配置檔案
- oracle基礎管理——表空間和資料檔案Oracle
- SQL 基礎-->建立和管理表SQL
- 基礎知識6——建立和管理使用者賬戶
- Oracle表空間小知識Oracle
- Oracle 基礎溫習1 建立表空間和新使用者Oracle
- oracle spatial之基礎知識之四空間索引Oracle索引
- 【儲存管理】建立永久表空間
- 【儲存管理】建立臨時表空間組、建立臨時表空間組及使用
- corejava基礎知識(5)-集合Java
- Oracle基礎 01 表空間 tablespaceOracle
- 表空間查詢和管理
- oracle建立臨時表空間和資料表空間以及刪除Oracle
- JSP基礎知識及工程建立JS
- oracle建立表空間Oracle
- 建立加密表空間加密
- 報表軟體基礎知識
- Oracle基礎結構之表空間Oracle
- oracle 建立表空間和使用者Oracle
- Oracle建立表空間和使用者Oracle
- SSL和CA基礎知識
- GMAC和PHY基礎知識Mac
- PLSQL來Oracle建立表空間和建立使用者SQLOracle
- 1.分割槽表基礎知識
- Oracle基礎 02 臨時表空間 tempOracle
- Oracle基礎 03 回滾表空間 undoOracle
- 將字典管理表空間轉換為本地管理表空間
- Go語言:包管理基礎知識Go
- Oracle RAC建立表空間和使用者Oracle
- oracle RAC 建立使用者和表空間Oracle
- 建立ASSM/MSSM管理表空間及建立表、分割槽表、大物件段等示例SSM物件
- Oracle表空間管理Oracle
- Oracle 表空間管理Oracle
- ASM表空間管理ASM
- 表空間和資料檔案管理
- 基礎知識