|
的预期的需要。当数据库中已有的数据是稳定的,数据日增长的平均
数也是可以计算出来,最小的剩余空间至少要能满足每天数据的增 长。
A) 运行‘FREE.SQL’来检查表空间的剩余空间。
B) 运行‘SPACE.SQL’来检查表空间中的剩余空间百分率
2. 检查回滚段
回滚段的状态一般是在线的,除了一些为复杂工作准备的专用 段,它一般状态是离线的。
a) 每个数据库都有一个回滚段名字的列表。
b) 你可以用V$ROLLSTAT 来查询在线或是离线的回滚段的现在状 态.
c) 对于所有回滚段的存储参数及名字,可用
DBA_ROLLBACK_SEGS 来查询。但是它不如V$ROLLSTAT 准确。
3. 识别出一些过分的增长
查看数据库中超出资源或是增长速度过大的段,这些段的存储参 数需要调整。
a) 收集日数据大小的信息, 可以用''''ANALYZE5PCT.SQL''''。如果你收集的是每晚的信息,则可跳过这一步。
b) 检查当前的范围,可用‘NR.EXTENTS.SQL’。
c) 查询当前表的大小信息。
d) 查询当前索引大小的信息。
e) 查询增长趋势。
4. 确定空间的范围。
如果范围空间对象的NEXT_EXTENT 比表空间所能提供的最大范围还要大,那么这将影响数据库的运行。如果我们找到了这个目标,可以用‘ALTER TABLESPACE COALESCE’调查它的位置,或加另外的数据文件。
A)运行‘SPACEBOUND.SQL’。如果都是正常的,将不返回任何行。
5. 回顾CPU,内存,网络,硬件资源论点的过程
A)检查CPU的利用情况,进到x:.htm =>system
metrics=>CPU 利用页,CPU 的最大限度为400,当CPU 的占用保持
在350 以上有一段时间的话,我们就需要查看及研究出现的问题。
G.将存档日志复制到备用数据库中
如果有一个备用数据库,将适当的存档日志复制到备用数据库的期望
位置,备用数据库中保存最近期的数据。
H. 经常查阅DBA 用户手册
如果有可能的话,要广泛的阅读,包括DBA 手册,行业杂志,新闻 组或是邮件列表。
-------------------------------------------------------------
二.晚间维护过程
大部分的数据库产品将受益于每晚确定的检查进程的运行。
A. 收集VOLUMETRIC 数据
1. 分析计划和收集数据
更准确的分析计算并保存结果。
a) 如果你现在没有作这些的话,用‘MK VOLFACT.SQL’来创建测定体积的 表。
b) 收集晚间数据大小的信息,用‘ANALYZE COMP.SQL’。
c) 收集统计结果,用‘POP VOL.SQL’。
d) 在空闲的时候检查数据,可能的话,每周或每个月进行。
我是用MS EXCEL 和ODBC 的联接来检查数据和图表的增长
-------------------------------------------------------------
三.每周维护过程
A. 查找被破坏的目标
1. 对于每个给定表空间的对象来说,NEXT_EXTENT 的大小是相同的,如12/14/98,缺省的NEXT_EXTENT 的DATAHI 为1G,DATALO 为500MB, INDEXES 为256MB。
A) 检查NEXT_EXTENT 的设置,可用‘NEXTEXT。SQL’。
B) 检查已有的EXTENTS,可用‘EXISTEXT。SQL’。
2. 所有的表都应该有唯一的主键
a) 查看那些表没有主键,可用‘NO_PK.SQL’。
b) 查找那些主键是没有发挥作用的,可用''''DIS_PK.SQL''''。
c) 所有作索引的主键都要是唯一的,可用''''NONUPK.SQL''''来检 查。
3. 所有的索引都要放到索引表空间中。运行‘MKREBUILD_IDX。SQL’
4. 不同的环境之间的计划应该是同样的,特别是测试环境和成品环境之间的计划应该相同。
a) 检查不同的2 个运行环境中的数据类型是否一致,可用''''DATATYPE.SQL''''。
b) 在2 个不同的实例中寻找对象的不同点,可用''''OBJ_COORD.SQL''''。
c) 更好的做法是,使用一种工具,象寻求软件的计划管理器那样的工具。
B. 查看是否有危害到安全策略的问题。
C. 查看报错的SQL*NET 日志。
1. 客户端的日志。
2. 服务器端的日志。
D..将所有的警告日志存档
E..供应商的主页
1. ORACLE 供应商
http://www.oracle.com
http://technet.oracle.com
http://www.oracle.com/support
http://www.oramag.com
2. Quest Software
http://www.quests.com
3. Sun Microsystems
http://www.sun.com
----------------------------------------------------------------
四.月维护过程
A.查看对数据库会产生危害的增长速度
1. 从以前的记录或报告中回顾段增长的变化以此来确定段增长带来危害
B. 回顾以前数据库优化性能的调整
1. 回顾一般ORACLE 数据库的调整点,比较以前的报告来确定有害的发展趋势。
C. 查看I/O 的屏颈问题
1. 查看前期数据库文件的活动性,比较以前的输出来判断有可能导致屏颈问题的趋势。
D. 回顾FRAGMENTATION
E. 计划数据库将来的性能
1. 比较ORACLE 和操作系统的CPU,内存,网络,及硬盘的利用率以此
来确定在近期将会有的一些资源争夺的趋势
2. 当系统将超出范围时要把性能趋势当作服务水平的协议来看
F. 完成调整和维护工作
1.使修改满足避免系统资源的争夺的需要,这里面包括增加新资源或使预期的停工。
----------------------------------------------------------------
五.附录
A. 日常程序
-- free.sql
--To verify free space in tablespaces
--Minimum amount of free space
--document your thresholds:
-- = m
SELECT tablespace_name, sum ( blocks ) as free_blk , trunc ( sum ( bytes ) /
(1024*1024) ) as free_m, max ( bytes ) / (1024) as big_chunk_k, count (*) as num_chunks
FROM dba_free_space GROUP BY tablespace_name;
1. Space.sql
-- space.sql
-- To check free, pct_free, and allocated space within a tablespace
-- 11/24/98
SELECT tablespace_name, largest_free_chunk
, nr_free_chunks, sum_alloc_blocks, sum_free_blocks
, to_char(100*sum_free_blocks/sum_alloc_blocks, ''''09.99'''') || ''''%''''
AS pct_free
FROM ( SELECT tablespace_name , sum(blocks) AS sum_alloc_blocks
FROM dba_data_files GROUP BY tablespace_name )
, ( SELECT tablespace_name AS fs_ts_name
, max(blocks) AS largest_free_chunk
, count(blocks) AS nr_free_chunks
, sum(blocks) AS sum_free_blocks FROM dba_free_space
GROUP BY tablespace_name ) WHERE tablespace_name = fs_ts_name
2. analyze5pct.sql
-- analyze5pct.sql
-- To analyze tables and indexes quickly, using a 5% sample size
-- (do not use this script if you are performing the overnight
-- collection of volumetric data)
-- 11/30/98
BEGIN
dbms_utility.analyze_schema ( ''''&OWNER'''', ''''ESTIMATE'''', NULL, 5 ) ;
END ;
/
3. nr_extents.sql
-- nr_extents.sql
-- To find out any object reaching
-- extents, and manually upgrade it to allow unlimited
-- max_extents (thus only objects we *expect* to be big
-- are allowed to become big)
-- 11/30/98
SELECT e.owner, e.segment_type , e.segment_name , count(*) as nr_extents ,
s.max_extents
, to_char ( sum ( e.bytes ) / ( 1024 * 1024 ) , ''''999,999.90'''') as MB
FROM dba_extents e , dba_segments s
WHERE e.segment_name = s.segment_name
GROUP BY e.owner, e.segment_type , e.segment_name , s.max_extents
HAVING count(*) > &THRESHOLD
上一页 [1] [2] [3] [4] 下一页 没有相关教程
|