重建tempfile

今天上班发现公司测试库的temp表空间数据文件包增到11g ,询问开发说昨天作了数据库压力测试.出于磁盘空间考虑,重新把temp表空间数据文件做小.

SQL> select FILE_NAME,TABLESPACE_NAME from dba_temp_files;

FILE_NAME
--------------------------------------------------------------------------------
TABLESPACE_NAME
------------------------------
/opt/oracle/product/9i/oradata/cwt/temp01.dbf
TEMP

[oracle@localhost cwt]$ ls -lh
total 13G

.

.

.


-rw-rw---- 1 oracle dba 11G Mar 20 14:58 temp01.dbf

.

.

.

.

[@more@]

SQL> ALTER DATABASE TEMPFILE '/opt/oracle/product/9i/oradata/cwt/temp01.dbf' DROP
2 INCLUDING DATAFILES;

Database altered.

SQL> select FILE_NAME,TABLESPACE_NAME from dba_temp_files;

no rows selected

SQL> ALTER TABLESPACE temp
2 ADD TEMPFILE '/opt/oracle/product/9i/oradata/cwt/temp01.dbf' SIZE 100m reuse;

Tablespace altered.

SQL> select FILE_NAME,TABLESPACE_NAME,bytes/1024/1024/1024 from dba_temp_files;

FILE_NAME
--------------------------------------------------------------------------------
TABLESPACE_NAME BYTES/1024/1024/1024
------------------------------ --------------------
/opt/oracle/product/9i/oradata/cwt/temp01.dbf
TEMP .09765625

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/76065/viewspace-823701/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/76065/viewspace-823701/

<think>好的,我需要解决用户关于收缩SQL Server tempdb日志和Oracle临时表空间日志管理的问题。首先,我得回忆一下相关的知识,并结合提供的引用资料来整理步骤。 对于SQL Server的tempdb,引用[1]和[3]提到tempdb存储临时表,当不再使用时自动删除。日志文件过大可能是因为频繁的DDL或DML操作。收缩tempdb的日志可能需要使用DBCC SHRINKFILE,但需要注意在适当的时候进行,比如在活动较少的时候,或者先截断日志。另外,可能需要检查是否有长时间运行的事务导致日志无法收缩。 对于Oracle的临时表空间,引用[2]和[3]提到临时表空间用于存放临时数据,比如排序或哈希操作。临时表空间的管理可能涉及重建或收缩数据文件。Oracle的临时表空间通常使用临时文件(tempfile),可以通过ALTER DATABASE命令来调整大小,或者重建临时表空间来释放未使用的空间。 需要注意的是,收缩操作可能会影响性能,尤其是在生产环境中。建议在维护窗口进行,并确保备份。同时,预防措施也很重要,比如合理设置初始大小和自动扩展,避免空间不足或过度扩展。 用户可能需要详细的步骤和注意事项,所以需要分点说明,并给出示例命令。同时,要提醒用户谨慎操作,避免数据丢失或系统不稳定。最后,生成相关问题帮助用户深入理解。</think>### SQL Server tempdb 日志收缩方法 #### 1. 常规收缩操作 - **步骤1:截断事务日志** 执行`CHECKPOINT`强制将日志写入数据文件,然后使用`BACKUP LOG`命令释放未使用的日志空间: ```sql CHECKPOINT; BACKUP LOG tempdb TO DISK='NUL'; -- 仅适用于简单恢复模式 ``` - **步骤2:收缩日志文件** 使用`DBCC SHRINKFILE`指定日志文件名和目标大小: ```sql USE tempdb; DBCC SHRINKFILE (tempdev_log, 1024); -- 目标大小单位为MB ``` #### 2. 处理长期活跃事务 若存在长时间未提交的事务(如未关闭的显式事务),可能阻塞日志截断。通过以下查询检测: ```sql DBCC OPENTRAN('tempdb'); ``` #### 3. 配置优化建议 - 将`tempdb`日志文件设置为自动增长,但限制最大大小 - 采用简单恢复模式(默认),确保日志自动截断[^1] ### Oracle临时表空间日志管理 #### 1. 空间回收方法 - **重建临时表空间**(推荐): ```sql CREATE TEMPORARY TABLESPACE temp2 TEMPFILE '/path/temp02.dbf' SIZE 10G AUTOEXTEND ON; ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp2; DROP TABLESPACE temp1 INCLUDING CONTENTS AND DATAFILES; ``` - **收缩临时文件**: ```sql ALTER DATABASE TEMPFILE '/path/temp01.dbf' RESIZE 5G; ``` #### 2. 监控与维护 - 查询使用情况: ```sql SELECT * FROM DBA_TEMP_FREE_SPACE; ``` - 设置`AUTOEXTEND`参数避免空间不足错误 ### 注意事项 1. 收缩操作建议在低峰期进行 2. Oracle临时表空间不存储UNDO信息,日志生成量与普通表空间不同[^2] 3. SQL Server的`tempdb`收缩后可能因后续操作再次增长,建议合理配置初始大小[^3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值