|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
这些过程被存储和运行在数据库服务器上,以减少在客户端的处理过程,从而最大限度地提高了处理能力,因为通常情况下数据库服务器会运行地更快。存储过程并不是MySQL独有的功能,但是这个最近新增加的功能使得这个数据库比以前更具吸引力了。oracle|办理员|数据|数据库
应按以下体例对ORACLE数据库体系做按期监控:
?
(1).天天对ORACLE数据库的运转形态,日记文件,备份情形,数据库的空间利用情形,体系资本的利用情形举行反省,发明并办理成绩。
(2).每周对数据库工具的空间扩大情形,数据的增加情形举行监控,对数据库做安康反省,对数据库工具的形态做反省。
(3).每个月对表和索引等举行Analyze,反省表空间碎片,寻觅数据库功能调剂的时机,举行数据库功能调剂,提出下一步空间办理企图,对ORACLE数据库形态举行一次周全反省。
天天的事情:
(1).确认一切的INSTANCE形态一般。
上岸到一切数据库或例程,检测ORACLE背景历程:
$ps–ef|grepora
(2).反省文件体系的利用(残剩空间)。假如文件体系的残剩空间小于20%,需删除不必的文件以开释空间:
$df–k
(3).反省日记文件和trace文件纪录alert和trace文件中的毛病。
毗连到每一个需办理的体系:
利用telnet
对每一个数据库,cd到bdump目次,一般是$ORACLE_BASE/bdump
利用Unixtail命令来检察alert_.log文件,假如发明任何新的ORA-毛病,纪录并办理。
(4).反省数据库当日备份的无效性。
对RMAN备份体例:
反省第三方备份工具的备份日记以断定备份是不是乐成。
对EXPORT备份体例:
反省exp日记文件以断定备份是不是乐成
对其他备份体例:
反省响应的日记文件
(5).反省数据文件的形态纪录形态不是“online”的数据文件,并做恢复:
Selectfile_namefromdba_data_fileswherestatus=OFFLINE;
(6).反省表空间的利用情形:
SELECTtablespace_name,max_m,count_blocksfree_blk_cnt,sum_free_m,to_char(100*sum_free_m/sum_m,99.99)||%ASpct_freeFROM(SELECTtablespace_name,sum(bytes)/1024/1024ASsum_mFROMdba_data_filesGROUPBYtablespace_name),(SELECTtablespace_nameASfs_ts_name,max(bytes)/1024/1024ASmax_m,count(blocks)AScount_blocks,sum(bytes/1024/1024)ASsum_free_mFROMdba_free_spaceGROUPBYtablespace_name)WHEREtablespace_name=fs_ts_name;
(7).反省残剩表空间:
SELECTtablespace_name,sum(blocks)asfree_blk,trunc(sum(bytes)/(1024*1024))asfree_m,max(bytes)/(1024)asbig_chunk_k,count(*)asnum_chunksFROMdba_free_spaceGROUPBYtablespace_name;
(8).监控数据库功能:
运转bstat/estat天生体系呈报,大概利用statspack搜集统计数据;
(9).反省数据库功能,纪录数据库的cpu利用、IO、buffer射中率等等;
利用vmstat,iostat,glance,top等命令。
(10).一样平常呈现成绩的处置。
每周的事情:
(1).监控数据库工具的空间扩大情形:
依据本周天天的反省情形找到空间扩大很快的数据库工具,并接纳响应的措施
--删除汗青数据
---扩表空间
altertablespaceadddatafile‘xxxx.dbf’size10M;
---调剂数据工具的存储参数
nextextent
pct_increase
(2).监控数据量的增加情形
依据本周天天的反省情形找到纪录数目增加很快的数据库工具,并接纳响应的措施
--删除汗青数据
---扩表空间
altertablespaceadddatafile‘xxx.dbf’size100M;?
(3).体系安康反省
反省以下内容:
init.ora
controlfile
redologfile
archiving
sortareasize
tablespace(system,temporary,tablespacefragment)
datafiles(autoextend,location)
object(numberofextent,nextextent,index)
rollbacksegment
logging&tracing(alert.log,max_dump_file_size,sqlnet)
(4).反省有效的数据库工具:
SELECTowner,object_name,object_typeFROMdba_objectsWHEREstatus=INVALID;
(5).反省不起感化的束缚
SELECTowner,constraint_name,table_name,constraint_type,statusFROMdba_constraints
WHEREstatus=DISABLED’ANDconstraint_type=P;
(6).反省有效的trigger
SELECTowner,trigger_name,table_name,statusFROMdba_triggersWHEREstatus=DISABLED’;
每个月的事情
(1).AnalyzeTables/Indexes/Cluster
analyzetableestimatestatistiCSSample50percent;
(2).反省表空间碎片
依据本月每周的反省剖析数据库碎片情形,找到响应的办理办法。
(3).寻觅数据库功能调剂的时机
对照天天对数据库功能的监控呈报,断定是不是有需要对数据库功能举行调剂
(4).数据库功能调剂
若有需要,举行功能调剂
(5).提出下一步空间办理企图
依据每周的监控,提出空间办理的改善办法
OracleDBA一样平常办理
目标:这篇文档有很具体的材料纪录着对一个乃至更多的ORACLE数据库天天的,每个月的,每一年的运转的形态的了局及反省的了局,在文档的附录中你将会看到一切反省,修正的SQL和PL/SQL代码。
目次
1.一样平常保护程序
A.反省已起的一切实例
B.查找一些新的告诫日记
C.反省DBSNMP是不是在运转
D.反省数据库备份是不是准确
E.反省备份到磁带中的文件是不是准确
F.反省数据库的功能是不是一般公道,是不是有充足的空间和资本
G.将文档日记复制到备份的数据库中
H.要常看DBA用户手册
2.晚间保护程序
A.搜集VOLUMETRIC的数据
3.每周保护事情
A.查找那些损坏划定规矩的OBJECT
B.查找是不是有违背平安战略的成绩
C.检察毛病中央的SQL*NET日记
D.将一切的告诫日记存档
E.常常会见供给商的主页
4.月保护程序
A.检察对数据库会发生伤害的增加速率
B.回忆之前数据库优化功能的调剂
C.检察I/O的屏颈成绩
D.回忆FRAGMENTATION
E.未来的实行企图
F.检察调剂点和保护
5.附录
A.月保护历程
B.晚间保护历程
C.周保护历程
?
一.日保护历程
A.检察一切的实例是不是已起
断定数据库是可用的,把每一个实例写进日记而且运转日呈报或是运转测试
文件。固然有一些操纵我们是但愿它能主动运转的。
可选择实行:用ORACLE办理器中的‘PROBE’事务来检察
B.查找新的告诫日记文件
1.连接每个操纵办理体系
2.利用‘TELNET’或是可对照程序
3.对每个办理实例,常常的实行$ORACLE_BASE//bdump操
作,并使其能回退到把持数据库的SID。
4.在提醒下,利用UNIX中的‘TAIL’命令检察alert_.log,或是用其他体例反省文件中比来时代的告诫日记。
5.假如之前呈现过的一些ORA_ERRORS又呈现,将它纪录到数据库恢复日记中而且细心的研讨它们,这个数据库恢复日记在〈FILE〉中。
C.检察DBSNMP的运转情形
反省每一个被办理呆板的‘DBSNMP’历程并将它们纪录到日记中。
在UNIX中,在命令行中,键进ps–ef|grepdbsnmp,将回看到2个DBSNMP历程在运转。假如没有,重启DBSNMP。
D.查数据库备份是不是乐成
E.反省备份的磁带文档是不是乐成
F.反省对公道的功能来讲是不是有充足的资本
1.反省在表空间中有无残剩空间。
对每个实例来讲,反省在表空间中是不是存在有残剩空间来满意当天
的预期的必要。当数据库中已有的数据是不乱的,数据日增加的均匀
数也是能够盘算出来,最小的残剩空间最少要能满意天天数据的增长。
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比表空间所能供应的最年夜局限还要年夜,那末这将影响数据库的运转。假如我们找到了这个方针,能够用‘ALTERTABLESPACECOALESCE’查询拜访它的地位,或加别的的数据文件。
A)运转‘SPACEBOUND.SQL’。假如都是一般的,将不前往任何行。
5.回忆CPU,内存,收集,硬件资本论点的历程
A)反省CPU的使用情形,进到x:.htm=>system
metrics=>CPU使用页,CPU的最年夜限制为400,当CPU的占用坚持
在350以上有一段工夫的话,我们就必要检察及研讨呈现的成绩。
G.将存档日记复制到备用数据库中
假如有一个备用数据库,将得当的存档日记复制到备用数据库的希冀
地位,备用数据库中保留比来期的数据。
H.常常查阅DBA用户手册
假如有大概的话,要普遍的浏览,包含DBA手册,行业杂志,旧事组或是邮件列表。
-------------------------------------------------------------
二.晚间保护历程
年夜部分的数据库产物将受害于每晚断定的反省历程的运转。
A.搜集VOLUMETRIC数据
1.剖析企图和搜集数据
更正确的剖析盘算并保留了局。
a)假如你如今没有作这些的话,用‘MKVOLFACT.SQL’来创立测定体积的表。
b)搜集晚间数据巨细的信息,用‘ANALYZECOMP.SQL’。
c)搜集统计了局,用‘POPVOL.SQL’。
d)在余暇的时分反省数据,大概的话,每周或每月举行。
我是用MSEXCEL和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.ckuyun.com
http://technet.oracle.com
http://www.ckuyun.com/support
http://www.oramag.com
2.QuestSoftware
http://www.quests.com
3.SunMicrosystems
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
--Toverifyfreespaceintablespaces
--Minimumamountoffreespace
--documentyourthresholds:
--=m
SELECTtablespace_name,sum(blocks)asfree_blk,trunc(sum(bytes)/
(1024*1024))asfree_m,max(bytes)/(1024)asbig_chunk_k,count(*)asnum_chunks
FROMdba_free_spaceGROUPBYtablespace_name;
1.Space.sql
--space.sql
--Tocheckfree,pct_free,andallocatedspacewithinatablespace
--11/24/98
SELECTtablespace_name,largest_free_chunk
,nr_free_chunks,sum_alloc_blocks,sum_free_blocks
,to_char(100*sum_free_blocks/sum_alloc_blocks,09.99)||%
ASpct_free
FROM(SELECTtablespace_name,sum(blocks)ASsum_alloc_blocks
FROMdba_data_filesGROUPBYtablespace_name)
,(SELECTtablespace_nameASfs_ts_name
,max(blocks)ASlargest_free_chunk
,count(blocks)ASnr_free_chunks
,sum(blocks)ASsum_free_blocksFROMdba_free_space
GROUPBYtablespace_name)WHEREtablespace_name=fs_ts_name
2.analyze5pct.sql
--analyze5pct.sql
--Toanalyzetablesandindexesquickly,usinga5%samplesize
--(donotusethisscriptifyouareperformingtheovernight
--collectionofvolumetricdata)
--11/30/98
BEGIN
dbms_utility.analyze_schema(&OWNER,ESTIMATE,NULL,5);
END;
/
3.nr_extents.sql
--nr_extents.sql
--Tofindoutanyobjectreaching
--extents,andmanuallyupgradeittoallowunlimited
--max_extents(thusonlyobjectswe*expect*tobebig
--areallowedtobecomebig)
--11/30/98
SELECTe.owner,e.segment_type,e.segment_name,count(*)asnr_extents,
s.max_extents
,to_char(sum(e.bytes)/(1024*1024),999,999.90)asMB
FROMdba_extentse,dba_segmentss
WHEREe.segment_name=s.segment_name
GROUPBYe.owner,e.segment_type,e.segment_name,s.max_extents
HAVINGcount(*)>&THRESHOLD
OR((s.max_extents-count(*))
ORDERBYcount(*)desc
4.spacebound.sql
--spacebound.sql
--Toidentifyspace-boundobjects.Ifalliswell,norowsarereturned.
--Ifanyspace-boundobjectsarefound,lookatvalueofNEXTextent
--sizetofigureoutwhathappened.
--Thenusecoalesce(altertablespacecoalesce.
--Lastly,addanotherdatafiletothetablespaceifneeded.
--11/30/98
SELECTa.table_name,a.next_extent,a.tablespace_name
FROMall_tablesa,
(SELECTtablespace_name,max(bytes)asbig_chunk
FROMdba_free_space
GROUPBYtablespace_name)f
WHEREf.tablespace_name=a.tablespace_name
ANDa.next_extent>f.big_chunk
B.每晚处置程序
1.mk_volfact.sql
--mk_volfact.sql(onlyrunthisoncetosetitup;donotrunitnightly!)
----TableUTL_VOL_FACTS
CREATETABLEutl_vol_facts(
table_nameVARCHAR2(30),
num_rowsNUMBER,
meas_dtDATE)
TABLESPACEplatab
STORAGE(
INITIAL128k
NEXT128k
PCTINCREASE0
MINEXTENTS1
MAXEXTENTSunlimited
)
/
--PublicSynonym
CREATEPUBLICSYNONYMutl_vol_factsFOR&OWNER..utl_vol_facts
/
--GrantsforUTL_VOL_FACTS
GRANTSELECTONutl_vol_factsTOpublic
/
2.analyze_comp.sql
--
--analyze_comp.sql
--
BEGIN
sys.dbms_utility.analyze_schema(&OWNER,COMPUTE);
END;
/
3.pop_vol.sql
--
--pop_vol.sql
--
insertintoutl_vol_facts
selecttable_name
,NVL(num_rows,0)asnum_rows
,trunc(last_analyzed)asmeas_dt
fromall_tables--orjustuser_tables
whereownerin(&OWNER)--oracomma-separatedlistofowners
/
commit
/
C.每周处置程序
1.nextext.sql
--
--nextext.sql
--
--TofindtablesthatdontmatchthetablespacedefaultforNEXTextent.
--Theimplicitrulehereisthateverytableinagiventablespaceshould
--usetheexactsamevalueforNEXT,whichshouldalsobethetablespaces
--defaultvalueforNEXT.
--
--ThistellsuswhatthesettingforNEXTisfortheseobjectstoday.
--
--11/30/98
SELECTsegment_name,segment_type,ds.next_extentasActual_Next
,dt.tablespace_name,dt.next_extentasDefault_Next
FROMdba_tablespacesdt,dba_segmentsds
WHEREdt.tablespace_name=ds.tablespace_name
ANDdt.next_extent!=ds.next_extent
ANDds.owner=UPPER(&OWNER)
ORDERBYtablespace_name,segment_type,segment_name
2.existext.sql
--
--existext.sql
--
--Tocheckexistingextents
--
--Thistellsushowmanyofeachobjectsextentsdifferinsizefrom
--thetablespacesdefaultsize.Ifthisreportshowsalotofdifferent
--sizedextents,yourfreespaceislikelytobecomefragmented.Ifso,
--thistablespaceisacandidateforreorganizing.
--
--12/15/98
SELECTsegment_name,segment_type
,count(*)asnr_exts
,sum(DECODE(dx.bytes,dt.next_extent,0,1))asnr_illsized_exts
,dt.tablespace_name,dt.next_extentasdflt_ext_size
FROMdba_tablespacesdt,dba_extentsdx
WHEREdt.tablespace_name=dx.tablespace_name
ANDdx.owner=&OWNER
GROUPBYsegment_name,segment_type,dt.tablespace_name,dt.next_extent
3.No_pk.sql
--
--no_pk.sql
--
--TofindtableswithoutPKconstraint
--
--11/2/98
SELECTtable_name
FROMall_tables
WHEREowner=&OWNER
MINUS
SELECTtable_name
FROMall_constraints
WHEREowner=&&OWNER
ANDconstraint_type=P
4.disPK.sql
--
--disPK.sql
--
--Tofindoutwhichprimarykeysaredisabled
--
--11/30/98
SELECTowner,constraint_name,table_name,status
FROMall_constraints
WHEREowner=&OWNERANDstatus=DISABLED’ANDconstraint_type=P
5.nonuPK.sql
--
--nonuPK.sql
--
--TofindtableswithnonuniquePKindexes.RequiresthatPKnames
--followanamingconvention.Analternativequeryfollowsthat
--doesnothavethisrequirement,butrunsmoreslowly.
--
--11/2/98
SELECTindex_name,table_name,uniqueness
FROMall_indexes
WHEREindex_namelike&PKNAME%
ANDowner=&OWNERANDuniqueness=NONUNIQUE
SELECTc.constraint_name,i.tablespace_name,i.uniqueness
FROMall_constraintsc,all_indexesi
WHEREc.owner=UPPER(&OWNER)ANDi.uniqueness=NONUNIQUE
ANDc.constraint_type=PANDi.index_name=c.constraint_name
6.mkrebuild_idx.sql
--
--mkrebuild_idx.sql
--
--Rebuildindexestohavecorrectstorageparameters
--
--11/2/98
SELECTalterindex||index_name||rebuild
,tablespaceINDEXESstorage
||(initial256Knext256Kpctincrease0);
FROMall_indexes
WHERE(tablespace_name!=INDEXES
ORnext_extent!=(256*1024)
)
ANDowner=&OWNER
/
7.datatype.sql
--
--datatype.sql
--
--Tocheckdatatypeconsistencybetweentwoenvironments
--
--11/30/98
SELECT
table_name,
column_name,
data_type,
data_length,
data_precision,
data_scale,
nullable
FROMall_tab_columns--firstenvironment
WHEREowner=&OWNER
MINUS
SELECT
table_name,
column_name,
data_type,
data_length,
data_precision,
data_scale,
nullable
FROMall_tab_columns@&my_db_link--secondenvironment
WHEREowner=&OWNER2
orderbytable_name,column_name
8.obj_coord.sql
--
--obj_coord.sql
--
--Tofindoutanydifferenceinobjectsbetweentwoinstances
--
--12/08/98
SELECTobject_name,object_type
FROMuser_objects
MINUS
SELECTobject_name,object_type
FROMuser_objects@&my_db_link;
?
无疑希望员工得到系统、有深度的培训,显然MySQL在这一点上还做得很不够。 |
|