--- 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的调度程序如DBMS_SCHEDULER或DBMS_JOB来定期运行这些脚本。脚本执行的维护任务有助于保持数据库的性能和数据的完整性。描述还提到建议使用...
SYSAUX表空间是Oracle数据库中的一个重要组成部分,它存储了系统级别的对象和服务,包括数据字典、索引、临时段等。当SYSAUX表空间占用过大时,可能导致数据库性能下降,甚至影响到正常的数据库操作。 **症状分析**...
在Oracle 10g中,SYS用户的JOB可能包括但不限于数据泵导出、归档日志切换、表空间检查等系统级别的任务。 进行"Oracle 10g JOB 相关调查修正"时,我们需要关注以下几个方面: 1. **JOB分析**:列出所有由SYS用户...
- 表空间是Oracle中用来组织存储空间的一种方式。可以通过查询`v$tablespace`视图来查看每个表空间的状态。 - **3.4. 检查Oracle所有数据文件状态** - 数据文件是存储表空间数据的物理文件。可以使用`select * ...
这部分包括检查CRONTAB任务、Oracle JOB状态、数据增长趋势、失效的索引、不起作用的约束和无效的触发器,这些是维护数据库长期稳定运行的重要方面。 综上所述,Oracle数据库的日常维护是一项综合性的工作,涉及...
- Oracle Job状态:检查Oracle Job任务的执行情况,确保没有失败的任务。 - 数据增长情况:监控数据的增长趋势,预测存储需求。 - 失效索引:检查是否有失效的索引,及时进行重建。 - 无效约束:清理无效的约束...
在Oracle数据库中,面对随着时间增长的数据表,特别是那些与时间紧密相关的日志表,定期分割表是一种有效的管理策略。这有助于优化性能,提高查询效率,同时保持数据的整洁和易于管理。以下是一些关于如何使用存储...
例如,当某个表的空间使用率达到阈值时,可以触发一个警报,然后通过DBMS_MAIL发送邮件通知。 7. **警报阈值设定**: 在Oracle的报警阈值设置中,可以指定性能指标何时触发报警。例如,当数据库连接数超过预设值或者...
4. **调度任务**:使用Oracle的DBMS_SCHEDULER或者以前的DBMS_JOB来定期运行这个脚本,确保每年或每月自动创建新分区。 5. **测试与验证**:确保脚本正确运行,新插入的数据自动进入正确的分区。 为了充分利用分区...
定期执行DBMS_SCHEDULER或DBMS_JOB创建的任务,如统计信息收集、表空间自动扩展、索引重建等,以保持数据库的良好状态。 七、空间管理 监控表空间和数据文件的使用情况,合理规划和调整数据文件大小,避免空间不足...
### Oracle数据库日常维护手册知识点概览 #### 一、检查数据库基本状况 ##### 1.1 检查Oracle实例状态 - **SQL命令**: 使用`SELECT instance_name, host_name, startup_time, status, database_status FROM v$...
在AIX操作系统中,Oracle数据库的日志归档是数据库维护的重要环节,它记录了数据库的所有事务,确保数据的安全性和可恢复性。然而,随着时间的推移,这些日志文件会占用大量的磁盘空间,因此定期删除不再需要的归档...
表空间是Oracle数据库的基本存储单元,用于组织和管理数据库的数据。随着数据的增长,表空间的管理变得尤为重要。 - **查询空闲空间**:使用以下SQL语句可以查询每个表空间的空闲块数量以及最大空闲块的大小。 ```...
- **方法**: system表空间是Oracle数据库的核心表空间之一,包含了数据字典和其他关键对象。可以通过查询 `DBA_TABLES` 和 `DBA_VIEWS` 视图来了解system表空间的内容。 **4.7. 检查对象的下一扩展与表空间的最大...
定期检查并扩展数据文件,或者创建新的表空间以分配不同的数据对象。同时,对临时表空间进行监控,防止临时段占用过多空间。 4. **备份与恢复**:定期执行数据库备份,包括完整备份、增量备份和差异备份。理解RMAN...
通过这些维护步骤,数据库管理员能够定期评估Oracle数据库的健康状况,预防可能出现的问题,确保系统的稳定性和数据的安全性。对于大型企业来说,这样的日常维护是必不可少的,也是保证业务连续性的关键。
- **Oracle Job**:监控作业状态,防止失败未报告。 - **数据增长**:跟踪数据量的增长,规划存储需求。 - **失效索引**:修复或重建失效的索引,提高查询效率。 - **无效约束**:检查并激活未使用的约束,保证...