oracle减小临时表空间,如何缩小oracle中的temp表空间?

哦,我的天啊!看看我的临时表空间的大小!

或者…如何缩减Oracle中的临时表空间。

是的,我运行一个查询,看看我的临时表空间有多大:

SQL> SELECT tablespace_name, file_name, bytes

2 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

你要问的第一个问题是为什么临时表空间这么大。

你可能知道你的头顶上这个的答案。这可能是由于

大查询,你只是运行一个排序是一个错误(我做到了

多次)。这可能是由于一些其他特殊情况。如果说

是这样的情况下,所有你需要做的是清理是收缩临时

表空间和在生活中移动。

但是如果你不知道怎么办?在你决定收缩之前,你可能需要做一些

调查大型表空间的原因。如果这发生在a

定期的基础,那么你的数据库可能只需要那么多的空间。

动态性能视图

V$TEMPSEG_USAGE

可以非常有用的确定原因。

也许你只是不在乎原因,你只需要收缩它。

这是你的第三天工作。数据库中的数据只有200MiB

如果数据和临时表空间是13GiB – 只是收缩它继续前进。

如果它再次增长,我们将研究原因。在同一时间我

超出了磁盘卷上的空间,我只需要回空间。

让我们来看看缩小它。它将取决于什么版本

您正在运行的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也),这是它!如果它的工作,你可能想要

回到上一个命令并给它一些更多的尝试。

但是如果失败了。如果临时表空间是默认的临时表空间

这是在安装数据库时设置的,那么您可能需要做一个

更多的工作。在这一点上,我通常重新评估如果我真的需要

空间回。在所有磁盘空间只花费$ X.XX一个GiB。通常我不想要

在生产时间进行这样的更改。这意味着在凌晨2点工作

再次! (不是我真的反对

在上午2点工作 – 这只是……我喜欢睡觉了。和我的妻子

喜欢让我在家在2AM …不漫游在市中心的街道上午4点试图

记住我在哪里停车3小时前。我听说过“远程办公”

事情。我只是担心,我会得到一半,然后我的互联网连接

将失败 – 然后我必须急于市中心修复它所有之前的人们出现在

上午使用数据库。)

好吧…回到严重的东西…

如果要缩减的临时表空间是您的默认值

临时表空间,你将不得不先创建一个新的临时

表空间,将其设置为默认临时表空间,然后删除

您的旧默认临时表空间并重新创建它。后话

删除创建的第二个临时表。

SQL> CREATE TEMPORARY TABLESPACE temp2

2 TEMPFILE '/the/full/path/to/temp2_01.dbf' SIZE 5M REUSE

3 AUTOEXTEND ON NEXT 1M MAXSIZE unlimited

4 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.

希望这些事情之一将有所帮助!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值