CREATE OR REPLACE PROCEDURE PRC_COMPILE_INVALID
IS
--/************************************************************************************
-- 程序名称: PRC_COMPILE_INVALID
-- 功能描述: 每天编译失效的存储过程和失效的索引
-- 输入参数: 'YYYYMM' - <作业的处理日期>
-- 输出参数: 0 - <0为正常结束,其余为异常>
-- 输入资源:
-- 输出资源:
-- 中间资源: <用户名>.<中间表或视图等对象名>
-- 创建人员: XXX
-- 创建日期: 20120528
-- 版本说明: V1.0
-- 修改人员: (针对程序的任何修改都需要记录修改人员)
-- 修改日期: (针对程序的任何修改都需要记录修改日期)
-- 修改原因: (针对程序的任何修改都需要记录修改原因,如果多次修改需依次记录)
-- 版本说明:
-- 执行说明:
-- 公司名称:
--/************************************************************************************
--执行MM月的数据,输入的日期参数为YYYY(MM+1)DD,如'20091201'则是执行11月份的数据。
-- 编写规则说明
-- 说明1:所有自定义变量均用小写,并以v_打头;所有字段名均用大写
-- 说明2: 所有关键值均用大字;模式名、表名、函数名、存储过程名均用大写
-- 说明3: 缩进同其它程序,里面的逻辑体比外面的逻辑体向有缩进一个TAB键。
-- 对齐主要是针对SQL语句,采用关键字换行和右对齐的方式(如果不方便也可使用左对齐。
-- 说明4: SQL语句目标和源要齐整
-- 说明5: 对每个表的数据作改变后都要显示的提交
v_sql VARCHAR2(10000) DEFAULT ''; -- 动态SQL变量,注意SQL长度
v_prc VARCHAR2(40);
v_date VARCHAR2(8);
v_stepnum NUMBER DEFAULT 0; -- 运行步骤
v_errmsg VARCHAR2(1024) DEFAULT '正常';
BEGIN
v_prc:='PRC_COMPILE_INVALID';
SELECT to_char(SYSDATE,'yyyymmdd') INTO v_date FROM dual;
--正文SQL处理
--循环将无效存储过程取出 对其进行编译
v_stepnum :=v_stepnum+1;
For x In (Select Object_Name From user_objects Where Status = 'INVALID' And Object_Type = 'PROCEDURE') Loop
v_sql := 'Alter Procedure ' || x.Object_Name || ' COMPILE';
Begin
EXECUTE IMMEDIATE v_sql;
PRC_LOG_WRT(v_date,v_prc,v_stepnum,v_sql,v_errmsg,SQL%ROWCOUNT);
COMMIT;
End;
End Loop;
--将无效索引取出 对其进行编译
v_stepnum :=v_stepnum+1;
FOR y In (SELECT t.index_name from all_indexes t WHERE t.owner='XXXXXXX' AND t.status='UNUSABLE') Loop
v_sql := 'ALTER INDEX '||y.index_name ||' rebuild ';
Begin
EXECUTE IMMEDIATE v_sql;
PRC_LOG_WRT(v_date,v_prc,v_stepnum,v_sql,v_errmsg,SQL%ROWCOUNT);
COMMIT;
End;
End Loop;
--取出无效函数 进行编译
v_stepnum :=v_stepnum+1;
FOR y In (SELECT t.object_name FROM USER_OBJECTS T WHERE T.OBJECT_TYPE = 'FUNCTION' AND T.STATUS = 'INVALID') Loop
v_sql := 'ALTER FUNCTION '||y.object_name ||' COMPILE ';
Begin
EXECUTE IMMEDIATE v_sql;
PRC_LOG_WRT(v_date,v_prc,v_stepnum,v_sql,v_errmsg,SQL%ROWCOUNT);
COMMIT;
End;
End Loop;
-- 存储过程错误信息记录
EXCEPTION
WHEN OTHERS THEN
v_errmsg := v_stepnum || '步出错:' || SQLERRM;
PRC_LOG_WRT(v_date,v_prc,v_stepnum,v_sql,v_errmsg,-1);
COMMIT;
END;
分享到:
相关推荐
然而,随着数据的增删改,原有的索引可能会变得效率低下,甚至失效,这就需要我们定期检查并可能重新编译索引。 在标题提及的“检查该重新编译的索引”过程中,我们主要关注以下几个方面: 1. **索引碎片**:当...
例如,主键和外键列通常自动带有索引。此外,对于频繁出现在WHERE子句中的非唯一列,创建索引也能显著加速查询。但是,创建过多的索引也会占用额外的存储空间,并可能在插入、更新和删除操作时降低性能,因此需权衡...
B树、哈希索引和全文索引是常见的索引类型。B树索引适用于范围查询和排序,而哈希索引则适用于等值查询。全文索引则用于复杂的文本搜索。创建合适的索引可以显著提升查询性能,但过度索引可能导致写操作变慢,因此...
SQL Server存储过程是一种存储在数据库服务器上,能够执行特定功能的预编译Transact-SQL代码集合。它通常用于封装那些重复执行的数据库操作,便于管理和重用。存储过程可以包含一系列复杂的SQL语句和控制流语句,...
6. **触发器和存储过程**:在复杂的业务逻辑中,触发器可以在特定事件发生时自动执行某些操作,而存储过程是一组预编译的SQL语句,可以提高代码复用性和安全性。 7. **事务处理**:在需要保证数据一致性的场景下,...
数据库优化是提升系统性能的关键环节,它涉及到多个层面,包括数据结构设计、索引策略、查询优化、存储过程使用和数据库维护。以下是一些主要的优化方法和原则: 1. **建立索引**:关键字段建立索引可以显著提高...
5. 存储过程:存储过程是预编译的SQL语句集合,可提高代码复用性和安全性。 二、MySQL数据库开发 在实际开发中,理解事务处理、触发器和存储引擎的运用是至关重要的。 1. 事务处理:事务是数据库操作的基本单元,...
《Oracle编程艺术》一书深入探讨了Oracle数据库的编程技术和最佳实践,涵盖了SQL查询、PL/SQL编程、存储过程、触发器、索引优化、事务处理等多个方面。Oracle数据库是全球广泛使用的数据库管理系统之一,其高效、...
1. 非唯一索引和唯一索引的命名规则需遵循特定格式,便于识别。 2. 索引名称应全小写。 3. 索引字段数量控制在5个以内,单表索引总数限制在5个左右。 4. 唯一键适合做主键,但主键不能与唯一键重复。 5. 索引字段...
总结来说,MS-SQL性能优化是一个涉及多方面因素的过程,包括但不限于合理的数据库设计、SQL代码优化、有效利用索引和适当使用存储过程。每个环节都可能成为性能提升的关键,需要根据实际情况综合考虑,灵活应用各种...
5. 索引:用于加快数据检索速度的数据结构,常见的有B树索引、哈希索引和全文索引。 三、MySQL 5.5的安装与配置 1. 安装过程:涵盖了Windows、Linux和macOS等不同平台的安装方法,包括源码编译和二进制包安装。 2. ...
存储过程是一种预编译的SQL代码集合。 1. **基本语法** - 定义存储过程的结构。 - 参数传递、返回值设置等细节。 2. **变量** - 局部变量、用户变量的定义和使用。 - 变量的作用范围。 3. **判断与循环** - ...
3. **触发器与存储过程**: 触发器在特定事件发生时自动执行,存储过程是一组预编译的SQL语句,可以封装业务逻辑。 4. **并发控制**: Oracle使用行级锁定和多版本并发控制(MVCC)来处理并发事务,保证数据的一致性...
### SQLSERVER数据库性能优化分析 #### 一、问题分析 **1.1 死锁** 在SQL Server数据库中,死锁是一种常见的性能问题...同时,合理的设计存储过程、优化索引管理和使用分区视图等技术也是提升数据库性能的关键所在。
四、存储过程与预编译语句 1. **使用存储过程**:将重复的SQL逻辑封装成存储过程,提高执行效率。 2. **预编译SQL语句**:通过预编译(如使用PreparedStatement),可以减少解析和编译的时间。 五、数据库设计优化 ...
14. **适当使用存储过程和预编译语句**:存储过程可以减少网络传输,预编译语句可以避免SQL解析的开销。 15. **监控和调整MySQL配置**:根据服务器资源和应用需求,调整MySQL的配置参数,如内存分配、线程池大小等...
理解B树、哈希索引和全文索引的差异,学会正确创建和使用复合索引,避免索引失效,以及如何通过EXPLAIN分析查询执行计划,都是性能调优的重要步骤。 2. **查询优化**:编写高效的SQL语句是性能提升的基础。学习如何...
4. **存储过程和函数**:预编译的存储过程可以提高执行效率,而自定义函数则可以封装复杂逻辑。但是,过度使用或不恰当的使用可能会导致性能问题,需要权衡利弊。 5. **视图和子查询**:视图可以简化复杂的查询,但...
同时,考虑使用预编译的存储过程,减少解析和编译的时间。 总之,MySQL性能优化是一个综合性的任务,涉及到查询优化、索引设计、系统配置等多个方面。通过对查询行为的深入理解,结合合适的索引策略,以及对数据库...
- **类型**:B树索引(包括非聚簇索引和聚簇索引)、全文索引、空间索引和XML索引。 - **性能优化**:如何选择合适的索引,避免索引失效,以及索引维护。 4. **存储过程**与**触发器**: - 存储过程是预编译的...