Oracle 临时表空间管理(Temporary Tablespace)

news2024/11/24 2:38:22

Oracle临时表空间(Temporary Tablespace)主要用来存储数据库运行中产生的临时对象,例如SQL排序结果集,临时表等,这些对象的生存周期只有会话。本文总结了Oralce中涉及临时表空间的管理和优化操作。

目录

  • 一、临时表空间简介
  • 二、临时表空间管理
    • 2.1 创建临时表空间
    • 2.2 修改临时表空间
    • 2.3 查看空间使用情况
    • 2.4 收缩临时表空间
    • 2.5 删除临时表空间
  • 三、使用临时表空间组

一、临时表空间简介

在执行SQL时,经常会遇到排序操作,当结果集无法放在内存中时,Oracle就会使用临时表空间来排序。临时表空间中不能创建持久性对象,用户唯一能创建的就是临时表,而且随着用户会话退出,临时表也会被删除。

当Oracle安装完成时,默认就已经创建了1个临时表空间TEMP,且所有未显式指定使用其他临时表空间的用户,都会使用这个临时表空间,使用下面的SQL可以查询数据库的默认临时表空间:

select property_name, property_value
from database_properties
where property_name='DEFAULT_TEMP_TABLESPACE';

在这里插入图片描述

临时表空间的底层使用的是临时文件(tempfile),通常采用本地管理策略(Locally Management),临时表空间不会生成redo日志,根据其服务的实例数量还可以分为:

  • 本地临时表空间,通常保存在本地磁盘,只能给一个实例访问
  • 共享临时表空间:通常保存在共享存储上,可以被多个实例同时访问

二、临时表空间管理

虽然Oracle初始已经建立了一个临时表空间,但用户也可以根据自身需求对临时表空间进行定制。

2.1 创建临时表空间

使用create temporary tablespace语句创建临时表空间,语法和创建普通表空间类似,不同点在于其需要指定temporary和tempfile关键字。

示例:创建一个临时表空间temptbs01,文件大小20M,reuse关键字指示如果文件已存在则重用:

create temporary tablespace temptbs01 
tempfile '/u01/app/oracle/oradata/PROD/temptbs01.dbf' size 20m reuse;

在这里插入图片描述

如果开启了OMF特性,可以不指定文件属性,只提供表空间名称即可:

create temporary tablespace temptbs02;

在这里插入图片描述

创建好的临时表空间及其临时文件信息可以通过dba_temp_files查看:

select tablespace_name, file_name,status, autoextensible from dba_temp_files;

在这里插入图片描述

2.2 修改临时表空间

可以用alter tablespace语句修改表空间属性,例如添加,删除临时文件,修改在线/离线状态,调整临时文件大小等。

示例:为temptbs01添加一个数据文件,大小10M,自动扩展:

alter tablespace temptbs01 
add tempfile '/u01/app/oracle/oradata/PROD/temptbs01_2.dbf' size 10M 
autoextend on next 10m; 

在这里插入图片描述

示例:将上面添加的数据文件删除:

alter tablespace temptbs01 
drop tempfile '/u01/app/oracle/oradata/PROD/temptbs01_2.dbf';

在这里插入图片描述

示例:修改temptbs01临时文件的在线/离线状态(不能修改临时表空间的在线/离线状态):

alter database tempfile '/u01/app/oracle/oradata/PROD/temptbs01.dbf' offline;
alter database tempfile '/u01/app/oracle/oradata/PROD/temptbs01.dbf' online;

在这里插入图片描述

示例:修改临时文件的大小,将temptbs01的临时文件修改为30m:

alter database tempfile '/u01/app/oracle/oradata/PROD/temptbs01.dbf' resize 30m;

在这里插入图片描述

2.3 查看空间使用情况

查询dba_temp_free_space视图可以查看当前临时表空间的使用情况,free_space字段指示了可用空间:

select * from dba_temp_free_space;

在这里插入图片描述

2.4 收缩临时表空间

对于文件可以自动扩展的临时表空间,当空间不够时,Oracle会自动扩展文件大小,一个很大的任务,就可以导致临时表空间消耗很多磁盘。如果日常用不到这么大的表空间,可以手动收缩以回收磁盘空间。

回收表空间是一个在线操作,正在使用的会话可以正常分配空间,不受影响。

示例:用alter tablespace … shrink space …; 可以回收可用空间,keep子句指示尽量收缩到25m:

alter tablespace temptbs01 shrink space keep 25m;

在这里插入图片描述

或:用alter tablespace … shrink tempfile …; 指定收缩某个临时文件:

alter tablespace temptbs01 shrink tempfile '/u01/app/oracle/oradata/PROD/temptbs01.dbf' keep 20m;

在这里插入图片描述

2.5 删除临时表空间

使用alter tablespace … drop…;语句可以删除临时表空间,你可以选择是否保留临时文件,如果保留临时文件,下次再次指定同名文件时需要用reuse关键字重用文件。

示例:删除临时表空间temptbs01及其临时文件,省略including contents and datafiles子句则会保留临时文件:

drop tablespace temptbs01 including contents and datafiles;

在这里插入图片描述

三、使用临时表空间组

临时表空间组是一个逻辑概念,它由1或多个临时表空间组成,可以作为一个整体分配给数据库或用户使用。在高并发环境,多个临时表空间可以更好的减少争用现象,并且Oracle的并行执行特性也可以利用多个临时表空间提升执行性能。

临时表空间组不需要显式创建,只需要使用alter tablespace … tablespace group …; 将某个临时表空间加入组即可(创建表空间时也可加入)。

第一步,将temptbs01加入组group1,这会隐式创建group1:

alter tablespace temptbs01 tablespace group group1;

在这里插入图片描述

第二步(可选),可以继续将其他临时表空间加入组,组成员的数量没有限制:

alter tablespace temptbs02 tablespace group group1;

在这里插入图片描述

通过dba_tablespace_groups可以看到目前group1中已经有2个表空间:

select * from dba_tablespace_groups;

在这里插入图片描述

第三步:将组指定为数据库默认临时表空间(alter database)或指定给用户(alter user):

alter database default temporary tablespace group1;
alter user hr temporary tablespace group1;

在这里插入图片描述

使用alter database指定空的组名可以将临时表空间移出组,当最后一个表空间移出组时,组自动删除(先取消引用):

alter tablespace temptbs01 tablespace group '';

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1522665.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Stargo 管理部署 Starrocks 集群

配置主机间 ssh 互信 ssh-copy-id hadoop02 ssh-copy-id hadoop03配置系统参数 ############################ Swap检查 ############################ echo 0 | sudo tee /proc/sys/vm/swappiness########################### 内核参数检查 ########################## echo…

全国农产品价格分析预测可视化系统设计与实现

全国农产品价格分析预测可视化系统设计与实现 【摘要】在当今信息化社会,数据的可视化已成为决策和分析的重要工具。尤其是在农业领域,了解和预测农产品价格趋势对于农民、政府和相关企业都至关重要。为了满足这一需求,设计并实现了全国农产…

JS引用类型

在JavaScript中,除了基本类型(如字符串、数字、布尔值、null和undefined)之外,还有引用类型。引用类型包括对象、数组和函数。它们在内存中的存储方式与基本类型不同,因为它们在内存中存储的是对实际数据的引用&#x…

LeetCode 7 / 100

哈希表、双指针 哈希表两数之和字母异位词分组最长连续序列 双指针移动零盛最多水的容器三数之和接雨水 LeetCode 1.两数之和 LeetCode 49. 字母异位词分组 LeetCode 128. 最长连续序列 LeetCode [283. 移动零](https://leetcode.cn/problems/move-zeroes/?envTypestudy-plan-…

计算机网络-概述

文章目录 1.2 因特网概述1.2.1 网络、互连网(互联网)和因特网1.2.2 因特网发展的三个阶段1.2.4 因特网的组成 1.3 三种交换方式1.3.1 电路交换1.3.2 分组交换1.3.3 报文交换1.3.4 三种方式对比 1.4 计算机网络的定义1.5 计算机网络的性能指标1.5.1 速率1…

DDR协议基础进阶(三)——(基本功能、初始化、MR寄存器)

DDR协议基础进阶(三)——(基本功能、初始化、MR寄存器) 一、DDR基本功能 DDR基本功能主要包括: 8-bit prefetch预取——8-bit,是指8位数据,即8倍芯片位宽的数据。由于DDR内部数据传输是32bit…

Spring Web MVC入门(2)

学习Spring MVC Postman介绍 在软件工程中, 我们需要具有前后端分离的思想, 以降低耦合性. 但是在测试后端代码时,我们还得写前端代码测试,这是个令人头疼的问题. 那么我们如何测试自己的后端程序呢, 这就用到了一个工具: Postman. 界面介绍: 传参的介绍 1.普通传参, 也就…

Android Studio 打包 Maker MV apk 详细步骤

一.使用RPG Make MV 部署项目,获取项目文件夹 这步基本都不会有问题: 二.安装Android Studio 安装过程参考教材就行了: https://blog.csdn.net/m0_62491877/article/details/126832118 但是有的版本面板没有Android的选项(勾…

SpringAI——Java生态接入LLM

最近,Spring官网发布了SpringAI,可点此查看https://spring.io/blog/2024/03/12/spring-ai-0-8-1-released,对于SpringAI的介绍,可看官方文档:https://spring.io/projects/spring-ai#overview。 本文将使用SpringAI配合…

QML 布局管理器之GridLayout

一.QML GridLayout介绍 在QML中,GridLayout是一种用于布局元素的容器。它允许您以网格形式组织和排列元素。要使用rowspan、columnspan、layoutFillWidth和rowSpacing属性,您可以将一个元素跨越多行和多列,并填充整个宽度,同时设置…

Python Web开发记录 Day12:Django part6 用户登录

名人说:东边日出西边雨,道是无晴却有晴。——刘禹锡《竹枝词》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 1、登录界面2、用户名密码校验3、cookie与session配置①cookie与session②配置…

unity学习(60)——选择角色界面--MapHandler2-MapHandler.cs

1.新建一个脚本&#xff0c;里面有static变量loadingPlayerList using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace Assets.Scripts.Model {internal class LoadData{public static List<Pl…

Qt QTableWidget 实现行选中及行悬浮高亮

表格整行的 selected、hover 高亮需求很常见&#xff0c;但使用 Qt 提供的开箱即用的方法根本无法实现这个需求&#xff08;至少在当前的时间节点是不行的&#xff09;&#xff1b;想要实现这个效果必须要费一点点力气&#xff0c;我们尽量选择较为简单的方法。 话不多说&…

Ubuntu 20.04 系统如何优雅地安装NCL?

一、什么是NCL&#xff1f; NCAR Command Language&#xff08;NCL&#xff09;是由美国大气研究中心&#xff08;NCAR&#xff09;推出的一款用于科学数据计算和可视化的免费软件。 它有着非常强大的文件输入和输出功能&#xff0c;可读写netCDF-3、netCDF-4 classic、HDF4、b…

基于Struts开发物流配送(快递)管理系统

开发工具&#xff1a;EclipseJdkTomcatMySQL数据库

手机中的8款万能App推荐!

目录 1.全能AI工具箱——HuluAI 2.AI视频生成——巨日禄 3.全能办公套件——鲸鲮Office 4.视频音频转换器——VideotoMP3Converter 5.特效滤镜摄影——PicsArt 6.智能工具箱——SmartTools 7.手机视频编辑软件——KineMaster 8.安卓版万能文档阅读器——AllDocumentRea…

「SpringBrick快速入门指南」:一款基于Spring Boot的高级插件化开发框架

文章目录 关于 | About技术文档 | Document开源项目 | Project 案例 | Demo项目结构 | Structure主程序配置集成 | Settings引入框架依赖 | Framework在配置文件加入配置 | YamlSpringBoot启动类改引导类 | Change 插件配置集成 | Settings引入依赖 | XML定义插件引导类 | Clas…

NeRF学习——NeRF-Pytorch的源码解读

学习 github 上 NeRF 的 pytorch 实现项目&#xff08;https://github.com/yenchenlin/nerf-pytorch&#xff09;的一些笔记 1 参数 部分参数配置&#xff1a; 训练参数&#xff1a; 这段代码是在设置一些命令行参数&#xff0c;这些参数用于控制NeRF&#xff08;Neural Radi…

sqllab第二十六关通关笔记

知识点&#xff1a; 空格替换 %09 %0a %0b %0c %0d %a0 (%2b)or替换&#xff1a;|| ||是不需要空格区分的and替换&#xff1a;&& &&同样不需要空格区分的双写绕过&#xff0c;但是绕过后需要和内容进行空格区分的&#xff0c;要不然不发挥作用&#xff1b;这关…

确保云原生部署中的网络安全

数字环境正在以惊人的速度发展&#xff0c;组织正在迅速采用云原生部署和现代化使用微服务和容器构建的应用程序&#xff08;通常运行在 Kubernetes 等平台上&#xff09;&#xff0c;以推动增长。 无论我们谈论可扩展性、效率还是灵活性&#xff0c;对于努力提供无与伦比的用…