ORACLE运营维护手册

 

一、数据库日常工作

oracle管理员应按如下方式对oracle数据库系统做定期监控:

1、每天对oracle数据库的运行状态、日志文件、备份情况、数据库空间使用情况、系统资源使用情况进行检查,发现并解决问题。

2、每周对数据库对象的空间扩展情况、数据的增长情况进行监控、对数据库做健康检查、对数据库对象的状态做检查。

3、每月对表和索引等进行analyze、检查表空间碎片、寻找数据库性能调整的机会、进行数据库性能调整、提出下一步空间管理计划。对oracle数据库状态进行一次全面检查。

 

每天工作

1、确认所有的instance状态正常登录到所有数据库或实例,检测oracle后台进程:

select instance_name,status,host_name from gv$instance;

#ps -ef | grep ora

2、  确认ORACLE监听器状态正常。

3、检查文件系统的使用(剩余空间)。如果文件系统的剩余空间小于20%,需删除不用的文件以释放空间。#df –H

4、检查日志文件和trace文件记录alert和trace文件中的错误。

cd $ORACLE_BASE/oradata/<sid>/bdump

tail -f alert_<sid>.log

发现任何新的ORA_错误,记录并解决

5、检查数据库当日备份的有效性

对RMAN备份方式,检查第三方备份工具的备份日志以确定备份是否成功

对EXPORT备份方式,检查exp日志文件以确定备份是否成功

对其它备份方式,检查相应的日志文件

 

6、检查数据文件的状态记录状态不是“online"的数据文件,并做恢复。

select file_name,status,ONLINE_STATUS from dba_data_files where ONLINE_STATUS='OFFLINE'; "

7、检查表空间的使用情况及剩余表空间情况

SELECT a.tablespace_name "表空间名",  

       total / 1024 / 1024 "表空间大小(M)",  

       free / 1024 / 1024 "表空间剩余大小(M)",  

       (total - free) / 1024 / 1024 "表空间使用大小(M)",  

       ROUND((total - free) / total, 4) * 100 "使用率   %" 

  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;

 

 

 

select a.tablespace_name, round(a.total_size,1) "total(M)",  

round(a.total_size)-round(nvl(b.free_size,0),1) "used(M)",  

round(nvl(b.free_size,0),1) "free(M)",  

round(nvl(b.free_size,0)/total_size*100,1) "free rate(%)" 

from (select tablespace_name,sum(bytes)/1024/1024 total_size  

from dba_data_files  

group by tablespace_name) a,  

(select tablespace_name,sum(bytes)/1024/1024 free_size  

from dba_free_space  

group by tablespace_name) b  

where a.tablespace_name = b.tablespace_name(+)  

order by "free rate(%)"; 

--查看用户和默认表空间的对应关系

select username,default_tablespace from dba_users;

8、监控数据库性能

1)运行utlbstat.sql/utlestat.sql生成系统报告,或者使用statspace收集统计数据;

2)运行AWR报告;

9、检查数据库性能,记录数据库的CPU使用、IO、Buffer命中率等等,使用vmstat、iostat、 top

10、日常出现问题的处理

 

 

                       数据库每日工作检查清单

数据库管理员姓名:                        检查日期:

数据库名称

 

操作系统状态

 

项目

正常

不正常

异常原因

解决方法

 

数据库状态

 

 

 

 

 

监听器状态

 

 

 

 

 

磁盘空间使用

 

 

 

 

 

表空间状态

 

 

 

 

 

备份的状态

 

 

 

 

 

警告日志状态

 

 

 

 

 

监控异常状态

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

每周的工作

1、控制数据库对象空间扩展情况,根据本周每天的检查情况找到空间扩展很快的数据库对象,并采取相应的措施。

删除历史数据、扩展表空间、是否需要修改表存储参数。

alter tablespace <name> add datafile '<file>' size <size>

调整数据对象的存储参数 next extent pct_increase

2、监控数据量的增长情况

根据本周每天的检查情况找到记录数据数量增长很快的数据库对象,并采取相应的措施

删除历史数据、扩表空间

alter tablespace <name> add datafile '<file>' size <size>

3、延续每日监控数据库运作状况,按照需求修改数据参数。

4、根据每日监控数据库运行状况寻找关键,针对没有效率的SQL进行SQL优化。

 

5、系统健康检查

检查以下内容:

init<sid>.ora

controlfile

redo log file

archiveing

sort area size

tablespace(system,temporary,tablespace fragment)

datafiles(autoextend,location)

object(number of extent,next extent,index)

rollback segment

logging & tracing(alert.log,max_dump_file_size,sqlnet)

6、检查无效的数据库对象

select owner,object_name,object_type from dba_objects where status='INVALID'

7、检查不起作用的约束

select owner,constraint_name,table_name,constraint_type,status from dba_constraints

where status='DISABLED' and constraint_type='p'

8、检查无效的trigger

select owner,trigger_name,table_name,status from dba_triggers

where status='DISABLED'

9、检查无效的索引

select index_name,index_type,table_name,status from dba_indexes

where status='UNSABLE';

10、检查是否有新增的失效对象,可使用下列SQL指令查询确认对象状态。

select owner object_owner,object_name,object_type,status from dba_objects

where owner not in ('SYS','SYSTEM')

AND STATUS='INVALID'

ORDER BY owner,object_type,object_name

/

11、检查是否有表空间碎片,FSFI是可用碎片空间,数值最大值为100表示没有碎片,通常低于30%就需要进行重整操作。

select tablespace_name as "TABLEPSACE NAME",

sqrt(max(blocks)/sum(blocks))*(100/sqrt(sqrt(count(blocks)))) as "FSFI%"

from dba_free_space

group by  tablespace_name

order by 1

/

 

数据库每周工作检查清单

数据库管理员姓名:                        检查日期:

数据库名称

 

操作系统状态

 

项目

正常

不正常

异常原因

解决方法

 

表空间状态

 

 

 

 

 

索引

 

 

 

 

 

触发器

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

每月的工作

1、针对表及索引进行数据统计分析(每个月至少一次):Analyze tables/indexes/cluster

analyze table <name> estimate statistics sample 50 percent;

2、检查表空间碎片

根据本月每周的检查分析数据库碎片,找到相应的解决方法

3、寻找数据库性能调整机会

比较每天对数据库性能的监控报告,确定是否有必要对数据库性能进行调整

4、数据库性能调整,如有必要进行性能调整

5、提出下一步空间管理计划,根据每周的监控,提出空间管理的改进方法

6、产生每月表空间增长报告:可利用以下SQL来产生每月数据库增长数据报告,以及每月表空间增长数据报告。

每月数据库增长数据报告

select to_char(creation_time,'RRRR Month') "Month",

sum(bytes)/1024/1024/1024 "growth in GB"

from sys.v_$datafile

where creation_time>sysdate-365

group by to_char(creation_time,'RRRR Month')

/

每月表空间增长数据报告

select a.ts# as "tablespace no",b.name as "tablespace name",

to_char(a.creation_time,'RRRR Month') "Month",

sum(a.bytes)/1024/1024/1024 "growth in GB" from sys.v_$datafile a,sys.v_$tablespace B

where a.creation_time>sysdate-365

and a.ts#=b.ts#

group by a.ts#,b.name,to_char(a.creation_time,'RRRR Month')

/

7、每个月少检查一次是否有行链接、行迁移;

行链接:主要造成的原因是每笔数据过长,无法容纳在一个数据块里面。

行迁移:主要是当数据要更新时,造成每笔数据过长,必须前移另一个较大的数据块里面。

建立临时表,执行$ORACLE_HOME/RDBMS/ADMIN/UTLCHAIN.SQL会自动产生临时表.

产生分析指令.

select 'analyze table'||owner||'.'||table_name||'list chained rows into system.chained_rows;' from dba_tables

where owner='SYSTEM'

/

注: where owner='SYSTEM'可自行决定要针对哪一个方案下的表作分析.

目的是将分析出来的结果放入到CHAINED_ROWS表中,因此每次要执行前要将CHAINED_ROWS表清空或移除重建,防止重复计算.

3)执行报表.

select b.owner_name as  "owner",

a.table_name as "table name",

b.row_count as "row count",

a.num_rows as "total rows" from all_tables a,

(select b.owner_name,b.table_name,count(b.head_rowid) row_count from chained_rows b

group by b.owner_name,b.table_name) b

where a.table_name=b.table_name

/

8、检查备份计划及测试备份的可用性。

数据库每月工作检查清单

数据库管理员姓名:                        检查日期:

数据库名称

 

操作系统状态

 

项目

正常

不正常

异常原因

解决方法

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

二、

1、数据文件数量由4种因素所控制。

受限于操作系统:操作系统常会限制同一个PROCESS可以处理最大的文件数目。

受限于数据库:需要设置MAXDATAFILES最大可以拥有多少个文件。

受限于初始化参数文件,DB—FILES可限制数据库最大可开启多少个数据文件。

受限ORACLE版本,不同版本及对应的不同平台中,所限开启的数据文件数目不同。

2、查看REDO LOG文件分配及大小。

select a.group#,b.member,a.bytes/1024/1024 "SIZE(MB)" FROM V$LOG a,v$logfile b

where b.group#=a.group#

order by a.group#

/

3、查看归档日志文件的历史信息。

注:sequence#就是序列号。

select sequence#,to_char(first_time,'YYYY-MM-DD HH24:MI:SS') FIRST_TIME from v$log_history

/

 

4、行迁移:

   行链接:

   高水位线;

磁盘阵列的种类及数据库的数据文件

磁盘类型

说明

数据文件

说明

磁盘类型

RAID 0

 

控制文件

读写不明显,相当重要

RAID 0

RAID 1

 

初始化参数文件

只读不写

RAID 1

RAID 0+1

 

重做日志

 

RAID 1+0

RAID 1+0

 

归档日志

 

RAID 1或5

RAID 3

 

数据文件

读得多的用RAID 5

写得多的用RAID 1+0

临时表空间放RAID1+0上

 

RADI 5

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值