當前位置:成語大全網 - 新華字典 - 怎麽管理oracle的表空間和數據文件

怎麽管理oracle的表空間和數據文件

SQL> conn sys/xin as sysdba

已連接。

SQL> set wrap off

SQL> set linesize 100

1. 壹些基本的操作

(1) 查看表空間:

SQL> select * from v$tablespace;

(2) 查看數據文件:

SQL> select * from v$datafile;

(3) 查看tablespace 和data files之間的對應關系(通過表空間的號連接在壹起):

SQL> select t1.name,t2.name

2 from v$tablespace t1, v$datafile t2

3 where t1.ts#=t2.ts#

4 ;

(4) 更改表空間

SQL> alter tablespace users

2 add datafile 'E:\ORACLE\ORADATA\XINER\USERS02.DBF' size 10m;

表空間已更改。

2. 管理表空間

在oracle 裏將表空間分為系統表空間和非系統表空間。

(1) 系統表空間包括系統表,數據字典,以及系統回滾段等信息。

查看系統回滾段:

SQL> select * from dba_rollback_segs;

(2) 非系統表空間用來分離段(分開臨時數據和永久性數據,索引和表放在不同的表空間等等)可以給系統的性能帶來

好處,同時可以控制分配給用戶的空間限額。

控制用戶對空間的使用:

SQL> alter user HR

2 quota 10m on users;

用戶已更改。

(3) 如何創建表空間:([]均表示可選)

create tablespace xxx

[datafile 'xxx']---OMF時可以不指定

[size xxx--kb,mb]

[extent management local/dictionary]

[default storage(xxx)]

dictionary-managed tablespaces在oracle 9i 裏已經不建議使用。

SQL> create tablespace ice

2 datafile 'e:\oracle\oradata\xiner\ice.dbf' size 5m

3 extent management dictionary

4 default storage(

5 initial 100k

6 next 100k

7 pctincrease 10)

8 offline;

表空間已創建。

如果表空間管理指定為Local型,則不能使用default storage。此時不會和數據字典表打交道,不會和系統表產生

資源爭用,也不會產生回滾數據(因為不涉及修改系統表),其次也不會有遞歸的資源爭用。

SQL> create tablespace ice1

2 datafile 'e:\oracle\oradata\xiner\ice1.dbf' size 5m

3 extent management local

4 uniform size 1m;

表空間已創建。

SQL> create tablespace ice2

2 datafile 'e:\oracle\oradata\xiner\ice2.dbf' size 5m

3 extent management local autoallocate;

表空間已創建。

(4) Undo 表空間用來存儲undo段,不能包括其他的數據對象,使用locally管理。

undo 段主要用來保存數據改變的舊值,可以回滾transcation(rollback)。

SQL> show parameter undo

SQL> create undo tablespace ice3

2 datafile 'e:\oracle\oradata\xiner\ice3.ora' size 5m

3 extent management local

4 uniform size 1m; //此時不能定義uniform size

uniform size 1m

*

ERROR 位於第 4 行:

ORA-30024: CREATE UNDO TABLESPACE 的說明無效

SQL> del 4

SQL> run

1 create undo tablespace ice3

2 datafile 'e:\oracle\oradata\xiner\ice3.ora' size 5m

3* extent management local

表空間已創建。

不能在回滾表空間建立表對象(不能放其他的數據對象):

SQL> create table tt1

2 (id int)

3 tablespace ice3;

create table tt1

*

ERROR 位於第 1 行:

ORA-30022: 無法在撤消表空間中創建段

(5) 臨時表空間用來支持排序,不能包括永久的數據對象,建議使用locally管理。

SQL> create temporary tablespace ice4

2 tempfile 'e:\oracle\oradata\xiner\ice4.ora' size 5m

3 extent management local;

表空間已創建。

SQL> create table tt1

2 (id int)

3 tablespace ice4;

create table tt1

*

ERROR 位於第 1 行:

ORA-02195: 嘗試創建的PERMANENT對象在TEMPORARY表空間中

(6) 缺省的臨時表空間:

SQL> alter database default temporary tablespace ice4

數據庫已更改。

臨時表空間不可以被置為offline,也不能指定為read only,不可以被刪除,除非用另外壹個表空間代替它。

SQL> alter talbespace ice4 offline

alter talbespace ice4 offline

*

ERROR 位於第 1 行:

ORA-00940: 無效的 ALTER 命令

SQL> alter tablespace ice4

2 read only;

alter tablespace ice4

*

ERROR 位於第 1 行:

ORA-03217: 變更 TEMPORARY TABLESPACE 無效的選項

(7) offline狀態:對數據文件改名or搬動數據文件的位置or對數據庫進行部分的修復

(7) offline狀態:對數據文件改名or搬動數據文件的位置or對數據庫進行部分的修復

SQL> alter tablespace users offline;

表空間已更改。

SQL> alter tablespace users online;

表空間已更改。

不可以置為offline狀態的表空間包括:system表空間(如果要對系統表空間的文件進行改變則要關閉數據庫);

包括active undo 段的表空間;缺省的臨時表空間

(8) read only 表空間:對表空間只能進行讀操作;數據對象可以從表空間刪除

SQL> alter tablespace users read only;

表空間已更改。

(9) 刪除表空間:

SQL> create table tt1

2 (id int)

3 tablespace ice;

表已創建。

SQL> drop tablespace ice1;

表空間已丟棄。

SQL> drop tablespace ice2

2 including contents and datafiles;

表空間已丟棄。

(10) resize表空間:自動擴張(autoextend on)、手動(resize)

3. 管理數據文件

(1) 移動data files:

表空間必須是offline(使用alter tablespace xxx rename datafile 'xx' to 'xx');

目標數據文件必須已經存在;

如果是不能處於offline狀態的表空間則要關閉數據庫,將其啟動到mount狀態,同時目標數據文件必須已經存在。

(使用alter database rename file 'xx' to 'xx')

(2) 配置OMF文件來創建表空間的時候DB_CREATE_FILE_DEST會將數據文件存放在缺省的位置。如果想要更改位置則用

alter system set db_create_file_dest='xx';

用OMF創建表空間:create tablespace xxx; 刪除:drop tablespace xxx;