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.mzph.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;可以在 …