建立資料表空間+rename重新命名+修改管理方式+resize大小

來源:互聯網
上載者:User

普通資料表空間

建立資料表空間test11,資料檔案為/u01/oracle/oradata/primary/primary/test11.dbf

SQL> createtablespace test1 datafile '/u01/oracle/oradata/primary/primary/test1.dbf' size10m;

Undo資料表空間

建立Undo資料表空間undotbs2:

SQL〉CREATE UNDO TABLESPACE undotbs2

  DATAFILE   '/u01/oracle/oradata/primary/primary/undotbs2.dbf' SIZE 200M

     REUSE AUTOEXTEND OFF

    ONLINE; 

SQL〉ALTER SYSTEM SET UNDO_TABLESPACE ='undotbs2' SCOPE= BOTH;

暫存資料表空間

         建立暫存資料表空間temp2

SQL〉CREATE TEMPORARY TABLESPACE temp2

   TEMPFILE  '/u01/oracle/oradata/primary/primary/temp2.dbf'SIZE 200M

      REUSE AUTOEXTEND OFF

     EXTENT MANAGEMENT LOCAL

    UNIFORM SIZE 1M;

建立規範: 

CREATE[UNDO]  TABLESPACE tablespace_name
[DATAFILE datefile_spec1 [,datefile_spec2] ......
[ { MININUM EXTENT integer [k|m]
| BLOCKSIZE integer [k]
|logging clause
|FORCE LOGGING
|DEFAULT  {data_segment_compression}storage_clause
|[online|offline]
|[PERMANENT|TEMPORARY]
|extent_manager_clause
|segment_manager_clause}]
1、undo  說明系統將建立一個復原資料表空間。
2、tablespace指出資料表空間的名稱。
3、datafile  datefile_spec1指出資料表空間包含什麼空間檔案。

datefile_spec1 是形如  ['filename'] [SIZE integer [ K | M ]] [REUSE][autoextend_clause]

4、MININUMEXTENT integer [k|m] 指出在資料表空間中範圍的最小值。這個參數可以減小空間片段,保證在資料表空間的範圍是這個數值的整數倍。
5、BLOCKSIZE integer [k] 這個參數可以設定一個不標準的塊的大小。

6、loggingclause這個子句聲明這個資料表空間上所有的使用者物件的日誌屬性(預設是logging),包括表,索引,分區,物化視圖,物化視圖上的索引,分區。
7、FORCE LOGGING使用這個子句指出資料表空間進入強制記錄模式。

8、DEFAULTstorage_clause聲明預設的儲存子句。
9、online|offline改變資料表空間的狀態。
10、PERMANENT|TEMPORARY指出資料表空間的屬性,是永久資料表空間還是暫存資料表空間。

11、extent_management_clause說明了資料表空間如何管理範圍

12、segment_management_clause段空間管理的方式,自動或者手動:    

                SEGMENT SPACE MANAGEMENT {AUTO|MANUAL}

賦予資料表空間許可權:
alter user EPUFS quota unlimited on XIB_TRANS_DATA ;

重新命名資料表空間:

alter tablespace test1 rename to test11;

將system資料表空間從dictionary-managed更改為locally managed:

*oracle 10g預設的資料表空間管理方式是本地管理(locally managed)。

在轉換system表前,你必須把所有的其他資料表空間轉換為本地管理。否則在將system資料表空間傳換為locally managed後不能在READ-WRITE模式下使用這些資料表空間。

EXECUTE dbms_space_admin.tablespace_migrate_to_local("tablespace");

系統資料表空間從資料字典管理轉換到本地管理的限制條件非常嚴格。必須嚴格遵守以下條件:

1)系統的預設暫存資料表空間不是系統資料表空間

2)資料字典管理的資料表空間中不存在復原段

3)至少一個聯機復原段存在於本地管理資料表空間中或者使用了自動undo管理,且undo資料表空間聯機

4)除去undo或復原資料表空間,其他資料表空間都置於唯讀模式

5)系統使用restricted模式啟動

6)利用DBMS_SPACE_ADMIN

EXECUTE DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL(‘SYSTEM’);

使用這種方法很好,但是它建立的資料表空間沒有automatic segment space managerment選項,所有字典管理資料表空間都是用預設手動段空間管理,而且在轉換為本地管理的資料表空間是不能進行修改。

還有一個缺點,就是資料表空間如果存在空間片段的話,此方法也不能解決片段問題

因此,要轉換普通資料表空間,建議使用下面的方法!

普通資料表空間從dictionary-managed更改為locally managed:

首先你要建立一個本地管理的資料表空間:

CREATE TEMPORARY TABLESPACE new_tempt

TEMPFILE  '/u01/oracle/oradata/primary/primary/new_tempt.dbf'SIZE 200M

REUSE AUTOEXTEND OFF

EXTENT MANAGEMENT LOCAL

UNIFORM SIZE 1M;

對於資料表空間的轉移使用命令:

ALTER TABLE temp MOVE TABLESPACE new_temp;

對於索引你需要重建:

ALTER TABLE index REBUILD TABLESPACEnew_index;

resize資料表空間大小:

SQL> select a.tablespace_name,total,free,total-free used from (select tablespace_name,sum(bytes)/1024/1024 total from dba_data_files  group by tablespace_name) a, (select tablespace_name,sum(bytes)/1024/1024 free from dba_free_space group by tablespace_name)
b where a.tablespace_name=b.tablespace_name;

TABLESPACE_NAME      TOTAL       FREE        USED      
-------------------------------------------------------------------------

TEST1                                  50             49.875       .125

SQL> alter database datafile '/home/oracle/test/TEST/test.dbf' resize
20M;
Database altered.

SQL> select a.tablespace_name,total,free,total-free used from (select tablespace_name,sum(bytes)/1024/1024 total from dba_data_files  group by tablespace_name) a, (select tablespace_name,sum(bytes)/1024/1024 free from dba_free_space group by tablespace_name)
b where a.tablespace_name=b.tablespace_name;

TABLESPACE_NAME      TOTAL       FREE        USED      
-------------------------------------------------------------------------
TEST1                                 20              19.875       .125

注意:

alter databasedatafile 'filepath' resize <filesize>;

  • 此語句只能用於bigfiletablespaces。
  • 對於一個bigfiletablespace來說,可以通過alter database語句來改變大小,但不能給一個bigfile tablespace增加資料檔案。
  • 在使用resize縮小資料表空間時,如果檔案中所包含的資料大小超過了設定的大小,就會報錯。
  • high water mark:資料檔案能夠resize的最小檔案大小就是HWM值,即resize後的大小不能低於HWM值。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.