Oracle如何切換temp表空間以及需要注意的點

Oracle如何切換temp表空間以及需要注意的點

昨天有套庫報/u01的磁盤90%使用率報警了,無法通過LVM在原盤基礎上擴容,計劃新增加磁盤并將能在線遷移的相關數據庫文件遷移走。

其中,對于temp表空間的處理,我采取的方法實際和undo差不多,均是通過切換來達到目的。

版本是11.0.2.4.0.200714

記錄一下遇到的一些問題。

假設現在的臨時表空間為temp,我要切換成temp2。

參考mos文檔How to Resize the Temporary Tablespace in a Production Environment (文檔 ID 160681.1),切換的官方步驟很簡單,如下:

1.create temporary tablespace temp2 tempfile '/data/temp02.dbf' size 10g autoextend off;   <------這里文件總大小保持和原臨時表空間一致,超過32G需要多個文件
2.alter database default temporary tablespace temp2;
3.alter database tempfile '/u01/app/oracle/oradata/xxxxdb/temp01.dbf' offline; <------官方的語句是"alter tablespace TEMP offline;",這個語法不支持臨時表空間,也就是官方給的是錯的;另外,有多少個文件就offline多少個
4.drop tablespace TEMP including contents and datafiles;

以上步驟需要注意的是,第2步驟原本我是通過修改當前默認臨時表空間為temp的用戶,將默認臨時表空間修改為temp2。因為可能原來數據庫中不止存在temp,甚至可能有臨時表空間組。

--以下SQL會生成DCL語句,執行這些語句
select 'alter user '||username||' temporary tablespace temp2;' from dba_users where temporary_tablespace='TEMP';

但是這一步遇到了一個問題,我的庫中存在用戶“XS$NULL”,會導致報錯ORA-01031。(如果你的庫沒有這個用戶,則可以用上邊的語句這么做)。

17:32:46 SYS@test(201)> alter user XS$NULL temporary tablespace temp2;
alter user XS$NULL temporary tablespace temp2
*
ERROR at line 1:
ORA-01031: insufficient privilegesElapsed: 00:00:00.00

官方明確指出無法對用戶XS$NULL做任何alter user的語句。

如果想要更改默認臨時表空間,只能通過上邊第2步驟來更改庫級別的默認臨時表空間,也會同步更改XS$NULL 用戶臨時表空間。

只是,對于多個臨時表空間的庫來說(或者多個臨時表空間組),會導致所有用戶都使用了temp2,需要提前記錄用戶原來使用的臨時表空間情況方便后續還原。

關于用戶XS$NULL,這里簡單介紹:

XS$NULL 是在安裝數據庫組件 Oracle XML Database (XDB) 時創建的。它是一個內部帳戶,表示會話中沒有用戶。輕量級會話基礎結構(APEX 和 XDB 會使用它)會使用它,并且此用戶的名稱在使用輕量級會話的模塊中是硬編碼的。因此,XS$NULL 必須存在于數據庫中。請注意,由于 XS$NULL 并不是真正的用戶,因此只有 Oracle Database 實例才能訪問此帳戶。XS$NULL 沒有任何權限,沒有人可以以 XS$NULL 的身份進行身份驗證,也不能將身份驗證憑據分配給 XS$NULL。

卸載 XDB 時會刪除此帳戶。

另外,上邊第4步驟執行的時候可能卡住。

https://www.cnblogs.com/PiscesCanon/p/18279318

此時,查詢該會話等待事件的信息,如下:

15:38:11 SYS@xxxxdb(597)> select event,status,state,blocking_session from v$session where sid=399;EVENT                 STATUS  STATE      BLOCKING_SESSION
--------------------- ------- ---------- ----------------
enq: TS - contention  ACTIVE  WAITING                   3sid為399是執行第4步驟的會話,此時被sid=3的會話卡住,再次查詢sid=3的會話信息:
15:38:35 SYS@xxxxdb(597)> select program,event,status,state,blocking_session from v$session where sid=3;PROGRAM               EVENT                 STATUS  STATE      BLOCKING_SESSION
--------------------- --------------------- ------- ---------- ----------------
oracle@xxxxdb (SMON)  smon timer            ACTIVE  WAITING

根據SMON Blocking Drop Temporary Tablespace (文檔 ID 1500044.1)DDL Operations (Alter and Drop) on Temporary Tablespace Hang (文檔 ID 1911167.1),可能命中BUG。

BUG特征如下:防。

1.會話等待事件為:"enq: TS - contention",符合。

2.會話被SMON阻塞,符合。

3.阻塞會話的SMON等待事件為"SMON TIMER",符合。

4.數據庫版本在11.2.0.3及以上,符合。

官方建議是打上補丁15913577,或者采取臨時操作,這里貼上原始英文。

- Complete all the needed prerequisites (create the new temp tablespace and set as default and no user is assigned to the old tablespace)
- Bounce the DB
- Once the DB starts up disconnect from SQLPLUS completely and close the console
- Open a new console and launch SQLPLUS
- Run the drop command as the VERY FIRST COMMAND

我試了下臨時操作是不行的,后邊看了下當前臨時段的占用情況,發現舊的臨時表空間temp依然被占用著。

16:16:15 SYS@xxxxdb(17)> SELECT s.username,sid,serial#,t.tablespace,contents,sql_address,extents,last_call_et
16:17:23   2      FROM v$session s,v$tempseg_usage t
16:17:23   3  WHERE s.saddr = t.session_addr;USERNAME                         SID    SERIAL# TABLESPACE      CONTENTS                    SQL_ADDRESS         EXTENTS LAST_CALL_ET
------------------------- ---------- ---------- --------------- --------------------------- ---------------- ---------- ------------
DBSNMP                             8       7869 TEMP            TEMPORARY                   00                        1           22
SYS                              399      34247 TEMP2           TEMPORARY                   00                        1         1386Elapsed: 00:00:00.00

DBSNMP用戶是OEN客戶端的會話,重啟OEM客戶端之后,第4步驟的會話立刻執行完成。

嘶,,,,,,感覺也不像BUG啊。

后續測試了下,新創建的數據庫會話一旦執行刪除臨時表空間的語句時,會在當前臨時表空間占用一點臨時段空間。

如果是同一個會話操作同時切換兩次表空間(比如temp->temp2,temp2->temp),需要注意這個問題。

PS:后邊又找了個測試庫打補丁,還是不行。只要解決占用問題即可。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/40481.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/40481.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/40481.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【linux】網絡基礎(3)——tcp協議

文章目錄 TCP協議概括TCP頭部格式TCP連接管理建立連接&#xff08;三次握手&#xff09;數據傳輸確認應答機制捎帶應答 滑動窗口丟包問題 擁塞控制延時應達 終止連接&#xff08;四次揮手&#xff09; TCP協議概括 TCP是一個面向連接的協議&#xff0c;在傳輸數據之前需要建立連…

醫療器械進銷存軟件 專業合規的醫療公司器械出入庫管理軟件

財務管理&#xff1a;財務檔案統一管理&#xff0c;有利于科學管理企業資金 財務管理&#xff1a;發票關聯業務單據&#xff0c;業財融合&#xff0c;加速財務數字化轉型 財務管理&#xff1a;提供收付款功能&#xff0c;加快企業應收賬款的回收&#xff0c;降低付款的資金浮…

小白輕松使用maven

一、maven 下載 下載地址 maven 下載官方地址 https://maven.apache.org/download.cgi&#xff0c;黃色壓縮包。 2. 下載解壓 cmd 解壓命令 tar -zxvf apache-maven-3.9.8-bin.tar.gz二、maven 配置 settings.xml 文件配置 鏡像配置&#xff1a; 國內鏡像配置用于下載資源…

《操作系統真象還原》學習筆記:第1章 部署工作環境

**提示&#xff1a;**這篇文章是根據學長提供的教程《操作系統真象還原》第一章 部署工作環境來完成的&#xff0c;我按照學長給的教程一步一步做下來&#xff0c;再結合《操作系統真象還原》這本書&#xff0c;對實驗環境進行了配置。以下是我按照教程進行搭建的記錄&#xff…

[Vue3 + TS + Vite] CSS穿透

以 Element-Plus UI 中的 <el-drawer> 為例 方法一 Template中 <el-drawer>CSS中 <style lang"scss" scoped> :deep(.el-drawer__header) {margin: 0px 0px 0px 0px; /*上 右 下 左*/box-sizing: border-box;padding: 0px 0px 0px 0px; /*上 右…

【Ubuntu】詳細說說Parallels DeskTop安裝和使用Ubuntu系統

希望文章能給到你啟發和靈感~ 如果覺得文章對你有幫助的話,點贊 + 關注+ 收藏 支持一下博主吧~ 閱讀指南 開篇說明一、基礎環境說明1.1 硬件環境1.2 軟件環境二、Ubuntu系統的使用2.1 系統的下載2.2 系統的安裝2.3 安裝桌面版(可選)2.3.1 安裝/更新apt2.3.2 安裝桌面版2.3…

【JNDI注入利用工具】JNDIExploit v1.1

# 簡介 JNDIExploit一款用于 JNDI注入 利用的工具&#xff0c;大量參考/引用了 Rogue JNDI 項目的代碼&#xff0c;集成了JDNI注入格式&#xff0c;能夠更加方便的開啟服務端后直接利用&#xff0c;支持反彈Shell、命令執行、直接植入內存shell等&#xff0c;并集成了常見的by…

7.4、空指針和野指針

空指針 #include <iostream> using namespace std;int main() {//空指針//1、空指針用于給變量進行初始化int * p NULL;//2、空指針是不可以進行訪問的//0-255之間的內存編號是系統占用的&#xff0c;因此不可以訪問//cout<<*p<<endl;system("pause&q…

算法訓練 | 圖論Part3 | 101.孤島的總面積、102.沉沒孤島、103.水流問題、104.建造最大島嶼

目錄 101.孤島的總面積 圖論法 102.沉沒孤島 圖論法 103.水流問題 圖論法 104.建造最大島嶼 圖論法 101.孤島的總面積 題目鏈接&#xff1a;101. 孤島的總面積 文章講解&#xff1a;代碼隨想錄 圖論法 代碼一&#xff1a;深搜 #include <iostream> #includ…

在Centos7上安裝PostgreSQL16的詳細步驟

文章目錄 環境一、準備二、postgresql下載方法一&#xff1a;wget下載方法二&#xff1a;下載壓縮包解壓 三、創建用戶組、用戶四、創建數據主目錄五、配置環境變量六、initdb初使化數據庫七、配置服務八、設置開機自啟動九、設置防火墻十、啟動數據庫服務 環境 CPU: 4 核心或以…

Python爬蟲系列-讓爬蟲自己寫爬蟲(半自動化,代替人工寫爬蟲)

現在的PC、手機客戶端等終端設備大量使用了網頁前后端技術&#xff0c;另外主流的網站也會經常會更新&#xff0c;導致以前一個月更新一次爬蟲代碼&#xff0c;變成了天天需要更新代碼&#xff0c;所以自動化爬蟲技術在當前就顯得特別重要&#xff0c;最近我也是在多次更新某個…

養老院生活管理系統

摘要 隨著全球范圍內人口老齡化趨勢的日益加劇&#xff0c;養老院作為老年人生活的重要場所&#xff0c;其生活管理問題也顯得愈發突出和重要。為了滿足養老院在日常生活管理、老人健康監護、服務人員管理等多方面的需求&#xff0c;提高管理效率和服務質量。決定設計并實現了…

用一百場線下講座科普充電樁 能效電氣做到了

在新能源汽車產業蓬勃發展的今天,充電樁作為產業鏈的重要環節,其建設與發展成為推動行業進步的關鍵。在這一背景下,能效電氣憑借其卓越的技術實力和前瞻性的市場布局,成為了新能源充電樁行業的佼佼者。 為了進一步推動新能源產業的發展,普及充電樁知識,能效電氣精心策劃并舉辦…

C語言數據類型和變量(二)

目錄 1.數據類型的取值范圍 2.變量 2.1 變量的創建 2.2 變量的分類 2.3全局變量和局部變量在內存中的存儲?編輯 3. 算術操作符&#xff1a; 、 - 、* 、/ 、% 3.1 和 - 3.2 * 3.3 / 3.4 % 1.數據類型的取值范圍 每一種數據類型有自己的取值范圍&#xff0c;也就是存…

mapper.xml 文件對應的 Dao 接口原理

在 Java 框架如 MyBatis 中&#xff0c;Mapper.xml 文件是用于定義 SQL 查詢的配置文件&#xff0c;而對應的 Dao 接口&#xff08;Mapper 接口&#xff09;則提供了與 XML 文件中的 SQL 查詢相對應的方法。這種設計模式使得 Java 代碼與 SQL 語句解耦&#xff0c;提高了代碼的…

盤點亞馬遜5大實用選品思路(圖文講解+選品案例)

一、7天藍海選品法 市場上很多工具一般都是近30天的跨境商品數據&#xff0c;而店雷達亞馬遜選品&#xff0c;可以篩選出上架近7天的亞馬遜產品&#xff0c;避免在已經市場相對飽和的賽道&#xff0c;中小賣家還要擠破頭去搶蛋糕。我們更應該學會在市場反饋好的新品中找到出單…

Git刪除了文件拉取時失敗

本地刪除了一些文件&#xff0c;遠端的另一個提交修改了被刪除的文件&#xff0c;vs里拉取時提示未處理的提交&#xff0c;無法繼續操作&#xff0c;git gui里顯示很多unstaged change的項 解決辦法&#xff1a; 1、用git bash的git rm --cached filename或 git rm -r --cached…

GBASE8S如何使用dbexport實現單表的還原和實現數據庫的復制

(一) 通過dbexport實現單表數據還原 1. 測試前的信息查看 本次以test庫的表test21為例 [gbasedbtiZ2ze5s78e4tanwe5q2znxZ ~]$ dbaccess test - Your evaluation license will expire on 2025-05-26 00:00:00Database selected.> select * from test21;id name1 a2 b3 c3…

探索Vue.js的無限可能 —— vuejs-challenges

vuejs-challenges&#xff1a;挑戰自我&#xff0c;共同成長&#xff0c;Vue.js挑戰等你來戰&#xff01;- 精選真開源&#xff0c;釋放新價值。 概覽 vuejs-challenges是一個專為Vue.js學習者和開發者設計的開源項目。它通過提供一系列精心設計的挑戰&#xff0c;幫助參與者深…

使用 JavaScriptCore 進行跨語言調用

使用 JavaScriptCore 進行跨語言調用時&#xff0c;既可以在 Native 代碼中執行 JavaScript 代碼&#xff0c;也可以在 JavaScript 中調用 Native 方法。以下是詳細的實現步驟和示例。 1. 在 Native 代碼中執行 JavaScript 代碼 使用 JavaScriptCore 框架&#xff0c;可以在 …