日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Oracle的表空间和数据文件

發布時間:2025/3/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle的表空间和数据文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、 概念 

 表空間:是一個或多個數據文件的邏輯集合

????表空間邏輯存儲對象: 永久段-->如表與索引

????????????????????????    臨時段-->如臨時表數據與排序段

?????????????????????     回滾段-->用于事物回滾或閃回內存的撤銷數據

????表空間分類:系統表空間(system、sysaux),非系統表空間

???

????一個表空間至少包含一個數據文件,一個數據文件只能屬于一個表空間。

???

????不可或缺的幾個表空間:

????SYSTEM --->字典表空間,不能被損壞

????UNDO????--->dml,dql把數據快照到此,數據提交即消失(用于恢復)

????SYSAUX??--->10g?高并發系統繁忙時,會造成system爭用,將工具放到SYSAUX,減輕system的壓力,SYSAUX不影響系統(影響性能)

????TEMP????--->臨時數據相關的內容

????USERS???--->10g??用戶數據從system撥離出來

?

二、Oracle的存儲結構

????1.Schema:?用戶--->創建相關對象、表、視圖、序列、函數、存儲過程、包等

????2.邏輯結構:database數據庫--->tablespace表空間---> segment段--->extent區間----> block塊

????????????邏輯結構是Oracle內部管理數據庫中對象的方式

????3.物理結構:OS??block --->datafile?物理結構通常是一系列數據文件

?

三、表空間的管理

創建表空間

--簡要語法:

????CREATE [BIGFILE | SMALLFILE] [TEMPORARY] TABLESPACE tablespace name

????DATAFILE datafile spec | TEMPFILE tempfile spec

????[MINIMUM EXTENT minimum extent size]

????[BLOCKSIZE blocksize]

????[[COMPRESS|NOCOMPRESS] DEFAULT STORAGE (default storage clause)]

????[LOGGING|NOLOGGING]

????[FORCE LOGGING]

????[ONLINE|OFFLINE]

????[EXTENT MANAGEMENT DICTIONARY |

????LOCAL [AUTOALLOCATE|UNIFORM SIZE size]]

????[SEGMENT SPACE MANAGEMENT MANUAL|AUTO]

????[FLASHBACK ON|OFF]

?

--獲得創建表空間的語句

SELECT dbms_metadata.get_ddl('TABLESPACE','SYSTEM') FROM dual;

?

--查看缺省是BIGFILE?還是SMALLFILE,當缺省為SMALLFILE,創建表空間不指定表空間類型則為SMALLFILE

SQL> select PROPERTY_NAME,PROPERTY_VALUE from database_properties where PROPERTY_NAME like '%TBS%';PROPERTY_NAME PROPERTY_VALUE------------------------------ --------------------------------------------------DEFAULT_TBS_TYPE SMALLFILE

??注意:

????大表文件(bigfile)最大可以存放個T的容量。頭文件的大小達到了G-->block,普通的頭文件大小為M---->block。

????create bigfile tablespace <> datafile <>........;

???????好處:減少了數據文件的個數,管理方便,大的對象的存放得到了優化。減少了control文件的信息,控制文件定義了datafile的個數。

???????bigfile只能存在一個數據文件,所以要保證分配的的磁盤具有足夠的空間。?*/

?

--演示創建表空間

SQL> create tablespace dev2 datafile '/u01/app/oracle/oradata/orcl/dev01.dbf' size 50M,3 '/u01/app/oracle/oradata/orcl/dev02.dbf' size 50M;表空間已創建。

--創建自動擴容的表空間

SQL> create tablespace uat2 datafile '/u01/app/oracle/oradata/orcl/uat.dbf' size 32m 3 autoextend on maxsize unlimited;

可以通過查看自動擴容是否打開

SQL> select file_name,autoextensible from dba_data_files where tablespace_name='UAT';

表空間改名

?

SQL> alter tablespace dev rename to dev1;

?

?

將表空間設置為只讀

注意只讀表空間中的對象是可以被刪除的,能執行DML語句,可以使用的為DDL

?

SQL> alter tablespace dev1 read only;

?

重新設置回可讀可寫

SQL> alter tablespace dev1 read write;

?

?

?

?

移動數據文件

1.查出數據文件的位置和所屬表空間

?

select TABLESPACE_NAME,FILE_NAME,BYTES/1024/1024 "SIZE(MB)" from dba_data_files;

?

2.將要移動的表空間離線

SQL> alter tablespace uat offline;

3.在操作系統下將文件移動到另外一個位置

SQL> host cp /u01/app/oracle/oradata/orcl/uat.dbf /u02/uat.dbf

4.?修改控制文件,將數據文件的指針重新指向到另一個位置(執行rename)

SQL> alter tablespace uat rename datafile '/u01/app/oracle/oradata/orcl/uat.dbf'2 to '/u02/uat.dbf';

5. 使表空間在線

SQL> alter tablespace uat online;

6.刪除原來位置的應該廢棄的物理文件

SQL> host rm /u01/app/oracle/oradata/orcl/uat.dbf

? 如過表空間不能脫機的話,就啟動數據庫到mount狀態下,其余步驟是一樣的。

?

?

表空間的擴容

可以通過如下的方法擴容表空間

  

   (1)重置數據文件大小

????????????ALTER?DATABASE?DATAFILE?'...'?|?FileNo RESIZE XX

?? ? ? ?(2)設置數據文件能自動增長

???????????ALTER?DATABASE?DATAFILE?'... '|?FileNo AUTOEXTEND?ON?|?OFF?NEXT 20M?MAXSIZE?300M;

????????????--查看哪些表空間為自動增長

???????????SELECT?FILE_NAME,TABLESPACE_NAME,AUTOEXTENSIBLE?FROM?dba_data_files

  (3)添加數據文件

?  增加到表空間中的數據文件不能直接從表空間中刪除,除非刪掉整個表空間

  增加數據文件將有助于均衡I/O

  文件越多,執行一次檢查點的代價越高??*/

ALTER TABLESPACE tbs2 ADD DATAFILE '/u01/app/oracle/oradata/orcl/tbs2.dbf' size 200m autoextend on ;

?

刪除表空間

  DROP?TABLESPACE tablespace_name [INCLUDING CONTENTS [AND DATAFILES]]

 INCLUDING CONTENTS ? --刪除段

 DATAFILES ?--刪除數據文件

SQL> drop tablespace uat including contents and datafiles;

?

臨時表空間

  臨時表空間具有以下特征:

  •   臨時表空間是作為排序操作使用的,當內存排序區不夠時,使用臨時表空間可以改進數據庫的效率
  •   創建臨時表空間,不能使用非標準數據塊
  •   臨時表空間不能存放永久對象
  •   當有第一個排序操作時創建排序段

--創建臨時表空間

SQL> create temporary tablespace tmp02 tempfile2 '/u01/app/oracle/oradata/orcl/tmp02.dbf' size 100M;表空間已創建。

--指定默認的臨時表空間

  默認臨時表空間最好要指定一下,如果沒有指定默認的臨時表空間,那么將使用system表空間作為排?序區

ALTER DATABASE DEFAULT TEMPORARY TABLESPACE tmp02;

--查看默認的臨時表空間

select * from database_properties t where t.property_name like 'DEFAULT_TEMP%';

?

還原表空間

--創建還原表空間

SQL> create undo tablespace undo22 datafile '/u01/app/oracle/oradata/orcl/undo2.dbf' size 200M;

?--修改當前系統的UNDO表空間:

ALTER SYSTEM SET UNDO_TABLESPACE=tablespace_name;

?

四、相關視圖

--獲取表空間和數據文件信息

???????--表空間信息

???????????dba_tablespaces

???????????v$tablespace

???????--數據文件信息

???????????dba_data_files

???????????v$datafile

???????--臨時數據文件信息

???????????dba_temp_files

???????????v$tempfile

?

--查看系統默認的表空間及臨時表空間:??

???????SQL>?select?PROPERTY_NAME,PROPERTY_VALUE?from?database_properties??where?PROPERTY_NAME?like?'DEFAULT%';

?

??--修改改系統的默認表空間:??

?  SQL>ALTER?DATABASE?DEFAULT?TEMPORARY TABLESPACE tablespace_name;

?

--查看用戶默認表空間:

  SQL>select?USERNAME,USER_ID,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE?from?dba_users;

?

?--修改用戶默認表空間:

???????SQL>ALTER?USER?user_name?DEFAULT?TABLESPACE tablespace_name

?

--查看表空間的使用情況:

???????dba_data_files;

???????dba_free_space;

??????????

???????--例:查每個表空間的剩余空間

???????SQL>?select?tablespace_name,sum(bytes/1024/1024)?from?dba_free_space?group?by?tablespace_name;?

? ? ? ?

轉載于:https://www.cnblogs.com/zydev/p/6233831.html

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的Oracle的表空间和数据文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。