还剩45页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
1-Oracle数据库日常管理方案精Oracle数据库的运维处理,更要紧的是做好数据库的管理工作,做好数据库的检查与备份工作,然后需要熟悉有关的逻辑结构故障处理方法、物理结构故障处理方法,应对数据库损坏的情况,在数据库发生损坏而无法修复的时候,能利用数据库管理工作中所做的数据备份及时恢复系统、数据,恢复正常生产工作.数据库管理Oracle数据库的管理要紧是要做好日常的检查管理工作,并检查好数据库的备份情况,在发生紧急情况时能及时不仅切换到备用系统上进行工作,并要能在数据库数据出现特殊的时候,能及时恢复数据因此,做好日常的检查与管理工作特别重要,要紧工作包含•数据库的性能监控检查•数据库状态巡检检查•数据库备份情况与可恢复性检查
1.
1.
1.数据库性能监控管理通过对数据库性能监控的管理工作,能够有效的防范风险事件的发生,并能从长时间的运行数据中,总结出数据库性能的状态,为系统性能优化、隐患事件排查提供更好的根据查找前十条性能差的sql SELECT*FROM selectPARSING_USER_ID,EXECUTIONS,SORTS,COMMAND_TYPE,DISK_READS,sql_text FROM v$sqlarea orderBY disk_reads DESCwhere ROWNUM10;I.
1.
1.
2.查询有enqueue等待的事件SELECT b.SID,b.serial#,b.username,machine,event,wait_time,CHR BITANDpl,-16777216/16777215||CHR BITANDpl,16711680/65535“Enqueue Type1FROM v$session_wait a,v$session bWHERE a.event NOTLIKE SQL*N%AND a.event NOTLIKE Ydbms%AND a.SID=b.SID ANDb.SID8AND a.event=enqueue ORDER BY username;II.
1.
3.如何确定哪个表空间读写频繁select name,phyrds,phywrts,readtim,writetim from v$filestat a,v$dbfile bwhere a.file#=b.file#order byreadtim desc;SELECT name,value FROM v$sysstat WHEREname INsorts memory,sorts disk;监控当前数据库谁在运行什么SQL语句SELECT osuser,username,sql_text from v$session a,v$sqltext bwhere a.sql_address=b.address order by address,piece;监控字典缓冲区select sumpins-reloads/sumpins nlib cache,from v$librarycache;select sumgets-getmisses-usage-fixed/sumgets nrow cachen from v$rowcache;select sumpinsexecutions”,sumreloads cachemisses whileexecuting11from v$librarycache;后者除往常者,此比率小于1%,接近0%为好select sumgetsdictionary gets”,sumgetmisses dictionarycache getmisses1from v$rowcache;
1.
1.
1.
24.监控MTS selectbusy/busy+idle“shared serversbusy1from v$dispatcher;此值大于
0.5时,参数需加大select sumwait/sumtotalq ndispatcher waits1from v$queue where type=dispatcher;select count*from v$dispatcher;select servers_highwater from v$mts;servers_highwater接近mts_max_servers时,参数需加大
1.
1.
1.
25.碎片程度select tablespace_name,counttablespace_name from dba_free_space group by tablespace__name havingcounttablespace_name10;alter tablespacename coalesce;alter tablename deallocateunused;create orreplace viewts_blocks_v asselect tablespace_name,block_id,bytes,blocks,Tree space*segment_name from dba_free_space unionall select tablespace_name,block_id,bytes,blocks,segment_name fromdba_extents;select*from ts_blocks_v;select tablespace_name,sumbytes,maxbytes,countblock_id fromdba_free_space group by tablespace_name;
1.
1.
1.
26.查看碎片程度高的表SELECT segment_name table_name,COUNT*extents FROM dba_segments WHEREowner NOTIN SYS,SYSTEM GROUP BY segment_name HAVINGCOUNT*=SELECT MAXCOUNT^FROM dba_segments GROUPBY segment_name;
1.
1.
1.
27.表、索引的存储情况检查select segment_name,sumbytes,count*ext_quan fromdba_extents where tablespace_name=tablespace_name,and segment_type=TABLE groupby tablespace_name,segment_name;select segment_name,count*fromdba_extents wheresegment_type=INDEX andowner=owner groupby segment_name;
1.
1.
1.
28.找使用CPU多的用户session cpuused by this session查找各回话连接的CPU使用率select a.sid,spid,status,substra.program,1,40prog,a.terminal,osuser,value/60/100value from v$session a,v$process b,v$sesstat cwhere c.statistic#=12and c.sid=a.sid anda.paddr=b.addr order by valuedesc;
1.
1.
1.
29.寻找CPU使用过量的session SELECT sql_text FROM v$sqltext aWHERE a.hash_value,a.address INSELECT decodesql_hash_value,0,prev_hash_value,sql_hash_value,decodesql_hash_value,0,prev_sql_addr,sql_address FROMv$session bWHERE b.paddr=SELECT addrFROMv$process cWHERE c.spid=pid ORDERBY pieceASC;
1.
1.
2.数据库巡检管理
1.
1.
3.L日常检测
1.
1.
2.L
1.检测系统卷状态df-k能够看到系统各个卷的使用情况;假如文件系统的剩余空间小于20%,需删除不用的文件以释放空间或者找系统管理员调整空间大小tt df-k Filesystem1024-blocks FreezUsed Iused ZlusedMounted onL/deu/hd4104857627237675z15403z/Zdeu/hd23145728163693248z3714810Z ZusrL/deu/hd9uar104857610144764z532IN Zuar L/deu/hd33145728189711240z43992z ZtnpZdeu/hdl6553665160lx7lx/home/proc—————/proc Zdeu/hdl0opt52428843905217z16952z/opt/deu/lu0210485760202132081z1152155z/wps Zdeu/lu01524288003035012843z3217IN ZoradataZdeu/lu0010485760562436847z733923z Zoracle
1.
1.
2.
1.
2.检查表空间的使用情况SELECT tablespace_name,max_m,count_blocks free_blk_cnt,sum_free_m,to_char100*sum_free_m/sum_m,*
99.99||%|AS pct_free FROMSELECT tablespace_name,sumbytes/1024/1024AS sum_m FROM dba_data_files GROUPBY tablespace_name,SELECT tablespace_name ASfs_ts_name,maxbytes/1024/1024AS max_m,countblocks AScount_blocks,sumbytes/1024/1024AS sum_free_m FROMdba_free_space GROUPBY tablespace_nameWHERE tablespace_name=fs_ts_name:rABLESPACE_NAME MAX_M FREE_BLK._CNT SUM_FREE_M PCT-FRE CITICIWCM
199.
93751199.
937566.65z CWMLITE8518585DRSVS
90.
3125190.
312590.31Z EXAMPLE
97.
687519.
687541.76Z ICMLFQ
32297.
251297.
2599.08Z ICMLNF
3224.
5124.
598.00Z ICMLSNDX,
43751.
43754.38z ICMSFQ
04142.
56251142.
562595.04X ICMUFQ
0421.
9375121.
937587.75彳INDX
24.
9375124.
937599.75Z IWCM
99.
9375199.
937599.94Z TABLESPA CEJAME MAX_M FREEJLK._CNT SUM_FREE_M PCT_FRE0DM10-
5625110.
562552.81Z SYSTEM
150.
81251150.
812530.16%TOOLS
9.
937519.
937599.384UNDOTBS
119027409.
37581.88Z USERS.
937521.
1251.13z XDB
15.
3125115.
312525.52%select sumbytes/l024*1024as free_space,tablespace_name fromdba_free_space groupby tablespace_name;
1.
1.
2.
13.检测表空间状态DBA_FREE_SPACE是数据库的一个视图,能够看到数据库的空间使用信息SELECT tablespace_name,sumbytes/1024/1024”MB Free1FROMdba_free_space WHEREtablespace_name oTEMP*GROUPBYtablespace_name;TABLESPACE_NAME MBFree CITICIWCM
199.9375CWMLITE85DRSVS
90.3125EXAMPLE
97.6875INDX
24.9375IWCM
99.9375ODM
10.5625SVSTEM
153.875TOOLS
9.9375UNDOTBS1373USERS
49.9375TABLESPACE_NAME MBFree XDB
15.
31251.
1.
2.1A.检SJ Oracle运行状态ORACLE的状态能够通确认所有的INSTANCE状态正常登陆到所有数据库或者例程,检测ORACLE后台进程$ps-eflgrep ora来查看;it ps-ef grep oracle oracle57601019:33:49—0:23ora_ckpt_testwps oracle162041019:33:49—0:06ora_snon_testwps oracle280181019:22:07—0:00/oracle Zapp/pro duet/
9.
2.0/bin/t hslsnrLISTENER-inherit oracle290121019:33:480:08ora_lgwr_testwps—oracle314661019:33:48—0:08ora_dbw0_testwps oracle317161019:33:44—0:17ora_pnon_testwps oracle461961019:33:49—0:00ora_s000_testwps oracle492621019:33:49—0:00ora j*eco_testwps oracle509161021:23:11—0:00oracletestwps LOCAL=NO oracle1318721019:33:50—0:00ora_d000_testwps oracle1343981021:24:44—0:00oracletestwps LOCAL=NO root13656838362116:00:24pts/10:00greporacleL
1.
2.
1.
5.检查数据库版本信息sqlplus/as sysdba^^select*from v$version;SQL select*from u$uersion;BANNER OracleiEnterprise Edition Release
9.
2.
0.
6.0-64bit ProductionPL/SQL Release
9.
2.
0.
6.0—Production CORE
9.
2.
0.
6.0Production TNSfor IBM/AIX RISCSysten/6000Uevsion
9.
2.
0.
6.0-Production NLSRTLUersion
9.
2.
0.
6.0-Production
1.
1.
2.
1.
6.检查日志文件与trace文件记录alert与trace文件中的错误连接到每个需管理的系统,使用,telnet,登陆,对每个数据库,cd到bdump目录,通常是$ORACLE_BASE/SID/bdump,使用Unix taif命令来查看alert_SID.log文件,假如发现任何新的ORA-错误,记录并解决5tail alert_testwps.log JCompletedcreate tablespaceICMSFQ04datafile/oracle/app/o UedDec3141958200899create tablespaceICMLSNDX datafile/oracle/app/oradata/testwps/index/testwps_CMLSNDX_
01.dbf size10M reuseautoextend onnext IBMnaxsize UNLIMITEDextent anagenentlocal autoallocate9ORA-1543signalled duringcreate tablespaceICMLSNDK datafile/oracle/app/o..Wed Dec31517402008Thread1aduanced tolog sequence18Current logtt3seqtt18nentt0/oracle/app/oradata/testwps/redo
03.log WedDec31527262008Thread1aduanced tolog sequence19Current logtt4seqit19nemtt0/oracle/app/oradata/testwps/iedo
04.log Ll.
2.
1.
7.查看会话挂起情况关闭不必要的会话命令如下select sid,serial#,username,program,machine,status from v$session;手工断开某个会话,则执行alter systemkill sessionf SID,SERIAL#;SID SERIAL*USERNAME ROGRAMACHI NESTATUS86043ICMADMIN estportal ACTIUE96651SYS qlplusPtestportalTNS Ul-U3estportalACTIUESID SERIAL*USERNAME ROGRAMACHI NESTATUS Ll.
2.
1.
8.检查数据库当日备份的有效性对RMAN备份方式检查第三方备份工具的备份日志以确定备份是否成功对EXPORT备份方式检查exp日志文件以确定备份是否成功对其他备份方式检查相应的日志文件
1.
1.
2.
1.
9.检查数据文件的状态记录状态不是“online”的数据文件需做恢复Select file_name fromdba_data_files wherestatus=,OFFLINE,;
1.
1.
2.
2.定期检测LL
2.
2.
1.系统健康检查检查下列内容initsid.ora controlfileredo log file archivingsort areasize tablespacesystem,temporary,tablespace fragmentdatafilesautoextend,location objectnumberof extent,next extent,index rollbacksegment loggingtracingalert.log,max_dump_file_size,sqlnet
1.
1.
2.
2.
2.检查无效的数据库对象SELECT owner,object_name,object_type FROMdba_objects WHEREstatus=INVALID I.
1.
2.
23.检查不起作用的约束SELECT owner,constraint_name,table_name,constraint_type,status FROMdba_constraints WHEREstatus=DISABLED*AND constraint_type=P;II.
2.
2.
4.检查无效的trigger selectowner,trigger_name,table_name,status fromdba_triggers wherestatus=DISABLED,;III
2.
3.Oracle数据库巡检样本
1.ORACLE数据库常规检查
2.ORACLE常规检查Database OverviewDB NameORCL GlobalName HostName LocalhostInstance NameOrel InstanceStart18-Nov-200814:14:01Time RestrictedMode NOArchive LogMode ARCHIVELOGV$Version Banner OracleDatabase10g EnterpriseEdition Release
10.
2.
0.
1.0-64bi PL/SQL Release
10.
2.
0.
1.0-Production CORE
10.
2.
0.
1.0Production TNSfor Linux:Version
10.
2.
0.
1.0-Production NLSRTLVersion
10.
2.
0.
1.0-Production
3.基本参数配置Parameter NameValue Modifiedaudit_file_dest/o racle/ad min/o rcl/ad umpFALSE background_dump_dest/o racle/ad min/o rcl/bd umpFALSE Compatible
10.
2.
0.
1.0FALSE control_files/oracle/oradata/orcl/control
01.ctl,/oracle/oradata/orcl/control
02.ctl,FALSE/o racle/o radata/o rcl/control
03.ctl core_dump_dest/o racle/ad min/orcl/cdump FALSE db_block_size8192FALSE db_domain Nullvalue FALSE db_file_multiblock_read_count16FALSEdb_name OrelFALSEdb_recovery_file_dest/oracle/flash_recovery_area FALSEdb_recovery_file_dest_size21474836480FALSE DispatchersPROTOCOL=TCP SERVICE=orclXDB FALSEjob_queue_processes6FALSE log_archive_dest_1location=/oracle/backupArchivelog FALSElog archivedest10location=use_db_recovery_file_dest FALSElog archivemin succeeddest2FALSE open_cursors300FALSE pga_ag gregate_targ et819986432FALSE Processes150FALSE rem otejogin_passwo rdfileEXCLUSIVE FALSEsga_target2147483648FALSE statisticsjevelTYPICAL FALSEtimed_statistics TRUEFALSE undo_management AUTOFALSE undo_tablespace UNDOTBS1FALSE user_dump_dest/o racle/ad min/orcl/udump
4.ORACLE用户配置文件#vi.profile#Get thealiases andfunctions if[-f〜/.bashrc];then.〜/.bashrc fi#User specificenvironment and startup programsPATH=$PATH:$HOME/bin exportPATH unsetUSERNAME#for oracle export ORACLE_SID=orcl exportORACLE_BASE=/oracleexportORACLE_HOME=/oracle/10g exportPATH=$ORACLE_HOME/bin:$PATH exportNLS_LANG=AMERICAN_AMERICA.ZHS16GBK
2.数据库关键性能检查及豆析1数据库性能检查DB BlockBuffer Hit Ratio
99.99%OLTP环境下,命中率应该高于90%,否则需要增加DB_BLOCK_BUFFERS以提高性能Library CacheHitRatio
99.56%该命中率用于提供Shared SQLBuffers性能应该高于95%Soft Parse
98.55%软解析率应该高于95%In-memory Sort100%此为排序操作,假如指标值过低说明过多的排序操作影响了性能,建议进行SQL优化Execute to Parse
73.10%执行分析比率,不应该低于0否则shared poll可能有问题Parse CPUto ParseElapsd
94.20%这2项值代表熟悉析所用的cpu时间,Parse CPUtoParseElapsd不到100%说明有后Non-Parse CPU
95.34%其他问题影响了,解析时间并不是全部都消耗在cpu上2数据库响应时间分析响应时间是非常重要的数据库性能指标,Top5Timed EventsEvent WaitsTimes AvgWaitms%Total CallTime WaitClass CPUtime1,
45492.0RMAN backuprecovery I/O25,
0064611829.1System I/O osthread startup8,
6724595329.0Concurrency logfile parallelwrite148,
211245215.5System I/O control file parallelwrite192,
426223114.1System I/O从以上信息能够看出,RMAN备份占用的大量的时间
3.备份恢复策略检查与保护
1.RMAN配置情况RMAN configurationparameters are:CONFIGURE RETENTIONPOLICY TORECOVERY WINDOWOF7DAYS;CONFIGURE BACKUPOPTIMIZATION ON;CONFIGURE DEFAULTDEVICE TYPETO DISK;CONFIGURE CONTROLFILEAUTOBACKUP ON;CONFIGURE CONTROLFILEAUTOBACKUP FORMATFOR DEVICE TYPE DISK TO,orclcongrol_%F,;CONFIGURE DEVICE TYPE DISKPARALLELISM2BACKUP TYPETO COMPRESSEDBACKUPSET;CONFIGURE DATAFILEBACKUP COPIES FOR DEVICE TYPE DISKTO1;#default CONFIGUREARCHIVELOG BACKUPCOPIESFORDEVICETYPEDISKTO1;#default CONFIGURE CHANNEL1DEVICETYPEDISK MAXPIECESIZE100M MAXOPENFILES8RATE40M;CONFIGURECHANNEL2DEVICETYPEDISK MAXPIECESIZE100M MAXOPENFILES8RATE40M;CONFIGURE MAXSETSIZETO UNLIMITED;#default CONFIGUREENCRYPTION FORDATABASE OFF;#default CONFIGUREENCRYPTION ALGORITHMAES128;#default CONFIGUREARCHIVELOG DELETIONPOLICY TONONE;#default CONFIGURESNAPSHOT CONTROLFILENAME TO7oracle/10g/dbs/snapcf_orcl.f;#default
2.备份策略描述选用RMAN多级备份策略,以每个星期作为一个周期星期1数据库全备0级星期2增量备份1级星期3增量备份1级星期4累积增量备份1c级星期5数据库全备0级星期6增量备份1级星期天增量备份1级基于以上策略,任何时间点的数据恢复只需要做最多1次级恢复与2次1级恢复,加上当日的归档日志能够实现快速的完全恢复
3.备份策略实施Cat/etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME二/#run-parts01****root run-parts/etc/cron.hourly024***root run-parts/etc/cron.daily224**0root run-parts/etc/cron.weekly4241**root run-parts/etc/cron.monthly
4.备份检查与每日备份脚本日志检查使用crosscheck backupset检查所有备份集的备份片都为AVAILABLE每日脚本日志输出正常,使用report obsolete检查并无过期的备份信息
5.对当前策略的总结当前脚本能正常准时完成每日制定的备份策略,总体运行情况良好备份集信息完整,同时包含了归档日志,逻辑检查完好,能够正常执行恢复
6.关键性SQL语句定位及分析SQLselect rownum,d.*from selecthash_value,disk reads,executions,buffer_gets,ROWS PROCESSEDfrom v$sqlarea border byb.disk_reads descd whererownuml1;ROWNUM IIASI LVALUEDTSK_READS EXECUTIONSBUEFER_GETS ROWS_PROCESSED1909091134414012108SELECTs.sid,kglpnmod Mode”,kglpnreq“Req”,SPID“OS Process”FROMv$session_wait w,x$kglpn p,v$session s,v$process oWHERE p.kglpnuse=s.saddr ANDkglpnhdl=w.p1raw andw.event likec%library cachepin%ands.paddr=o.addr;Ll.
1.
4.查询全表扫描的表SQL colname fora30SQL select name,value from v$sysstat longwhere namein table scans short tables*,*table scanstables1;NAME VALUEtable scansshorttables18602tablescanslong tables111SQL select counttarget,target from v$session_longops whereopname=Table Scan*groupby target;COUNTTARGET TARGET84ECM_APPL.RPTLOG159ECM_DCTM_OTHR.DMR_CONTENT_S9ECM_DCTM_OTHR.DM_SYSOBJECT_R2ECM_DCTM_OTHR.DM_SYSOBJECT_S I.
1.
1.
5.查出全表扫描的表Select sql_text from v$sqltext t,v$sql_plan pWhere t.hash_value=p.hash_value And p.operation=,TABLE ACCESS9And p.option=TULL,Order byp.hash-value,t.piece;II
1.
1.
6.查找Fast Fullindex扫描的Sql语句能够这样:Select sql_text from v$sqltext t,v$sql_plan pWhere t.hash_value=p.hash_value Andp.operation=,INDEX,Andp.option=,FULL SCANOrder byp.hash-value,t.piece;III
1.
7.查询硬语法分析的次数SQL selectname,value from v$sysstat where name likeparse count%1;NAME VALUEparse counttotal16103parse counthard343parse countfailures5该项显示buffer cache大小是否合适2426038914611892327161135306310888766196921227543227643543108934505168240516841229463612327748914236281284415719980387642924673712925026131881190128012119083993603298168803858649212859864012087134193935546816090102328831744133232792372504SQL selectsql_text fromv$sqltext wherehash_value=l order by piece;
5.近期警告日志及有关分析
1.orcL ora
8727.trc-rw-r-----1oracle dba944Dec620:002008Dec620:002008orcl_ora_
8727.trc/oracle/admin/orcl/udump/orcl_ora_
8727.trc OracleDatabase10g EnterpriseEdition Release
10.
2.
0.
1.0-64bit ProductionWith thePartitioning,Oracle LabelSecurity,OLAP andData MiningScoring Engineoptions ORACLE_HOME=/oracle/10g Systemname:Linux Nodename:localhost Release:
2.
6.9-
34.ELsmp Version:#1SMP FriFeb2416:56:28EST2006Machine:x86_64Instance name:orcl Redothread mountedby thisinstance:1Oracle processnumber:21Unix processpid:8727,image:oracle@localhost TNSVI-V3***2008-12-0704:00:
28.002***ACTION NAME:0000221STARTED1112008-12-0704:00:
28.001***MODULE NAME:backup archivelog2008-12-0704:00:
28.001***SERVICE NAME:SYS$USERS2008-12-0704:00:28,001***SESSION ID:
157.75132008-12-0704:00:
28.001***ACTION NAME:0000244STARTED162008-12-0704:00:
32.421***MODULE NAME:backup fulldatafile2008-12-0704:00:
32.421***ACTION NAME:0000248STARTED1112008-12-0704:00:
33.7032orcl ora
8727.trc-rw-r-----1oracle dba944Dec620:002008Dec620:002008orcl ora_
8727.trc/oracle/admin/orcl/udump/orcl_ora_
8727.trc OracleDatabase10g EnterpriseEditionRelease
10.
2.
0.
1.0-64bit ProductionWith thePartitioning,Oracle LabelSecurity,OLAP andData MiningScoring Engineoptions ORACLEHOME=/oracle/10g Systemname:Linux Nodename:localhost Release:
2.
6.9-
34.ELsmp Version:#1SMP FriFeb2416:56:28EST2006Machine:x86_64Instance name:orcl Redothread mountedby thisinstance:1Oracle processnumber:21Unix processpid:8727,image:oracle@localhost TNSVI-V3***2008-12-0704:00:
28.002***ACTION NAME:0000221STARTED1112008-12-0704:00:
28.001***MODULE NAME:backup archivelog2008-12-0704:00:
28.001***SERVICE NAME:SYS$USERS2008-12-0704:00:28,001***SESSION ID:
157.75132008-12-0704:00:
28.001***ACTION NAME:0000244STARTED162008-12-0704:00:
32.421***MODULE NAME:backup fulldatafile2008-12-0704:00:32,421***ACTION NAME:0000248STARTED1112008-12-0704:00:
33.703总结,能够发现,2个警告日志都是对数据库进行全备份产生的,并无其他的警告日志
6.小结整个数据库运行情况良好,响应时间较为稳固,备份策略能很好的执行同时运行正常,各备份集信息完整整个数据库得到有效的保护
1.
1.
3.数据库备份与恢复数据库备份恢复管理原则•经常同步恢复目录•确认删除不需要的归档日志•备份策略简单原则Oracle的备份与恢复有三种标准的模式,大致分为两大类:备份恢复物理上的与导入导出逻辑上的,而备份恢复又能够根据数据库的工作模式分为非归档模式Nonarchivelog-style与归档模式Archivelog-style,通常,我们把非归档模式称之冷备份,而相应的把归档模式称之热备份,他们的关系如下所示备份与恢复《冷管份----邪归档模式NonArehiqeLogfMe物理备份K热备份----归档模式ArchiveLog-StyLeW三种方式各有优点,如下表:比较逻辑备份物理备份导入与导出冷备份热备份优点能够针对对象进行备份,能够备份与恢复速度快,执行能够根据日志恢复到跨平台进行数据备份工作,能效率高,具有高安全、低上一秒的操作,不需够不需要关闭数据库保护的优点要关闭数据库缺点导出方式并不能防止介质上单独使用时,只能恢复某过程教其他方法复的失效,它只是一种逻辑上的一时间点的数据,不能按杂,需要不小空间存备份照表与按用户来恢复而放归档文件,操作不且务必关闭数据库同意失误,否则恢复不能进行使用时机通常用于有规律的日常备份数据库能够暂时关闭或数据访问量小或者需者者需要配合热备份使要更精确备份与需要用备份表空间与库文件
1.
1.
3.L逻辑备份恢复方式利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回到Oracle数据库中去理论基础Oracle提供的Export与Import具有三种不一致的操作方式就是备份的数据输出入类型♦表方式T能够将指定的表导出备份;♦全库方式Full将数据库中的所有对象导出;♦用户方式U能够将指定的用户相应的所有数据对象导出;在导入导出备份方式中,提供了很强大的一种方法,就是增量导出/导入,但是它务必作为System来完成增量的导入导出,而且只能是对整个数据库进行实施增量导出又能够分为三种类别完全增量导出(Complete Export):这种方式将把整个数据库文件导出备份;exp system/manager inctype=complete file=
20041125.dmp(为了方便检索与事后的查询,通常我们将备份文件以日期或者者其他有明确含义的字符命名)增量型增量导出(Incremental Export):这种方式将只会备份上一次备份后改变的结果exp system/manager inctype=incremental file=
20041125.dmp累积型增量导出(Cumulate Export):这种方式的话,是导出自上次完全增量导出数据库变化的信息exp system/manager inctype=cumulative file=
20041125.dmp通常情况下,DBA们所要做的,就是按照企业指定或者者是自己习惯的标准(假如是自己指定的标准,建议写好计划说明),通常,我们使用普遍认可的下面的方式进行每天的增量备份♦Mon完全备份(A)♦Tue增量导出(B)♦Wed增量导出(C)♦Thu增量导出(D)♦Fri累计导出(E)♦Sat增量导出(F)♦Sun增量导出(G)这样,我们能够保证每周数据的完整性,与恢复时的快捷与最大限度的数据缺失恢复的时候,假设事故发生在周末,DBA可按这样的步骤来恢复数据库♦第一步用命令CREATE DATABASE重新生成数据库结构;♦第二步创建一个足够大的附加回滚♦第三步完全增量导入A♦imp system/manager inctype二RESTORE FULL=y FILE二A♦第四步累计增量导入E♦imp system/manager inctype=RESTORE FULL=Y FILE二E♦第五步最近增量导入F♦imp system/manager inctype=RESTORE FULL=Y FILE=F通常情况下,DBA所要做的导入导出备份就算完成,只要科学的按照规律作出备份,就能够将数据的缺失降低到最小,提供更可靠的服务另外,DBA最好对每次的备份做一个比较全面的说明文档,使得数据库的恢复更加可靠
1.
13.
2.物理冷备份恢复执行数据库物理冷备份恢复要求数据库使用的是文件系统模式,而不能是裸设备方式,由于冷备份管理的是基于操作系统的文件系统的当数据库能够暂时处于关闭状态时,我们需要将它在这一稳固时刻的数据有关文件转移到安全的区域,当数据库遭到破坏,再从安全区域将备份的数据库有关文件拷贝回原先的位置,这样,就完成了一次快捷安全等数据转移由因此在数据库不提供服务的关闭状态,因此称之冷备份冷备份具有很多优良特性,比如上面图中我们提到的,快速,方便,与高效一次完整的冷备份步骤应该是•首先关闭数据库(shutdown normal)•拷贝有关文件到安全区域(利用操作系统命令拷贝数据库的所有的数据文件、日志文件、操纵文件、参数文件、口令文件等(包含路径))•重新启动数据库(startup)以上的步骤我们能够用一个脚本来完成操作•#su-oraclesqlplus/nolog•Sqlconnect/as sysdba•Sqlshutdown immediate;•Sql!cp文件备份位置(所有的日志、数据、操纵及参数文件);•Sqlstartup;•Sqlexit;这样,我们就完成了一次冷备份,请确定你对这些相应的目录(包含写入的目标文件夹)有相应的权限恢复的时候,相对比较简单了,我们停掉数据库,将文件拷贝回相应位置,重启数据库就能够了,当然也能够用脚本来完成恢复数据库则很简单,如上述操作的命令一样,先停止数据库,删除或者改名特殊的数据库文件,然后拷贝备份的数据库文件到数据库运行位置,最后启动数据库即可完成注意一点就是恢复的内容与备份的内容一样,包含数据库数据文件、日志文件、操纵文件、参数文件、口令文件等
1.
1.
3.
3.物理热备份恢复当我们需要做一个精度比较高的备份,而且我们的数据库不可能停掉(少许访问量)时,这个情况下,我们就需要归档方式下的备份,就是下面讨论的热备份热备份能够非常精确的备份表空间级与用户级的数据,由于它是根据归档日志的时间轴来备份恢复的,理论上能够恢复到前一个操作,甚至就是前一秒的操作具体步骤如下通过视图v$database,查看数据库是否在Archive模式下SQL select log_mode fromv$database;假如不是Archive模式则设定数据库运行于归档模式下•SQLshutdown immediate•SQLstartup mount•SQL alter database archivelog;•SQL alter database open;假如Automaticarchival显示为“Enabled”,则数据库归档方式为自动归档否则需要手工归档,或者者将归档方式修改为自动归档,如正常shutdown数据库,在参数文件中init.ora中加入如下参数•SQLshutdown immediate•修改init.ora•LOG_ARCHIVE_START=TRUE•LOG_ARCHIVE_DEST1=ORACLE_HOME/admin/o816/arch(归档日值存放位置能够自己定义)•SQLstartup然后,重新启动数据库,如今Oracle数据库将以自动归档的方式工作在Archive模式下其中参数LOG_ARCHIVE_DEST1是指定的归档日志文件的路径,建议与Oracle数据库文件存在不一致的硬盘,一方面减少磁盘I/O竞争,另外一方面也能够避免数据库文件所在硬盘毁坏之后的文件丢失归档路径也能够直接指定为磁带等其它物理存储设备,但可能要考虑读写速度、可写条件与性能等因素注意当数据库处在ARCHIVE模式下时,一定要保证指定的归档路径可写,否则数据库就会挂起,直到能够归档所有归档信息后才能够使用另外,为创建一个有效的备份,当数据库在创建时,务必履行一个全数据库的冷备份,就是说数据库需要运行在归档方式,然后正常关闭数据库,备份所有的数据库构成文件这一备份是整个备份的基础,由于该备份提供了一个所有数据库文件的拷贝(表达了冷备份与热备份的合作关系,与强大的能力)LL
3.
3.
1.备份表空间文件•修改表空间文件为备份模式ALTER TABLESPACEtablespace_name BEGINBACKUP;•拷贝表空间文件到安全区域!CP tablespace_name D_PATH;•将表空间的备份模式关闭ALTER TABLESPACEtablespace_name ENDBACKUP;•3,对归档日志文件的备份•停止归档进程一一备份归档日志文件一一启动归档进程•假如日志文档比较多,我们将它们写入一个文件成为一个恢复的参考$filesis归档文件路径/arch*.db「;export files
1.
13.
3.
2.备份操纵文件•SQL alterdatabase backup controlfile to controlfile_back_name(通常用2004-11-20的方式)reuse;当然,我们也能够将上面的语句写为一个脚本,在需要的时候执行就能够了.脚本范例•#su-oraclesqlplus/nolog•Sqlconnect/as sysdba•SqlALTER TABLESPACEtablespace_name BEGINBACKUP•Sql!CP tablespace_name D_PATH•sqlALTER TABLESPACEtablespace_name ENDBACKUP•sqlalter databasebackup controlfile tocontrolfile_back_name(通常用2004-11-20的方式),reuse;!files Is归档文件路径/arch*.dbr;export filesLL
3.
3.
3.热备份的恢复关于归档方式数据库的恢复要求不但有有效的日志备份还要求有一个在归档方式下作的有效的全库备份归档备份在理论上能够无数据丢失,但是关于硬件与操作人员的要求都比较高在我们使用归档方式备份的时候,全库物理备份也是非常重要的归档方式下数据库的恢复要求从全备份到失败点所有的日志都要完好无缺•恢复步骤LOG_ARCHIVE_DEST_1•shutdown数据库•将全备份的数据文件放到原先系统的目录中•将全备份到失败点的所有归档日志放到参数LOG_ARCHIVE_DEST_1所指定的位置•利用sqlplus登陆到空实例connect/as sysdba•然后startup mount•set autorecoveryon•recover database;•alterdatabase open;
1.
1.
3.
4.RMAN方式备份恢复I.
13.
4.
1.建立恢复目录第一步,在目录数据库中创建恢复目录所用表空间SQL createtablespace rman_ts datafiled:\oracle\oradata\rman\rman_ts.dbf size20M;表空间已创建第二步,在目录数据库中创建RMAN用户并授权SQL createuser rmanidentified byrman defaulttablespace rman_ts temporarytablespace tempquota unlimitedon rman_ts;用户已创建SQL grantrecovery_catalog_owner torman;授权成功SQL grantconnect,resource torman;授权成功第三步,在目录数据库中创建恢复目录C:\rman catalogrman/rman恢复管理器版本
8.
1.
6.
0.0-Production RM AN-06008连接到恢复目录数据库RMAN-06428未安装恢复目录RMANcreate catalogtablespace rman_ts;RMAN-06431恢复目录已创建注意尽管使用RMAN不一定必需恢复目录,但是推荐使用由于恢复目录记载的信息大部分能够通过操纵文件来记载,RMAN在恢复数据库时使用这些信息不使用恢复目录将会对备份恢复操作有限制II.
3.
4.
2.启动RMAN RMAN为交互式命令行处理界面,也能够从企业管理器中运行为了使用下面的实例,先检查环境符合the targetdatabase is called hisand has the same TNS aliasuser rmanhas beengranted recovery_catalog_owner privileges目标数据库的连接用户为internal帐号,或者者以其他SYSDBA类型帐号连接the recoverycatalog databaseiscalledrman andhasthesameTNSalias theschema containingthe recoverycatalog isrman samepassword在使用RMAN前,设置NLS_DATE_FORMAT与NLS.LANG环境变量,很多RMAN LIST命令的输出结果是与日期时间有关的,这点在用户希望执行以时间为基准的恢复工作也很重要下例是环境变量的示范NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK NLS_DATE_FORMAT=DD-MON-YYYY HH24:MI:SS为了保证RMAN使用时能连接恢复目录,恢复目录数据库务必打开,目标数据库至少要STARTED unmount,否则RMAN会返回一个错误,目标数据库务必置于归档模式下1使用不带恢复目录的RMAN设置目标数据库的ORACLE.SID,执行%rman nocatalogRMAN connect target RMANconnect targetinternal/password@his
2.使用带恢复目录的RMAN%rman rman_ts rman/rman@rman RMANconnecttarget%rman rman_ts rman/rman@rman targetinternal/password@his
3.使用RMAN一旦连接到目标数据库,能够通过交互界面或者者事先存储的脚本执行指定RMAN命令,下面是一个使用RMAN交互界面的实例RMAN resynccatalog;RM AN-03022正在编译命令resync RM AN-03023正在执行命令resync RM AN-08002正在启动全部恢复目录的resync RM AN-08004完成全部resync使用脚本的实例RMAN execute script alloc_l_disk;创建或者者替代存储的脚本RMAN replacescript alloc_l_disk{2allocate channeldl type disk;3}Ll.
3.
4.
3.注册或者者注销目标数据库注册目标数据库数据库状态打开恢复目录状态打开目标数据库加载或者者打开目标数据库在第一次使用RMAN之前务必在恢复目录中注册第一步,启动恢复管理器,同时连接目标数据库C:\rman targetinternal/oracle@his catalogrman/rman@rman恢复管理器版本
8.
1.
6.
0.0-Production RM AN-06005连接到目标数据库HIS DBID=3021445076RM AN-06008连接到恢复目录数据库第二步,注册数据库RMAN registerdatabase;RM AN-03022正在编译命令register RM AN-03023正在执行命令register RMAN-08006注册在恢复目录中的数据库RMAN-03023正在执行命令full resync RMAN-08002正在启动全部恢复目录的resyncRMAN-08004完成全部resync2注销目标数据库RMAN提供了一个注销工具,叫DBMS_RCVCAT工具包,请注意一旦注销了该目标数据库,就不能够使用恢复目录中含有的备份集来恢复数据库了为了能注销数据库,需要获得数据库的标识码DB」D与数据库键值DB_KEY其中连接目标数据库时将会获得DB」D C:\rman targetinternal/oracle@his catalogrman/rman@rman恢复管理器:版本
8.
160.0-Production RMAN-06005连接到目标数据库HIS DBID=3021445076RMAN-06008连接到恢复目录数据库其中DBID=3021445076,利用DBID=3021445076查询数据库键值码连接到目标数据库,查询db表SQL select*fromdb;DB_KEY DBJDCURR_DBINC_KEY130214450762获得DB_KEY=1,这样,该目标数据库DB_KEY=1,DBID=3021445076,利用两个值使用DBMS_RCVCAT工具包就能够注销数据库SQL executedbms_rcvcat.unregisterdatabase1,3021445076;PL/SQL过程已成功完成至此,注销数据库操作完成LL
3.
4.
4.操作已有的备份
(1).加入目录数据库数据库状态恢复目录打开目标数据库加载或者者打开假如存在
8.x版本往常创建的备份数据想注册到目标数据库,能够使用如下手工方式加入到恢复目录中RMAN catalogdatafilecopy Voracle/..../systemOl.dbf;使用如下命令显示恢复目录中包含的文件RMAN listcopy ofdatabase;
(2).从目录数据库中删除第一步查看备份信息RMANlist backup;RMAN-03022正在编译命令list备份集列表关键字Recid标记LV集合标记集合计数完成时间110425013644550501364446206-8月-03备份段列表关键字Pc#Cp#状态完成时间段名110611AVAILABLE06-8月-03D:\ORACLE\ORA81\DATABASE\02EU4DMU_l_l数据文件包含列表文件名称LV类型检查点SCN检查点时间3D:\ORACLE\ORADATA\HIS\USERS
01.DBF0Full16005206-8月-03备份集的关键字为U04o第二步定义delete通道RMANallocate channelfor deletetype disk;RMAN-正在编译命令allocate03022正在执行命令allocate分配的通道delete RMAN-通道deletesid=19devtype=DISK03023第三步删除backupset备份集RMAN-R08M03A0Nchange backupset1104delete;RMAN--正在编译命令change0083500202RM已删除备份段AN-08073备份段handle=D:\ORACLE\ORA81\DATABASE\02EU4DMU_l_l recid=2RMAN-08517stamp=50正在执行命令partial resync启动部分恢复目录的resync完成部分resync注1364447意部分执行删除备份集、备份片或者者保护恢复目录的命令,需要先指定通RMAN-道,如RMANallocate channelfor deletetype disk;或者者RMANallocate03023RM channelfor maintenancetypedisk;AN-08003RMAN-L1345在非归档模式下备份08005数据库状态恢复目录打开目标数据库例程启动或者者数据库加载公式1-physical reads-physical readsdirect-physical readsdirect lob/session logicalreads执行select l-a.value-b.value-c.value/d.value fromv$sysstat a,v$sysstat b,v$sysstat c,v$sysstat dwhere a.name=,physical reads9and b.name=,physical readsdirecf and c.name=,physical readsdirect lob^and d.name=,session logicalreads9;
1.
1.
1.
8.显示buffer命中率公式1-physical reads/db blockgets+consistent gets执行select1-sumdecodename,physical reads1,value,0/sumdecodename,,db blockgets*,value,0+sumdecodename,Consistent gets*,value,0H bufferhit ratiofromv$sysstat;Soft parseratio这项将显示系统是否有太多硬解析该值将会与原始统计数据对比以确保精确比如,软解析率仅为
0.2则表示硬解析率太高只是,假如总解析量parse counttotal偏低,这项值能够被忽略公式1-parse counthard/parse counttotal执行select l-a.value/b.value fromv$sysstat a,v$sysstat bWhere a.name=parse counthard*and b.name=,parse counttotal*;In-memory sortratio该项显示内存中完成的排序所占比例最理想状态下,在OLTP系统中,大部分排序不仅小同时能够完全在内存里完成排序公式sorts memory/sorts memory+sorts disk执行select a.value/b.value+c.value fromv$sysstat a,v$sysstat b,v$sysstat cwhere a.name=,sorts memoryand b.name=,sorts memory,and c.name=,sorts disk,;Parse toexecute ratio在生产环境,最理想状态是一条sql语句一次解析多数运行公式1-parse count/execute count执行select l-a.value/b.value fromvSsysstat a9v$sysstat bwhere a.name=,parse counttotaland b.name=,execute count9;Parse CPUto totalCPU ratio该项显示总的CPU花费在执行及解析上的比率假如这项比率较低,说明系统执行了太多的解析公式1-parse timecpu/CPU usedby thissession执行selectl-a.value/b.value fromvSsysstat a,v$sysstat bwhere a.name=,parse timecpu and b.name=,CPU usedby thissession5;Parse timeCPI Jto parse time elapsed通常,该项显示锁竞争比率c这项比率计算是否时间花费在解析分配给CPU进行周期运算即生产工作解析时间花费不在CPU周期运算通常表示由于锁竞争导致了时间花费公式parse timecpu/parse timeelapsed执行select a.value/b.value fromv$sysstat a,v$sysstat bwhere a.name=,parse timecpu and b.name=,parsetimeelapsed9;恢复目录数据库需要打开,目标数据库务必启动或者者加载由于目标数据库不在归档模式下,因此当进行备份恢复操作的时候数据库无法打开不能够将表空间置于热备份模式上进行等同于文件系统级的拷贝,假如在非归档模式,数据库打开的状态下不能进行数据文件的备份
1.数据库完全备份RMAN run{2#backup thecomplete databaseto disk3allocate channeldevl typedisk;4backup5full6tag full_db_backup7format7oracle/backups/db_t%t_s%s_p%p,8database;9release channeldevl;10}行#:说明该行为注释行井是注释符39:See section15-Channels通道定义5:Full backupdefault iffull orincremental notspecified完全备份模式缺省模式6:Meaningful string=30chars备份集标识,=30个字符7:Filename touse forbackup pieces,including substitutionvariables.备份片使用的文件名,能够包含代替变量8:Indicates allfiles includingcontrolfiles areto bebacked up说明备份所有数据文件包含操纵文件通过下面的命令显示恢复目录中记载的备份集信息RMAN listbackupset ofdatabase;2,备份表空间RMAN run{2allocate channeldevl typedisk;3backup4tag tbs_users_read_only5format7oracle/backups/tbs_users_t%t_s%s6tablespace users7}使用下列命令来显示恢复目录中该表的备份信息RMAN listbackupset oftablespace users;假设USERS表空间在备份后被置为READ ONLY表空间,以后的全库备份就能够不用备份该表空间,为了达到这个目的,能够在以后的备份中指定,skip readonly,注意,目标数据库不需要一定打开,只要加载就能够,由于表空间的信息存储在操纵文件中
3.备份单独数据文件RMAN run{2allocate channeldevl typeSBT_TAPE;3backup4format%d%u,5datafile7oracle/dbs/sysbigdb.dbf;6release channeldevl;7}行#2:使用MML mediamanager layer分配磁带驱动器,务必指定类型为SBT_TAPE;注意由于没有指定标识,因此标识为空;使用下面的命令显示恢复目录中备份的表空间RMAN listbackupset ofdatafile1;
4.备份数据文件RMAN run{2allocate channeldevl typeSBT_TAPE;3copy datafile7oracle/dbs/temp.dbf toVoracle/backups/temp.dbf;4release channeldevl;5}使用下面的命令显示恢复目录中的文件拷贝RMAN listcopy ofdatafile7oracle/dbs/temp.dbf;拷贝数据文件与备份数据文件是不一样的,数据文件拷贝是一个该文件的镜像文件的备份产生一个备份集
5.备份操纵文件RMAN run{2allocate channeldevl typeSBT_TAPE;3backup4format,cf_t%t_s%s_p%p,5tag cf_monday_night6current controlfile;1release channeldevl;8}注意数据库完全备份将自动备份操纵文件LL
3.
4.
6.归档模式下的备份数据库状态恢复目录打开目标数据库例程启动,数据库加载或者者打开备份操作使用的命令与非归档模式下基本一样
2.Backing uparchived logs备份归档日志下面的脚本备份归档日志RMAN run{2allocate channeldevl typedisk;3backup4format7oracle/backups/log_t%t_s%s_p%p5archivelog all;6release channeldevl;7}下面的脚本归档日志从#90to100RMAN run{2allocate channeldevl typedisk;3backup4format7oracle/backups/log_t%t_s%s_p%p,5archivelog fromlogseq=90until logseq=100thread1;6release channeldevl;7}下面的脚本备份在24小时内产生的归档日志,在备份完成后会自动删除归档日志假如备份失败,归档日志不可能被删除RMAN run{2allocate channeldevl typedisk;3backup4format7oracle/backups/log_t%t_s%s_p%p5archivelog fromtime sysdate-1all deleteinput;6release channeldevl;7}使用下面的命令显示恢复目录中的归档日志RMAN listbackupset ofarchivelog all;注意RMAN找到归档日志后会备份指定日志,假如无法找到日志,它也不可能返回错误信息
3.Backing upthe onlinelogs备份联机日志联机日志不能用RMAN来备份,务必先将其归档为了实现这点,务必在RMAN中执行如下SQL语句RMAN run{2allocate channeldevl typedisk;3sql altersystem archive log current11;4backup5format7oracle/backups/log_t%t_s%s_p%p6archivelog fromtime sysdate-1all deleteinput;7release channeldevl;8}上面的脚本能够在执行完一个完整的联机数据库备份后执行,确保所有的重做日志能够将数据库恢复到一个一致性的状态注意不能够标识归档日志备份集
1.
1.
3.
4.
7.增量备份N级别增量备份备份从最近的N级别或者者更小级别以来的所有更换过的数据块内容增量备份分为两种,一种是累积增量备份,一种是非累积增量备份累积增量备份包含自最后一次在更低级别进行备份以来所有改动过的数据块非累积增量备份包含自前一次在同级或者者更低级别进行备份以来改动过的数据块
1.Level-增量备份策略的基础Level0是增量备份策略的基础--the basisof theincremental backupstrategy RMAN run{2allocate channeldevl typedisk;3backup4incremental level05filesperset46format7oracle/backups/sunday_level0_%t,7database;8release channeldevl;9}Line#4:0级备份5:定义每个backupset的最大文件数使用LIST语句查看,数据库备份集的列表显示中,lype,将显示Incremental LV冽将显示O
2.使用增量备份的案例一个典型的增量备份案比如下星期天晚上-level0backup performed星期一晚上-level2backup performed星期二晚上-level2backup performed星期三晚上-level1backup performed星期四晚上-level2backup performed星期五晚上-level2backup performed星期六晚上-level2backup performed星期天晚上-level0backup performedLL
3.
4.
8.恢复恢复案比如下
1.Database open,datafile deleted数据库打开时,文件被删除数据文件在数据库打开时被删除有两种方法能够对打开的数据库进行恢复还原数据文件或者者表空间下面两个实例显示了该方法a Datafilerecovery数据文件恢复RMAN run{2allocate channeldevl typedisk;3sql alter tablespace users offline immediate;4restore datafile4;5recover datafile4;6sql alter tablespace users online;7release channeldevl;8}b Tablespacerecovery表空间恢复RMAN run{2allocate channeldevl typedisk;3sql Maltertablespaceusersofflineimmediate;4restore tablespaceusers;5recover tablespaceusers;6sql naltertablespaceusersonline;7release channeldevl;8}注意假如还原系统表空间文件,数据库务必关闭,由于系统表空间不能够脱机
2.Complete restorelost onlineredo androllforward-database closed完全还原丢失联机日志同时前滚-数据库关闭RMAN run{2allocate channeldevl typedisk;3set untillogseq=105thread=l;4restore control fileto7oracle/dbs/ctrltargdb.ctr;5replicate controlfilefrom7oracle/dbs/ctrltargdb.ctr;6restore database;7sql alterdatabase mount”;8recover database;9sql alterdatabase open resetlogs”;10release channeldevl;H}Notes:f setuntil,命令指明恢复到指定的日志文件这一点在数据文件恢复时很重要,否则RMAN将试图恢复最近的数据文件,该数据文件可能在指定的日志往常1叩licate controlfile1复制还原的操纵文件到INIT.ORA指定的操纵文件假如数据库使用WITH RESETLOGS打开,则需要使用RESET DATABASE命令注册改变后的数据库在使用RESETLOGS命令打开数据库后强烈建议做一个完全的数据库备份
3.还原数据文件的子集,完全恢复RMAN run{2allocate channeldevl typedisk;3sql alterdatabase mount*;4restore datafile2;5restore datafile3;6restore archivelog all;7recover database;8sql nalterdatabase open”;9release channeldevl;10}
1.
1.
3.
4.
9.脚本创建或者者取代脚本RMAN createscript alloc_disk{2#Allocates onedisk3allocate channeldevl typedisk;4setlimit channeldevl kbytes2097150maxopenfiles32readrate200;5}RMAN replacescript rel_disk{2#releases disk3release channeldevl;5}RMAN replacescript backup_db_full{2#Performs acomplete backup3execute scriptalloc_disk;4backup
5.・...backup commandshere6execute scriptrel_disk;7}前两个脚本分别用来分配与回收通道alloc.disk脚本还额外指定了备份片的最大兆字节数,备份时能够同时打开的输入文件的最大数目,与每秒钟读每个输入文件的数据缓冲区的最大数目第三个脚本调用先前存储的两个脚本进行数据库备份运行存储脚本的示范RMANrun{2execute script backup_db_full;3}注意存储的脚本务必在{....execute〈script〉;.…}命令中调用
1.
1.
3.
4.
10.Corruption detectionRMAN能够备份包含损坏数据块的数据文件,查询视图V$BACK_CORRUPTION与V$COPY_CORRUPTION能够获得有关坏数据的信息通过设置set maxcorrupt能够跳过指定个数的坏块来避免备份失败RMAN replacescriptbackup_db_full{2#Performs acomplete backup3execute scriptalloc_disk;4set maxcorrupt for datafile1to0;5backup
6..…backup commandshere7executescriptrel_disk;8}上面的脚本maxcorruptfordatafile1to0设置为0,因此假如有错误数据块在数据文件1中发现,上面的脚本执行就会失败c
1.
1.
3.
4.
11.通道一个通道是RMAN与目标数据库之间的一个连接,allocate channel,命令在目标数据库启动一个服务器进程,同时务必定义服务器进程执行备份或者者恢复操作使用的I/O类型通道操纵命令能够用来操纵RMAN使用的0/S资源影响并行度指定I/O带宽的限制值(设置limit readrate参数)定义备份片大小的限制(设置limit kbytes)指定当前打开文件的限制值(设置limit maxopenfiles)
1.
1.3A.
12.Reportlist commands
(1),List list命令查询恢复目录同时产生格式化的查询内容RMAN listbackupset ofdatafile1;Key FileType LVCompletion_time CkpSCN CkpTime1651Full Oct0311:2432022Oct0311:242081Full Oct2414:2752059Oct2414:262191Full Oct2414:3152061Oct2414:31«other entrieshere»RMAN listbackupset ofarchivelogall;Key ThrdSeq Completiontime179194Oct0311:26179195Oct0311:26«other entrieshere»
(2).Report REPORT命令同样能够查询恢复目录,但是REPORT命令语法能够构建获得更为有用的信息的指令,REPORT命令输出能够储存到消息日志文件中,但是务必在连接恢复目录时指定MSGLOG或者者LOG选项能够列出所有数据库中不能恢复的文件列表RMAN reportunrecoverable database;显示全部数据文件RMANreport schema;RMAN-03022正在编译命令report数据库模式报表文件千字节表空间RB segs名称1121472SYSTE YESM D:\0RACLE\0RADATA\HIS\SYSTEM
01.DBF2327680RBS YESD:\0RACLE\0RADATA\HIS\RBS
01.DBF3110592USERS NOD:\0RACLE\0RADATA\HIS\USERS
01.DBF473728TEMP NOD:\0RACLE\0RADATA\HIS\TEMP
01.DBF512288TOOLS NOD:\0RACLE\0RADATA\HIS\T00LS
01.DBF659392INDX NOD:\0RACLE\0RADATA\HIS\INDX
01.DBF
1.
2.数据库物理结构故障处理Oracle物理结构故障是指构成数据库的各个物理文件损坏而导致的各类数据库故障这些故障可能是由于硬件故障造成的,也可能是人为误操作而引起因此我们首先要推断问题的起因,假如是硬件故障则首先要解决硬件问题在无硬件问题的前提下我们才能按照下面的处理方发来进一步处理
1.
2.
1.操纵文件损坏操纵文件记录了关于oracle的重要配置信息,如数据库名、字符集名字、各个数据文件、日志文件的位置等等信息操纵文件的损坏,会导致数据库特殊关闭一旦缺少操纵文件,数据库也无法启动,这是一种比较严重的错误能够通过查询数据库的日志文件来定位损坏了的操纵文件日志文件位于$ORACLE_BASE/admin/bdump/alert_ORCL.ora.L
2.
1.
1.损坏单个操纵文件
1.确保数据库已经关闭,假如没有用下面的命令来关闭数据库svrmgrlshutdown immediate;
2.查看初始化文件$ORACLE_BASE/admin/pfile/initORCL.ora,确定所有操纵文件的路径
3.用操作系统命令将其它正确的操纵文件覆盖错误的操纵文件
4.用下面的命令重新启动数据库svrmgrlstartup;
5.用适当的方法进行数据库全备份
1.
2.
1.
2.损坏所有的操纵文件
1.确保数据库已经关闭,假如没有用下面的命令来关闭数据库svrmgrlshutdown immediate;
2.从相应的备份结果集中恢复最近的操纵文件关于没有使用带库备份的点能够直接从磁带上将最近的操纵文件备份恢复到相应目录;关于使用带库备份的点用相应的rman脚本来恢复最近的操纵文件
3.用下面的命令来创建产生数据库操纵文件的脚本svrmgrlstartup mount;svrmgrlalter databasebackup controlfileto tracenoresetlogs;4,修改第三步产生的trace文件为其中关于创建操纵文件的一部分语句拷贝出来并做些修改,使得它能够表达最新的数据库结构假设产生的sql文件名字为createcontrol.sql.注意Trace文件的具体路径能够在执行完第3)步操作后查看$ORACLE_BASE/admin/bdump/alert_ORCL.ora文件来确定
5.用下面命令重新创建操纵文件svrmgrlshutdown abort;svrmgrlstartup nomount;svrmgrl@createcontrol.sql;
6.用适当的方法进行数据库全备份
1.
2.
2.重做日志文件损坏数据库的所有增、删、改都会记录入重做日志假如当前激活的重做日志文件损坏,会导致数据库特殊关闭非激活的重做日志最终也会由于日志切换变为激活的重做日志,因此损坏的非激活的重做日志最终也会导致数据库的特殊终止在ipas/mSwitch中每组重做日志只有一个成员,因此在下面的分析中只考虑重做日志组损坏的情况,而不考虑单个重做日志成员损坏的情况确定损坏的重做日志的位置及其状态
1.假如数据库处于可用状态select*fromv$logfile;svrmgrlselect*fromv$log;
2.假如数据库处于已经特殊终止svrmlgrstartup mount;svrmgrlselect*fromv$logfile;svrmgrlselect*fromv$log;其中,logfile的状态为INVALID表示这组日志文件出现已经损坏;log状态为Inactive表示重做日志文件处于非激活状态;Active表示重做日志文件处于激活状态;Current表示是重做日志为当前正在使用的日志文件L
2.
2.
1.损坏的日志文件处于非激活状态
1.删除相应的日志组svrmgrlalter database drop logfile group group_number;
2.重新创建相应的日志组svrmgrlalter database add logfilegroupgroup numberlogfiledescritpion*,...size log_file_size;损坏的日志文件处于激活状态且为非当前日志
1.清除相应的日志组svrmgrlalter databaseclear unarchivedlogfile groupgroup_number;损坏的日志文件为当前活动日志文件用命令清除相应的日志组svrmgrlalter databaseclear unarchivedlogfile groupgroup_number;假如清除失败,则只能做基于时间点的不完全恢复打开数据库同时用适当的方法进行数据库全备份svrmgrlalter database open;
1.
2.
3.数据库文件损坏L
2.
3.
1.部分数据文件损坏若损坏的数据文件属于非system表空间,则数据库仍然能够处于打开状态能够进行操作,只是损坏的数据文件不能访问这时在数据库打开状态下能够单独对损坏的数据文件进行恢复若是system表空间的数据文件损坏则数据库系统会特殊终止这时数据库只能以Mount方式打开,然后再对数据文件进行恢复能够通过查看数据库日志文件来推断当前损坏的数据文件到底是否属于system表空间非system表空间的数据文件损坏
1.确定损坏的文件名字svrmgrlselect name fromv$datafile wherestatus=lNVALID*;
2.将损坏的数据文件处于offline状态svrmgrlalter databasedatafile datafile_name offline;
3.从相应的备份结果集中恢复关于这个数据文件的最近的备份关于没有使用带库备份的点能够直接从磁带上恢复;关于用带库备份的点用相应的rman脚本来恢复
4.恢复数据文件svrmgrlalter databaserecover datafilefile_name;
5.使数据库文件onlinesvrmgrlalter databasedatafile datafilename online;D-
6.用适当的方法进行数据库全备份system表空间的数据文件损坏
1.以mount方式启动数据库svrmgrlstartup mount;
2.从相应的备份结果集中恢复关于这个数据文件的最近的备份关于没有使用带库备份的点能够直接从磁带上恢复;关于用带库备份的点用相应的rman脚本来恢复
3.恢复system表空间svrmgrlalter databaserecover datafiledatafile_name;
4.打开数据库svrmgrlalter database open;
5.用适当的方法进行数据库全备份
1.
2.
3.
2.表空间损坏若非system表空间已经损坏,则数据库仍然能够处于打开状态能够进行操作,只是损坏的表空间不能访问这样在数据库打开状态下能够单独对损坏的表空间进行恢复若是system表空间损坏则数据库系统会特殊终止这时数据库只能以Mount方式打开,然后再对表空间进行恢复能够通过查看数据库日志文件来推断当前损坏的表空间是否是system表空间.非system表空间损坏
1.将损坏的表空间处于ffline状态svrmgrlalter tablespacetablespace_name offline;
2.从相应的备份结果集中恢复关于这个表空间最近的备份关于没有使用带库备份的从V$SYSSTAT获取负载间档Load Profile数据负载间档是监控系统吞吐量与负载变化的重要部分,该部分提供如下每秒与每个事务的统计信息logons cumulative,parse counttotal,parse counthard,executes,physical reads,physical writes,block changes,and redosize.被格式化的数据可检查rates是否过高,或者用于对比其它基线数据设置为识别system profile在期间如何变化比如,计算每个事务中block changes可用如下公式db block changes/user commits+user rollbacks执行select a.value/b.value+c.value fromv$sysstat a,v$sysstat b,v$sysstat cwhere a.name=,db blockchanges,and b.name=,user commits9and c.name=,user rollbacks9;其它计算统计以衡量负载方式,如下Blocks changedfor eachread这项显示出blockchanges在block reads中的比例它将指出是否系统要紧用于只读访问或者是要紧进行诸多数据操作如inserts/updates/deletes公式db blockchanges/session logicalreads执行select a.value/b.value fromv$sysstat a,v$sysstat bwhere a.name=,db blockchanges9and b.name=,session logicalreads,;Rows foreach sort数据排序情况公式sorts rows/sorts memory+sorts disk执行select a.value/b.value+c.value fromv$sysstat a,v$sysstat b,v$sysstat cwhere a.name=,sorts rowsandb.name=,sorts memoryand c.name=sorts disk’;
1.
1.
1.
9.查看某表的约束条件select constraint_name,constraint_type,search_condition,r_constraint_name from user_constraints wheretable_name=uppertable_name;select c.constraint_name,c.constraint_type,cc.column_name fromuser_constraints c,user_cons_columns ccwhere c.owner=uppertable_owner and c.table_name=uppertable_name andc.owner=cc.owner andc.constraint_name=cc.constraint_name orderby cc.position;
1.
1.
1.
10.查看表的信息Select*fromusertables;
1.
1.
1.
11.查看表空间的名称及大小select t.tablespace_name,roundsumbytes/1024*1024,0ts_size fromdba_tablespaces t,dba_data_files dwheret.tablespace_name=d.tablespace_name groupbyt.tablespace_name;selectt.tablespace_name,roundsumbytes/1024*1024,0ts_size fromdba_tablespaces t,dba_data_files dwheret.tablespace_name=d.tablespace_name groupbyt.tablespace_name;TABLESPACE NAMETS SIZE点能够直接从磁带上恢复;关于用带库备份的点用相应的rman脚本来恢复
3.恢复表空间svrmgrlalter databaserecover tablespacetablespace_name;
4.使表空间onlinesvrmgrlalter tablespace*tablespace_name online;
5.用适当的方法进行数据库全备份.system表空间损坏
1.以mount方式启动数据库svrmgrlstartup mount;
2.从相应的备份结果集中恢复system表空间最近的备份关于没有使用带库备份的点能够直接从磁带上恢复;关于用带库备份的点用相应的rman脚本来恢复
3.恢复system表空间svrmgrlalter databaserecover tablespacesystem;
4.打开数据库svrmgrlalter databaseopen;
5.用适当的方法进行数据库全备份
1.
2.
3.
3.整个数据库的所有文件损坏整个数据库所有文件的损坏通常是在共享磁盘阵列发生无法恢复的灾难时才发生,这种情况下只能对数据库进行恢复若数据库的归档目录也已经丢失,则数据库不可能做完全恢复,会有用户数据的丢失没使用带库备份的现场
1.将最近的备份从磁带上把各个文件解包到相应的目录下
2.以mount方式打开数据库svrmgrlstartup mount;3,恢复数据库svrmgrlrecover database until cancel;
4.打开数据库svrmgrlalter databaseopen resetlogs;
5.用适当的方法进行数据库全备份使用带库备份的现场
1.以nomount方式打开数据库svrmgrlstartup nomount;
2.通过相应的rman脚本进行数据库软恢复$rman cmdfile=hot_database_restore.rcv
3.打开数据库svringrlalter databaseopen resetlogs;
4.用适当的方法进行数据库全备份存在最近的数据库完整冷备份前提下的一些经典紧急情况的处理数据文件,归档重作日志与操纵文件同时丢失或者损坏无新增archives时的状况条件与假设自上次镜像备份以来尚未生成新的archive logs;Archivelog Mode;有同步的datafiles与control files的镜像冷拷贝
124.恢复步骤
1.将镜像拷贝的datafiles与control files抄送回原始地点$cp/backup/good_one.dbf/orig_loc/bad_one.dbf$cp/backup/control
1.ctl/disk1/control l.ctl
2.以mount选项启动数据库$svrmgrl svrmgrlconnect internalsvrmgrl startupmount
3.以旧的control file来恢复数据库svrmgrl recoverdatabase usingbackup controlfileuntil cancel;***介质恢复完成务必马上cancel
4.Reset thelogfiles对启动而言不可省略svrmgrl alterdatabaseopenresetlogs;
5.关闭数据库并做一次全库冷备份新增archives时的状况条件与假设自上次镜像备份以来已经生成新的archive logs;Archivelog Mode;有同步的datafiles与control files的镜像G令拷贝;archive logs可用恢复步骤
1.假如数据库尚未关闭,则首先把它关闭$svrmgrl svrmgrlconnect internalsvrmgrl shutdownabort
2.将备份文件抄送回原始地点所有Database Files所有Control Files没有archives或者redos的情况下,control files的更新无任何意义所有On-Line RedoLogs Not archives init.ora file选项
3.启动数据库$svrmgrl svrmgrlconnect internalsvrmgrl startup数据文件,重作日志与操纵文件同时丢失或者损坏条件与假设Archivelog Mode;有同步的所有所失文件的镜像冷拷贝;archive logs可用恢复步骤务必使用不完全恢复的手法L假如数据库尚未关闭,则首先把它关闭$svrmgrl svrmgrlconnect internalsvrmgrl shutdownabort
2.将备份文件抄送回原始地点所有Database Files所有Control Files所有On-Line RedoLogs(Notarchives)init.ora file(选项)
3.启动数据库然而并不打开svrmgrlstartup mount
4.做不完全数据库恢复,应用所有从上次镜像(冷)备份始积存起来的archivessvrmgrl recoverdatabase untilcancel usingbackup controlfile;cancel
5.Reset thelogfiles(对启动而言不可省略)svrmgrl alterdatabaseopenresetlogs;
6.关闭数据库并做一次全库冷备份数据文件与操纵文件同时丢失或者损坏条件与假设Archivelog Mode;有同步的datafile(s)与control flle(s)的冷拷贝;archive log(s)可用恢复步骤
1.将冷拷贝的datafiles(s)与control file(s)抄送回原始地点$cp/backup/good_one.dbf/orig_loc/bad_one.dbf$cp/backup/control
1.ctl/disk1/control
1.ctl
2.以mount选项启动数据库$svrmgrl svrmgrlconnect internalsvrmgrl startupmount
3.以旧的controlfile来恢复数据库svrmgrl recoverdatabase untilcancel usingbackup controlfile;***介质恢复完成(须在应用完最后一个archive log后cancel)
4.Reset thelogfiles(对启动而言不可省略)svrmgrl alterdatabaseopenresetlogs;重作日志与操纵文件同时丢失或者损坏时条件与假设Control Files全部丢失或者损坏;Archivelog Mode;有Control Files的镜像(冷)拷贝恢复步骤L假如数据库尚未关闭,则首先把它关闭$svrmgrl svrmgrlconnect internalsvrmgrl shutdownabort svrmgrlexit
2.以Control File的镜像(冷)拷贝覆盖损坏了的Control File:$cp/backup/control
1.ctl/disk1/control
1.ctl
3.启动数据库然而并不打开$svrmgrl svrmgrlconnect internalsvrmgrl startupmount
4.Drop坏掉的redo log(排除硬件故障)svrmgrl alterdatabasedroplogfile group2;
5.重新创建redo log:svrmgrl alterdatabaseaddlogfile group2,7orig_loc/log
2.dbf,size10M;
6.以旧的controlfile来恢复数据库svrmgrl recoverdatabaseuntilcancel usingbackupcontrolfile;(务必马上cancel)
7.Reset thelogfiles(对启动而言不可省略)svrmgrl alterdatabaseopenresetlogs;
8.关闭数据库并做一次全库冷备份只发生归档重作日志丢失或者损坏时根据不一致环境与情况,选择下述手段之一a.马上backup全部datafiles(假如系统使用通常热备份或者RMAN热备份)b.马上正常关闭数据库并进行冷备份(假如系统使用冷备份)c.冒险前进!不做备份而让数据库接着跑,直等到下一个备份周期再做备份这是在赌数据库在下一个备份周期到来之前不可能有需要恢复的错误发生注意:冒险前进的选择假如发生错误而需要数据库恢复,则最多只能恢复到出问题archive log之前的操作现场从另一个角度讲,archivelog(s)出现问题时,数据库若不需要恢复则其本身并没有任何问题
1.
3.数据库逻辑结构故障处理逻辑结构的故障通常指由于人为的误操作而导致重要数据丢失的情况在这种情况下数据库物理结构是完整的也是一致的关于这种情况采取对原先数据库的全恢复是不合适的,我们通常使用三种方法来恢复用户数据使用exp/imp工具来恢复用户数据假如丢失的数据存在一个往常用exp命令的备份,则能够才用这种方式
1.在数据库内创建一个临时用户svrmgrlcreate usertest_user identifiedby test;svrmgrlgrant connect,resource totest_user;
2.从往常exp命令备份的文件中把丢失数据的表按照用户方式倒入测试用户$imp system/manager file=export_file_name tables=(lost_data_table_name...)fromuser=lost_data_table_owner touser=test_user constraint』;
3.用相应的DML语句将丢失的数据从测试用户恢复到原用户
4.将测试用户删除svrmgrldrop usertest_user cascede;使用logminer来恢复用户数据Logminer是oracle提供的一个日志分析工具它能够根据数据字典对在线联机日志、归档日志进行分析,从而能够获得数据库的各类DML操作的历史记录与各类DML操作的回退信息根据这些用户就能够将由于误操作而丢失的数据重新加入数据库内
1.确认数据库的utl_file_dir参数已经设置,假如没有则需要把这个参数加入oracle的初始化参数文件,然后重新启动数据库下面例子中假设utl_file_dir=7opt/oracle/dbO
12.创建logminer所需要的数据字典信息,假设生成的数据字典文本文件为dict.orasvrmgrlexecute dbms_logmnr_d.builddictionary_filename=,,dict.ora,,dictionary_location=7opt/oracle/db01;
3.确定所需要分析的日志或者者归档日志的范围这能够根据用户误操作的时间来确定大概的日志范围假设用户误操作时可能的日志文件为/opt/oracle/db02/oradata/ORCL/redo
3.1og与归档日志7opt/oracle/arch/orcl/orclarc」_l
13.ora
4.创建要分析的日志文件列表,按日志文件的先后顺序依次加入svrmgrlexecute dbms_logmnr.add_logfilelogfilename=7opt/oracle/arch/orcl/orclarc_l_l
13.ora,options=dbms_logmnr.NEW;svrmgrl executedbms_logmnr.add_logfilelogfilename=,/opt/oracle/db02/oradata/ORCL/redo
3.log,options=dbms_logmnr.ADDFILE;
5.分析日志,假设需要分析的时间在‘2003-06-2812:00:00与2003-06-2813:00:00之间svrmgrlexecute dbms_Iogmnr.start_logmnrdictfilename=,/opt/oracle/db01/dict.ora,,starttime=to_date,2003-06-2812:00:007YYYY-MM-DD HH:MI:SS,,endtime=to_dateto_date12003-06-2813:00:00;YYYY-MM-DD HH:MI:SS;
6.获取分析结果svrmgrlselect operation,sqLredo,sql_undo fromv$logmnr_contents;
7.根据分析结果修复数据8,结束logmnr:svrmgrldbms_logmnr.end_logmnr;
9.用适当的方法对原数据库进行数据库全备份
1.
3.
1.利用备份恢复用户数据使用这种方法时并不是在原数据库进行恢复,而是利用数据库备份在新的机器上重新建立一个新的数据库通过备份恢复在新机器上将数据库恢复到用户误操作前,这样就能够获得丢失的数据将其恢复到原数据库
1.在新的机器上安装数据库软件
2.关于使用带库备份的现场,需要在新的数据库服务器上安装调试相应的备份管软件
3.根据用户误操作的时间点进行基于时间点的数据库恢复操作关于没有使用带库备份的现场,能够选取用户误操作前最近的备份磁带进行恢复;关于才用带库备份的点能够通过基于时间恢复点恢复的rman脚本来进行恢复4,重新打开数据库svrmgrlalter databaseopenresetlogs;
5.从新的数据库中获取丢失的用户数据,通过DML操作将其恢复到原数据库中
6.用适当的方法对原数据库进行数据库全备份CWMLITE20DRSYS20ODM20PERFSTAT99SYSTEM
4001.
1.
1.
12.查看回滚段名称及大小select segment_name,tablespace_name,r.status,initial_extent/1024InitialExtent,next_extent/1024NextExtent,max_extents,v.curext CurExtentFrom dba_rollback_segs r,v$rollstat vWhere r.segmented=v.usn+orderbysegment_name;
1.
1.
1.
13.移动一个表的多个分区BEGIN FORx INSELECT partition_name FROMuser_tab_partitions WHEREtable_name=BIG_TABLE2LOOP EXECUTEIMMEDIATE altertable big_table2move partition6||x.partition_name;END LOOP;END;/
1.
1.
1.
14.查看LOCK SELECT/*+ORDERED USE_HASHH,R*/H.SID HOLD_SID,R.SID WAIT_SID,decodeH.type,“MR,“Media Recovery”,“RT”「Redo Thread”,UN,User Name,‘TX,Transaction”,叮M,“DML”,UL,PL/SQL UserLock”,DX,Distributed Xaction”,CFJControl File,IS,Instance State”,FS,File Set,IR,Instance Recovery,ST,Disk SpaceTransaction”,叮S JTempSegment,“IV,Library CacheInvalidation,LS,Log Startor Switch,RW,Row Wait”,SQ,Sequence Number”,TE,Extend Table,‘TT,Temp Table”,H.type type,decodeH.lmode,0「None”,1,“Null”,2「Row-S SS『3JRow-X SX;41Share”,5「S/Row-X SSX”,6,“Exclusive”,to_charH.1mode hold,decoder.request,0,None”,1,NuM,2JRow-S SS”,3,Row-X SX/\4「Share”,5,S/Row-X SSX”,6,Exclusive,to_charR.request request,R.ID1,R.ID2,R.CTIME FROMVLOCK H,VLOCK RWHERE H.BLOCK=1AND R.BLOCK=0and H.TYPEMR ANDR.TYPEMR AND H.ID1=R.ID1ANDH.ID2=R.ID
21.
1.
1.
15.找ORACLE字符集select*from sys.props$wherename=NLS_CHARACTERSET;
1.
1.
1.
16.查看ORACLE运行的OS平台SQL runbegin dbms_output.put_linedbms_utility.port_string;end;/
1.
1.
1.
17.查看空间全面使用情况CREATE ORREPLACE PROCEDUREshow_spacep_segname IN VARCHAR2,p_owner P-INVARCHAR2DEFAULT USER,type INVARCHAR2DEFAULT TABLE;p_partition INVARCHAR2DEFAULT NULLAS l_total_blocks NUMBER;l_total_bytes NUMBER;l_unused_blocks NUMBER;l_unused_bytes NUMBER;l_lastusedextfileid NUMBER;l_lastusedextblockid NUMBER;l_last_used_block NUMBER;PROCEDURE ppjabel INVARCHAR2,p_num INNUMBER ISBEGIN DBMS_OUTPUT.put」ine RPADpjabel,40,7||p_num;END;BEGIN DBMS_SPACE.unused_space segment_owner segment_name segment_type partition-name total_blocks total_bytes unused_blocks unused_bytes=p_owner,=last_used_extent_file_id last_used_extent_block_id p_segname,=p_type,last_used_block;=p_partition,=p TotalBlocks*,l_total_blocks;p TotalBytes,l_total_blocks,=l_total_bytes;p UnusedBlocks*,l_unused_blocks;l_total_bytes,=p UnusedBytes*,l_unused_bytes;p LastUsed l_unused_blocks,=Ext Fileld1,l_lastusedextfileid;p LastUsed Extl_unused_bytes,=Blockid,IJastusedextblockid;p LastUsed Block1,IJastusedextfileid,=l_last_used_block;l_lastusedextblocki=END;/l_last_used_block
1.
1.
1.
18.显示缓冲区的有关SQL SELECT tch,file#,dbablk,CASE WHENobj=4294967295THEN rbs/compat segment,ELSE SELECTMAX IIobject_type|||11owner||7||object.name||DECODE COUNT*,1/7maybe!*FROMdba_objects WHEREdata_object_id=x.obj ENDwhat FROMSELECTtch,file#,dbablk,obj FROMx$bh WHEREstate0ORDERBYtch DESCx WHEREROWNUM=5;
1.
1.
1.
19.获取生成的根据文件名selectc.value||7||d.instance_name||LoraJ||a.spid||.trc*trace fromv$process a,v$session b,v$parameter c,v$instance dwhere a.addr=b.paddr andb.audsid=userenv,sessionid,andc.name=,user_dump_dest,;在v$session_longops视图中,sofar字段表示已经扫描的块数,totalwork表示总得需要扫描的块数,因此我们即能够对正在运行的长查询进行监控,比如在索引创建时,查看索引创建的进度,也能够查看系统中以往的长查询col opnameformat a32col target_desc format a32col perwork format al2set lines131select sid,OPNAME,TARGET_DESC,sofar,TOTALWORK,truncsofar/totalwork*100,2ir%as perworkfromv$session_longops wheresofar!=totalwork;set lines121set pages999col opnameformat a29col targetformat a29col target_desc formatal2col perworkformata12col remainformat99col start_time formata21col sofarformat99999999col totalworkformat99999999col sql_text formatalOl colbufgets format99999999select opname,target,to_charstart_time/yy-mm-dd:hh24:mi:ss start_time,elapsed_seconds elapsed,executions execs,buffer_gets/decodeexecutions,0,1executions bufgets,module,sql_text fromv$session_longops sl,v$sqlarea sawhere sl.sql_hash_value=sa.hash_value anduppersubstrmodule,1,4RMAN andsubstropname,1,4RMAN andmoduleSQL*Plus andsl.start_timetruncsysdate orderby start_time;
1.
1.
1.
20.IO事件监控
1.监控事例的等待select event,sumdecodewait_Time,0,0,1Trev1,sumdecodewait_Time,0,1,0“Curr”,count*Tot”fromv$session_Wait groupby eventorderby4;
2.回滚段的争用情况selectname,waits,gets,waits/gets Ratio”fromv$rollstat a,v$rollname bwhere a.usn=b.usn;
3.监控表空间的I/O比例select df.tablespace_name name,df.file_name file,f.phyrds pyr,f.phyblkrd pbr,f.phywrts pyw,f.phyblkwrt pbwfromv$filestat f,dba_data_files dfwhere f.file#=df.file_id orderby df.tablespace_name;
4.监控文件系统的I/O比例select substra.file#,l,2n#n,substra.name,1,30H Name\a.status,a.bytes,b.phyrds,b.phywrts fromv$datafile a,v$filestat bwhere a.file#=b.file#;
4.
21.
21.
21.在某个用户下找所有的索引select user_indexes.table_name,user_indexes.index_name,uniqueness,column_namefromuser_ind_columns,user_indexes whereuser_ind_columns.index_name=user_indexes.index_name anduser_ind_columns.table_name=user_indexes.table_name orderby user_indexes.table_type,user_indexes.table_name,user_indexes.index_name,column_position;
4.
21.
21.
22.监控SGA的命中率select a.value+b.value nlogical_reads n,c.value nphys_reads H,round100^a.value+b.value-c.value/a.value+b.value nBUFFER HITRATIO fromv$sysstat a,v$sysstat b,v$sysstat cwhere a.statistic#=38andb.statistic#二39andc.statistic#=40;
4.
21.
21.
23.监控SGA中字典缓冲区的命中率select parameter,gets,Getmisses,getmisses/gets+getmisses*100n missratio n,1-sumgetmisses/sumgets+sumgetmisses*100Hit ration fromv$rowcache wheregets+getmisses0groupbyparameter,gets,getmisses;监控SGA中共享缓存区的命中率,应该小于1%select sumpinsTotal Pins,sumreloads TotalReloads,sumreloads/sumpins*100libcache fromv$librarycache;select sumpinhits-reloads/sumpins hitradio1,sumreloads/sumpins nreload percent0fromv$librarycache;显示所有数据库对象的类别与大小select countnamenum__instances,type,sumsource_size source_size,sumparsed_size parsed_size,sumcode_size code_size,sumerror_size error_size,sumsource_size+sumparsed_size+sumcode_size+sumerror_size size_required fromdba_object_size groupby typeorderby2;监控SGA中重做日志缓存区的命中率,应该小于1%SELECT name,gets,misses,immediate_gets,immediate_misses,Decodegets,0,0,misses/gets^100ratio1,Decodeimmediate_gets+immediate_misses,0,0,immediate_misses/immediate_gets+immediate_misses*100ratio2FROMv$latch WHEREname INredo allocation1,redo copy1;监控内存与硬盘的排序比率,最好使它小于.10,增加sort_area_size:。