Oracle磁盘分析
来源:互联网 发布:软件项目需求 编辑:程序博客网 时间:2024/05/29 15:44
-- 你可以定时用 df -h 的结果打入一个外部日志文件,然后,利用Oracle的“外部表”去访问这个“外部日志文件”就可以了,例如:
-- Step 1:写一脚本,定时将磁盘信息打入日志文件:
[oracle@localhost ~]$ more /data/obase/tbs_info/disk_info.sh
#!/bin/bash
#
source /home/oracle/.bash_profile
cd /data/obase/tbs_info/
echo
"-------- Disk Used Info of Server: 10.4.1.12 --------"
> /data/obase/tbs_info/disk_info.log
echo
"-------- DateTime: `date` -------"
>> /data/obase/tbs_info/disk_info.log
df -h >> /data/obase/tbs_info/disk_info.log
-- Step 2:用crontab 定时执行脚本(例如:每个小时的59分的时候执行一次(每小时执行一次):
[oracle@localhost ~]$ crontab -e
59 * * * * /data/obase/tbs_info/disk_info.sh > /data/obase/tbs_info/disk_info.log
-- Step 2:创建TBS_INFO目录,并授权lym用户读、写权限。
CREATE
DIRECTORY TBS_INFO
AS
'/data/obase/tbs_info/'
;
GRANT
READ
,WRITE
ON
DIRECTORY TBS_INFO
TO
LYM;
-- Step 3:监控各数据库服务器磁盘空间使用情况:
select
dbms_metadata.get_ddl(
'TABLE'
,
'DISK_INFO'
)
FROM
DUAL;
----------------------------------------------------------------------------
-- 3.1 外部表的创建语句:
CREATE
TABLE
"LYM"
.
"DISK_INFO"
(
"TEXT"
VARCHAR2(150)
)
ORGANIZATION EXTERNAL
( TYPE ORACLE_LOADER
DEFAULT
DIRECTORY
"TBS_INFO"
ACCESS PARAMETERS
( records delimited
by
newline
nobadfile
nodiscardfile
nologfile
)
LOCATION
(
'disk_info.log'
)
)
REJECT LIMIT UNLIMITED
-- 3.2. 创建监控各数据库服务器磁盘空间的函数
CREATE
OR
REPLACE
FUNCTION
disk_info_func
RETURN
VARCHAR2
AS
/******************************************************************************
** 功能:监控Oracle数据库服务器(10.4.1.12、10.4.1.13、10.4.1.21)
** 各磁盘空间的使用情况,如果其占用空间超过其总空间的80%,将获取其磁盘空间信息!
** 创建者:罗友谋
** 创建时间:2011.12.14
****************************************************************************/
v_cnt12 NUMBER(18,0);
v_cnt13 NUMBER(18,0);
v_cnt21 NUMBER(18,0);
v_disk_info VARCHAR2(4000);
v_disk_info_all VARCHAR2(4000);
BEGIN
SELECT
count
(*)
AS
cnt
INTO
v_cnt12
FROM
disk_info@tdw12_lym
WHERE
( ( text
LIKE
'%8_\%%'
escape
'\' OR text LIKE '
%9_\%%
' escape '
\
' OR text LIKE '
%100\%%
' escape '
\
' )
AND text LIKE '
%/dev/sdb%
' )
OR ( ( text like '
%9_\%%
' escape '
\
' OR text LIKE '
%100\%%
' escape '
\
' )
AND text NOT LIKE '
%/dev/sdb%
' );
SELECT count(*) AS cnt
INTO v_cnt13
FROM disk_info@tdw13_lym
WHERE ( ( text LIKE '
%8_\%%
' escape '
\
' OR text LIKE '
%9_\%%
' escape '
\
' OR text LIKE '
%100\%%
' escape '
\
' )
AND text LIKE '
%/dev/sdb%
' )
OR ( ( text like '
%9_\%%
' escape '
\
' OR text LIKE '
%100\%%
' escape '
\
' )
AND text NOT LIKE '
%/dev/sdb%
' );
SELECT count(*) AS cnt
INTO v_cnt21
FROM disk_info
WHERE ( ( text LIKE '
%8_\%%
' escape '
\
' OR text LIKE '
%9_\%%
' escape '
\
' OR text LIKE '
%100\%%
' escape '
\
' )
AND text LIKE '
%/dev/sdb%
' )
OR ( ( text like '
%9_\%%
' escape '
\
' OR text LIKE '
%100\%%
' escape '
\
' )
AND text NOT LIKE '
%/dev/sdb%
' );
v_disk_info := '
';
v_disk_info_all := '
';
IF v_cnt12 > 0 THEN
FOR i12 IN ( SELECT text as disk_info FROM disk_info@tdw12_lym ORDER BY rowid ) LOOP
v_disk_info := i12.disk_info;
v_disk_info_all := v_disk_info_all||v_disk_info||chr(10);
END LOOP;
END IF;
IF v_cnt13 > 0 THEN
FOR i13 IN ( SELECT text as disk_info FROM disk_info@tdw13_lym ORDER BY rowid ) LOOP
v_disk_info := i13.disk_info;
v_disk_info_all := v_disk_info_all||v_disk_info||chr(10);
END LOOP;
END IF;
IF v_cnt21 > 0 THEN
FOR i21 IN ( SELECT text as disk_info FROM disk_info ORDER BY rowid ) LOOP
v_disk_info := i21.disk_info;
v_disk_info_all := v_disk_info_all||v_disk_info||chr(10);
END LOOP;
END IF;
IF v_disk_info_all IS NULL THEN
v_disk_info_all := '
All
Disk
''
s
space
are OK!
';
END IF;
RETURN v_disk_info_all;
END;
/
----------------------------------------------------------------------------
-- *3.3. 创建存储过程调用函数,得到磁盘空间使用信息
CREATE OR REPLACE PROCEDURE get_disk_info_proc
AS
/******************************************************************************
** 功能:监控Oracle数据库服务器(10.4.1.12、10.4.1.13、10.4.1.21)
** 各磁盘空间的使用情况,如果其占用空间超过其总空间的80%,将邮件报警!
** 创建者:罗友谋
** 创建时间:2011.12.14
****************************************************************************/
v_disk_info varchar2(4000);
BEGIN
SELECT DISK_INFO_FUNC() INTO v_disk_info FROM dual;
IF v_disk_info <> '
All
Disk
''
s
space
are OK!
' THEN
PROCSENDEMAIL(v_disk_info,'
Disk
Space
Emergency!!!
','
ymluo@corp.tudou.com
','
13691147539@139.com
','
10.5.101.1
','
25
','
0
',NULL,NULL,NULL,'
bit
7
');
END IF;
-- dbms_output.put_line(v_disk_info);
END;
/
----------------------------------------------------------------------------
-- *3.4. 创建 Job 定时监控
-- job 1.1 -- 每15分钟执行一次
variable job_disk_info_proc number;
begin
dbms_job.submit(:job_disk_info_proc,'
get_disk_info_proc;
',sysdate,'
SYSDATE+1/96');
end
;
0 0
- oracle磁盘分析
- Oracle磁盘分析
- Oracle ASMlib磁盘创建
- Oracle共享磁盘配置
- Oracle GoldenGate磁盘要求
- oracle asmlib固化磁盘
- 磁盘性能分析
- 磁盘性能分析
- 服务器磁盘性能分析
- 磁盘DMA过程分析
- 磁盘IO高分析
- vfat文件系统磁盘分析
- 磁盘性能分析
- 相册磁盘缓存分析
- 磁盘性能分析Disk
- Linux磁盘分析
- Oracle ASM 磁盘组添加磁盘
- oracle udev 绑定磁盘 VitrualBox
- 推荐UML插件Green UML、AmaterasUML
- 浅析VB.NET局部静态变量————————【Badboy】
- tar: Error exit delayed from previous errors错误解决办法
- 转载一篇写的很好的测试分类
- C++ 公有继承、保护继承和私有继承中类成员的访问权限的控制
- Oracle磁盘分析
- 分支-07. 比较大小(10)
- 内存管理高级
- Java API 读取HDFS的单文件
- 使用 Spring 3 来创建 RESTful Web Services
- crm翻译导航栏
- Objective-C 总结
- oProfile的安装与使用
- 精华回顾!历届MDCC大会精彩演讲与议程汇总