close
三種表空間類型:永久表空間、UNDO表空間、臨時表空間
系統表空間:system與sysaux,創建數據庫時自動創建,包含數據字典
非系統表空間:存放數據表索引,將數據分散存放不同的表空間,便於空間管理與提升性能
創建永久表空間
create tablespace test20110228 datafile 'test20110228.dbf' size 100m;
特殊參數
create tablespace test100 datafile '/u01/test100.dbf' size 10m autoextend on next 1m maxsize unlimited;
autoextend on表示這個數據文件可以自動擴展
next 1m表示該數據文件每次擴展的大小
maxsize unlimited表示大小可以無限擴展
創建大文件表空間
大文件表空間只能有一個數據文件,組成大文件表空間的文件的最大尺寸可以是128TB(塊大小是32KB)或者32TB(塊大小是8KB)
create bigfile tablespace big100 datafile '/u01/big100.dbf' size 100m autoextend on
其中size表示文件的初始大小
autoextend on表示允許文件自動擴張
刪除表空間
表空間信息從數據字典中刪除,如dba_tablespaces中的信息
表空間包含的內容從數據字典刪除,如user_tables中的信息
DROP TABLESPACE BIG100 INCLUDING CONTENTS AND DATAFILES;
其中“INCLUDING CONTENTS AND DATAFILES”命令的作用是:如果表空間不為空,沒有指定INCLUDING CONTENTS這個選項,就會產生錯誤。AND DATAFILES表示連組成表空間的系統文件一同刪除。
DROP TABLESPACE BIG100 INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;
註意還可以加CASCADE CONSTRAINTS選項,表示連參照完整性約束一起刪除。如果其他表空間中的約束引起了要被刪除的表空間的主鍵和唯一性約束,則必須指定這個選項。
表空間改名
alter tablespace test20110228 rename to xin1228;
修改對應的默認表空間
alter user zhangsan default tablespace test02_tbs;
表改名
alter table time_hz rename to shijianbiao;
指定表空間創建表,屬於當前用戶
create table time_hz tablespace xin1228 as select * from sh.times
創建undo空間,用於存儲回滾段,(運行DML語句自動產生回滾段,用於rollback及其他操作)不能包含其他數據表以及索引等
create undo tablespace undo1 datafile '/db/undo100.dbf' size 40m;
創建臨時表空間,用於排序
create temporary tablespace temp100 tempfile '/db/temp100.dbf' size 100m;
默認臨時表空間設置,允許指定數據庫默認的臨時表空間,避免使用系統默認臨時表空間進行數據的排序操作
alter database default temporary tablespace temp100;
默認臨時表空間限制,新的默認臨時表空間生效之前舊的不能被刪除,當前默認臨時表空間不能offline,默認臨時表空間不能使用永久表空間
表空間脫機聯機切換
不能offline的表空間:system、臨時表空間
sysaux可以被offline
alter tablespace test100 offline
alter tablespace test100 online
表空間讀寫切換
只讀表空間只能提供讀服務。註意:只讀表空間上的對象可以被刪除,例如刪除表:
drop table 表名
alter tablespace test100 read only
alter tablespace test100 read write
修改表空間大小
修改數據文件大小(大文件表空間)
alter database datafile '/db/big100.dbf' resize 200m;
添加數據文件
alter tablespace test100 add datafile '/db/test101.dbf' size 100m;
在線移動數據文件
註意:offline情況下移動,避免業務故障
將數據文件從一個文件位置移動到另外一個位置
alter tablespace test100 offline;
移動數據文件到新的位置
$ mv test100.dbf /oracle/
$ cd /oracle/
admin/               lost+found/          oracle/
flash_recovery_area/ oraInventory/        test100.dbf
alter tablespace test100 rename datafile '/db/test100.dbf' to '/oracle/test100.dbf';
alter tablespace test100 online;
創建非標準塊表空間
標準塊的大小由參數DB_BLOCK_SIZE指定。創建非標準塊表空間就是創建塊大小不等於DB_BLOCK_SIZE的表空間。如果要創建塊大小是nKB的非標準塊表空間,則創建這個表空間之前,必須用DB_nK_CACHE_SIZE創建一片數據庫高速緩沖區。
SQL> show parameter db_block_size
創建高速緩沖區(如何確定高速緩沖區的大小)
alter system set db_16k_cache_size=8m scope=both;
在sql/plus中查看結果
SQL> show parameter cache;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_16k_cache_size                    big integer 8M
db_2k_cache_size                     big integer 0
……
創建非標準表空間
CREATE TABLESPACE TBS_TEST_16K DATAFILE '/DB/TBS16K.DBF' SIZE 50M BLOCKSIZE 16K AUTOEXTEND ON;
在此表空間中創建表
create table tab16k (id int) tablespace tbs16k;
針對全表掃描的表設置參數
db_file_multiblock_read_count此參數為oracle在全表掃描過程中一次IO所讀取的數據塊,對於存在大量全表掃描的數據倉庫,此參數直接影響系統性能,此參數最大值為128,即oracle一次IO可讀取128個塊,可根據系統適當調整。
表空間,區、段的管理
主要介紹本地管理方式(LOCALLY MANAGED TABLESPACE),通過位圖bitmap管理區
表空間中的每個數據文件有一個位圖,位圖存放在文件頭,位圖中的每個位(bit)與一個或者一組數據塊(block)相對應。當分配一個區或者釋放一個區的時候,Oracle將更新位圖以反映這種改變。對於本地管理的表空間,Oracle不會更新數據字典,更不會產生回滾信息。
當用戶進行插入、更新、刪除的時候,段中數據塊的空間會發生改變,塊的狀態也會發生改變。
段的自動管理,ASSM(auto Segment space management)
CREATE TABLESPACE TEST100 DATAFILE '/u01/test100.dbf' SIZE 10M SEGMENT SPACE MANAGEMENT AUTO;
管理UNDO表空間
UNDO段的作用:用於存儲回滾段。在DML語句中,存儲數據前映像,用於回滾(rollback)與恢復以及數據讀的一致性。
切換UNDO表空間(可以使用oracle客戶端的Enterprise Manager Console工具,進行效果查看)
如果目前正在使用的表空間為BUG或者應用問題不能及時釋放UNDO表空間,那麽必須進行切換,將舊的UNDO表空間刪除
創建一個新的表空間
create undo tablespace undo02 datafile '/u01/undo02.dbf' size 100m;
切換
alter system set undo_tablespace=undo02 scope=both;
SQL> show parameter undo
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_management                      string      AUTO
undo_retention                       integer     900
undo_tablespace                      string      UNDO02
undo_management指定undo手動或自動管理
undo_retention在undo表空間中保存undo數據時間
undo_tablespace指定oracle使用的undo表空間來自動管理undo數據
等待一段時間,可以刪除舊的UNDO表空間
drop tablespace undotbs1 including contents datafiles;
UNDO表空間損壞恢復(案例)
數據庫異常終止後,UNDO表空間損壞,啟動失敗
SQL> startup
ORACLE instance started.
Total System Global Area  121634816 bytes
Fixed Size                  1218076 bytes
Variable Size              75500004 bytes
Database Buffers           41943040 bytes
Redo Buffers                2973696 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 9 - see DBWR trace file
ORA-01110: data file 9: '/db/undo02.dbf'
在pfile參數文件中使用_corrupted_rollback_segments=’_SYSSMU1$’, ’_SYSSMU2$’參數標記損壞的回滾段,利用pfile參數文件啟動數據庫時,oracle將跳過這些回滾段
startup pfile=/oracle/oracle/product/10.2.0/db_1/dbs/init”SID”.ora
對應的回滾段在日誌文件alert和trace(*.trc)中查找
在數據庫打開後
$ echo $ORACLE_HOME
/oracle/oracle/product/10.2.0/db_1
create spfile from pfile=$ORACLE_HOME/dbs/init”SID”.ora
導出用戶數據並創建新的數據庫,將導出數據導入新的數據庫中。
arrow
arrow
    文章標籤
    數據庫 數據表
    全站熱搜

    愛在屋簷下 發表在 痞客邦 留言(0) 人氣()