考试网 >> IT认证 >> Oracle >> Oracle指导 >> 在ORACLE里用存储过程定期分割表下

在ORACLE里用存储过程定期分割表下

发布时间:2006-06-28 10:16     点击:
当然您工作环境的日志表可能和 我这个做例子的日志表结构上有所不同,约束条件、索引和默认值都不尽相同。 

只要稍加修改就可以了。

三、用户需要有create any table系统权限(不是角色里包含的权限)

因为在执行存储过程时,由角色赋予的权限会失效, 所以执行log_history的用户一定要有DBA单独赋予的

create any table系统权限。

最后在OS里定时每月一号凌晨0:00分执行log_history,让存储过程定期分割表。

如果要分割的日志表很多,模仿log_history可以写很多类似的存储过程来分割不同项目里的日志表。

然后让OS按月,按周或者不定期地执行这些存储过程, 管理员只要查看日志就可以了。

四、其它注意事项 

如果应用程序有BUG,可能对在用原始日志表产生长期不能释放的锁,执行log_history重命名会不成功。

这时DBA可以查看数据字典:

select object_id,session_id,locked_mode from v$locked_object;

select t2.username,t2.sid,t2.serial#,t2.logon_time 

from v$locked_object t1,v$session t2 

where t1.session_id=t2.sid order by t2.logon_time;

如果有长期出现的一模一样的列(包括登录时间),可能是没有释放的锁。

我们要在执行分割日志表的存储过程前,用下面SQL语句杀掉长期没有释放非正常的锁:

alter system kill session ’sid,serial#’;

五、结束语

用上面介绍的存储过程定期分割日志表有很大的灵活性。历史数据不仅查询方便,转移和备份起来也都很容易。

Unix和Windows平台的都可以使用。对服务器硬盘空间较小的中小型公司意义尤其明显。
版权申明:未经书面授权请勿转载本站信息!!作品版权归所属媒体与作者所有!!
发表评论: 匿名发表 用户名: 查看评论
您将承担一切因您的行为、言论而直接或间接导致的民事或刑事法律责任
留言板管理人员有权保留或删除其管辖留言中的任意内容
本站提醒:不要进行人身攻击。谢谢配合。
在本站搜索相关信息
2003-2005 Ksw123.com All Rights Reserved. - TOP
Copyright © 2006 Ksw123.com. All rights reserved.中国考题网 版权所有