`

ORACLE 表空间 JOB 定期维护

阅读更多

 

 

--- ORACLE 表空间 JOB 定期维护

 

CREATE OR REPLACE PROCEDURE ATUO_ORACLE_TABELSPACE IS

  V_SQL         VARCHAR2(3000);

  V_USER_PERCENT   VARCHAR2(30);

  V_TABLESPACE_NAME   VARCHAR2(30);

 

  TYPE V_CURSOR IS REF CURSOR;

  V_CUR V_CURSOR;

BEGIN

   /*

    * ORACLE 表空间定期维护

    * 注意:1、建在 sys 账户下运行

    *   2、事先创建 sys_tablespace

    */

 

  ---------------------------  Oracle 表空间维护  ------------------------------

  EXECUTE IMMEDIATE 'TRUNCATE TABLE SYS_TABLESPACE';

  EXECUTE IMMEDIATE 'INSERT INTO SYS_TABLESPACE

            SELECT A.TABLESPACE_NAME TABLESPACE_NAME,

                   ROUND(TOTAL / 1024 / 1024, 2) ALL_SIZE,

                   ROUND(FREE / 1024 / 1024, 2) LEAVINGS_SIZE,

                   ROUND((TOTAL - FREE) / 1024 / 1024, 2) USER_SZIE,

                   ROUND((TOTAL - FREE) / TOTAL, 4) * 100 USER_PERCENT

              FROM (SELECT TABLESPACE_NAME, SUM(BYTES) FREE

                      FROM DBA_FREE_SPACE

                     GROUP BY TABLESPACE_NAME) A,

                   (SELECT TABLESPACE_NAME, SUM(BYTES) TOTAL

                      FROM DBA_DATA_FILES

                     GROUP BY TABLESPACE_NAME) B

            WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME';

   COMMIT;

  V_SQL := 'SELECT T.TABLESPACE_NAME,T.USER_PERCENT FROM SYS_TABLESPACE T';

  OPEN V_CUR FOR V_SQL;

  LOOP

    FETCH V_CUR

      INTO V_TABLESPACE_NAME,V_USER_PERCENT;

    EXIT WHEN V_CUR%NOTFOUND;

    -- 如果表空间使用率 >= 80 时,增加 3G

    IF V_USER_PERCENT >= 80 THEN

        V_SQL := 'ALTER TABLESPACE "'||V_TABLESPACE_NAME||'" ADD DATAFILE 

 

''/APP/ORACLE/ORADATA/CCDB/ADD_NEW_DATA'||TO_CHAR(SYSDATE,'YYYYMMDDHH24MISS')||'.DBF'' SIZE 3072M';

       EXECUTE IMMEDIATE V_SQL;

    END IF;

  END LOOP;

 

EXCEPTION

  WHEN OTHERS THEN

    BEGIN

      DBMS_OUTPUT.PUT_LINE(' ATUO_ORACLE_TABELSPACE IS FAILE ! -- '||SQLERRM);

      ROLLBACK;

    END;

END ATUO_ORACLE_TABELSPACE;

/

 

 

 

-- Create table

create table SYS_TABLESPACE

(

  TABLESPACE_NAME VARCHAR2(30),

  ALL_SIZE        NUMBER,

  LEAVINGS_SIZE   NUMBER,

  USER_SZIE       NUMBER,

  USER_PERCENT    NUMBER

)

 

---- SYS 执行 JOB

 

begin

  sys.dbms_job.submit(job => :job,

                      what => 'ATUO_ORACLE_TABELSPACE;',

                      next_date => to_date('09-03-2011 03:00:00', 'dd-mm-yyyy hh24:mi:ss'),

                      interval => 'trunc(sysdate) + 1 + 3 / 24');

  commit;

end;

/

分享到:
评论

相关推荐

    oracle定时删除表空间的数据并释放表空间

    在Oracle数据库管理中,定期清理和优化表空间是至关重要的任务,这有助于保持数据库的高效运行和合理利用存储资源。本文将深入探讨如何在Oracle环境中实现定时删除表空间的数据并释放空间,主要涵盖以下几个关键知识...

    Oracle 分区表自动维护脚本

    描述中提到,该脚本可由数据库系统定时自动执行,这意味着可以利用Oracle的调度程序如DBMS_SCHEDULER或DBMS_JOB来定期运行这些脚本。脚本执行的维护任务有助于保持数据库的性能和数据的完整性。描述还提到建议使用...

    oracle 12c SYSAUX表空间过大

    SYSAUX表空间是Oracle数据库中的一个重要组成部分,它存储了系统级别的对象和服务,包括数据字典、索引、临时段等。当SYSAUX表空间占用过大时,可能导致数据库性能下降,甚至影响到正常的数据库操作。 **症状分析**...

    Oracle 10g JOB 相关调查修正

    在Oracle 10g中,SYS用户的JOB可能包括但不限于数据泵导出、归档日志切换、表空间检查等系统级别的任务。 进行"Oracle 10g JOB 相关调查修正"时,我们需要关注以下几个方面: 1. **JOB分析**:列出所有由SYS用户...

    oracle数据库日常维护手册

    这部分包括检查CRONTAB任务、Oracle JOB状态、数据增长趋势、失效的索引、不起作用的约束和无效的触发器,这些是维护数据库长期稳定运行的重要方面。 综上所述,Oracle数据库的日常维护是一项综合性的工作,涉及...

    Oracle数据库日常维护方案书

    - Oracle Job状态:检查Oracle Job任务的执行情况,确保没有失败的任务。 - 数据增长情况:监控数据的增长趋势,预测存储需求。 - 失效索引:检查是否有失效的索引,及时进行重建。 - 无效约束:清理无效的约束...

    在Oracle数据库里用存储过程定期分割表

    在Oracle数据库中,面对随着时间增长的数据表,特别是那些与时间紧密相关的日志表,定期分割表是一种有效的管理策略。这有助于优化性能,提高查询效率,同时保持数据的整洁和易于管理。以下是一些关于如何使用存储...

    oracle之监控报警

    例如,当某个表的空间使用率达到阈值时,可以触发一个警报,然后通过DBMS_MAIL发送邮件通知。 7. **警报阈值设定**: 在Oracle的报警阈值设置中,可以指定性能指标何时触发报警。例如,当数据库连接数超过预设值或者...

    oracle自动一年建立表分区.zip

    4. **调度任务**:使用Oracle的DBMS_SCHEDULER或者以前的DBMS_JOB来定期运行这个脚本,确保每年或每月自动创建新分区。 5. **测试与验证**:确保脚本正确运行,新插入的数据自动进入正确的分区。 为了充分利用分区...

    oracle日常维护手册

    定期执行DBMS_SCHEDULER或DBMS_JOB创建的任务,如统计信息收集、表空间自动扩展、索引重建等,以保持数据库的良好状态。 七、空间管理 监控表空间和数据文件的使用情况,合理规划和调整数据文件大小,避免空间不足...

    Oracle数据库日常维护手册.pdf

    ### Oracle数据库日常维护手册知识点概览 #### 一、检查数据库基本状况 ##### 1.1 检查Oracle实例状态 - **SQL命令**: 使用`SELECT instance_name, host_name, startup_time, status, database_status FROM v$...

    aix_设置定期删除oracle日志归档

    在AIX操作系统中,Oracle数据库的日志归档是数据库维护的重要环节,它记录了数据库的所有事务,确保数据的安全性和可恢复性。然而,随着时间的推移,这些日志文件会占用大量的磁盘空间,因此定期删除不再需要的归档...

    Oracle_数据库日常维护手册_常用SQL_脚本.txt

    表空间是Oracle数据库的基本存储单元,用于组织和管理数据库的数据。随着数据的增长,表空间的管理变得尤为重要。 - **查询空闲空间**:使用以下SQL语句可以查询每个表空间的空闲块数量以及最大空闲块的大小。 ```...

    ORACLE数据库日常工作维护知识总结.pdf

    - **方法**: system表空间是Oracle数据库的核心表空间之一,包含了数据字典和其他关键对象。可以通过查询 `DBA_TABLES` 和 `DBA_VIEWS` 视图来了解system表空间的内容。 **4.7. 检查对象的下一扩展与表空间的最大...

    oracle日常维护

    定期检查并扩展数据文件,或者创建新的表空间以分配不同的数据对象。同时,对临时表空间进行监控,防止临时段占用过多空间。 4. **备份与恢复**:定期执行数据库备份,包括完整备份、增量备份和差异备份。理解RMAN...

    ORACLE_维护知识大全.doc

    通过这些维护步骤,数据库管理员能够定期评估Oracle数据库的健康状况,预防可能出现的问题,确保系统的稳定性和数据的安全性。对于大型企业来说,这样的日常维护是必不可少的,也是保证业务连续性的关键。

    ORACLE_维护知识大全.docx

    - **Oracle Job**:监控作业状态,防止失败未报告。 - **数据增长**:跟踪数据量的增长,规划存储需求。 - **失效索引**:修复或重建失效的索引,提高查询效率。 - **无效约束**:检查并激活未使用的约束,保证...

Global site tag (gtag.js) - Google Analytics