欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

oracle如何提sr,oracle如何提升for效率

如何提高oracle的insert速度

一般來說,減少索引和約束(比如如果是唯一索引insert時會進行驗證,check也會驗證),能提高一部分insert效率。

做網(wǎng)站、成都網(wǎng)站制作介紹好的網(wǎng)站是理念、設計和技術的結(jié)合。創(chuàng)新互聯(lián)建站擁有的網(wǎng)站設計理念、多方位的設計風格、經(jīng)驗豐富的設計團隊。提供PC端+手機端網(wǎng)站建設,用營銷思維進行網(wǎng)站設計、采用先進技術開源代碼、注重用戶體驗與SEO基礎,將技術與創(chuàng)意整合到網(wǎng)站之中,以契合客戶的方式做到創(chuàng)意性的視覺化效果。

append參數(shù)也有一定的作用。(與高水位標記線有關)

對于數(shù)據(jù)量很大的insert,進行分批,也有一定的作用。(減少內(nèi)存征用的等待時間)

表分區(qū)也有一些作用。(因為可以同時執(zhí)行多個insert,每個分區(qū)都可以執(zhí)行一個自己分區(qū)的insert,相當于并行)

變插入為導入,比如變?yōu)槲谋救缓罄猛獠勘沓绦驅(qū)耄ㄟ@樣走的是系統(tǒng)內(nèi)存和程序內(nèi)存,而且導入的操作,比dml語句操作快很多)

這些都是一般的想法,具體的選擇要根據(jù)你的實際情況進行。

如何提高oracle視圖的查詢速度?

1、可以縮小到5張表,因為很多都是從一張表里取出來的數(shù)據(jù);

2、不能子查詢因為是要顯示數(shù)據(jù)子查詢只是查詢條件;

3不能建立索引,因為這樣會影響表的增刪改,它里面都是導入進去的一次增加上千條都有可能;

4、定期結(jié)轉(zhuǎn)是什么意思,表示沒看懂。時間發(fā)的太長的話就算了;

5、定期結(jié)轉(zhuǎn)的意思就是,將你要建立視圖的幾種表數(shù)據(jù)“轉(zhuǎn)移”到一張新表里面去,不用視圖查詢。數(shù)據(jù)庫全文檢索是RDBMS自帶的擴展功能,可以實現(xiàn)高速查詢。全文檢索建議搜索下關鍵字,什么lucene之類的就出來了。

如何提升Oracle數(shù)據(jù)庫搜索效率

需要用索引來解決,索引的創(chuàng)建規(guī)則如下:

1、表的

主鍵

外鍵

必須有索引;

2、數(shù)據(jù)量超過300的表應該有索引;

3、經(jīng)常與其他表進行連接的表,在連接字段上應該建立索引;

4、經(jīng)常出現(xiàn)在Where子句中的字段,特別是大表的字段,應該建立索引;

5、索引應該建在選擇性高的字段上;

6、索引應該建在小字段上,對于大的文本字段甚至超長字段,不要建索引;

7、復合索引的建立需要進行仔細分析;盡量考慮用單字段索引代替:

A、

正確選擇

復合索引中的主列字段,一般是選擇性較好的字段;

B、復合索引的幾個字段是否經(jīng)常同時以AND方式出現(xiàn)在Where子句中?單字段查詢是否極少甚至沒有?如果是,則可以建立復合索引;否則考慮單字段索引;

C、如果復合索引中包含的字段經(jīng)常單獨出現(xiàn)在Where子句中,則分解為多個單字段索引;

D、如果復合索引所包含的字段超過3個,那么仔細考慮其必要性,考慮減少復合的字段;

E、如果既有單字段索引,又有這幾個字段上的復合索引,一般可以刪除復合索引;

8、頻繁進行

數(shù)據(jù)操作

的表,不要建立太多的索引;

9、刪除無用的索引,避免對執(zhí)行計劃造成負面影響;

以上是一些普遍的建立索引時的判斷依據(jù)。一言以蔽之,索引的建立必須慎重,對每個索引的必要性都應該經(jīng)過仔細分析,要有建立的依據(jù)。因為太多的索引與不充分、不正確的索引對性能都毫無益處:在表上建立的每個索引都會增加存儲開銷,索引對于插入、刪除、更新操作也會增加處理上的開銷。另外,過多的復合索引,在有單字段索引的情況下,一般都是沒有

存在價值

的;相反,還會降低數(shù)據(jù)增加刪除時的性能,特別是對頻繁更新的表來說,負面影響更大。

如何提高oracle的查詢速度

幾個簡單的步驟大幅提高Oracle性能--我優(yōu)化數(shù)據(jù)庫的三板斧。

數(shù)據(jù)庫優(yōu)化的討論可以說是一個永恒的主題。資深的Oracle優(yōu)化人員通常會要求提出性能問題的人對數(shù)據(jù)庫做一個statspack,貼出數(shù)據(jù)庫配置等等。還有的人認為要抓出執(zhí)行最慢的語句來進行優(yōu)化。但實際情況是,提出疑問的人很可能根本不懂執(zhí)行計劃,更不要說statspack了。而我認為,數(shù)據(jù)庫優(yōu)化,應該首先從大的方面考慮:網(wǎng)絡、服務器硬件配置、操作系統(tǒng)配置、Oracle服務器配置、數(shù)據(jù)結(jié)構(gòu)組織、然后才是具體的調(diào)整。實際上網(wǎng)絡、硬件等往往無法決定更換,應用程序一般也無法修改,因此應該著重從數(shù)據(jù)庫配置、數(shù)據(jù)結(jié)構(gòu)上來下手,首先讓數(shù)據(jù)庫有一個良好的配置,然后再考慮具體優(yōu)化某些過慢的語句。我在給我的用戶系統(tǒng)進行優(yōu)化的過程中,總結(jié)了一些基本的,簡單易行的辦法來優(yōu)化數(shù)據(jù)庫,算是我的三板斧,呵呵。不過請注意,這些不一定普遍使用,甚至有的會有副作用,但是對OLTP系統(tǒng)、基于成本的數(shù)據(jù)庫往往行之有效,不妨試試。(注:附件是Burleson寫的用來報告數(shù)據(jù)庫性能等信息的腳本,本文用到)

一.設置合適的SGA

常常有人抱怨服務器硬件很好,但是Oracle就是很慢。很可能是內(nèi)存分配不合理造成的。(1)假設內(nèi)存有512M,這通常是小型應用。建議Oracle的SGA大約240M,其中:共享池(SHARED_POOL_SIZE)可以設置60M到80M,根據(jù)實際的用戶數(shù)、查詢等來定。數(shù)據(jù)塊緩沖區(qū)可以大致分配120M-150M,8i下需要設置DB_BLOCK_BUFFERS,DB_BLOCK_BUFFER*DB_BLOCK_SIZE等于數(shù)據(jù)塊緩沖區(qū)大小。9i 下的數(shù)據(jù)緩沖區(qū)可以用db_cache_size來直接分配。

(2)假設內(nèi)存有1G,Oracle 的SGA可以考慮分配500M:共享池分配100M到150M,數(shù)據(jù)緩沖區(qū)分配300M到400M。

(3)內(nèi)存2G,SGA可以考慮分配1.2G,共享池300M到500M,剩下的給數(shù)據(jù)塊緩沖區(qū)。

(4)內(nèi)存2G以上:共享池300M到500M就足夠啦,再多也沒有太大幫助;(Biti_rainy有專述)數(shù)據(jù)緩沖區(qū)是盡可能的大,但是一定要注意兩個問題:一是要給操作系統(tǒng)和其他應用留夠內(nèi)存,二是對于32位的操作系統(tǒng),Oracle的SGA有1.75G的限制。有的32位操作系統(tǒng)上可以突破這個限制,方法還請看Biti的大作吧。

二.分析表和索引,更改優(yōu)化模式

Oracle默認優(yōu)化模式是CHOOSE,在這種情況下,如果表沒有經(jīng)過分析,經(jīng)常導致查詢使用全表掃描,而不使用索引。這通常導致磁盤I/O太多,而導致查詢很慢。如果沒有使用執(zhí)行計劃穩(wěn)定性,則應該把表和索引都分析一下,這樣可能直接會使查詢速度大幅提升。分析表命令可以用ANALYZE TABLE 分析索引可以用ANALYZE INDEX命令。對于少于100萬的表,可以考慮分析整個表,對于很大的表,可以按百分比來分析,但是百分比不能過低,否則生成的統(tǒng)計信息可能不準確。可以通過DBA_TABLES的LAST_ANALYZED列來查看表是否經(jīng)過分析或分析時間,索引可以通過DBA_INDEXES的LAST_ANALYZED列。

下面通過例子來說明分析前后的速度對比。(表CASE_GA_AJZLZ大約有35萬數(shù)據(jù),有主鍵)首先在SQLPLUS中打開自動查詢執(zhí)行計劃功能。(第一次要執(zhí)行\(zhòng)RDBMS\ADMIN\utlxplan.sql來創(chuàng)建PLAN_TABLE這個表)

SQL SET AUTOTRACE ON

SQLSET TIMING ON

通過SET AUTOTRACE ON 來查看語句的執(zhí)行計劃,通過SET TIMING ON 來查看語句運行時間。

SQL seleCT count(*) from CASE_GA_AJZLZ;

COUNT(*)

----------

346639

已用時間: 00: 00: 21.38

Execution Plan

0 SELECT STATEMENT Optimizer=CHOOSE

1 0 SORT (AGGREGATE)

2 1 TABLE ACCESS (FULL) OF 'CASE_GA_AJZLZ'

……………………

請注意上面分析中的TABLE ACCESS(FULL),這說明該語句執(zhí)行了全表掃描。而且查詢使用了21.38秒。這時表還沒有經(jīng)過分析。下面我們來對該表進行分析:

SQL analyze table CASE_GA_AJZLZ compute statistics;

表已分析。已用時間: 00: 05: 357.63。然后再來查詢:

SQL select count(*) from CASE_GA_AJZLZ;

COUNT(*)

----------

346639

已用時間: 00: 00: 00.71

Execution Plan

0 SELECT STATEMENT Optimizer=FIRST_ROWS (Cost=351 Card=1)

1 0 SORT (AGGREGATE)

2 1 INDEX (FAST FULL SCAN) OF 'PK_AJZLZ' (UNIQUE) (Cost=351

Card=346351)

…………………………

請注意,這次時間僅僅用了0.71秒!這要歸功于INDEX(FAST FULL SCAN)。通過分析表,查詢使用了PK_AJZLZ索引,磁盤I/O大幅減少,速度也大幅提升!下面的實用語句可以用來生成分析某個用戶的所有表和索引,假設用戶是GAXZUSR:

SQL set pagesize 0

SQL spool d:\analyze_tables.sql;

SQL select 'analyze table '||owner||'.'||table_name||'

compute statistics;' from dba_tables where owner='GAXZUSR';

SQL spool off

SQL spool spool d:\analyze_indexes.sql;

SQL select 'analyze index '||owner||'.'||index_name||'

compute statistics;' from dba_indexes where owner='GAXZUSR';

SQL spool off

SQL @d:\analyze_tables.sql

SQL @d:\analyze_indexes.sql

解釋:上面的語句生成了兩個sql文件,分別分析全部的GAXZUSR的表和索引。如果需要按照百分比來分析表,可以修改一下腳本。通過上面的步驟,我們就完成了對表和索引的分析,可以測試一下速度的改進啦。建議定期運行上面的語句,尤其是數(shù)據(jù)經(jīng)過大量更新。

當然,也可以通過dbms_stats來分析表和索引,更方便一些。但是我仍然習慣上面的方法,因為成功與否會直接提示出來。

另外,我們可以將優(yōu)化模式進行修改。optimizer_mode值可以是RULE、CHOOSE、FIRST_ROWS和ALL_ROWS。對于OLTP系統(tǒng),可以改成FIRST_ROWS,來要求查詢盡快返回結(jié)果。這樣即使不用分析,在一般情況下也可以提高查詢性能。但是表和索引經(jīng)過分析后有助于找到最合適的執(zhí)行計劃。

三.設置cursor_sharing=FORCE 或SIMILAR

這種方法是8i才開始有的,oracle805不支持。通過設置該參數(shù),可以強制共享只有文字不同的語句解釋計劃。例如下面兩條語句可以共享:

SQL SELECT * FROM MYTABLE WHERE NAME='tom'

SQL SELECT * FROM MYTABLE WHERE NAME='turner'

這個方法可以大幅降低緩沖區(qū)利用率低的問題,避免語句重新解釋。通過這個功能,可以很大程度上解決硬解析帶來的性能下降的問題。個人感覺可根據(jù)系統(tǒng)的實際情況,決定是否將該參數(shù)改成FORCE。該參數(shù)默認是exact。不過一定要注意,修改之前,必須先給ORACLE打補丁,否則改之后oracle會占用100%的CPU,無法使用。對于ORACLE9i,可以設置成SIMILAR,這個設置綜合了FORCE和EXACT的優(yōu)點。不過請慎用這個功能,這個參數(shù)也可能帶來很大的負面影響!

四.將常用的小表、索引釘在數(shù)據(jù)緩存KEEP池中

內(nèi)存上數(shù)據(jù)讀取速度遠遠比硬盤中讀取要快,據(jù)稱,內(nèi)存中數(shù)據(jù)讀的速度是硬盤的14000倍!如果資源比較豐富,把常用的小的、而且經(jīng)常進行全表掃描的表給釘內(nèi)存中,當然是在好不過了。可以簡單的通過ALTER TABLE tablename CACHE來實現(xiàn),在ORACLE8i之后可以使用ALTER TABLE table STORAGE(BUFFER_POOL KEEP)。一般來說,可以考慮把200數(shù)據(jù)塊之內(nèi)的表放在keep池中,當然要根據(jù)內(nèi)存大小等因素來定。關于如何查出那些表或索引符合條件,可以使用本文提供的access.sql和access_report.sql。這兩個腳本是著名的Oracle專家 Burleson寫的,你也可以在讀懂了情況下根據(jù)實際情況調(diào)整一下腳本。對于索引,可以通過ALTER INDEX indexname STORAGE(BUFFER_POOL KEEP)來釘在KEEP池中。

將表定在KEEP池中需要做一些準備工作。對于ORACLE9i 需要設置DB_KEEP_CACHE_SIZE,對于8i,需要設置buffer_pool_keep。在8i中,還要修改db_block_lru_latches,該參數(shù)默認是1,無法使用buffer_pool_keep。該參數(shù)應該比2*3*CPU數(shù)量少,但是要大于1,才能設置DB_KEEP_CACHE_BUFFER。buffer_pool_keep從db_block_buffers中分配,因此也要小于db_block_buffers。設置好這些參數(shù)后,就可以把常用對象永久釘在內(nèi)存里。

五.設置optimizer_max_permutations

對于多表連接查詢,如果采用基于成本優(yōu)化(CBO),ORACLE會計算出很多種運行方案,從中選擇出最優(yōu)方案。這個參數(shù)就是設置oracle究竟從多少種方案來選擇最優(yōu)。如果設置太大,那么計算最優(yōu)方案過程也是時間比較長的。Oracle805和8i默認是80000,8建議改成2000。對于9i,已經(jīng)默認是2000了。

六.調(diào)整排序參數(shù)

(1) SORT_AREA_SIZE:默認的用來排序的SORT_AREA_SIZE大小是32K,通常顯得有點小,一般可以考慮設置成1M(1048576)。這個參數(shù)不能設置過大,因為每個連接都要分配同樣的排序內(nèi)存。

(2) SORT_MULTIBLOCK_READ_COUNT:增大這個參數(shù)可以提高臨時表空間排序性能,該參數(shù)默認是2,可以改成32來對比一下排序查詢時間變化。注意,這個參數(shù)的最大值與平臺有關系。

如何升級oracle版本

本文檔旨在提供指南和核對清單,用于將之前升級的數(shù)據(jù)庫從Oracle12c降級回以前的版本:11.2.0.3,11.2.0.2,11.1.0.7必須加以說明的是,將數(shù)據(jù)庫實例從當前版本降級到升級前的版本時,數(shù)據(jù)庫不會返回到升級前的完全相同狀態(tài)。根據(jù)所涉及的版本,升級過程會進行不可逆的更改。用戶使用降級過程可以打開和訪問以前版本的數(shù)據(jù)庫實例。這通常便已足夠。可能需要采取其他更正操作(例如卸載/重新安裝或重新升級到當前補丁集級別來解決降級后的遺留問題。如果目標是讓實例返回與升級前完全相同的狀態(tài),則還應使用包括完全恢復到升級前狀態(tài)在內(nèi)的其他過程。本文中討論的過程是基于腳本的降級。本文不介紹使用導出/導入、數(shù)據(jù)泵或其他方法將數(shù)據(jù)從一個版本移動到另一個版本。您所降級到的版本的Oracle二進制文件,在開始降級過程之前應該在服務器上可用/已安裝。如果您卸載了要降級到的Oracle可執(zhí)行文件,請重新安裝Oracle二進制文件到正確的版本/補丁程序級別以降級。此過程旨在降級已成功升級到12c的數(shù)據(jù)庫,并非用于從失敗的升級退回。您只能降級到升級前所用的版本和補丁程序級別。直接升級可以在版本10.2.0.5、11.1.0.7或版本11.2.0.2及更高版本上執(zhí)行。可以對這些版本中除10.2.0.5之外的版本進行降級。例如,如果通過應用中間補丁程序11.1.0.7從Oracle11.1.0.6升級到Oracle12c(12.1.0),則不能降級到Oracle11.1.0.6。降級只能對直接升級版本執(zhí)行。例外:雖然可以對10.2.0.5直接升級,但降級不適用于10.2.0.5。這是因為在升級過程中,compatible參數(shù)已設置為最低11.0.0。這使得無法降級到10.2.0.5。可以降級的版本為11.1.0.7、11.2.0.2、11.2.0.3或更高版本。如果有任何補丁程序應用到了從升級后的主目錄運行的源數(shù)據(jù)庫,則需要先回退,然后才能開始降級過程。卸載和回退補丁程序的步驟記錄在所涉及補丁程序的自述文件中。未能卸載和回退補丁程序可能會導致無法降級,包括無法重新驗證字典對象。Exadata捆綁補丁程序示例,其過程為:卸載補丁程序示例:$opatchauto/u01/app/oracle/patches/14103267-rollback回退任何在補丁程序應用過程中應用的SQL:示例:SQL@rdbms/admin/catbundle_EXA__ROLLBACK.sql,用于回退SQL更改。解決方案降級前步驟-XMLDB組件在12c中是必需的。在升級到12c期間,將安裝XMLDB組件(如果未安裝)。從12c降級將刪除安裝的XDB組件-EnterpriseManager不支持降級。在降級之前,請重新配置OracleEM控件。請參閱OracleDatabaseUpgradeGuide12cRelease1(12.1)E17642-106DowngradingOracleDatabasetoanEarlierRelease6.6.5RestoringOracleEnterpriseManagerafterDowngradingOracleDatabase-升級到12c期間,將刪除DatabaseControl資料檔案庫。降級之后,請重新配置DBControl。Note870877.1HowToSaveOracleEnterpriseManagerDatabaseControlDataBeforeUpgradingTheSingleInstanceDatabaseToOtherRelease?Note876353.1HowToRestoreTheOracleEnterpriseManagerDataToDowngradeTheSingleInstanceDatabaseToPrevious/SourceRelease?-compatible參數(shù)不能已經(jīng)更改到12.1.0。-禁用DataVault(如果已啟用)。Note803948.1HowToUninstallOrReinstallDatabaseVaultin11g(UNIX)Note453902.1EnablingandDisablingOracleDatabaseVaultinWINDOWS-如果數(shù)據(jù)庫使用OracleLabelSecurity,則在新OracleDatabase12cOracle主目錄中運行OracleLabelSecurity(OLS)預處理降級olspredowngrade.sql腳本(在$ORACLE_HOME/rdbms/admin上提供)。-時區(qū)版本應相同。-取消設置并指向12c主目錄的ORA_TZFILE(如果已設置)。-如果數(shù)據(jù)庫上有OracleApplicationExpress,則必須將apxrelod.sql文件從OracleDatabase12c$ORACLE_HOME/apex/目錄復制到Oracle主目錄之外的目錄,例如系統(tǒng)上的臨時目錄以稍后執(zhí)行。-如果基于固定對象創(chuàng)建了對象,則刪除這些對象以避免可能的ORA-00600錯誤。您可以在降級之后重新創(chuàng)建這些對象。-如果降級集群數(shù)據(jù)庫,則徹底關閉實例并將CLUSTER_DATABASE初始化參數(shù)更改為FALSE。降級之后,必須將此參數(shù)設置回TRUE。滿足以上先決條件之后,可以繼續(xù)進行降級。數(shù)據(jù)庫的降級步驟1)確保所有數(shù)據(jù)庫組件有效。只能從成功升級的數(shù)據(jù)庫執(zhí)行降級。要驗證數(shù)據(jù)庫組件狀態(tài),請執(zhí)行以下查詢以SYS用戶身份連接到數(shù)據(jù)庫colcomp_idformata10colcomp_nameformata30colversionformata10colstatusformata8selectsubstr(comp_id,1,15)comp_id,substr(comp_name,1,30)comp_name,substr(version,1,10)version,statusfromdba_registry2)驗證沒有屬于sys/system的無效對象selectowner,count(object_name)"Invalidobjectcount"fromdba_objectswherestatus!='VALID'andownerin('SYS','SYSTEM')groupbyowner;如果計數(shù)為零,則可以繼續(xù)降級。如果有無效對象,則執(zhí)行utlrp.sql多次,如果對象無法解析為有效狀態(tài),則不能繼續(xù)降級。建立SR或在DBA社區(qū)上發(fā)帖以尋求幫助。或者,對于1和2,運行以下腳本:Note556610.1ScripttoCollectDBUpgrade/MigrateDiagnosticInformation(dbupgdiag.sql)3)關閉數(shù)據(jù)庫Shutdownimmediate4)對12c數(shù)據(jù)庫做備份5)以降級模式啟動數(shù)據(jù)庫Startupdowngrade;6)執(zhí)行降級腳本SqlSpooldowngrade.logSql@$ORACLE_HOME/rdbms/admin/catdwgrd.sql注:$ORACLE_HOME應指向12c主目錄catdwgrd.sql腳本將數(shù)據(jù)庫中的所有組件降級到支持的主版本或補丁集版本(您最初升級時的版本)SqlspooloffSqlshutdownimmediateExitSQLPlusSqlexit;7)如果操作系統(tǒng)為LINUX/UNIX:將以下環(huán)境變量更改為要降級到的源數(shù)據(jù)庫:ORACLE_HOMEPATH編輯/etc/oratabor/var/opt/oracle/oratab以更改將數(shù)據(jù)庫映射到源數(shù)據(jù)庫Oracle主目錄如果操作系統(tǒng)是Windows,則完成以下步驟:a.停止所有Oracle服務,包括OracleDatabase12c數(shù)據(jù)庫的OracleServiceSIDOracle服務,其中SID是實例名稱。例如,如果SID為ORCL,則在命令行提示符中輸入以下內(nèi)容:C:\NETSTOPOracleServiceORCLb.在命令提示符下,通過運行ORADIM命令刪除Oracle服務。如果出現(xiàn)提示,則輸入此Windows系統(tǒng)上活動標準用戶帳戶的口令。例如,如果SID為ORCL,則輸入以下命令:C:\ORADIM-DELETE-SIDORCLc.在命令提示符下,使用ORADIM命令創(chuàng)建要降級的數(shù)據(jù)庫的Oracle服務。C:\ORADIM-NEW-SIDSID-INTPWDPASSWORD-MAXUSERSUSERS-STARTMODEAUTO-PFILEORACLE_HOME\DATABASE\INITSID.ORA8)還原配置文件將配置文件(口令文件、參數(shù)文件等)還原到降級版本的ORACLE_HOME。9)如果這是OracleRAC數(shù)據(jù)庫,則執(zhí)行以下命令以將數(shù)據(jù)庫修改為單實例模式:SETCLUSTER_DATABASE=FALSE10)從降級版本$ORACLE_HOME/rdbms/admin目錄執(zhí)行catrelod腳本。啟動sqlplus,以具有sysdba權(quán)限的用戶SYS身份連接到數(shù)據(jù)庫實例,然后以升級模式啟動數(shù)據(jù)庫::cd$ORACLE_HOME/rdbms/admin:sqlplussqlconnectsysassysdbasqlstartupupgradesqlspoolcatrelod.logsql@?/rdbms/admin/catrelod.sqlsqlspooloffcatrelod.sql腳本在降級的數(shù)據(jù)庫中重新加載各個數(shù)據(jù)庫組件的合適版本。11)運行utlrp.sql腳本:SQL@utlrp.sqlSqlexit;utlrp.sql腳本重新編譯先前處于INVALID狀態(tài)的所有現(xiàn)有PL/SQL模塊,例如package、procedure、type等。12)檢查已降級數(shù)據(jù)庫的狀態(tài):Note556610.1ScripttoCollectDBUpgrade/MigrateDiagnosticInformation(dbupgdiag.sql)此sql腳本是一組查詢語句,用于提供用戶友好的輸出,以在升級前后診斷數(shù)據(jù)庫的狀態(tài)。腳本將創(chuàng)建名為db_upg_diag__.log的文件。13)降級之后,可能在sys用戶下發(fā)現(xiàn)無效的QT視圖。這是因為視圖已從基表中選擇了錯誤的列。您需要重新創(chuàng)建這些視圖。請參閱說明:Note1520209.1QT_*BUFERViewsInvalidafterdowngradefrom12C降級后步驟:1)如果您是降級到OracleDatabase11g版本1(11.1.0.7)并且數(shù)據(jù)庫中有OracleApplicationExpress,則轉(zhuǎn)到您將apxrelod.sql腳本復制到的目錄(在降級前步驟中)。運行apxrelod.sql腳本以手動重新加載OracleApplicationExpress:SQL@apxrelod.sql運行apxrelod.sql腳本以避免程序包APEX_030200.WWV_FLOW_HELP由于以下錯誤而成為INVALID狀態(tài):PLS-00201:identifier'CTX_DDL'mustbedeclared2)如果數(shù)據(jù)庫中啟用了OracleLabelSecurity,則執(zhí)行以下腳本a.從OracleDatabase12c的Oracle主目錄下將olstrig.sql腳本復制到要將數(shù)據(jù)庫降級到的版本的Oracle主目錄。b.從降級到的版本的Oracle主目錄,運行olstrig.sql以在表上使用OracleLabelSecurity策略重新創(chuàng)建DML觸發(fā)器:SQL@olstrig.sql3)如果降級集群數(shù)據(jù)庫,則必須運行以下命令以降級OracleClusterwaredatabase配置:$srvctldowngradedatabase-ddb-unique-name-ooraclehome-tto_version其中db-unique-name是數(shù)據(jù)庫名稱(而非實例名稱),oraclehome是已降級數(shù)據(jù)庫的舊Oracle主目錄的位置,to_version是數(shù)據(jù)庫所降級到的數(shù)據(jù)庫版本

如何提高oracle模糊查詢的性能?

1、使用兩邊加‘%’號的查詢,Oracle是不通過索引的,所以查詢效率很低。

例如:select count(*) from lui_user_base t where t.user_name like '%cs%';

2、like '...%'和 like'%...'雖然走了索引,但是效率依然很低。

3、有人說使用如下sql,他的效率提高了10倍,但是數(shù)據(jù)量小的時候

select count(*) from lui_user_base where rowid in (select rowid from lui_user_base t where t.user_name like '%cs%')

我拿100w跳數(shù)據(jù)做了測試,效果一般,依然很慢,原因:

select rowid from lui_user_base t where t.user_name like '%cs%' ? 這條sql執(zhí)行很快,那是相當?shù)目欤欠诺絪elect count(*) from lui_user_base where rowid in()里后,效率就會變的很慢了。

4、select count(*) from lui_user_base t where instr(t.user_name,'cs') 0

這種查詢效果很好,速度很快,推薦使用這種。因為我對oracle內(nèi)部機制不是很懂,只是對結(jié)果做了一個說明。

5、有人說了用全文索引,我看了,步驟挺麻煩,但是是個不錯的方法,留著備用:

對cmng_custominfo 表中的address字段做全文檢索:

1,在oracle9201中需要創(chuàng)建一個分詞的東西:

BEGIN

ctx_ddl.create_preference ('SMS_ADDRESS_LEXER', 'CHINESE_LEXER');

--ctx_ddl.create_preference ('my_lexer', 'chinese_vgram_lexer'); 不用

end;

2,創(chuàng)建全文檢索:

CREATE INDEX INX_CUSTOMINFO_ADDR_DOCS ON cmng_custominfo(address) INDEXTYPE IS CTXSYS.CONTEXT PARAMETERS ('LEXER SMS_ADDRESS_LEXER');

3,查詢時候,使用:

select * from cmng_custominfo where contains (address, '金色新城')1;

4,需要定期進行同步和優(yōu)化:

同步:根據(jù)新增記錄的文本內(nèi)容更新全文搜索的索引。

begin

ctx_ddl.sync_index('INX_CUSTOMINFO_ADDR_DOCS');

end;

優(yōu)化:根據(jù)被刪除記錄清除全文搜索索引中的垃圾

begin

ctx_ddl.optimize_index('INX_CUSTOMINFO_ADDR_DOCS', 'FAST');

end;

5,采用job做步驟4中的工作:

1)該功能需要利用oracle的JOB功能來完成

因為oracle9I默認不啟用JOB功能,所以首先需要增加ORACLE數(shù)據(jù)庫實例的JOB配置參數(shù):

job_queue_processes=5

重新啟動oracle數(shù)據(jù)庫服務和listener服務。

2)同步 和 優(yōu)化

--同步 sync:

variable jobno number;

BEGIN

DBMS_JOB.SUBMIT(:jobno,'ctx_ddl.sync_index(''INX_CUSTOMINFO_ADDR_DOCS'');',

SYSDATE, 'SYSDATE + (1/24/4)');

commit;

END;

--優(yōu)化

variable jobno number;

begin

DBMS_JOB.SUBMIT(:jobno,'ctx_ddl.optimize_index(''INX_CUSTOMINFO_ADDR_DOCS'',''FULL'');', SYSDATE, 'SYSDATE + 1');

commit;

END;

其中, 第一個job的SYSDATE + (1/24/4)是指每隔15分鐘同步一次,第二個job的SYSDATE + 1是每隔1天做一次全優(yōu)化。具體的時間間隔,可以根據(jù)應用的需要而定。

6,索引重建

重建索引會刪除原來的索引,重新生成索引,需要較長的時間。

重建索引語法如下:

ALTER INDEX INX_CUSTOMINFO_ADDR_DOCS REBUILD;

據(jù)網(wǎng)上一些用家的體會,oracle重建索引的速度也是比較快的,有一用家這樣描述:

Oracle 的全文檢索建立和維護索引要比ms sql server都要快得多,筆者的65萬記錄的一個表建立索引只需要20分鐘,同步一次只需要1分鐘。

因此,也可以考慮用job的辦法定期重建索引。

分享名稱:oracle如何提sr,oracle如何提升for效率
鏈接URL:http://chinadenli.net/article49/dsipphh.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設計定制網(wǎng)站網(wǎng)站策劃靜態(tài)網(wǎng)站企業(yè)網(wǎng)站制作手機網(wǎng)站建設

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化