ORACLE数据库碎片整理的方法 1. 停应用,停通讯
2. 查看对数据的SESSION有没有结束
TOAD工具-DATABASE-monitor-session browser
把其他session杀掉
3. 确认有没有DP_DIR的目录 select * from dba_directories;
4.建立数据导出目录dp_dir
create directory dp_dir as '/expdata';
4. 给SYSTEM用户授权
用SYS用户SYSDBA模式登录数据库
grant read , write on directory dp_dir to system;
5. 判断哪些表需要做碎片整理
Toad-database-Administer-Tablespaces-Objects-选择表空间
6. 用oracle用户登入当前操作系统(不删除数据条数)
先对需要做碎片整理的表做一次全备份,例如这次对hgl0.text3表 前台方式: expdp system/oracle@hgl0 tables=hgl0.text3 dumpfile=xcomdevtable2.dmp logfile=xcomdevtable2.log
directory=dp_dir
后台方式:WINDOWS下不能使用,其他操作系统前面加nohup,结尾加&
Truncate 数据表
Toad下truncate table xcomdev.sentmessagebufferlog_bak;
导入数据,用ORACLE用户登录操作系统 impdp system/oracle@hgl0 dumpfile=xcomdevtable2.dmp TABLE_EXISTS_ACTION=truncate
tables=hgl0.text3 directory=dp_dir
logfile=impdpxcomdevtable2.log
关注导入导出之后的记录数是否不一致
PS:如果需要对数据库表进行条目的清理
应该在一次完整备份之后,进行DELETE操作,然后对DELETE之后的表,进行第二次备份,再导入
7. 在导入数据的时候,关注归档日志
归档日志到一定量,比如说80%,删除归档日志
8. 删除归档日志以后,会导致第二天备份软件备份的不成功,所以需要进行crosscheck
使用ORACLE用户登录操作系统(每次删除归档日志,都需要做crosscheck) 登入RMAN:rman target / nocatalog
检查无效归档日志:crosscheck archivelog all;
删除无效归档日志:delete noprompt expired archivelog all;
最后,启动应用和通讯