現象:查詢select * from v$sql時提示“Ora-01652無法通過128(在temp表空間中)擴展temp段的過程”
臨時文件是不存儲的,可以將數據庫重啟,重啟后重建臨時表空間;
shutdown immediate;--關庫 startup;--啟庫 alter pluggable database db_** open;--打開 alter session set container=db_**;--切到目的數據庫 select * from v$tempfile;--查看臨時文件狀態
或者手動創建臨時文件。下面是手動創建臨時文件的步驟:
解決步驟
1、查詢當前臨時表空間的信息
select * from dba_temp_files FILE_NAME FILE_ID TABLESPACE_NAME BYTES BLOCKS STATUS RELATIVE_FNO AUTOEXTENSIBLE MAXBYTES MAXBLOCKS INCREMENT_BY USER_BYTES USER_BLOCKS SHARED INST_ID --------- ------- --------------- ------ ------ ------- ------------ -------------- -------- --------- ------------ ---------- ----------- ------ ------- (null) 3 TEMP (null) (null) OFFLINE (null) (null) (null) (null) (null) (null) (null) SHARED (null)
發現數據庫並沒有臨時表空間
2、查詢庫中的臨時文件狀態
select name,status from v$tempfile; NAME STATUS -------------------------------------------------------------------------------------------- ------- /oradata/cdbtest/CDB_TEST/91C8CF1A0C80626CE0535465A8C0455F/datafile/o1_mf_temp_gq1852yy_.dbf OFFLINE
臨時文件處於OFFLINE狀態
3、給臨時表空間增加臨時文件
alter tablespace temp add tempfile '/oradata/cdbtest/CDB_TEST/temp/datafile/temp_clear_01.dbf' size 1024M
此時需注意,數據庫中需要存在目錄“/oradata/cdbtest/CDB_TEST/temp/datafile/”,臨時文件添加成功
至於為什么在“/oradata/cdbtest"目錄下,是通過show parameter db_create_file_dest參數,查看value值獲得的。
“CDB_TEST/temp/datafile”目錄要提前准備好
4、再次驗證臨時文件狀態
select name,status from v$tempfile; NAME STATUS -------------------------------------------------------------------------------------------- ------- /oradata/cdbtest/CDB_TEST/91C8CF1A0C80626CE0535465A8C0455F/datafile/o1_mf_temp_gq1852yy_.dbf OFFLINE /oradata/cdbtest/CDB_TEST/91C8CF1A0C80626CE0535465A8C0455F/datafile/o1_mf_temp_gq1852yy_.dbf ONLINE
同時查詢“select * from v$sql”能獲得相應的結果集