飘灵儿 发表于 2015-1-16 22:39:54

MYSQL编程:ORACLE数据库办理员的职责

每个人都在使用它。MySQL是开源LAMP组合的一个标准组件:Linux、Apache、MySQL和Perl/PHP。根据Evans的调查,LAMP组合的迅速推广很大程度上代表着MySQL的被广泛接受。oracle|办理员|数据|数据库
ORACLE数据库办理员的职责


ORACLE数据库办理员应按以下体例对ORACLE数据库体系做按期监控:
(1).天天对ORACLE数据库的运转形态,日记文件,备份情形,数据
库的空间利用情形,体系资本的利用情形举行反省,发明并办理
成绩。
(2).每周对数据库工具的空间扩大情形,数据的增加情形举行监控,对数据库做安康反省,对数据库工具的形态做反省。
(3).每个月对表和索引等举行Analyze,反省表空间碎片,寻觅数据库
功能调剂的时机,举行数据库功能调剂,提出下一步空间办理
企图。对ORACLE数据库形态举行一次周全反省。
天天的事情
(1).确认一切的INSTANCE形态一般
上岸到一切数据库或例程,检测ORACLE背景历程:
$psCef|grepora
(2).反省文件体系的利用(残剩空间)。假如文件体系的残剩空间小于20%,需删除不必的文件以开释空间。
$dfCk
(3).反省日记文件和trace文件纪录alert和trace文件中的毛病。
毗连到每一个需办理的体系
?利用’telnet’
?对每一个数据库,cd到bdump目次,一般是$ORACLE_BASE/<SID>/bdump
?利用Unix‘tail’命令来检察alert_<SID>.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_free
FROM(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_chunks
FROMdba_free_spaceGROUPBYtablespace_name;
(8).监控数据库功能
运转bstat/estat天生体系呈报
大概利用statspack搜集统计数据
(9).反省数据库功能,纪录数据库的cpu利用、IO、buffer射中率等等
利用vmstat,iostat,glance,top等命令
(10).一样平常呈现成绩的处置。
每周的事情
(1).控数据库工具的空间扩大情形
依据本周天天的反省情形找到空间扩大很快的数据库工具,并接纳相
应的措施
--删除汗青数据
---扩表空间
altertablespace<name>adddatafile‘<file>’size<size>
---调剂数据工具的存储参数
nextextent
pct_increase
(2).监控数据量的增加情形
依据本周天天的反省情形找到纪录数目增加很快的数据库工具,并采
取响应的措施
--删除汗青数据
---扩表空间
altertablespace<name>adddatafile‘<file>’size<size>
(3).体系安康反省
反省以下内容:
init<sid>.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_objects
WHEREstatus=’INVALID’。
(5).反省不起感化的束缚
SELECTowner,constraint_name,table_name,
constraint_type,status
FROMdba_constraints
WHEREstatus=DISABLED’ANDconstraint_type=P
(6).反省有效的trigger
SELECTowner,trigger_name,table_name,status
FROMdba_triggers
WHEREstatus=DISABLED’
每个月的事情
(1).AnalyzeTables/Indexes/Cluster
analyzetable<name>estimatestatisticssample50percent;
(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.周保护历程
6.参考文献
----------------------------------------------------------------
一.日保护历程
A.检察一切的实例是不是已起
断定数据库是可用的,把每一个实例写进日记而且运转日呈报或是运转测试
文件。固然有一些操纵我们是但愿它能主动运转的。
可选择实行:用ORACLE办理器中的‘PROBE’事务来检察
B.查找新的告诫日记文件
1.连接每个操纵办理体系
2.利用‘TELNET’或是可对照程序
3.对每个办理实例,常常的实行$ORACLE_BASE/<SID>/bdump操
作,并使其能回退到把持数据库的SID。
4.在提醒下,利用UNIX中的‘TAIL’命令检察alert_<SID>.log,或是
用其他体例反省文件中比来时代的告诫日记
5.假如之前呈现过的一些ORA_ERRORS又呈现,将它纪录到数据库
恢复日记中而且细心的研讨它们,这个数据库恢复日记在〈FILE〉中
C.检察DBSNMP的运转情形
反省每一个被办理呆板的‘DBSNMP’历程并将它们纪录到日记中。
在UNIX中,在命令行中,键进psCef|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:webphase2default.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:
--<tablespace_name>=<amount>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<threshold>
--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(*))<&&THRESHOLD)
ORDERBYcount(*)desc
4.spacebound.sql
--spacebound.sql
--Toidentifyspace-boundobjects.Ifalliswell,norowsarereturned.
--Ifanyspace-boundobjectsarefound,lookatvalueofNEXTextent
--sizetofigureoutwhathappened.
--Thenusecoalesce(altertablespace<foo>coalesce.
--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
六.参考文献
1.Loney,KevinOracle8DBAHandbook
2.Cook,DavidDatabaseManagementfromCrisistoConfidence

3.Cox,ThomasB.TheDatabaseAdministrationMaturityModel




MySQL采用双重授权(DualLicensed),它们是GPL和MySQLAB制定的商业许可协议。

莫相离 发表于 2015-1-19 21:04:58

对一张百万级别的表建游标,同时又没有什么过滤条件,取得游标效率是如果直接SQL查询百万条数据;如果再对每条记录做处理,耗时将更长。

兰色精灵 发表于 2015-1-27 09:10:27

财务软件要用SQL也只是后台的数据库而已,软件都是成品的,当然多学东西肯定是有好处的..

再见西城 发表于 2015-2-5 05:55:15

我是一个ERP初学者,对于前台运用基本熟悉,但对于后台SQLServer的运用一点也不懂,特想学习下相关资料。至少懂得一些基本的运用。希望各位能给于建议,小弟再谢过!

灵魂腐蚀 发表于 2015-2-11 06:32:18

我是新手,正在学习数据库和操作系统,深感理论的泛广,唯有一步一步来,但是又感觉时间不够,收集了很多资料却总是没能认真的看完,希望有一个讨论板块,大家共同解决,共同分享,共同努力

精灵巫婆 发表于 2015-3-1 23:08:37

我们学到了什么?思考问题的时候从表的角度来思考问

简单生活 发表于 2015-3-11 00:54:46

其中最有名的应该是row_number了。这个终于解决了用临时表生成序列号的历史,而且SQLServer2005的row_number比Oracle的更先进。因为它把Orderby集成到了一起,不用像Oracle那样还要用子查询进行封装。

若天明 发表于 2015-3-17 17:11:51

学习SQL语言的话如果要学会去做网站就不是很难!但是要做数据库管理的话就有难度了!

变相怪杰 发表于 2015-3-24 15:47:47

理解了存储结构,再阅读下性能优化的章节基本上会对sqlserver有个清晰地认识
页: [1]
查看完整版本: MYSQL编程:ORACLE数据库办理员的职责