Oracle臨時表空間刪除和重建實現(xiàn)過程
一、臨時表空間概念
臨時表空間用來管理數(shù)據(jù)庫排序操作以及用于存儲臨時表、中間排序結果等臨時對象,當ORACLE里需要用到SORT的時候,并且當PGA中sort_area_size大小不夠時,將會把數(shù)據(jù)放入臨時表空間里進行排序。臨時表空間存儲大規(guī)模排序操作(小規(guī)模排序操作會直接在RAM里完成,大規(guī)模排序才需要磁盤排序Disk Sort)和散列操作的中間結果.它跟永久表空間不同的地方在于它由臨時數(shù)據(jù)文件(temporary files)組成的,而不是永久數(shù)據(jù)文件(datafiles)。臨時表空間不會存儲永久類型的對象,所以它不會也不需要備份。另外,對臨時數(shù)據(jù)文件的操作不產生redo日志,不過會生成undo日志。
創(chuàng)建臨時表空間或臨時表空間添加臨時數(shù)據(jù)文件時,即使臨時數(shù)據(jù)文件很大,添加過程也相當快。這是因為ORACLE的臨時數(shù)據(jù)文件是一類特殊的數(shù)據(jù)文件:稀疏文件(Sparse File),當臨時表空間文件創(chuàng)建時,它只會寫入文件頭部和最后塊信息(only writes to the header and last block of the file)。它的空間是延后分配的.這就是你創(chuàng)建臨時表空間或給臨時表空間添加數(shù)據(jù)文件飛快的原因。
另外,臨時表空間是NOLOGGING模式以及它不保存永久類型對象,因此即使數(shù)據(jù)庫損毀,做Recovery也不需要恢復Temporary Tablespace。
二、重建oracle臨時表空間過程
STEP1: Find the existing temp tablespace details--查找現(xiàn)有臨時表空間信息
SQL> select tablespace_name,file_name from dba_temp_files TABLESPACE_NAME FILE_NAME ------------------------------ ------------------------------------------------- TEMP /home/oracle/app/oracle/oradata/cdb1/orcl/orcl_temp01201 4-07-30_04-39-23-PM.dbf
STEP2: Create another Temporary Tablespace TEMP1--創(chuàng)建一個臨時表空間
CREATE TEMPORARY TABLESPACE TEMP1 TEMPFILE ‘/u01/app/oradata/DBACLASS/temp01′ SIZE 2G;
STEP3: Move Default Database temp tablespace--移動默認數(shù)據(jù)庫臨時表空間
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP1;
STEP4: If any sessions are using temp space, then kill them.--禁止使用臨時表空間
SELECT b.tablespace,b.segfile#,b.segblk#,b.blocks,a.sid,a.serial#, a.username,a.osuser, a.status FROM v$session a,v$sort_usage b WHERE a.saddr = b.session_addr; ALTER SYSTEM KILL SESSION 'SID,SERIAL#' IMMEDIATE;
STEP5: Drop the original temp tablespace.
Drop temp tablespace--刪除臨時表空間
DROP TABLESPACE temp INCLUDING CONTENTS AND DATAFILES;
If you want to change the name from TEMP1 to TEMP, then follow the same process as below.
如果想要將臨時空間表名稱從temp 1更改為temp,可以按照以下相同的過程進行操作
STEP6: Create TEMP tablespace--創(chuàng)建臨時表空間
CREATE TEMPORARY TABLESPACE TEMP TEMPFILE /u01/app/temp/temp01′ SIZE 2000M;
STEP7: Make TEMP as default tablespace--將臨時設置為默認表空間
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp;
STEP8: Drop temporary for tablespace temp1--刪除臨時表空間臨時1
DROP TABLESPACE temp1 INCLUDING CONTENTS AND DATAFILES;
三、查詢TEMP TABLESPACE利用率
3.1 script 1
column used_MBytes format 999,999
column free_Mbytes format 999,999
column total_MBytes format 999,999
column collect_time format A15
select
to_char(sysdate,'DD-MON-RR:HH24:MI') collect_time
,round(used_blocks*8192/1024/1024,0) used_Mbytes
,round(free_blocks*8192/1024/1024,0) free_Mbytes
,round(total_blocks*8192/1024/1024,0) total_Mbytes
from
V$sort_segment
where
tablespace_name like '%TEMP%'
/
eg:
COLLECT_TIME USED_MBYTES FREE_MBYTES TOTAL_MBYTES
--------------- ----------- ----------- ------------
17-JUL-16:17:23 5 24 293.2 script 2
set lines 180 col FreeSpaceGB format 999,999 col UsedSpaceGB format 999,999 col TotalSpaceGB format 999,999 col host_name format a30 col tablespace_name format a30 select tablespace_name, (free_blocks*8)/1024 FreeSpaceMB, (used_blocks*8)/1024 UsedSpaceMB, (total_blocks*8)/1024 TotalSpaceMB, i.instance_name,i.host_name from gv$sort_segment ss,gv$instance i where ss.tablespace_name in (select tablespace_name from dba_tablespaces where tablespace_name='&TEMPTBS' and contents='TEMPORARY') and i.inst_id=ss.inst_id; eg: TABLESPACE_NAME FREESPACEMB USEDSPACEMB TOTALSPACEMB INSTANCE_NAME HOST_NAME ------------------------------ ----------- ----------- ------------ ---------------- ---------------------- TEMP 24 5 29 orcl rac1.rajasekhar.com
3.3 script 3
SELECT TABLESPACE_NAME, TABLESPACE_SIZE/1024/1024 as TABLESPACE_SIZE_MB, ALLOCATED_SPACE/1024/1024 as ALLOCATED_SPACE_MB, FREE_SPACE/1024/1024 as FREE_SPACE_MB FROM dba_temp_free_space; TABLESPACE_NAME TABLESPACE_SIZE_MB ALLOCATED_SPACE_MB FREE_SPACE_MB ------------------------------ ------------------ ------------------ ------------- TEMP 30 30 29
到此這篇關于Oracle臨時表空間刪除和重建實現(xiàn)過程的文章就介紹到這了,更多相關Oracle臨時表空間內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Oracle創(chuàng)建新undo表空間最佳實踐(包含段檢查)
這篇文章主要介紹了Oracle創(chuàng)建新undo表空間最佳實踐(包含段檢查),非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-04-04
從Oracle數(shù)據(jù)庫中讀取數(shù)據(jù)自動生成INSERT語句的方法
今天小編就為大家分享一篇關于從Oracle數(shù)據(jù)庫中讀取數(shù)據(jù)自動生成INSERT語句的方法,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-04-04
Linux中Oracle的sqlplus下退格和Del鍵無效的問題解決
這篇文章主要介紹了Linux中Oracle的sqlplus下退格和Del鍵無效的問題解決,修復使用時在命令行界面下產生亂碼的問題,需要的朋友可以參考下2015-12-12
Oracle數(shù)據(jù)庫中查詢時怎么使用日期(時間)作為查詢條件
這篇文章主要給大家介紹了關于Oracle數(shù)據(jù)庫中查詢時怎么使用日期(時間)作為查詢條件的相關資料,Oracle數(shù)據(jù)庫下基于日期條件的查詢發(fā)揮著重要的作用,它能夠幫助開發(fā)者實現(xiàn)比較復雜的數(shù)據(jù)管理任務,需要的朋友可以參考下2024-02-02
Oracle數(shù)據(jù)庫在指定字段后新增字段代碼舉例
很多時候數(shù)據(jù)庫中已有表的字段與需求業(yè)務所需字段有差異,需要增加一個或多個字段,這篇文章主要給大家介紹了關于Oracle數(shù)據(jù)庫在指定字段后新增字段的相關資料,需要的朋友可以參考下2023-09-09

