查询临时表空间有多大:

SQL> SELECT tablespace_name, file_name, bytes
FROM dba_temp_files WHERE tablespace_name like 'TEMP%'; TABLESPACE_NAME FILE_NAME BYTES
----------------- -------------------------------- --------------
TEMP /the/full/path/to/temp01.dbf 13,917,200,000

为什么临时表空间这么大。您可能已经知道答案了。可能是由于您对一个大型查询使用了错误的排序(我已经做了多次以上)。这可能是由于其他一些特殊情况所致。如果是这种情况,那么您要做的就是缩小临时表空间并继续生活。

但是,如果您不知道该怎么办?在决定缩小之前,您可能需要对大型表空间的原因进行一些调查。如果定期发生这种情况,则您的数据库可能只需要那么多空间。

动态性能视图

V$TEMPSEG_USAGE

在确定原因方面非常有用。

也许您只是不关心原因,而只需要缩小它。这是您上班的第三天。如果数据和临时表空间为13GiB,则数据库中的数据仅为200MiB-只需收缩并继续。如果它再次增长,那么我们将调查原因。同时,该磁盘卷上的空间不足,我只需要退回空间。

让我们来看看缩小它。这将取决于您正在运行的Oracle版本以及如何设置临时表空间。

Oracle会尽力防止您犯任何可怕的错误,因此我们将尝试使用这些命令,如果这些命令不起作用,我们将采用新的方式进行缩减。

首先,让我们尝试缩小数据文件。如果我们能够做到这一点,那么我们将重新获得空间,我们可以担心它为什么会在明天增长。

SQL>
SQL> alter database tempfile '/the/full/path/to/temp01.dbf' resize 256M;
alter database tempfile '/the/full/path/to/temp01.dbf' resize 256M
*
ERROR at line 1:
ORA-03297: file contains used data beyond requested RESIZE value

根据错误消息,您可能希望以小于文件当前位置的其他大小尝试此操作。我在这方面取得的成功有限。只有当临时表空间位于文件的开头并且小于您指定的大小时,Oracle才会收缩文件。一些旧的Oracle文档(他们已对此进行了纠正)说,您可以发出命令,并且错误消息将告诉您可以缩小到什么大小。在我开始担任DBA时,这还不是真的。您只需要猜测并重新运行该命令很多次,看看它是否有效。

好的。那没用。这个怎么样。

SQL> alter tablespace YOUR_TEMP_TABLESPACE_NAME shrink space keep 256M;

如果您使用的是11g(Maybee也使用的是10g)就可以了!如果可行,您可能需要返回上一个命令,然后再尝试一些。

但是,如果失败了怎么办。如果临时表空间是安装数据库时设置的默认临时表,那么您可能需要做更多的工作。在这一点上,我通常会重新评估是否真的需要这个空间。毕竟,所有磁盘空间的价格仅为GiB $ X.XX。通常我不想在生产时间内进行这样的更改。这意味着要在凌晨2点工作!(并不是说我真的反对在凌晨2点工作-只是……我也喜欢睡觉。而且我的妻子喜欢在凌晨2点让我在家...不在凌晨4点漫游市区,想记得在哪里我三个小时前停了车,听说过“远程通勤”的事情。

好...回到正题...如果要收缩的临时表空间是您的默认临时表空间,则必须首先创建一个新的临时表空间,将其设置为默认临时表空间,然后删除旧的默认临时表空间。表空间并重新创建它。后记删除创建的第二个临时表。

SQL> CREATE TEMPORARY TABLESPACE temp2
TEMPFILE '/the/full/path/to/temp2_01.dbf' SIZE 5M REUSE
AUTOEXTEND ON NEXT 1M MAXSIZE unlimited
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M; Tablespace created. SQL> ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp2; Database altered. SQL> DROP TABLESPACE temp INCLUDING CONTENTS AND DATAFILES; Tablespace dropped. SQL> CREATE TEMPORARY TABLESPACE temp
2 TEMPFILE '/the/full/path/to/temp01.dbf' SIZE 256M REUSE
3 AUTOEXTEND ON NEXT 128M MAXSIZE unlimited
4 EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M; Tablespace created. SQL> ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp; Database altered. SQL> DROP TABLESPACE temp2 INCLUDING CONTENTS AND DATAFILES; Tablespace dropped.

希望这些对你有所帮助!

如何在oracle中缩小临时表空间?ORA-01652无法在表空间中扩展temp的更多相关文章

  1. oracle中创建用户、角色、权限、表空间简单使用

    一.数据库用户 创建数据库用户 create user 用户名 identified by 密码; 授权 grant 权限名 to 用户名; 查看当前用户权限 select * from sessio ...

  2. Oracle备份恢复之无备份情况下恢复undo表空间

    UNDO表空间存储着DML操作数据块的前镜像数据,在数据回滚,一致性读,闪回操作,实例恢复的时候都可能用到UNDO表空间中的数据.如果在生产过程中丢失或破坏了UNDO表空间,可能导致某些事务无法回滚, ...

  3. Oracle 删除用户和表空间////Oracle创建删除用户、角色、表空间、导入导出、...命令总结/////Oracle数据库创建表空间及为用户指定表空间

    Oracle 使用时间长了, 新增了许多user 和tablespace. 需要清理一下 对于单个user和tablespace 来说, 可以使用如下命令来完成. 步骤一:  删除user drop ...

  4. Oracle异常:Caused by: java.sql.SQLException: ORA-01536: 超出表空间 '登录名' 的空间限额 (JPA保存数据)

    原因: Oracle表空间为0,没有分配空间内存. 解决办法在代码框里: 1. 查看用户表空间的限额 select * from user_ts_quotas; max_bytes字段就是了 -1是代 ...

  5. ORACLE表空间offline谈起,表空间备份恢复

    从ORACLE表空间offline谈起,表空间备份恢复将表空间置为offline,可能的原因包括维护.备份恢复等目的:表空间处于offline状态,那么Oracle不会允许任何对该表空间中对象的SQL ...

  6. 【oracle11g,13】表空间管理2:undo表空间管理(调优) ,闪回原理

    一.undo空间原理: dml操作会产生undo数据. update时,sever process 会在databuffer 中找到该记录的buffer块,没有就从datafile中找并读入data ...

  7. oracle创建临时表空间、用户表空间、创建用户关联表空间、授权等

    1.创建临时表空间 CREATE TEMPORARY TABLESPACE test_temp TEMPFILE 'C:\oracle\product\10.1.0\oradata\orcl\test ...

  8. oracle创建用户和角色、管理授权以及表空间操作

    show user 显示当前用户connect username/password@datebasename as sysdba 切换用户和数据库 和用户身份 Oracle登录身份有三种: norma ...

  9. Oracle新建用户、角色,授权,建表空间

    oracle数据库的权限系统分为系统权限与对象权限.系统权限( database system privilege )可以让用户执行特定的命令集.例如,create table权限允许用户创建表,gr ...

随机推荐

  1. 3d爱心代码

    <!doctype html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. hadoop2.6.0 + hbase-1.0.0 伪分布配置

    1 基本配置 主机名: 192.168.145.154 hadoop2 ======= 2 etc/hadoop下文件配置 1)core-site.xml <configuration> ...

  3. stl_tree.h/insert_unique()

    // 安插新值:節點鍵值不允許重複,若重複則安插無效. // 注意,傳回值是個pair,第一元素是個 RB-tree 迭代器,指向新增節點, // 第二元素表示安插成功與否. template < ...

  4. DOMjudge配置

    DOMjudge配置补充 系统环境为 Debbian GNU/Linux 9 (stretch) 64-bit 在Web server configuration中, ln -s etc/apache ...

  5. 条件随机场(CRF) - 2 - 定义和形式

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/xueyingxue001/article/details/51498968声明: 1,本篇为个人对& ...

  6. element-ui-——el-uploadexcel导入

    布局文件:(选择文件放在了弹框内部——即点击导入按钮后弹框显示,先下载模板再选择文件点击提交按钮才上传) )) { this.$notify({ message: '数据导入成功', type: 's ...

  7. php框架thinkphp3.2.3 配置文件bug

    bug:有前后台的项目部署阶段(DEBUG模式为false)中,修改应用配置文件后,无效,修改自定义配置文件,正常;(开发模式正常) //项目只有后台没有前台的(单独模块),直接写在模块配置中即可,不 ...

  8. js实现小数点四舍五入

    js实现小数点四舍五入 其实这个问题,在之前的面试中被提问到了,由于笔者平时都是用原生的toFixed()的方法来保留小数点,所以当时并没有回答出来这个问题,呜呜呜~.~

  9. 安装node-sass时出现的错误解决方案(Mac自用,也可以借鉴)

    安装node-sass时出现一下错误: gyp ERR! configure error gyp ERR! stack Error: EACCES: permission denied, mkdir ...

  10. js 设置当前时间的后24小时、后一小时等相对时间

    不管是设置相对当前时间有多久时间差的时间,思路:先获取当前时间的时间戳,再根据需求加减时间获得新的时间戳,然后取年月日与时分秒.实例: // 设置默认时间——先转化为毫秒数,加上 24 小时的毫秒数, ...