netstat -tln 命令是Linux查看端口使用情况netstat –an命令是windows查看端口使用情况一、查看执行ssql还剩多多少时间:select b.sql_ttext, --SQLL内容a.MACHIINE, ---哪台机器器运行的SLa.USERNNAME,---哪个用户户运行的SLa.MODULLE,--是是哪运行方式式c.sofarr/totaalworkk*100,,--工作进进行了百分之之多少 c.elapssed_seecondss, --己己经用了多少少时间(秒))c.time__remaiining --还剩多多少时间(秒秒)from v$$sessiion a,, v$slareaa b,v$$sessiion_loongopss cwhere aa.sql__hash__valuee=b.HAASH_VAALUEand a.ssid=c..sid aand a..SERIAAL#=c..SERIAAL#监控当前数据库库谁在运行什什么SQL语语句 SELECT osuseer, ussernamme, sl_texxt from v$sesssion a, v$$sqlteext b where a.sqll_addrress == b.adddresss order by adddresss, pieece;二、查看数据库库文件情况(大大小、是否扩扩展等)SELECT T.TABBLESPAACE_NAAME,D..FILE__NAME,,D.AUTOEEXTENSSIBLE,,D.BYTTES,D..MAXBYYTES,DD.STATTUSFROM DBBA_TABBLESPAACES TT,DBA__DATA__FILESS DWHERE TT.TABLLESPACCE_NAMME =D..TABLEESPACEE_NAMEEORDER BBY TABBLESPAACE_NAAME,FIILE_NAAME;修改数据库文件件sql:alter ddatabaase daatafille ' DD:\ORAACLE\OORA_DAATA\DAATACORRE_00003.ORAA' auttoexteend onn nextt 100MM maxssize 66G;alter ddatabaase daatafille 'D::\ORACCLE\ORRA_DATTA\AMLLM_00002.ORAA' ressize 22048M;;增加数据库文件件sqlLalter ttablesspace tableespacee_namee add dataffile ''D:\ORRACLE\\ORA_DDATA\AAMLM_00002.OORA' ssize 11024M;;三、查看表空间间使用情况及及版本查看oraclle版本:SELECT * FROM PPRODUCCT_COMMPONENNT_VERRSION;;查看Oraclle数据库表表空间的占有有率seleect a..tableespacee_namee, roound(((a.maxxbytess / 10024 / 1024)), 2) "sum MB", rounnd((a..bytess / 10024 / 1024)), 2) "dataafile MB", rounnd(((aa.bytees - bb.bytees) / 1024 / 10224), 22) "ussed MBB", rround((( (a..maxbyytes-aa.bytees+b.bbytes)) / 10024 / 1024)), 2) "freee MB",, rouund((((a.byttes - b.byttes) // a.maaxbytees) * 100, 2) "ppercennt_useed" ffrom ((selecct tabblespaace_naame, ssum(byytes) bytess,sum((maxbyytes) maxbyytes frrom dbba_datta_filles whhere mmaxbyttes!=00 ggroup by taablesppace_nname) a, ((selecct tabblespaace_naame, ssum(byytes) bytess, maxx(bytees) laargestt from dba_ffree_sspace grroup bby tabblespaace_naame) bb wherre a.ttablesspace__name = b.ttablesspace__name orderr by (((a.byytes -- b.byytes) / a.mmaxbyttes) ddesc;Select Segmeent_Naame,Suum(byttes)/11024/11024 FFrom UUser_EExtentts Grooup Byy Segmment_NName这个命令可以查查看当前用户户下所有表占用的的空间大小。
还有在命令行情情况下如何将将结果放到一一个文件里1. 查看所有有表空间大小小SQL> seelect tableespacee_namee,sum((bytess)/10224/10224 froom dbaa_dataa_filees groupp by ttablesspace__name;;2. 已经使用用的表空间大大小SQL> seelect tableespacee_namee,sum((bytess)/10224/10224 froom dbaa_freee_spacce 2 grroup bby tabblespaace_naame;3. 所以使用用空间可以这这样计算select a.tabblespaace_naame,tootal,ffree,ttotal--free used from ( selecct tabblespaace_naame,suum(byttes)/11024/11024 ttotal from dba_ddata_ffiles grouup by tableespacee_namee) a, ( selecct tabblespaace_naame,suum(byttes)/11024/11024 ffree ffrom ddba_frree_sppace grouup by tableespacee_namee) bwhere aa.tabllespacce_namme=b.ttablesspace__name;;4. 下面这条条语句查看所所有segmment的大大小(相当于于查看表使用用的大小)。
Select Segmeent_Naame,Suum(byttes)/11024/11024 FFrom UUser_EExtentts Grooup Byy Segmment_NName5. 还有在命命令行情况下下如何将结果果放到一个文文件里SQL> sppool oout.txxtSQL> seelect * froom v$ddatabaase;SQL> sppool ooff6、查看表空间间中分布的用用户信息select tableespacee_namee, ownner,suum(byttes) ffrom ddba_seegmentts group bby tabblespaace_naame, oowner 四、查看reddo logg文件及切换换情况,通常常切换时间为为15~300分钟select * froom v$llogfille;select * froom v$llog;修改redo log文件件大小:alter ssystemm checckpoinnt;alter ssystemm swittch loogfilee;alter ddatabaase drrop loogfilee grouup 3;alter ddatabaase addd loggfile groupp 3 ('D::\ORACCLE\PRRODUCTT\10.22.0\ORRADATAA\UPRRR\REDOO03.LOG'') sizze 2000M reuuse;五、碎片程度 select tabblespaace_naame,coount(ttablesspace__name)) frrom dba_ffree_sspace grooup by tableespacee_namee having couunt(taablesppace_nname)>> 10; 六、em的地址址查看及em和islpluss启动及关闭:查看地址:/ooraclee/oraccle10gg/sysmman/coonfig// emd..propeertiess默认地址:htttp:///$IP:11158/emm/conssoleLinux下启启动、停止EM和和isqlpplus:su - orracle【ooraclee# 】emctll stopp dbcoonsolee【oraclee# 】emctll starrt dbcconsolle【oraclee# 】isqlppluscttl sottp;【orracle## 】isqlppluscttl staart;附注: Q: 在命命令行方式下下,如何查看看CPU、内内存的使用情情况,网络流流量和磁盘II/O? AA: 在命令令行方式下, 1. 查看看CPU使用用情况的命令令 ""每55秒刷新一次次,最右侧有有CPU的占占用率的数据据 $ vmmstat 5 ""ttop 然后后按Shifft P,按按照进程处理理器占用率排排序 $ ttop 2.. 查看内存存使用情况的的命令 """用freee命令查看内内存占用情况况 $ frree """top 然然后按Shiift M,, 按照进程程内存占用率率排序 $ top 33. 查看网网络流量 """能够用工工具iptrraf工具 $ ipttraf --g ""针针对某个Innterfaace的网络络流量能够通通过比较两个个时间网络接接口的RX和和TX数据来来获得 $ date;; ifcoonfig eth1 $ datte; iffconfiig ethh1 4. 查看磁盘ii/o """用iosttat查看磁磁盘/devv/sdc33的磁盘i//o情况,每每两秒刷新一一次 $ iiostatt -d --x /deev/sdcc3 2 """用vmsstat查看看io部分的的信息 $ vmstaat 2七、内存参数调调整64位linuux,64位位oraclle10g,664位webbspherre6.1,,;服务器内内存8G的情情况下配置::ALTER SSYSTEMM SET open__cursoors = 3000 SCOPEE=SPFIILE;ALTER SSYSTEMM SET pga_aaggreggate_ttargett = 2556M SCCOPE=SSPFILEE;ALTER SSYSTEMM SET db_caache_ssize == 50M SCOPEE=SPFIILE;ALTER SSYSTEMM SET db_fiile_muultibllock_rread_ccount = 2566 SCOPPE=SPFFILE;ALTER SSYSTEMM SET java__pool__size = 10224M SCCOPE=SSPFILEE;ALTER SSYSTEMM SET largee_pooll_sizee = 7668M SCCOPE=SSPFILEE;ALTER SSYSTEMM SET sga_mmax_siize = 3G COOMMENTT='intternallly addjusteed' SCCOPE=SSPFILEE;ALTER SSYSTEMM SET shareed_poool_sizze = 11024M SCOPEE=SPFIILE;--ALTERR SYSTTEM SEET sorrt_areea_sizze = 11000M SCOPEE=SPFIILE;--ALTERR SYSTTEM SEET unddo_rettentioon = 110800 SCOPEE=SPFIILE;------------------------------------------------------------------------------------------------------------------------------------------------------在32位的操作作系统中,OOraclee最大可用内内存为1.775g,也就就是说SGAA+PGA<<=1.755g,超过这这一限制的内内存将不会被被Oraclle用到(测测试及分配11400M、3300M)SQL>shoow parrameteer sgaa;SQL>ALTTER syystem SET ssga_maax_sizze=1504m scoope=sppfile;;SQL>ALTTER syystem SET ssga_taarget==1504m scoope=sppfile;;SQL>shuutdownn immeediatee;SQL>staartup;;SQL>shoow parrameteer pga;SQL>ALTTER syystem SET ppga_agggregaate_taarget==256m;内存参数的调整整主要是orracle的的sga的调调整,seaa主要由共享享池、数据缓缓冲区、日志志缓冲区三部部分组成。
1、共享池有两两部分组成::共享sqll区和数据字字典缓冲区查看共享sqll区得使用率率,应该在990%以上,否否则需增加共共享池的大小小select (sum((pins-relooads)))/sum((pins)) "liib cacche" ffrom vv$librrarycaache;select sum(ppins) "请求存取取数",suum(relloads)) "不命中中数",suum(relloads))/sum((pins)) fromm v$liibraryycachee;其中,pinss,显示在库库高速缓存中中执行的次数数;relooad,显示示在执行阶段段库高速缓存存不命中的数数目,一般ssum(reeloadss)/summ(pinss)的值应接接近于零.如如果大于1%%就应该增加加shareed_poool_sizze的值, 来提高数据据字典高速缓缓存可用的内内存数量,减减少不命中数数.查看数据字典缓缓冲区的使用用率,应该在在90%以上上,否则需要要增加共享池池的大小select (sum((gets--getmiisses--usagee-fixeed))/ssum(geets) "row cachee" froom v$rrowcacche;2、数据缓冲区区的使用命中中率=1-((physiical rreads//(db bblock gets++consiistentt getss)),应该该在90%以以上,否则需需增加数据缓缓冲区大小。
select name,, valuee fromm v$syysstatt wherre namme in(('db bblock gets'','connsisteen getts','pphysiccal reeads'));3、日志缓冲区区失败率=rrequessts/enntriess,应该接近近0,否则说说明日志缓冲冲区太小,需需增加select name,,valuee fromm v$syysstatt wherre namme in ('reddo enttries'','reddo logg spacce reuestss')4、刷共享池alter ssystemm flussh shaared_ppool;----是小块块的内存合并并成大块的内内存,暂时恢恢复性能-----------5、临时表空间间的调整技巧巧如下:如果即使在稳定定的状态下也也存在很多的的排序扩展锁锁(sortt exteent poool laatch)的的竞争,应该该通过修改临临时表空间的的defauult sttoragee 字句的nnext值来来增大扩展块块的大小如如果存在很多多的排序扩展展锁(sorrt exttent ppool llatch)的的竞争并且这这种等待是由由于过多的并并发的排序造造成的,应该该增大 soort_arrea_siize参数的的大小,以便便更多的派讯讯能保存在内内存中,建议议让扩展块的的大小和soort_arrea_siize参数相相同------------------------6、查看sqll语句的解析析情况select * froom v$ssysstaat wheere naame inn ('paarse_ttime_ccpu',''parsee_timee_elappsed',,'parsse_couunt_haard')'parse__time__cpu'-------->系统服务务时间,'parsee_timee_elappsed'---------》响应时时间等待时间 waaite_ttime=pparse__time__elapssed-paarse_ttime_ccpusql语句平均均解析等待时时间=waiite_tiime/paarse_ccount__hard-----------------------7、查看低效率率的sql语语句 优化有有助于提高ccpu的利用用率select buffeer_getts,exeecutioons,sl_texxt froom v$ssqlareea;---------------8、通过v$ssystemm_evennt的lattch frree查看数数据库冲突情情况,如果没没有冲突则llatch free无无结果值。
如如果冲突太大大则可降低sspin_ccount参参数值来消除除高的cpuu使用率八、索引、磁盘盘及表空间调调整将物理磁盘分多多个盘,不同同的数据文件件放不同的磁磁盘上课提高高速度将不同的表放不不同的表空间间里(多建几几个表空间)可可提高速度将索引和表分别别放到不同的的表空间里可可提高速度其实就是I//O调优的一一种方式九、log_bbufferr 、proceesses及及sessiion调整SQL>shoow parrameteer spffile;---查看是否否是spfiile启动SQL> crreate spfille froom pfiile;---如果不是创创建并重启数数据库;SQL> allter ssystemm set proceesses==1000 sscope = spffile;SSQL> sshow pparameeter pprocessses;SSQL>shhutdowwn immmediatte;SQL> sttartuppSQL> shhow paarametter seessionns;【注:sesssions是是个派生值,,由proccessess的值决定,,公式sesssionss=1.1**proceess + 5】SQL>altter syystem set llog_buuffer== 16M scopee=spfiile(默认认4M)SQL>shoow parrameteer logg_bufffer;问题:ORA--020955: 无法修修改指定的初初始化参数 alter systeem sett log__buffeer= 1667772116 sccope=sspfilee;(不能用用M直接用字字节ok)环境 :11ggR2 alter systeem sett sesssions==250 sscope==both。
提示无法修改制制定的初始化化参数alter ssystemm set sessiions=2250 sccope=sspfilee;提示系统参数已已修改这种情况下,重重新启动数据据库才会生效效这涉及到到oraclle中有些参参数可以动态态修改,有些些参数不能动动态修改,如如何具体哪些些参数可动态态修改,哪些些参数不可以以动态修改,通通过v$paarametter 视图图可以清晰查查看SQL> deesc v$$parammeter;; 名称 是否为空空? 类型 ------------------------------------------------- ---------- ----------------- NUM NUMBEER NAMME VAARCHARR2(80)) TYPEE NUMMBER VVALUE VARCHHAR2(44000) DISPLLAY_VAALUE VARCCHAR2((4000)) ISDEEFAULTT VARRCHAR22(9) IISSES__MODIFFIABLEE VARCHHAR2(55) ISSSYS_MOODIFIAABLE VAARCHARR2(9) ISINSSTANCEE_MODIIFIABLLE VARCCHAR2((5) ISSMODIFFIED VVARCHAAR2(100) ISAADJUSTTED VAARCHARR2(5) ISDEPPRECATTED VARCCHAR2((5) ISSBASICC VVARCHAAR2(5)) DESCCRIPTIION VARRCHAR22(255)) UPDAATE_COOMMENTT VARRCHAR22(255)) HASHH NUMMBER其中name 标示参数名名字,issses_moodifiaable标示示是否可以会会话级别修改改,如何是ffalse,则则不可以动态态修改,trrue则可以以动态修改。
iissys__modiffiablee标示是否系系统级别修改改,falsse则不可修修改,truue则可动态态修改SQL> seelect name,,issess_modiifiablle,isssys_moodifiaable ffrom vv$paraameterr wherre namme='seessionns';NAME IISSES ISSYSS_MOD------------------------ ------ -----------sesssions FALLSE FAALSE问题:ORA--125199: TNSS:no aapproppriatee servvice hhandleer fouund 的解解决有时候连得上数数据库,有时时候又连不上上.可能是数据库上上当前的连接接数目已经超超过了它能够够处理的最大大值.SQL> seelect countt(*) fromm v$prrocesss;--当前前连接数 COOUNT(**) 663SQL>> seleect vaalue ffrom vv$paraameterr wherre namme = 'proccessess' --数据库库允许的最大大连接数VAALUE5000修改最大大连接数:SSQL> aalter systeem sett proccessess = 1000 sccope == spfiile;重启启数据库:SSQL> sshutdoown immmediaate;SL> sttartupp;--查看看当前有哪些些用户正在使使用数据SEELECT osuseer, a..usernname,ccpu_tiime/execuutionss/10000000||'s', ssql_fuulltexxt,macchine from vv$sesssion aa, v$ssqlareea bwhhere aa.sql__addreess =b.adddress orderr by cpuu_timee/execuutionss descc;--快速删除不不活动进程sset heeadingg offsspool onsellect pp.SPIDD fromm v$seessionn s,v$$proceess p wheree s.paaddr= p.adddr andd s.maachinee='wooogle';;spooll offsset seerverooutputt on ;;declaarev_ssid nuumber;;v_serrial nnumberr;v_sl varrchar22(200)) ;CURRSOR ccur_seessionn is seleect siid, seerial## fromm v$seessionn wherre macchine=='wooggle';bbeginoopen ccur_seessionn ;fettch cuur_sesssion into v_sidd , v__seriaal ;whhile ccur_seessionn%founndlooppdbms__outpuut.putt_linee(v_siid||' killeed!') ;v_sl:= ''alterr systtem kiill seessionn '||'''''|||v_sidd||',''||v_sseriall||''''';exeecute immeddiate v_sqll ;fettch cuur_sesssion into v_sidd , v__seriaal ;ennd looop ;cllose ccur_seessionn ;endd ;/Linux 下快速删除除不活动进程程#!/biin/basshtmpffile=//tmp/ttmp.$$$sqlpllus ' / as sysdbba' <<< EOFsset heeadingg offsspool onspoool $ttmpfilleseleect p..SPID from v$sesssion s,v$pprocesss p wwhere s.padddr= pp.addrr and s.STAATUS=''SNIPEED';sppool ooffsett servverouttput oon ;deeclareev_sidd numbber;v_sseriall numbber;v__sql vvarchaar2(2000) ;CCURSORR cur__sessiion iss seelect sid, seriaal# frrom v$$sessiion whhere SSTATUSS='SNIIPED';;beginnopen cur_ssessioon ;feetch ccur_seessionn intoo v_siid , vv_seriial ;wwhile cur_ssessioon%fouundlooopdbmss_outpput.puut_linne(v_ssid||'' killled!')) ;v_ssql:= 'alteer sysstem kkill ssessioon '|||''''|||v_siid||',,'||v__seriaal||''''';exxecutee immeediatee v_sl ;feetch ccur_seessionn intoo v_siid , vv_seriial ;eend looop ;cclose cur_ssessioon ;ennd ;/问题:ORA--015522: cannnot uuse syystem rollbback ssegmennt forr non--systeem tabblespaace 'AAMLM’的解决那就新建一个uundo表空空间,并弃用用原先的:SSQL> ccreatee undoo tabllespacce UNDDOTBS22 dataafile '/optt/oraccle/dbb02/appp/oraacle/ooradatta/ORCCL/unddotbs002.dbff' sizze 30000m;SL> shhow paarametter unndounddo_mannagemeent sstringg MANUUALunddo_rettentioon iintegeer 36000undo__supprress_eerrorss booolean FFALSEuundo_ttablesspace striing UNNDOTBSS1SQL>> alteer sysstem sset unndo_maanagemment=aauto sscope==spfille;SQLL> altter syystem set uundo_ttablesspace==UNDOTTBS2 sscope==spfille;SQL> shhow usser ---用dbaa以上用户SQL> shhutdowwn immmediatteSQL> sttartuppSQL> drrop taablesppace uundotbbs1;5. 查看回滚滚段的使用情情况,哪个用用户正在使用用回滚段的资资源,如果有有用户最好更更换时间(特特别是生产环环境)。
SQL> seelect s.useernamee, u.nname ffrom vv$trannsactiion t,,v$rolllstatt r,ITTPUB个人人空间 Okk"L1[55rx@[ll v$rrollnaame u,,v$sesssion s wheere s..taddrr=t.adddr annd)x&^^8H+Gww_9i0 t.xxidusnn=r.ussn andd r.ussn=u.uusn orrder bby s.uusernaame;6. 检查UNNDO Seegmentt状态;SQL> seelect usn,xxacts,,rssizze/10224/10224/10224,hwmmsize//1024//1024//1024,,shrinnks1C@@o(V#ttP ea00 ffrom vv$rolllstat orderr by rrssizee;7. SQL>> creaate unndo taablesppace uundotbbs1 daatafille '/oopt/orracle//oradaata/upprr/unndotbss01.dbbf' siize 30072M rreuse autoeextendd on nnext 8800m mmaxsizze 16GG;8. 动态更改改spfille配置文件件;SQL> allter ssystemm set undo__tableespacee=undootbs1 scopee=bothh;System alterred.9. 等待原UUNDO表空空间所有UNNDO SEEGMENTT OFFLLINE;SQL> seelect usn,xxacts,,statuus,rsssize/11024/11024/11024,hhwmsizze/10224/10224/10224,shrrinksIITPUB个个人空间bXXG?y'[[ frrom v$$rollsstat oorder by rsssize;;10. 再执行行看UNDOO表空间所有有UNDO SEGMEENT ONNLINE;;SQL> seelect usn,xxacts,,statuus,rsssize/11024/11024/11024,hhwmsizze/10224/10224/10224,shrrinksGG cCt~~"\4[44` hr00ez0 fromm v$roollstaat ordder byy rssiize;11. 删除原原有的UNDDO表空间;;SQL> drrop taablesppace uundotbbs2 inncludiing coontentts;Tablesppace ddroppeed.12. 确认删删除是否成功功;SQL> seelect name from v$tabblespaace;十、调整参数ssort_aarea_ssize常常遇到这样的的问题:某某某参数应改怎怎么设,设置置多大合适??其实很多情情况下只能给给出个大概的的估计值。
例例如参数soort_arrea_siize,太小小,排序时是是会访问磁盘盘,影响性能能,太大,浪浪费内存空间间那么设多多大合适呢?? 使用如下脚本::SQL> seelect A.Vallue Diisk_Soorts, BB.Valuue Memmory_SSorts,, ROUNDD(100**A.Vallue/ DDECODEE((A.VValue++B.Vallue),00,1,(AA.Valuue+B.VValue))),2) Pctt_Diskk_Sortts from V$SYSSSTAT A, V$$SYSSTTAT B wwhere A.Namme = ''sortss (dissk)' and BB.Namee = 'ssorts (memoory)';;DISK_SOORTS MMEMORYY_SORTTS PCTT_DISKK_SORTTS------------ -------------- ---------------- 1 12200 ..08当然我的只是一一个例子,你你应改从你自自己的在用数数据库查询,例例如设置一个个限值,例如如10%,如如果磁盘排序序占总排序的的10%,则则应改增大ssort_aarea_ssize, 如果1占的的比例太小,是是否应改考虑虑减小sorrt_areea_sizze。
ps: 一直以以为sortt_areaa_sizee的空间在会会话连接时就就会分配,但但看一些资料料,各不相同同还得细心心琢磨我觉得对于这个个建议,在OOraclee9i可以借借鉴为调整ppga大小9i以上用pga_aggregate_target参数控制,sort_area_size参数无效十一、TEMPP表空间调整整在优化SQL语语句的基础上上,加大内存存,适当调整整Sort__area__size的的大小,因为为Oraclle优先使用用内存排序,内内存不够才使使用磁盘中的的临时表空间间,对于超大大临时表空间间可以删除这这个超大临时时表空间,重重新创建一个个合适大小的的,不可自动动扩展一般初始的临时时表空间都很很小,当系统统运行的时候候,临时表空空间会自动扩扩展,但是使使用率一直都都会非常高,所所以,主要看看一下 dbba_temmp_filles 里面面 autooextennsiblee(是否字段段扩展)和 maxbyytes以及及磁盘空间是是否足够,只只要临时表空空间支持扩展展,且磁盘空空间足够,一一般都不会出出问题的如果你希望望使用率降低低,那就 rresizee 临时表空空间的文件,将将文件修改大大一点,比如如 20G 以上。
1、 查看临时表空间间信息select * from ddba_teemp_fiiles;--查看临时表表空间使用率率select tableespacee_namee,userr_bytees,bytess,roundd(userr_bytees/byttes,6)) as pcct froom dbaa_tempp_filees;--查看临时表表空间数据文文件的大小select file__name,,bytess/1024/1024/1024 ""MB",autoeextenssible,,tableespacee_namee fromm dba__temp__filess;或者selecct tabblespaace_naame, bytees/powerr(1024,3) as pctt fromm dba__temp__filess;(单位G)2、检查过程(1) 我们可可以查查数据据库alerrt日志例如如:/u0//adminn/sm/bbdump//alertt_sm.llog数据库库中并没有报报temp表表空间的错,一一般来说不报报错,可以先先不管,因为为没有temmp表空间可可能由于没有有需要用到而而不释放空间间。
2) 我们可可以用这个语语句查一下SSELECTT se.uusernaame,siid,serrial#,,sql_aaddresss,macchine,,progrram,taablesppace,ssegtyppe,conntentssFROM v$sesssion se,v$$sort__usagee suWHHERE sse.sadddr=suu.sesssion_aaddr;其实v$sesssion是是会话信息,vv$sortt_usagge是正在使使用排序段的的会话可以以检查当前数数据库有没有有语句正在用用排序段,如如果有的话可可以使用一下下语句删除寻寻找出的相关关语句:SL>altter syystem kill sessiion 'ssid,seerial##';(3) 检查ttemp表空空间是不是自自动扩展的SSQL>seelect file__name,,bytess/10244/10244 "MB"",autooextennsiblee,tabllespacce_namme froom dbaa_tempp_filees;(4) 查询目目前数据库中中默认的临时时表空间SL>sellect ** fromm dataabase__propeertiess wherre proopertyy_namee likee 'DEFFAULT%%';或SL>sellect uusernaame,teemporaary_taablesppace ffrom ddba_ussers;3.处理过程(1) 重起数数据库,看看看有没有释放放临时表空间间Smon进进程会完成临临时段释放,,TEMP表表空间的清理理操作,不过过很多的时侯侯我们的库是是不允许doown的,所所以这种方法法缺少了一点点的应用机会会,不过这种种方法还是很很好用的。
2) 如果检检查出temmp表空间是是自动扩展的的,建议先修修改成非自动动扩展由于数数据库temmp表空间是是自动扩展,有有可能它不断断使用新的空空间,建议先先把它变成非非自动扩展例如:alter database tempfile 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\UPRR\TEMP01.DBF' autoextend off;(3) 如果ttemp表空空间不是自动动扩展,而且且空间比较小小例如:数据据库的temmp表空间只只有1.6GG,觉得可以以扩大一点,扩扩大3G左右右(上千万的的数据可以扩扩大到8~110G)SL> allter ssystemm tempp add tempffile ''/u0/ooradatta/sm//temp002.dbff' sizze 30996M;(4) 如果ttemp表空空间由于自动动扩展变得太太大,可以新新建一个teemp表空间间把它取代详详细可参看eeygle大大师的"Orracle99i中如何重重建与切换临临时表空间""http:://m/archhives//2006//04/orracle99i_deffault__tempoorary__tableespacee.htmll例如:用ttemp2表表空间取代ttemp表空空间 SQL> creatte temmporarry tabblespaace teemp2 ttempfiile 'EE:\ORAACLE\PPRODUCCT\10..2.0\OORADATTA\UPRRR\TEMMP02.DDBF' ssize 2200M aautoexxtend off;SQL> allter ddatabaase deefaultt tempporaryy tabllespacce temmp2;SQL> drrop taablesppace ttemp;最最后在操作系系统上把teemp的文件件删除,就可可以释放空间间。
如果为了更美观观可以重新建建temp表表空间,删除除temp22:SQL> crreate tempoorary tableespacee tempp temppfile 'E:\OORACLEE\PRODDUCT\110.2.00\ORADDATA\UUPRR\TTEMP011.DBF'' size 102400M autooextennd off;SQL> allter databbase tempffile 'E:\OORACLEE\PRODDUCT\110.2.00\ORADDATA\UUPRR\TTEMP011.DBF'' autoeextendd on;SQL> allter databbase defauult tempoorary tableespacee tempp;SQL> drrop tableespacee tempp2 incluuding conteents and dataffiles;; (5) 如果使使用的版本是是oraclle 10g以上,可可以收缩表空空间SELEECT see.userrname,,sid,sseriall#,sqll_addrress,mmachinne,proogram,,tableespacee,segttype,ccontenntsFROOM v$ssessioon se,,v$sorrt_usaage suuWHEREE se.ssaddr==su.seessionn_addrr;其实v$$sessi。