版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
OracleRDBMS
大型應用優(yōu)化其他方法
麥思博(北京)軟件科技有限公司2011.102025/1/211內(nèi)容提要臨時表的使用方法Logging與Nologging適當使用關于熱塊問題索引統(tǒng)計數(shù)據(jù)陳舊問題多塊讀方法索引與相關參數(shù)會話級參數(shù)使用方法2025/1/212Oracle臨時表臨時表的目的:應用中的有的數(shù)據(jù)只是臨時的存儲,使用后不再使用;永久表要存放在表中,給磁盤空間帶來碎片;臨時比變量更有效,可以用SQL語句。Oracle允許在會話或事務其間創(chuàng)建臨時表,以保存會話或事務的數(shù)據(jù):臨時表就是內(nèi)存表,它不保存到表空間上;臨時表的數(shù)據(jù)僅在會話其間有效;用CREATEGLOBALTEMPORARY完成臨表的創(chuàng)建;創(chuàng)建臨時表可指定事務級后會話級有效;不專門指定,則在會話結(jié)束后才釋放;對臨時表做DML操作不產(chǎn)生重做日志(REDOLOG)。2025/1/213Oracle臨時表-語法createglobaltemporarytabletable_name[tabledefinition]oncommitdeleterows;在提交后刪除行數(shù)據(jù):臨時表可在提交后刪除,語法為:為會話保持數(shù)據(jù):臨時表可為會話保持數(shù)據(jù),語法為:createglobaltemporarytabletable_name[tabledefinition]oncommitpreserverows;2025/1/214Oracle臨時表-例子SQL>createglobaltemporarytablemyempasselect*fromemp;表已創(chuàng)建。
SQL>select*frommyemp;未選定行
SQL>insertintomyempvalues('趙元杰',32456.99,10,'12');已創(chuàng)建1行。
SQL>select*frommyemp;ENAMESALDEPTNOTEL-------------------------------------------------------趙元杰32456.991012
SQL>connectsys/sys已連接。SQL>connectzhao/zhao已連接。SQL>select*frommyemp;未選定行創(chuàng)建臨時表:帶GLOBALTEMPORARY創(chuàng)建;會話結(jié)束自動清除:2025/1/215內(nèi)容提要臨時表的使用方法Logging與Nologging適當使用關于熱塊問題索引統(tǒng)計數(shù)據(jù)陳舊問題多塊讀方法索引與相關參數(shù)會話級參數(shù)使用方法2025/1/216Logging&Nologging什么是redo當塊改變時,Oracle記錄改變向量,并發(fā)將這些存放SGA日志緩沖區(qū)由LGWR寫到日志文件中簡單說:Redo=Transactions2025/1/217Logging&Nologging何時設置為NOLOGGING
下面情況可將表設置為NOLOGGINGDIRECTLOAD(SQL*Loader)DIRECTLOADINSERT(usingAPPENDhint)CREATETABLE...ASSELECTCREATEINDEXALTERTABLEMOVEALTERTABLE...MOVEPARTITIONALTERTABLE...SPLITPARTITIONALTERTABLE…ADDPARTITION(ifHASHpartition)2025/1/218Logging&Nologging下面情況可將表設置為NOLOGGINGALTERTABLE…MERGEPARTITIONALTERTABLE…MODIFYPARTITIONADDSUBPARTITONCOALESCESUBPARTITONREBUILDUNUSABLEINDEXESALTERINDEX...SPLITPARTITIONALTERINDEX...REBUILDALTERINDEX...REBUILDPARTITION2025/1/219Logging&Nologging設置索引為NOLOGGING可加快處理速度ALTERTABLE…NOLOGGING;INSERT/*+nologging*/…下面情況可采用NOLOGGING--先設置為NOLOGGINGSQL>ALTERINDEXnew_indexNOLOGGING;SQL>ALTERINDEXnew_indexREBUILD;--當暫時將表或索引設置成NOLOGGING時,別忘了再將它們設置loggingselect'altertable'||table_name||'logging;'fromuser_tableswheretable_namelike'%STATS%';
select'alterindex'||index_name||'logging;'fromuser_indexes;2025/1/2110Logging&Nologging創(chuàng)建表可指定NOLOGGING
--創(chuàng)建時設置為NOLOGGINGSQL>CREATE表指定NOLOGGING后,下面語句不產(chǎn)生日志:SQL>INSERTINTOnew_table_nolog_test...SQL>UPDATEnew_table_nolog_testSET...SQL>DELETEFROMnew_table_nolog_test...SQL>INSERTINTOnew_table_nolog_test...SQL>UPDATEnew_table_nolog_testSET...SQL>DELETEFROMnew_table_nolog_test...--INSERT/*+APPEND+/…ALTERTABLEnew_table_nolog_testMOVE…ALTERTABLEnew_table_nolog_testMOVEPARTITION…--創(chuàng)建時設置為NOLOGGINGSQL>CREATETABLEnew_table_nolog_testNOLOGGING(….);2025/1/2111NOLOGGING特殊的創(chuàng)建表可指定NOLOGGING限制寫日志修改不可恢復修改不能傳遞到備用庫謹慎使用NOLOGGING處于主要的生產(chǎn)數(shù)據(jù)庫不要設置NOLOGGING經(jīng)常被其他數(shù)據(jù)庫讀取的數(shù)據(jù)庫不要設置NOLOGGING千萬不能dataguard上用(如果已經(jīng)做了database
forcelogging就沒有事)2025/1/2112NOLOGGING用提示使用NOLOGGINGinsert/*+append+/intomytablevalues(1,‘a(chǎn)lan’);
Oracle歸檔模式下當表為logging狀態(tài)時,append/noappend都生成redo當表為nologging狀態(tài)時,只有append不生成redoOracle非歸檔模式下表在logging/nologing下:append模式都不生成redo,表在logging/nologing下:noappend模式下都生成redo2025/1/2113在提示中使用NOLOGGING可在提示中使用NOLOGGING可提示使用NOLOGGING和并行:insert/*+APPENDNOLOGGINGPARALLEL(table_name,4)*/intotable_nameselect/*+PARALLEL(table_name,4)*/fromtable_name@dblink;2025/1/2114數(shù)據(jù)庫級取消NOLOGGING從9.2開始,可將數(shù)據(jù)庫或表空間設置為LOGGING(取消NOLOGGING)數(shù)據(jù)庫級取消(強制產(chǎn)生日志):表空間級取消(強制產(chǎn)生日志):將數(shù)據(jù)庫或表空間設置為LOGGING所有的NOLOGGING將無效ALTERDATABASEFORCELOGGING;
ALTERDATABASENOFORCELOGGING;ALTERTABLESPACEtablespace_nameFORCELOGGING;
ALTERTABLESPACEtablespace_nameNOFORCELOGGING;2025/1/2115內(nèi)容提要臨時表的使用方法Logging與Nologging適當使用關于熱塊問題索引統(tǒng)計數(shù)據(jù)陳舊問題多塊讀方法索引與相關參數(shù)會話級參數(shù)使用方法2025/1/2116Oracle熱塊(hotblock)hotblock指的是同時有若干個session,同時對一個block進行操作,導致此block比較忙;導致block比較忙的原因是:Oracle數(shù)據(jù)庫的數(shù)據(jù)存放的最小單位就是block,數(shù)據(jù)每次讀取數(shù)據(jù)的時候只能以block為單位;如果有多條記錄存放在一個block上的話,那么導致多個session訪問同一個block的可能性就越大;2025/1/2117Oracle熱塊(hotblock)hotblock解決方法:1、增大databuffer;2、增加freelist,減小pctused(將一個block上可以使用的空間減少),引起block數(shù)據(jù)存放的較少,可以提高應用的訪問并發(fā)率,減少hotblock的產(chǎn)生;3、增加回滾段數(shù)目,增大initrans,考慮使用LMT,確認是不是由于熱點塊造成(如果是可以用反轉(zhuǎn)索引,或者用更小塊大小);4、可以建立block較小的表空間,將熱點對象移動到此表空間上去;5、優(yōu)化應用,優(yōu)化索引,提高索引的命中率;2025/1/2118Oracle熱塊(hotblock)Hotblock診斷
熱塊與“bufferbusywaits”等待事件有關1)查詢V$session_wait視圖:2)如果上面塊在忙等待,則查詢這一塊的名稱和類型Selectp1"File#",p2"Block#",p3"ReasonCode"fromv$session_waitwhereevent='bufferbusywaits';Selectowner,segment_name,segment_typeFromdba_extentswherefile_id=&P1and&P2betweenblock_id
andblock_id+blocks-1;2025/1/2119Oracle熱塊(hotblock)Hotblock診斷(續(xù))熱塊一旦被確定,則使用v$segment_statistics性能視圖促使塊水平統(tǒng)計的實時監(jiān)控。這一過程使得DBA識別與獨立列表與索引有關的問題也可以查詢dba_data_files以確定卷入等待的文件的file_name,方法是使用v$session_wait中的P1查詢V$SEGMENT_STATISTICS視圖SELECTowner,object_type,object_name,valueFROMV$SEGMENT_STATISTICSWHERE(statistic_namelike'%read%‘ORstatistic_namelike'%write%')ORDERBYvaluedesc2025/1/2120內(nèi)容提要臨時表的使用方法Logging與Nologging適當使用關于熱塊問題索引統(tǒng)計數(shù)據(jù)陳舊問題多塊讀方法索引與相關參數(shù)會話級參數(shù)使用方法2025/1/212122/90索引碎片分析當表的數(shù)據(jù)不斷被刪除后,與之相關的索引仍然保留那么這些無用的索引數(shù)據(jù)項是多少呢?Analyzeindex…validatestructure檢查索引塊沖突校驗索引的大小結(jié)果放入index_stats
表中,并生成有關索引的詳細視圖索引統(tǒng)計數(shù)據(jù)陳舊問題2025/1/2122ANALYZEINDEX…validatestructure命令SELECTDEL_LF_ROWS/LF_ROWS“Wasted”FROMINDEX_STATS如果浪費數(shù)值“Wasted”>0.2
或索引節(jié)點利用率<60%(PCT_USED<60)索引有效性分析SQL>ANALYZEINDEX&index_nameVALIDATESTRUCTURE;colnameheading'IndexName'formata30col
del_lf_rowsheading'Deleted|LeafRows'format99999999col
lf_rows_usedheading'Used|LeafRows'format99999999colratioheading'%Deleted|LeafRows'format999.99999--SELECTname,del_lf_rows,lf_rows-del_lf_rows
lf_rows_used,to_char(del_lf_rows/(lf_rows)*100,'999.99999')ratioFROMindex_statswherename=upper('&index_name');--當刪除的比率(ratio)大于15-20%時,需要對索引進行重建2025/1/212310g/11g基于CBO模式,這種模式需要訪問數(shù)據(jù)字典統(tǒng)計數(shù)據(jù);表/索引統(tǒng)計要盡量及時,準確當統(tǒng)計數(shù)據(jù)不要太舊,誤導優(yōu)化器當統(tǒng)計數(shù)據(jù)太舊,要及時重新搜集!統(tǒng)計數(shù)據(jù)過時問題2025/1/2124內(nèi)容提要臨時表的使用方法Logging與Nologging適當使用關于熱塊問題索引統(tǒng)計數(shù)據(jù)陳舊問題多塊讀方法索引與相關參數(shù)會話級參數(shù)使用方法2025/1/2125DB_FILE_MULTIBLOCK_READ_COUNT參數(shù):
表示conference磁盤讀取的塊數(shù)量;通常發(fā)生在全表掃描(FullTableScan)和快速全索引掃描(FastFullIndexScan)時
盡管這個參數(shù)已經(jīng)由DBA設置,但開發(fā)人員可根據(jù)目前的具體需要在會話設置,如:DB_FILE_MULTIBLOCK_READ_COUNTSQL>connectscott/tiger@orclSQL>altersessionsetDB_FILE_MULTIBLOCK_READ_COUNT=16;2025/1/2126DB_FILE_MULTIBLOCK_READ_COUNT參數(shù)的大小探測方法:
大小要根據(jù)當前OS運行的I/O能力來設置如何確定這個參數(shù)的呢?,只有手工辦法:1.查詢Oracle塊大小和會話級設置:DB_FILE_MULTIBLOCK_READ_COUNT--目前8i的db_file_multiblock_read_count參數(shù)為:db_file_multiblock_read_count8db_block_sizeinteger8192--修改db_file_multiblock_read_count參數(shù)前要進行下面的測試--以確定db_file_multiblock_read_count參數(shù)的大小SQL>settimingonSQL>setautotraceon--1.設置會話級參數(shù):altersessionsetdb_file_multiblock_read_count=32;2025/1/2127DB_FILE_MULTIBLOCK_READ_COUNT參數(shù)的大小探測方法:
2.設置會話跟蹤和做一個實際查詢操作:DB_FILE_MULTIBLOCK_READ_COUNT--2.設置會話跟蹤:altersessionsetevents'10046tracenamecontextforever,level10';--altersessionsetevents'10046tracenamecontextforever,level12';--3.全表掃描測試:
select/*+full(a)*/count(*)frombaan.TTFGLD416888a;--4.取消會話跟蹤:altersessionsetevents'10046tracenamecontextoff';2025/1/2128DB_FILE_MULTIBLOCK_READ_COUNT參數(shù)的大小探測方法:
3.分析會話跟蹤數(shù)據(jù)-看是否能采用這個參數(shù):DB_FILE_MULTIBLOCK_READ_COUNT--5.檢查跟蹤文件:SQL>showparameterUSER_DUMP_DEST$文件名為:baanivc4_ora_18052.trc/oracle/admin817/baanIVc4/udump/baanivc4_ora_18052.trcOracle8iEnterpriseEditionRelease8.1.7.0.0-64bitProductionWiththePartitioningoptionJServerRelease8.1.7.0.0-64bitProductionORACLE_HOME=/oracle/817Systemname: SunOSNodename: BCA-ERPRelease: 5.8Version: Generic_108528-16Machine: sun4uInstancename:baanIVc4Redothreadmountedbythisinstance:1Oracleprocessnumber:11Unixprocesspid:18052,image:oracle@BCA-ERP(TNSV1-V3)2025/1/2129DB_FILE_MULTIBLOCK_READ_COUNT參數(shù)的大小探測方法:
3.分析會話跟蹤數(shù)據(jù)-看是否能采用這個參數(shù)(續(xù)):DB_FILE_MULTIBLOCK_READ_COUNT--5.檢查跟蹤文件:***2010-01-1009:34:08.389WAIT#0:nam='SQL*Netmessagefromclient'ela=0p1=1413697536p2=1p3=0=====================PARSINGINCURSOR#1len=56dep=0uid=0oct=3lid=0tim=0hv=1986181661ad='bdea11e8'select/*+full(a)*/count(*)frombaan.TTFGLD416888aENDOFSTMTPARSE#1:c=0,e=0,p=0,cr=0,cu=0,mis=1,r=0,dep=0,og=4,tim=0EXEC#1:c=0,e=0,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=4,tim=0WAIT#1:nam='SQL*Netmessagetoclient'ela=0p1=1413697536p2=1p3=0……WAIT#1:nam='fileopen'ela=0p1=0p2=0p3=0WAIT#1:nam='dbfilescatteredread'ela=0p1=9p2=61562p3=30WAIT#1:nam='dbfilescatteredread'ela=0p1=13p2=1093577p3=13WAIT#1:nam='dbfilescatteredread'ela=0p1=13p2=1093591p3=31WAIT#1:nam='dbfilescatteredread'ela=0p1=16p2=854824p3=32WAIT#1:nam='dbfilescatteredread'ela=0p1=16p2=854856p3=32WAIT#1:nam='dbfilesequentialread'ela=0p1=16p2=854888p3=1WAIT#1:nam='dbfilescatteredread'ela=0p1=17p2=3025147p3=32WAIT#1:nam='dbfilescatteredread'ela=0p1=17p2=3025179p3=32表示系統(tǒng)使用過32多塊讀2025/1/2130db_file_multiblock_read_count參數(shù)調(diào)整:
10g版本為自動調(diào)整(不設置就表示自動管理)默認為I/O可執(zhí)行的最大值與平臺有關,不能超過緩沖區(qū)的10%通常相當于1MB對數(shù)據(jù)倉庫/DSS可能不合適DB_FILE_MULTIBLOCK_READ_COUNT2025/1/2131DB_FILE_MULTIBLOCK_READ_COUNTOracle10gR2版本與這個參數(shù)相關的功能有:V$PROCESS_MEMORY輔助監(jiān)視自動PGA管理與確定PGA_AGGREGATE_TARGET參數(shù)的最佳設置如果沒有明確設置DB_FILE_MULTIBLOCK_READ_COUNT參數(shù),則表示為自動調(diào)整大小與平臺有關,但文檔經(jīng)常說明為1MB
SYS@orcl>selectisdefault,description2fromv$parameter3wherename='db_file_multiblock_read_count';ISDEFAULTDESCRIPTION----------------------------------------FALSEdbblocktobereadeachIO2025/1/2132內(nèi)容提要臨時表的使用方法Logging與Nologging適當使用關于熱塊問題索引統(tǒng)計數(shù)據(jù)陳舊問題多塊讀方法索引與相關參數(shù)會話級參數(shù)使用方法2025/1/2133Optimizer_index_cost_adj參數(shù):
用來調(diào)整“基于代價的優(yōu)化”相對于全表掃描訪問代表一個百分比,取值范圍在1到10000之間;可理解為Oracle執(zhí)行多塊(MultiBlock)I/O(比如全表掃描)的代價與執(zhí)行單塊(Single-block)I/O代價的相對比例缺省值100:表示索引掃描成本等價轉(zhuǎn)換與全表掃描成本若減小,則CBO傾向于使用索引(即單塊I/O),反之則傾向于全表掃描(多塊I/O)OPTIMIZER_INDEX_COST_ADJ2025/1/2134Optimizer_index_cost_adj參數(shù)調(diào)整:
多數(shù)OLTP系統(tǒng):OPTIMIZER_INDEX_COST_ADJ可以設置在10到50之間對于數(shù)據(jù)倉庫和DSS系統(tǒng),需要反復調(diào)整取得一個合理值
更為具體的可以根據(jù)統(tǒng)計信息,dbfilescatteredreads/dbfilesequentialreads來計算OPTIMIZER_INDEX_COST_ADJ2025/1/2135索引與多塊讀取數(shù)量select*fromt2wheren1=45;--表掃描代價15altersessionsetDB_FILE_MULTIBLOCK_READ_COUNT=4;SELECTSTATEMENTOptimizer=CHOOSE(Cost=16Card=15)TABLEACCESS(BYINDEXROWID)OF'T2'(Cost=16Card=15)INDEX(RANGESCAN)OF'T_I2'(NON-UNIQUE)(Cost=1Card=15)(表掃描代價23)altersessionsetDB_FILE_MULTIBLOCK_READ_COUNT=16;SELECTSTATEMENTOptimizer=CHOOSE(Cost=10Card=15)TABLEACCESS(FULL)OF'T2'(Cost=10Card=15)2025/1/2136索引與單塊讀取調(diào)整select*fromt2wheren1=45; --indexaccesscostwas16altersessionsetOPTIMIZER_INDEX_COST_ADJ=50;SELECTSTATEMENTOptimizer=CHOOSE(Cost=8Card=15)TABLEACCESS(BYINDEXROWID)OF'T2'(Cost=8Card=15)INDEX(RANGESCAN)OF'T_I2'(NON-UNIQUE)(Cost=1Card=15)altersessionsetOPTIMIZER_INDEX_COST_ADJ=25;SELECTSTATEMENTOptimizer=CHOOSE(Cost=4Card=15)TABLEACCESS(BYINDEXROWID)OF'T2'(Cost=4Card=15)INDEX(RANGESCAN)OF'T_I2'(NON-UNIQUE)(Cost=1Card=15)2025/1/2137OPTIMIZER_INDEX_CACHING參數(shù):
告訴Oracle
索引在內(nèi)存的數(shù)據(jù)緩沖區(qū)中的可能性有多大,即向優(yōu)化器暗示位于Oracle數(shù)據(jù)緩沖區(qū)的索引的數(shù)量參數(shù)設置將會影響到“基于代價的優(yōu)化”做出的對一個表連接(嵌套循環(huán))使用索引還是使用全表掃描選擇參數(shù)optimizer_index_caching是一個百分比參數(shù),有效取值范圍是0到100OPTIMIZER_INDEX_CACHING2025/1/21382025/1/21Oracle數(shù)據(jù)庫設計與性能39/90OPTIMIZER_INDEX_CACHING參數(shù)調(diào)整:
這個參數(shù)使得我們能夠調(diào)節(jié)“基于代價的SQL優(yōu)化器”的行為,從而選擇最好的方式來訪問想要的SQL查詢結(jié)果:嵌套循環(huán)連接哈希連接訪問全索引掃描全表掃描訪問
optimizer_index_caching設置為較大的百分比,可以使嵌套循環(huán)連接在優(yōu)化器看起來更便宜,從而優(yōu)化器更有可能選擇進行嵌套循環(huán)連接而不是哈希連接或者歸并排序連接OPTIMIZER_INDEX_CACHING2025/1/21392025/1/21Oracle數(shù)據(jù)庫設計與性能40/90Oracle9i/10g/11g的變化:從Oracle9i開始,運行配置多種塊大?。簞?chuàng)建表空間的塊大小為2K,4K,8K,16K和32K并使用相似大小的表和索引來匹配表空間我們應該理解這些新變化:大數(shù)據(jù)塊的輸入輸出操作的邊緣開銷可忽略不計取一個32K大小的數(shù)據(jù)塊的開銷僅比取一個2K大小的數(shù)據(jù)塊的開銷多1%,因為99%的磁盤輸入輸出操作都是用來把磁盤讀寫頭的移動到相應的磁盤柱面和軌道OPTIMIZER_INDEX_CACHING2025/1/21402025/1/21Oracle數(shù)據(jù)庫設計與性能41/90索引與大塊的表空間:當索引被存儲在大塊表空間中時使用起來更有效。更深層的原因是:B-樹可以更好地被平衡并且對順序索引節(jié)點訪問而言有更小的磁盤開銷著名作家RobinSchumacher的研究表明32K塊大小的Oracle索引在執(zhí)行索引范圍掃描時需要更少的邏輯輸入輸出,并且性能更高OPTIMIZER_INDEX_CACHING2025/1/21412025/1/21Oracle數(shù)據(jù)庫設計與性能42/90創(chuàng)建索引緩沖:可在數(shù)據(jù)庫處于活動狀態(tài)創(chuàng)建索引緩沖首先,把所有索引都移至某個單獨的表空間,定義成一個單獨的數(shù)據(jù)緩沖區(qū)然后將參數(shù)optimizer_index_caching設置成正確的值分配一個32K的緩沖區(qū)空間altersystemsetdb_32k_cache_size=100m;創(chuàng)建塊大小32K的表空間createtablespaceindex_ts_32k…blocksize32k;OPTIMIZER_INDEX_CACHING2025/1/21422025/1/21Oracle數(shù)據(jù)庫設計與性能43/90創(chuàng)建索引緩沖(續(xù)):把所有索引移至這個32K的表空間中該命令把所有索引移至這個32K的表空間而無需中斷當前存在的索引查詢。它把索引重建成臨時段,并確保新索引可用后在刪除舊索引alterindexcust_idxrebuildonlinetablespaceindex_ts_32k;OPTIMIZER_INDEX_CACHING2025/1/21432025/1/21Oracle數(shù)據(jù)庫設計與性能44/90創(chuàng)建索引緩沖(續(xù)):既然所有索引已經(jīng)被隔離到一個單獨的表空間和索引緩沖區(qū)中,我們就可以執(zhí)行數(shù)據(jù)字典腳本來預見相對精確度,即我們期望在內(nèi)存索引緩沖區(qū)中看到的索引的數(shù)量:OPTIMIZER_INDEX_CACHINGSelectvalue-blocksoptimizer_index_cachingFromv$parameterp,
dba_segmentsswherename='db_32k_cache_size'Andtablespace_name=INDEX_TS_32K';2025/1/2144OPTIMIZER_INDEX_CACHING創(chuàng)建索引緩沖與嵌套連接:只有采用(USE_NL)時才使用設置OPTIMIZER_INDEX_CACHING
參數(shù),如:SQL>altersessionsetoptimizer_index_caching=90;
Sessionaltered.SQL>showparameteroptimizer_index_caching
NAMETYPEVALUE---------------------------------------------------------------------------optimizer_index_cachinginteger902025/1/2145SKIP_UNUSABLE_INDEXESskip_unusable_indexes參數(shù):在會話中設置,表示要跳過無效的索引
在EXP中表示要跳過無效的索引(不導出)在IMP中表示要跳過無效的索引(不維護)索引為什么無效:當將表從一個表空間遷移到另外新表空間后,原來的索引自動變?yōu)闊o效
可用alterindexidxtunusable;命令使索引失效無效的索引的狀態(tài)在user_indexes.status列的值為“UNUSABLE”2025/1/21462025/1/2147/90SKIP_UNUSABLE_INDEXES索引無效(UNUSABLE
)的處理:可設置skip_unusable_indexes跳過失效的索引這個參數(shù)可在系統(tǒng)或會話級上設置,如:SQL>select*fromawhereid=1;select*fromawhereid=1*第1行出現(xiàn)錯誤:ORA-01502:索引'TEST.IDX_A_ID'或這類索引的分區(qū)處于不可用狀態(tài)SQL>altersystemsetskip_unusable_indexes=truescope=memory;系統(tǒng)已更改。SQL>select*fromawhereid=1;2025/1/2147SKIP_UNUSABLE_INDEXES索引無效處理建議:經(jīng)常檢查關鍵索引是否失效直接查詢dba_indexes的status列是否為“UNUSABLE”即可對于處于無效的索引,建議找時間要重建,而不是一味的跳過,跳過只是一種臨時的辦法2025/1/2148內(nèi)容提要臨時表的使用方法Logging與Nologging適當使用關于熱塊問題索引統(tǒng)計數(shù)據(jù)陳舊問題多塊讀方法索引與相關參數(shù)會話級參數(shù)使用方法2025/1/2149參數(shù)設置與API用“ALTERSYSTEM”
命令修改實例參數(shù):<param>是參數(shù)的完整名稱,而<value>是要設置的具體值,如Audit_trail=TRUEcomment是注釋字串deferred表示參數(shù)延遲生效MEMORY[Default]:在當前實例內(nèi)存有效SPFILE:只寫到spfileBOTH:memory+spfileALTERSYSTEMSET<param>[=]<value>[comment'<text>'][deferred][SCOPE={memory|spfile|both}][sid={'<sid>'|'*'}];2025/1/2150參數(shù)設置與API用“ALTERSYSTEM”
命令修改實例參數(shù):實例級參數(shù)的修改需要具有SYSDBA:--系統(tǒng)級半永久化參數(shù):ALTERSYSTEMSETparam=valueSCOPE=MEMORY;--只存儲在參數(shù)文件的參數(shù):ALTERSYSTEMSETparam=valueSCOPE=SPFILE;--修改后必須重啟動才有效的參數(shù):ALTERSYSTEMSETparam=valueSCOPE=BOTH;--SQL>altersystemsetdb_cache_size=512Mscope=both;系統(tǒng)已更改。2025/1/2151參數(shù)設置與APIDBA對參數(shù)的修改與影響范圍:DBA用ALTERSYSTEM修改參數(shù)影響整個實例DBA也可用ALTERSESSION修改參數(shù)只影響該會話Oracle系統(tǒng)參數(shù)的會話級修改問題:國內(nèi)多數(shù)開發(fā)人員認為修改參數(shù)應該是DBA的工作,這是對Oracle參數(shù)的誤解Oracle系統(tǒng)設計早考慮到參數(shù)影響范圍這個問題會話級的修改=按照該會話的需要進行設置(不強加將參數(shù)實施到別的會話)會話級參數(shù)的修改有2:命令方式與API方法
2025/1/2152參數(shù)設置與API會話級修改參數(shù)方法1:方法1:ALTERSESSIONset<parameter>=<value>;會話級修改參數(shù)方法2:DBMS_SYSTEM包:DBMS_SYSTEM.set_bool_param_in_sessionDBMS_SYSTEM.set_int_param_in_session--會話級參數(shù)設置:altersessionsetworkarea_size_policy=manualEXECUTEDBMS_SYSTEM.SET_INT_PARAM_IN_SESSION
(9,27,'sort_area_size',65535000);2025/1/2153會話級可修改的參數(shù)可用ALTERSESSION修改的參數(shù):ISSES_MODIFIABLE=TRUE會話級可修改查詢會話級可修改的參數(shù):--11gR1colnamefora50colvaluefora20selectname,value,ISSES_MODIFIABLEFROMV$PARAMETERWHEREISSES_MODIFIABLE='TRUE';NAMEVALUEISSES---------------------------------------------------------------------------timed_statisticsTRUETRUEtimed_os_statistics0TRUEnls_languageAMERICANTRUEnls_territoryAMERICATRUE……asm_power_limit1TRUEsqltune_categoryDEFAULTTRUEtracefile_identifierTRUEmax_dump_file_sizeunlimitedTRUE已選擇106行。2025/1/2154會話級可修改的參數(shù)可用ALTERSESSION修改的參數(shù):ISSES_MODIFIABLE=TRUE會話級可修改查詢會話級可修改的參數(shù):SQL>select*fromv$version;BANNER------------------------------------------------------------------------OracleDatabase11gEnterpriseEditionRelease11.2.0.1.0-ProductionPL/SQLRelease11.2.0.1.0-ProductionCORE 11.2.0.1.0 ProductionTNSfor32-bitWindows:Version11.2.0.1.0-ProductionNLSRTLVersion11.2.0.1.0-ProductionSQL>selectname,value,ISSES_MODIFIABLE2FROMV$PARAMETERWHEREISSES_MODIFIABLE='TRUE';NAMEVALUEISSES----------------------------------------------------------------------timed_statisticsTRUETRUEtimed_os_statistics0TRUE……m
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年個人與建筑公司借款合同范本匯編4篇
- 二零二五年度企業(yè)員工關系管理與沖突預防協(xié)議范本3篇
- 2025年度新型環(huán)保材料租賃經(jīng)營合同模板4篇
- 二零二五年度商業(yè)活動場地借用及宣傳合同2篇
- 二零二五年度體育產(chǎn)業(yè)普通合伙企業(yè)合作協(xié)議范本4篇
- 2025年度5G產(chǎn)業(yè)投資理財協(xié)議
- 2025年三方知識產(chǎn)權轉(zhuǎn)讓還款協(xié)議書范本及內(nèi)容說明3篇
- 個性化定制2024年版民間資金借貸協(xié)議范本版B版
- 2025年酒店住宿賠償協(xié)議范本
- 個人股份轉(zhuǎn)讓協(xié)議書
- 2024-2030年中國海泡石產(chǎn)業(yè)運行形勢及投資規(guī)模研究報告
- 動物醫(yī)學類專業(yè)生涯發(fā)展展示
- 2024年同等學力申碩英語考試真題
- 消除“艾梅乙”醫(yī)療歧視-從我做起
- 非遺文化走進數(shù)字展廳+大數(shù)據(jù)與互聯(lián)網(wǎng)系創(chuàng)業(yè)計劃書
- 2024山西省文化旅游投資控股集團有限公司招聘筆試參考題庫附帶答案詳解
- 科普知識進社區(qū)活動總結(jié)與反思
- 加油站廉潔培訓課件
- 現(xiàn)金日記賬模板(帶公式)
- 消化內(nèi)科??票O(jiān)測指標匯總分析
- 混凝土結(jié)構(gòu)工程施工質(zhì)量驗收規(guī)范
評論
0/150
提交評論