ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 【变更】线上库的变更操作

【变更】线上库的变更操作

原创 Linux操作系统 作者:杨奇龙 时间:2011-07-27 21:25:30 0 删除 编辑
对于访问频繁的生产库进行线上变更操作是比较危险的,因为倘若变更失败将导致对象失效不可用,严重影响应用。
下面介绍一下进行线上库变更的流程。
1 对package 中所有sql语句进行review,查看它们的执行计划,确认是否合理。
2 检查包的依赖关系
IM@im1>select owner,name,type,DEPENDENCY_TYPE
  2     from dba_dependencies
  3     where REFERENCED_OWNER like upper('%&REFERENCED_OWNER_like%')
  4        and REFERENCED_NAME like upper('%&REFERENCED_NAME_like%')
  5        and REFERENCED_TYPE like upper('%&REFERENCED_TYPE_like%')
  6        and type!='PACKAGE BODY';
3 查看发布前对象的有效个数和无效个数以便前后对比
IM@im1>select object_type,status,count(*) from user_objects group by object_type,status;
OBJECT_TYPE        STATUS    COUNT(*)
------------------ ------- ----------
TYPE               VALID           11
VIEW               INVALID          3
INDEX              VALID          399
TABLE              VALID          234
PACKAGE            VALID           49
SYNONYM            VALID           10
FUNCTION           VALID            1
SEQUENCE           VALID          173
PROCEDURE          VALID           22
PACKAGE BODY       VALID           49
DATABASE LINK      VALID            6
INDEX PARTITION    VALID           79
TABLE PARTITION    VALID           79
13 rows selected.
4 准备回滚方案
  为防止新的包发布不成功,必须将旧的包放在服务器上,当发布失败时,立即执行旧的包,进行操作回滚。
5 发布包。
@/tmp/IM_SMS_20110727.pkg
6 再次检查对象的有效个数和无效个数,检测是否变更成!
IM@im1>select object_type,status,count(*) from user_objects group by object_type,status;
OBJECT_TYPE        STATUS    COUNT(*)
------------------ ------- ----------
TYPE               VALID           11
VIEW               INVALID          3
INDEX              VALID          399
TABLE              VALID          234
PACKAGE            VALID           49
SYNONYM            VALID           10
FUNCTION           VALID            1
SEQUENCE           VALID          173
PROCEDURE          VALID           22
PACKAGE BODY       VALID           49
DATABASE LINK      VALID            6
INDEX PARTITION    VALID           79
TABLE PARTITION    VALID           79
13 rows selected.
7 如果有无效对象在使用utlrp.sql 进行修复以sysdba登录数据库执行:
@?/rdbms/admin/utlrp.sql
8 如果该包被频繁执行,还有监控系统未来30分钟内是否正常!

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

请登录后发表评论 登录
全部评论
MySQL DBA NoSQL DEVOPS

注册时间:2009-10-07

  • 博文量
    1026
  • 访问量
    7717867