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-T ablespaces-Objects-选择表空间
6.用oracle用户登入当前操作系统(不删除数据条数)
先对需要做碎片整理的表做一次全备份,例如这次对hgl0.text3表
前台方式:
expdp system/oracle@hgl0 tables=hgl0.text3 directory=dp_dir dumpfile=xcomdevtable2.dmp logfile=xcomdevtable2.log
后台方式:WINDOWS下不能使用,其他操作系统前面加nohup,结尾加&
Truncate 数据表
Toad下truncate table xcomdev.sentmessagebufferlog_bak;
导入数据,用ORACLE用户登录操作系统
impdp system/oracle@hgl0 tables=hgl0.text3 directory=dp_dir dumpfile=xcomdevtable2.dmp logfile=impdpxcomdevtable2.log TABLE_EXISTS_ACTION=truncate
关注导入导出之后的记录数是否不一致
PS:如果需要对数据库表进行条目的清理
应该在一次完整备份之后,进行DELETE操作,然后对DELETE之后的表,进行第二次备份,再导入
7.在导入数据的时候,关注归档日志
归档日志到一定量,比如说80%,删除归档日志
8.删除归档日志以后,会导致第二天备份软件备份的不成功,所以需要进行crosscheck
使用ORACLE用户登录操作系统(每次删除归档日志,都需要做crosscheck)
登入RMAN:rman target / nocatalog
检查无效归档日志:crosscheck archivelog all;
删除无效归档日志:delete noprompt expired archivelog all;
最后,启动应用和通讯。