在项目中遇到了sql server数据库经过频繁地删减数据后,查询变慢的问题. 我把数据导到另一个库中,发现查询就很快. 查了下原因,根本原因是删除数据并不释放表空间,日志文件太过巨大的原因. 网上查了查,解决方案如下: 第一步, 在收缩前先查看日志的大小: SELECT * FROM sysfiles WHERE name LIKE '%LOG%' GO 第二步, 把数据库的恢复模式设成”简单”: ALTER DATABASE [数据库名] SET RECOVERY SIMPLE WITH N
1. 保留需要的数据之新表中->TRUNCATE原表数据->还原之前保留的数据之原表中->压缩表空间 脚本类似如下 SELECT * INTO #keep FROM Original WHERE CreateDate > '2011-12-31' TRUNCATE TABLE Original INSERT Original SELECT * FROM #keepDROP TABLE #keep 压缩表空间 DBCC SHRINKDATABASE(DB_NAME)
案例:AWR手工创建快照失败,SYSAUX表空间剩余不足处理 版本:Oracle 11.2.0.4 RAC 问题现象:AWR手工创建快照失败,SYSAUX表空间剩余不足. 1. 查看SYSAUX表空间的段大小 查看SYSAUX表空间的段大小,按大小排序: select segment_name, sum(bytes) / 1024 / 1024 from dba_segments where tablespace_name = 'SYSAUX' group by segment_name ord
-----亲测有效------- --一.备份原始数据库库--1.备份空表--在plsql里面执行一下这句话 然后把结果集 再执行一把 再导数据select 'alter table '||table_name||' allocate extent(size 64k);' from tabs t where not exists (select segment_name from user_segments s where s.segment_name=t.table_name);2.在cmd窗
truncate table tablename DROP STORAGE; drop 执行drop table xx 语句drop后的表被放在回收站(user_recyclebin)里,而不是直接删除掉.这样,回收站里的表信息就可以被恢复,或彻底清除.通过查询回收站user_recyclebin获取被删除的表信息,然后使用语句flashback table <user_recyclebin.object_name or user_recyclebin.original_name> to be
一.表的重命名 flashback table test2 to before drop rename to test3;--[to test3]将表重命名 drop table test3 purge; --彻底删除表 二.清除表中的数据 truncate操作 同没有where条件的delete操作十分相似,只是把表里的信息全部删除,但是表依然存在. 例如:truncate table XX Truncate不支持回滚,并且不能truncate一个带有外键的表,如果要删除首先要取消外键,然后
一.drop表 执行drop table xx 语句 drop后的表被放在回收站(user_recyclebin)里,而不是直接删除掉.这样,回收站里的表信息就可以被恢复,或彻底清除. 通过查询回收站user_recyclebin获取被删除的表信息,然后使用语句 flashback table <user_recyclebin.object_name or user_recyclebin.original_name> to before drop [rename to <new_tabl
1.查看一个表所占的空间大小:SELECT bytes/1024/1024 ||'MB' TABLE_SIZE ,u.* FROM USER_SEGMENTS U WHERE U.SEGMENT_NAME='JK_TEST';2.查看一个表空间所占的实际大小:SELECT SUM(BYTES) / 1024 / 1024 ||'MB' FROM USER_SEGMENTS U WHERE TABLESPACE_NAME = 'DATA01';3.查看一个表空间对应的数据文件:SELECT *