當前位置:首頁 » 數據倉庫 » db2內存資料庫
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

db2內存資料庫

發布時間: 2023-05-31 06:09:50

Ⅰ IBM的DB2為什麼市場佔有率這么低~

IBM DB2是目前世界上唯一能和Oracle抗衡的優秀資料庫,MS sql SERVER根本無法和它比。而且,IBM DB2在海量數據處理機制方面,更較Oracle有其自身的獨特優勢,這是因為DB2內部針對海量數據的處理機制和解決方案導致的,國內之所以用DB2的人少,那是因為國內的巨型企業並不像國外那樣多,而且根據各大企業需求的不同,他們的專家會考慮採用相應的資料庫,而不是必須指定只用某一資料庫。同時,由於IBM DB2資料庫軟體功能的強大和操作的復雜,在配合其他原因,所以,國內搞DB2開發的人沒有ORACLE的多,但這並不代表DB2就差了,

Ⅱ 使用db2start命令,出現提示 :SQL1220N 不能分配資料庫管理器共享內存集,請問一下是怎麼回事,如何解決

SQL1220N
不能分配資料庫管理器共享內存集。
說明資料庫管理器不能分配其共享內存集。導致此錯誤原因可能是資料庫管理器或正在嘗試的操作環境中的內存資源不足。可導致此錯森晌培誤的內存資源包括:

系統中分配的共享內存謹肆標識數

共享內存段的大小

系統中可用的調頁空間量或交換空間量

系統中可用的物理內存量
用戶響應下列其中一項或多項:

驗證是否有足夠的內存資源可用於滿足數此唯據庫管理器和系統上正在運行其他程序的需求。

在 32 位 Linux 上,將內核參數 shmmax 增大到 256 MB。在 64 位 Linux 上,將內核參數 shmmax 增大到 1GB。

通過減小影響此內存集的資料庫管理器配置參數來減小資料庫管理器的內存需求。這些參數是:fenced_pool 和 numdb。

在適當的地方,停止使用該系統的其他程序。

Ⅲ 開源內存資料庫有哪些

問題一:內存資料庫主流的有哪些,並給出各自特點! 這里介紹一些大型的市場佔有率比較高的內存資料庫,也是業界響當當的―SAP HANA、Oracle Exalytics、Orale TimesTen、IBM SolidDB,可以說他們之間沒有說是哪個最好,主要還是看使用的場景和具體的需求,各自特點如下:
SAP HANA(High-Performance Analytic Appliance)是 SAP 公司於 2011 年推出的基於 內存計算技術,面向企業分析性應用的產品。左圖 的系統架構示意圖中可以看出, HANA 產品主要包括內存計算引擎和 HANA 建模工具兩部分。它支持從 SAP 商務套件中 同步更新業務數據,或者從 SAP BW(SAP 商務智能產品)和其他第三方數據源中批量導 入數據,在 HANA 中進行運算後,提供給 SAP BI 客戶端或者其他第三方展現工具進行分 析和展現。
Oracle Exalytics 內存分析一體機是面向分析的集成設計系統,可以無限制提供最佳可 視化分析和更智能的分析應用程序。 如圖 所示, Oracle Exalytics 內存分析一體機的產品架構包括 3 個部分: 內容分析 硬體、內存分析軟體和經過優化的 Oracle 商務智能基礎套件(Oracle BI Foundation)。內存分析硬體部分是一台為基於內存計算的商務智能而特別優化的伺服器,具有提供 強勁計算能力的 40 核中央處理器,高達 1TB 的內存以及快速的網路. 內存分析軟體部分的核心是 Oracle TimesTen 內存資料庫。它是為 Exalytics 平台而特 別優化的內存分析資料庫,包括了很多 Oracle Exalytics 平台特有的功能。Oracle 商務智能基礎套件部分受益於 Oracle Exalytics 內存分析一體機的大容量內存、 處理器、並發處理能力、存儲、網路、操作系統、內核和系統配置等,可以提供明顯優於傳統軟體的查詢響應性、用戶可用性和 TCO。
Oracle 內存資料庫TimesTen 是一個基於內存計算的關系資料庫, 提供了響應時間極 短且吞吐量極高的應用程序,可滿足各行業應用程序的需求。 TimesTen 是一個可嵌入到應用程序中的資料庫, 通過消除進程間通信和網路 開銷,進一步提高資料庫操作的性能。Oracle 內 存 數 據 庫 TimesTen 使 用 行 級 鎖 定 和 提 交 後 讀 取 (mitted-read) 隔離,通過事務日誌記錄與資料庫檢查點相結合實現了基於磁碟的持久 性和可恢復性。TimesTen 通常與多用戶和多線程應用程序一起部署,應用程序直接通過 JDBC、 ODBC、 Oracle 調用介面、 Pro*C/C++ 和Oracle PL/SQL 編程介面, 使用標准SQL 訪問TimesTen 資料庫。若運行在不同伺服器上的多個應用程序共享一個資料庫時,則使 用常規的客戶端/伺服器訪問方式。
IBM solidDB 是一個內存資料庫,專為獲取極高的速度和可用性而進行優化。如圖 所示,IBM solidDB 既可以單獨部署作為獨立的資料庫支持應用程序,也可 以部署為其他關系型資料庫的加速緩存以提高應用程序性能。solidDB Universal Cache 功能將這些資料庫中存儲的性能關鍵型數據 緩存到solidDB Universal Cache 中,加快領先關系資料庫的速度。solidDB Universal Cache 功能使用檢查點和事務日誌將數據持久保存在 磁碟上......>>

問題二:開源的內存資料庫都有哪些 1.最簡單的方法:
public static String reverse1(String str)
{
return new StringBuffer(str).reverse().toString();
}
2.最常用的方法:
public static String reverse3(String s)
{
char[] array = s.toCharArray();
String reverse = ; 注意這是空串,不是null
for (int i = array.length - 1; i >= 0; i--)
reverse += array[i];
return reverse;
}

問題三:開源內存資料庫有幾種啊? 常見的有FastDB、SQLite、Berkeley DB、GigaBASE,H2等

問題四:幾種常用的開源內存資料庫性能比較 本人理解:orcal速度快但是維護不方便嗎,費錢。mysql速度可以,維護方便,交orcal來說易上手。db2:大

問題五:開源的內存資料庫有哪些支持SQL基準 選擇資料庫實例―右鍵屬性―選擇【內存】選擇頁―修改內存―確定

問題六:C/C++開發的開源的分布式內存資料庫有哪些 1.最簡單的方法:
public static String reverse1(String str)
{
return new StringBuffer(str).reverse().toString();
}
2.最常用的方法:
public static String reverse3(String s)
{
char[] array = s.toCharArray();
String reverse = ; 注意這是空串,不是null
for (int i = array.length - 1; i >= 0; i--)
reverse += array[i];
return reverse;
}

問題七:哪位達人用過關系型的內存資料庫而且是開源的 關系型資料庫以行和列的形式存儲數據,以便於用戶理解。這一系列的行和列被稱為表,一組表組成了資料庫。表與表之間的數據記錄有關系。用戶用查詢(Query)來檢索資料庫中的數據。一個Query是一個用於指定資料庫中行和列的SELECT語句。關系型資料庫通常包含下列組件: 客戶端應用程序(Client) 資料庫伺服器(Server) Structured Query Language(SQL)Client端和Server端的橋梁,Client用SQL來向Server端發送請求,Server返回Client端要求的結果。現在流行的大型關系型資料庫有IBM DB2、Oracle、SQL Server、SyBase、Informix、access、foxpro等。

問題八:C/C++開發的開源的分布式內存資料庫有哪些 1.最簡單的方法:public static String reverse1(String str){ return new StringBuffer(str).reverse().toString();}2.最常用的方法:public static String reverse3(String s) { char[] array = s.toCharArray(); String reverse = ; 注意這是空串,不是null for (int i = array.length - 1; i >= 0; i--) reverse += array[i]; return reverse; } 3.常用方法的變形: public static String reverse2(String s){ int length = s.length(); String reverse = ; 注意這是空串,不是null for (int i = 0; i 問題九:要求實時數據需要存儲到內存庫 有開源內存資料庫嗎 朋友您好,很高興為您解答問題
請把問題補充完整
大家才能給你提供完善的建議
相信您在知道這個平台
一定會有滿意的收獲
真誠希望能夠幫助您,如果滿意請採納,祝您好運常伴。

問題十:什麼情況下用內存資料庫 相對於磁碟,內存的數據讀寫速度要高出幾個數量級,將數據保存在內存中相比從磁碟 *** 問能夠極大地提高應用的性能。同時,內存資料庫拋棄了磁碟數據管理的傳統方式,基於全部數據都在內存中重新設計了體系結構,並且在數據緩存、快速演算法、並行操作方面也進行了相應的改進,所以數據處理速度比傳統資料庫的數據處理速度要快很多,一般都在10倍以上。內存資料庫的最大特點是其主拷貝或工作版本 常駐內存,即活動事務只與實時內存資料庫的內存拷貝打交道。顯然,它要求較大的內存量,但並非任何時刻整個資料庫都存放在內存,即內存資料庫系統還是要處理I/O。
內存資料庫是以犧牲內存資源為代價換取數據處理實時性的,內存資料庫和磁碟資料庫都是當今信息社會里每個企業所必須的關系型資料庫產品,磁碟資料庫解決的是大容量存儲和數據分析問題,而內存資料庫解決的是實時處理和高並發問題。兩者的存在是相輔相成的,內存資料庫的事務實時處理性能要遠強於磁碟資料庫。但是相對的,他的數據安全方面還沒有達到磁碟資料庫比肩的地步。
內存資料庫將物理內存作為數據的第一存儲介質,而將磁碟作為備份。隨著電信業務的發展,系統對實時性的要求和對業務靈活修改的要求非常高,在此種情況下對於內存資料庫的需求也越來越高。磁碟資料庫的做法是將數據存入內存中進行處理,這種方式的可管理性及數據安全可靠性都沒有保障。而內存資料庫正是針對這一弱點進行了改進。
實際上,內存資料庫並不是一項時髦技術,其出現於上世紀60年代末,但由於市場的需求原因在90年代後期才開始發展。作為新一代資料庫,Altibase產品已經走向混合型資料庫,其版本Altibase 4.0已經有一套自帶的磁碟資料庫,用戶一旦購買了Altibase的內存資料庫,就無須再購買磁碟資料庫。它把熱數據(經常被使用的、訪問比較高的、經常要運算的數據)放在內存資料庫里,而把歷史性數據放在磁碟資料庫里,可為用戶進一步減少投資。
對於內存資料庫而言,可以將同樣資料庫的部分內容存放於磁碟上,而另一部分存放於內存中。用戶可以選擇將數據存儲在內存表中以提供即時的數據訪問。若訪問時間不緊急或數據存於內存中所佔空間過大時,用戶可將這些數據存入磁碟表中。
比如,在手機用戶開始拔打電話時,如果應用基於內存資料庫技術的混合數據管理引擎,就通過內存表檢索其服務選項並立即驗證用戶身份,而將通話清單和計費清單歸檔到磁碟表中。從而,達到了速度與資源使用的平衡。
內存資料庫的技術,一個很重要的特點,是可以對內存中的數據實現全事務處理,這是僅僅把數據以數組等形式放在內存中完全不同的。並且,內存資料庫是與應用無關的,顯然這種體系結構具有其合理性。內存引擎可以實現查詢與存檔功能使用的是完全相同的資料庫,同時內存表與磁碟表也使用的是完全相同的存取方法。存儲的選擇,對於應用開發者而言是完全透明的。
對於內存資料庫而言,實現了數據在內存中的管理,而不僅僅是作為資料庫的緩存。不像其它將磁碟數據塊緩存到主存中的資料庫,內存資料庫的內存引擎使用了為隨機訪問內存而特別設計的數據結構和演算法,這種設計使其避免了因使用排序命令而經常破壞緩存資料庫性能的問題。通過內存資料庫,減少了磁碟I/O,能夠達到了以磁碟I/O 為主的傳統資料庫無法與其相比擬的處理速度。
因此,內存資料庫技術的應用,可以大大提高資料庫的速度,這對於需要高速反應的資料庫應用,如電信、金融等提供了有力支撐。
由於把大多數數據都放在內存中進行操作,使得內存資料庫有著比磁碟資料庫高得多的性能表現,這一......>>

Ⅳ 管理DB2資料庫的工具都有哪些,分別說下優缺點

一般DB2自帶的工具就能完成太多數的功能,但有兩個比較重要的工具介紹一下,一個是db2top,它可以對db2的各種對象進行實時監控,例如內存,語句,表等。二是toad for db2,這個工具像sqlserver的analyzer,可以用來查詢數據,查看語句的執行計劃,在資料庫語句優化時很好用。

Ⅳ 關於DB2資料庫的參數調優技巧

在開始前 請關閉IBM目錄伺服器 將上下文切換到IBM目錄伺服器DB 實例擁有者 一般是ldapdb 用戶 比如

在Unix系統里 輸入

su ldapdb

在Windows系統里 輸入

db cmdset DB INSTANCE=ldapdb

為了調節DB 參數 運行db tunings sh腳本 你可以在這里下載:// sofare ibm /ibmdl/pub/sofare/tivoli_support/misc/Security/AMeB/_am /tuning_guide_scripts tar

或者通過ftp地址

ftp://ftp sofare ibm /sofare/tivoli_support/misc/Security/AMeB/am /tuning_guide_scripts tar

Web頁面需要注冊用戶名和密碼

這個腳本的文件系統擁有者必須是DB 實例擁有者 一般就是ldapdb 用戶 文件系統組應該和實例擁有者相同(一般是dbsysadm) 腳本必須在DB 實例擁有者的上下文中使用

腳本中的ibmdefaultbp和ldapbp參數控制著DB 的緩沖池 db _turnings sh腳本 設置了DB 緩沖池的建議大小 其他一些可選的設置在腳本的注釋里寫明了 IBM目錄伺服器的性能隨著DB 緩沖池的增長而提高 然而在大多數情況下 通過這樣的參數調節方式 你可以預見不超過 %的性能提高

DB 緩沖池是DB 緩存數據表和索引的地方 DB 用戶使用索引來在查詢時迅速找到該獲取哪個錶行項 需要更多信息 請參考IBM Directory Server Tuning Guide

顯示和驗證當前設置

輸入如下命令來顯示當前的DB 參數調節設置的結果

db get database configuration for ldapdb |

egrep DBHEAP|SORTHEAP|MAXLOCKS|MINMIT|UTIL_HEAP_SZ|APPLHEAPSZ

db connect to ldapdb

db select bpname npages pagesize from syscat bufferpools

db terminate

如果某個堆配置參數過低 就將出現一些功能性的問題 輸入如下命令來顯示當前的堆參數設置

db get db cfg for ldapdb | grep HEAP

下面是一個使用了推薦值的多種堆參數的輸出例子顯示

Database heap ( KB) (DBHEAP) =

Utilities heap size ( KB) (UTIL_HEAP_SZ) =

Max appl control heap size ( KB) (APP_CTL_HEAP_SZ) =

Sort list heap ( KB) (SORTHEAP) =

SQL statement heap ( KB) (STMTHEAP) =

Default application heap ( KB) (APPLHEAPSZ) =

Statistics heap size ( KB ) (STAT_HEAP_SZ) =

如果一個堆參數小於最小值 輸入如下命令將其增大到最小值

db update db cfg for ldapdb using parm_name parm_value

這里parm_name是上文輸出中的第三欄的字樣(無括弧) parm_value是最後一欄的值

如果堆參數設置的過高或者過低 IBM的目錄伺服器都會以失效來提示出現了問題 在這種情況下 需要查看諸如IBM Directory Server V (IDS )的cli error文件或者IBM Tivoli Directory Server V (IDS v )的db cli log或者其他一些文件 在IDS v 系統中 該文件預設目錄在Solaris的/var/ldap/和AIX的/tmp中 在IDS v 和後來系統中 Solaris和AIX的預設目錄都是/var/ldap

注意db look能夠在一條命令下提供關於資料庫及其配置的足夠多的信息 例子如下

db look d ldapdb u ldapdb p o output_file

output_file是存儲結果的文件位置

關於IBM目錄伺服器運行的警告

DB 參數調節使用了db terminate 如果當該命令發出 IBM目錄伺服器slapd或ibmslapd進程在運行 它將阻止伺服器的部分功能 所有緩存的搜索看起來反應正常 其他的搜索將會簡單的變為無結果或者出現錯誤信息 恢復功能將會重啟IBM目錄伺服器 因此最好是在調節DB 參數時關閉IBM目錄伺服器

關於緩沖池內存使用的警告

如果任何的緩沖池被設置過高 DB 將會因為缺少足夠內存而無法啟動 如果出現該問題將會有一個核心轉儲的文件 但是通常沒有錯誤信息

在AIX系統里 系統錯誤日誌將會報告一個內存分配失敗 查看這個日誌請輸入

errpt a | more

使用太大的緩沖池大小來恢復一個被分在系統里的資料庫將會導致恢復失敗 查看//publib boulder ibm /infocenter/tivihelp/v r /topic/ ibm itame doc_ /am _perftune #idtrouble來解決這個問題

如果DB 因為緩沖池過大而無法啟動 請重新調節DB 參數

關於MINMIT的警告

lishixin/Article/program/DB2/201311/11229

Ⅵ DB2資料庫恢復有那幾種方法

DB2資料庫坦冊恢復的三種方法
1
應急恢復
應急恢復用於防止資料庫處於不一致或不可用狀態。資料庫執行的事務(也稱工作單元)可能被意外中斷,若在作為工作單位一部分的所有更改完成和提交之前發生故障,則該資料庫就會處於不一致和不可用的狀態。這時,需要將該資料庫轉化為一致和可用的狀態。為此,需要回滾未完成的事務,並完成當發生崩潰時仍在內存中的已提交事務。如在COMMIT語句之前發生了電源故障,則在下一次DB2重新啟動並再次訪問該資料庫時,需要回滾到執行COMMMIT語句前的狀態。回滾語句的順序與最初執行時的順序相反。
DB2資料庫恢租信粗復有那幾種方法?
2
版本恢復
版本恢復指的是使用備份操作期間創建的映象來復原資料庫的先前版本。這種恢復是通過使用一個以前建立的資料庫備份恢復出一個完整的資料庫。一個資料庫的備份允許你吧資料庫恢復至和這個資料庫在備份時完全一樣的狀態。而從備份建立後到日誌文件中最後記錄的所有工作事務單位將全部丟失。
3
前滾恢復
這種恢弊鎮復技術是版本恢復的一個擴展,使用完整的資料庫備份和日誌相結合,可以使一個資料庫或者被選擇的表空間恢復到某個特定時間點。如果從備份時刻起到發生故障時的所有日誌文件都可以獲得的話,則可以恢復到日誌上涵蓋到的任意時間點。前滾恢復需要在配置中被明確激活才能生效。

Ⅶ DB2和其他資料庫在一些SQL語法上的區別

Access是一種桌面資料庫,只適合數據量少的應用,在處理少量數據和單機訪問的資料庫時是很好的,效率也很高。但是它的同時訪問客戶端不能多於4個。access資料庫有一定的極限,如果數據達到100M左右,很容易造成伺服器iis假死,或者消耗掉伺服器的內存導致伺服器崩潰。

SQL Server是基於伺服器端的中型的資料庫,可以適合大容量數據的應用,在功能上管理上也要比Access要強得多。在處理海量數據的效率,後台開發的靈活性,可擴展性等方面強大。因為現在資料庫都使用標準的SQL語言對資料庫進行管理,所以如果是標准SQL語言,兩者基本上都可以通用的。SQL Server還有更多的擴展,可以用存儲過程,資料庫大小無極限限制。

mysql2000和sql2000資料庫的區別
1.根本的區別是它們遵循的基本原則
二者所遵循的基本原則是它們的主要區別:開放vs保守。SQL伺服器的狹隘的,保守的存儲引擎與MySQL伺服器的可擴展,開放的存儲引擎絕然不同。雖然你可以使用SQL伺服器的Sybase引擎,但MySQL能夠提供更多種的選擇,如MyISAM, Heap, InnoDB, and Berkeley DB。MySQL不完全支持陌生的關鍵詞,所以它比SQL伺服器要少一些相關的資料庫。同時,MySQL也缺乏一些存儲程序的功能,比如MyISAM引擎聯支持交換功能。

2.性能:先進的MySQL

純粹就性能而言,MySQL是相當出色的,因為它包含一個預設桌面格式MyISAM。MyISAM 資料庫與磁碟非常地兼容而不佔用過多的CPU和內存。MySQL可以運行於Windows系統而不會發生沖突,在UNIX或類似UNIX系統上運行則更好。你還可以通過使用64位處理器來獲取額外的一些性能。因為MySQL在內部里很多時候都使用64位的整數處理。Yahoo!商業網站就使用MySQL作為後台資料庫。

當提及軟體的性能,SQL伺服器的穩定性要比它的競爭對手強很多。但是,這些特性也要付出代價的。比如,必須增加額外復雜操作,磁碟存儲,內存損耗等等。如果你的硬體和軟體不能充分支持SQL伺服器,我建議你最好選擇其他如DBMS資料庫,因為這樣你會得到更好的結果。

3.發行費用:MySQL不全是免費,但很便宜

當提及發行的費用,這兩個產品採用兩種絕然不同的決策。對於SQL伺服器,獲取一個免費的開發費用最常的方式是購買微軟的Office或者Visual Studio的費用。但是,如果你想用於商業產品的開發,你必須還要購買SQL Server Standard Edition。學校或非贏利的企業可以不考慮這一附加的費用。

4.安全功能

MySQL有一個用於改變數據的二進制日誌。因為它是二進制,這一日誌能夠快速地從主機上復制數據到客戶機上。即使伺服器崩潰,這一二進制日誌也會保持完整,而且復制的部分也不會受到損壞。

在SQL伺服器中,你也可以記錄SQL的有關查詢,但這需要付出很高的代價。

安全性

這兩個產品都有自己完整的安全機制。只要你遵循這些安全機制,一般程序都不會出現什麼問題。這兩者都使用預設的IP埠,但是有時候很不幸,這些IP也會被一些黑客闖入。當然,你也可以自己設置這些IP埠。

恢復性:先進的SQL伺服器

恢復性也是MySQL的一個特點,這主要表現在MyISAM配置中。這種方式有它固有的缺欠,如果你不慎損壞資料庫,結果可能會導致所有的數據丟失。然而,對於SQL伺服器而言就表現得很穩鍵。SQL伺服器能夠時刻監測數據交換點並能夠把資料庫損壞的過程保存下來。

Oracle和SQL Server之間的區別,已經有很多篇文章從企業的角度和資料庫管理員的角度出發描寫了兩者之間的一般差別。在這篇文章裡面,我將會從應用程序的角度向你描述SQL erver 和oracle平台之間的區別,並且將會討論開發不依賴於資料庫環境的應用程序的幾種可能的方法。與此同時,我不會再論討對於應用程序來說,兩個平台之間顯而易見的區別,例如表的分割和索引。

定義通用介面和語言有很少的幾種通用語言和介面可以讓應用程序不依賴於資料庫,想來也可以以同樣的方式應用在關系型資料庫上面: ANSI是美國國家標准局定義的,這是一家志願者成員的組織(用私人基金運轉),他們在有關設備和程序等廣泛領域內開發了國家承認的標准。在資料庫領域,ANSI定義了編寫SQL命令的標准,假設命令可以運行在任何的資料庫上,而不需要更改命令的語法。ODBC是開放資料庫連接(ODBC)介面,微軟定義的,它可以讓應用程序訪問資料庫管理系統(DBMS)中的數據,使用SQL作為訪問數據的標准。ODBC允許最大的互聯性,這意味著一個單個的應用程序可以訪問不同的資料庫管理系統。然後,應用程序終端用戶可以添加開放資料庫連接(ODBC)資料庫驅動來將應用程序與他們所選擇的資料庫管理系統鏈接上。 OLE DB是ODBC的繼承者,是一組允許例如基於VB、C++、Access等任何可以連接到類似SQL Server、Oracle、DB2、MySQL等後台的「前台」的軟體組件。在許多種情況下,OLE DB組件都比原有的ODBC提供了好得多的性能。 JDBC(Java資料庫連接)應用程序介面是Java編程語言和廣泛范圍的資料庫,SQL資料庫和其他表列數據源(例如電子表格或者普通文本文件)之間,進行不依賴於資料庫的連接的行業標准。JDBD應用程序介面為基於SQL的資料庫訪問提供了調用級別的應用程序介面。真實世界中的通用介面不幸的是,並不是所有資料庫級別的命令都是ANSI,每個資料庫平台都有自己的擴展功能。對於ANSI或者通用介面,一般來說都代表著幾本功能,因此也可能意味著喪失了性能方面的競爭力。對於小型資料庫和小型應用程序來說,要維護對資料庫的通用訪問是簡單的,但是當資料庫和/或應用程序變得越來越大,越來越復雜,你就不得不向代碼中添加功能。

SQL Server和Oracle的常用函數對比

---------數學函數

1.絕對值
S:select abs(-1) value
O:select abs(-1) value from al

2.取整(大)
S:select ceiling(-1.001) value
O:select ceil(-1.001) value from al

3.取整(小)
S:select floor(-1.001) value
O:select floor(-1.001) value from al

4.取整(截取)
S:select cast(-1.002 as int) value
O:select trunc(-1.002) value from al

5.四捨五入
S:select round(1.23456,4) value 1.23460
O:select round(1.23456,4) value from al 1.2346

6.e為底的冪
S:select Exp(1) value 2.7182818284590451
O:select Exp(1) value from al 2.71828182

7.取e為底的對數
S:select log(2.7182818284590451) value 1
O:select ln(2.7182818284590451) value from al; 1

8.取10為底對數
S:select log10(10) value 1
O:select log(10,10) value from al; 1

9.取平方
S:select SQUARE(4) value 16
O:select power(4,2) value from al 16

10.取平方根
S:select SQRT(4) value 2
O:select SQRT(4) value from al 2

11.求任意數為底的冪
S:select power(3,4) value 81
O:select power(3,4) value from al 81

12.取隨機數
S:select rand() value
O:select sys.dbms_random.value(0,1) value from al;

13.取符號
S:select sign(-8) value -1
O:select sign(-8) value from al -1

----------三角函數相關

14.圓周率
S:SELECT PI() value 3.1415926535897931
O:不知道

15.sin,cos,tan 參數都以弧度為單位
例如:select sin(PI()/2) value 得到1(SQLServer)

16.Asin,Acos,Atan,Atan2 返回弧度

17.弧度角度互換(SQLServer,Oracle不知道)
DEGREES:弧度-〉角度
RADIANS:角度-〉弧度

---------數值間比較

18. 求集合最大值
S:select max(value) value from
(select 1 value
union
select -2 value
union
select 4 value
union
select 3 value)a

O:select greatest(1,-2,4,3) value from al

19. 求集合最小值
S:select min(value) value from
(select 1 value
union
select -2 value
union
select 4 value
union
select 3 value)a

O:select least(1,-2,4,3) value from al

20.如何處理null值(F2中的null以10代替)
S:select F1,IsNull(F2,10) value from Tbl
O:select F1,nvl(F2,10) value from Tbl

--------字元串函數

21.求字元序號
S:select ascii('a') value
O:select ascii('a') value from al

22.從序號求字元
S:select char(97) value
O:select chr(97) value from al

23.連接
S:select '11'+'22'+'33' value
O:select CONCAT('11','22')||33 value from al

23.子串位置 --返回3
S:select CHARINDEX('s','sdsq',2) value
O:select INSTR('sdsq','s',2) value from al

23.模糊子串的位置 --返回2,參數去掉中間%則返回7
// 本文轉自 C++Builder 研究 - [url][/url]
S:select patindex('%d%q%','sdsfasdqe') value
O:oracle沒發現,但是instr可以通過第四個參數控制出現次數
select INSTR('sdsfasdqe','sd',1,2) value from al 返回6

24.求子串
S:select substring('abcd',2,2) value
O:select substr('abcd',2,2) value from al

25.子串代替 返回aijklmnef
S:SELECT STUFF('abcdef', 2, 3, 'ijklmn') value
O:SELECT Replace('abcdef', 'bcd', 'ijklmn') value from al

26.子串全部替換
S:Replace
O:select Translate('fasdbfasegas','fa','我' ) value from al

27.長度
S:len,datalength
O:length

28.大小寫轉換 lower,upper

29.單詞首字母大寫
S:沒發現
O:select INITCAP('abcd dsaf df') value from al

30.左補空格(LPAD的第一個參數為空格則同space函數)
S:select space(10)+'abcd' value
O:select LPAD('abcd',14) value from al

31.右補空格(RPAD的第一個參數為空格則同space函數)
S:select 'abcd'+space(10) value
O:select RPAD('abcd',14) value from al

32.刪除空格
S:ltrim,rtrim
O:ltrim,rtrim,trim

33. 重復字元串
S:select REPLICATE('abcd',2) value
O:沒發現

34.發音相似性比較(這兩個單詞返回值一樣,發音相同)
S:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe')
O:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe') from al
SQLServer中用SELECT DIFFERENCE('Smithers', 'Smythers') 比較soundex的差
返回0-4,4為同音,1最高

--------------日期函數

35.系統時間
S:select getdate() value
O:select sysdate value from al

36.前後幾日
直接與整數相加減

37.求日期
S:select convert(char(10),getdate(),20) value
O:select trunc(sysdate) value from al
select to_char(sysdate,'yyyy-mm-dd') value from al

38.求時間
S:select convert(char(8),getdate(),108) value
O:select to_char(sysdate,'hh24:mm:ss') value from al

39.取日期時間的其他部分
S:DATEPART 和 DATENAME 函數 (第一個參數決定)
O:to_char函數 第二個參數決定

參數---------------------------------下表需要補充
year yy, yyyy
quarter qq, q (季度)
month mm, m (m O無效)
dayofyear dy, y (O表星期)
day dd, d (d O無效)
week wk, ww (wk O無效)
weekday dw (O不清楚)
Hour hh,hh12,hh24 (hh12,hh24 S無效)
minute mi, n (n O無效)
second ss, s (s O無效)
millisecond ms (O無效)
----------------------------------------------

40.當月最後一天
S:不知道
O:select LAST_DAY(sysdate) value from al

41.本星期的某一天(比如星期日)
S:不知道
O:SELECT Next_day(sysdate,7) vaule FROM DUAL;

42.字元串轉時間
S:可以直接轉或者select cast('2004-09-08'as datetime) value
O:SELECT To_date('2004-01-05 22:09:38','yyyy-mm-dd hh24-mi-ss') vaule FROM DUAL;

43.求兩日期某一部分的差(比如秒)
S:select datediff(ss,getdate(),getdate()+12.3) value
O:直接用兩個日期相減(比如d1-d2=12.3)
SELECT (d1-d2)*24*60*60 vaule FROM DUAL;

44.根據差值求新的日期(比如分鍾)
S:select dateadd(mi,8,getdate()) value
O:SELECT sysdate+8/60/24 vaule FROM DUAL;

45.求不同時區時間
S:不知道
O:SELECT New_time(sysdate,'ydt','gmt' ) vaule FROM DUAL;

-----時區參數,北京在東8區應該是Ydt-------
AST ADT 大西洋標准時間
BST BDT 白令海標准時間
CST CDT 中部標准時間
EST EDT 東部標准時間
GMT 格林尼治標准時間
HST HDT 阿拉斯加—夏威夷標准時間
MST MDT 山區標准時間
NST 紐芬蘭標准時間
PST PDT 太平洋標准時間
YST YDT YUKON標准時間

Oracle支持的字元函數和它們的Microsoft SQL Server等價函數:

函數 Oracle Microsoft SQL Server
把字元轉換為ASCII ASCII ASCII
字串連接 CONCAT (expression + expression)
把ASCII轉換為字元 CHR CHAR
返回字元串中的開始字元(左起) INSTR CHARINDEX
把字元轉換為小寫 LOWER LOWER
把字元轉換為大寫 UPPER UPPER
填充字元串的左邊 LPAD N/A
清除開始的空白 LTRIM LTRIM
清除尾部的空白 RTRIM RTRIM
字元串中的起始模式(pattern) INSTR PATINDEX
多次重復字元串 RPAD REPLICATE
字元串的語音表示 SOUNDEX SOUNDEX
重復空格的字串 RPAD SPACE
從數字數據轉換為字元數據 TO_CHAR STR
子串 SUBSTR SUBSTRING
替換字元 REPLACE STUFF
將字串中的每個詞首字母大寫 INITCAP N/A
翻譯字元串 TRANSLATE N/A
字元串長度 LENGTH DATELENGTH or LEN
列表中最大的字元串 GREATEST N/A
列表中最小的字元串 LEAST N/A
如果為NULL則轉換字串 NVL ISNULL

日期函數

函數 Oracle Microsoft SQL Server
日期相加 (date column +/- value) or
ADD_MONTHS DATEADD
兩個日期的差 (date column +/- value) or
MONTHS_BETWEEN DATEDIFF
當前日期和時間 SYSDATE GETDATE()
一個月的最後一天 LAST_DAY N/A
時區轉換 NEW_TIME N/A
日期後的第一個周日 NEXT_DAY N/A
代表日期的字元串 TO_CHAR DATENAME
代表日期的整數 TO_NUMBER
(TO_CHAR)) DATEPART
日期舍入 ROUND CONVERT
日期截斷 TRUNC CONVERT
字元串轉換為日期 TO_DATE CONVERT
如果為NULL則轉換日期 NVL ISNULL

轉換函數

函數 Oracle Microsoft SQL Server
數字轉換為字元 TO_CHAR CONVERT
字元轉換為數字 TO_NUMBER CONVERT
日期轉換為字元 TO_CHAR CONVERT
字元轉換為日期 TO_DATE CONVERT
16進制轉換為2進制 HEX_TO_RAW CONVERT
2進制轉換為16進制 RAW_TO_HEX CONVERT

其它行級別的函數

函數 Oracle Microsoft SQL Server
返回第一個非空表達式 DECODE COALESCE
當前序列值 CURRVAL N/A
下一個序列值 NEXTVAL N/A
如果exp1 = exp2, 返回null DECODE NULLIF
用戶登錄賬號ID數字 UID SUSER_ID
用戶登錄名 USER SUSER_NAME
用戶資料庫ID數字 UID USER_ID
用戶資料庫名 USER USER_NAME
當前用戶 CURRENT_USER CURRENT_USER
用戶環境(audit trail) USERENV N/A
在CONNECT BY子句中的級別 LEVEL N/A

合計函數

函數 Oracle Microsoft SQL Server
Average AVG AVG
Count COUNT COUNT
Maximum MAX MAX
Minimum MIN MIN
Standard deviation STDDEV STDEV or STDEVP
Summation SUM SUM
Variance VARIANCE VAR or VARP

Oracle還有一個有用的函數EXTRACT,提取並且返回日期時間或時間間隔表達式中特定的時間域:
EXTRACT(YEAR FROM 日期)

Ⅷ DB2資料庫發生死鎖了怎麼辦

db2 get snapshot for locks on sample
db2 get db cfg for sample
db2 update db cfg using dlchktime 10000
-查看資料庫管理器級別快照信息
db2 get snapshot for dbm
-查看資料庫級別快照信息
db2 get snapshot for database on dbname
-查看應用級別快照信息
db2 get snapshot for application agentid appl-handler
註:appl-handler可以從list applicaitions的輸出中得到
-查看錶級別快照信息
db2 get snapshot for tables on dbname
註:需要把tables快照開關設為ON才會有作用
-查看鎖快照信息
db2 get snapshot for locks on dbname

db2 get snapshot for locks on for application agentid appl-handler
-查看動態sql語句快照信息
db2 get snapshot for dynamic sql on dbname

db2 get monitor switches
db2 update monitor switches using lock on statement on
create event monitor mymonitor for deadlocks,statements write to file 'c:/temp'
set event monitor mymonitor state 1
db2evmon - path 'c:/temp'

--轉自:http://blog.csdn.NET/rodjohnsondoctor/article/details/4323514

---

第1頁:上線前的准備
第2頁:維護時的注意事項
第3頁:發生死鎖後的對策

【IT168 技術文檔】在新的資料庫應用系統上線初期,由於測試不完善或不熟悉DB2的機制,常會出現鎖等待死鎖等現象存在於我們的應用系統中,如何捕獲鎖等待或死鎖信息並解決鎖問題,是保證平穩上線必須面對的問題。目前應用系統最常使用的DB2資料庫版本有多個,有8.1,8.2,9.1還有新推出的9.5,對於不同版本的DB2資料庫提供的解決辦法不盡相同,下面對於上述問題的解決作了一個簡單說明,希望對大家有用。

首先在上線前有幾件跟鎖相關的事情需要開發設計人員一定要做好

1. 相關參數的更改

注冊表變數參數:

DB2_EVALUNCOMMITTED=on 當啟用此變數時,在可能的情況下,它將進行表或索引訪問掃描以延遲或避免行鎖定,直到知道數據記錄滿足謂詞求值為止。

DB2_SKIPDELETED=on 當啟用此變數時,在可能的情況下,它允許使用無條件地跳過已刪除的鍵或跳過已刪除的行。

DB2_SKIPINSERTED=on 當啟用此變數時,在可能的情況下,它允許跳過未落實的已插入行,就好像從未插入這些行一樣。

資料庫參數:

LOCKLIST 鎖定列表的內存量,當此參數設置為 AUTOMATIC 時,就啟用了自調整功能。這允許內存調整器根據工作負載需求變化動態地調整此參數控制的內存區大小。如果不是自動,需要設置相對大一些;DB2默認是行鎖,每個行鎖大約佔64或128個位元組(64位資料庫),計算鎖定列表內存的大小公式是: ( 每個應用程序的平均鎖定數目的估計值 * 每個鎖定所需的位元組數(128或64) * maxappls(或者max_coordagents) /4096 ) * 120%,這里只是建議公式,實際情況還要視操作系統實際的內存量來定。

MAXLOCKS 升級前鎖定列表的最大百分比,默認是22%(windows)或10%(unix),可以根據要求自行改動,計算公式是 2 * 100 / maxappls

DLCHKTIME 死鎖檢測時間間隔,默認是10000毫秒(10秒),可以根據要求自行改動,也可不動。增大此參數以降低檢查死鎖的頻率,因此增加應用程序必須等待消除死鎖的時間。 減小此參數會增大檢查死鎖的頻率,從而減少應用程序必須等待死鎖解決的時間,但是會增加資料庫管理器檢查死鎖所花的時間。

LOCKTIMEOUT 鎖等待時間,默認是 -1,也就是永遠等待,請改成固定的值,在事務處理(OLTP)環境中,可以使用 30 秒的初始啟動值。在一個只查詢的環境中,您可以從一個較高的值開始。

LOGFILSIZ 日誌文件大小,此參數定義每個主日誌文件和輔助日誌文件的大小。如果資料庫要運行大量更新、刪除或插入事務,而這將導致日誌文件很快變滿,則應增大日誌文件,了解您的並發應用程序的日誌記錄需求,來確定一個不會分配過量而浪費空間的日誌文件大小。

LOGPRIMARY 主日誌文件數,了解您的並發應用程序的日誌記錄需求,適當增大日誌文件數。

注意: 在更新參數時,需要注意有些參數在更改後需要重新啟動資料庫DB2實例才可以生效;有些參數需要斷開當前所有的應用程序,重新鏈接才能生效;有些參數可以立即生效,使用者請參考相關文檔,注意參數生效特性。

2. 應用程序設計

-程序盡量短小精悍

-程序盡量晚地訪問關鍵資源

-程序盡可能快地提交工作

-程序盡可能快地關閉游標

-建立合適索引

3. 性能測試

要根據將來實際的並發用戶數和數據量進行測試

上線之後維護時我們要做的幾件事情

1. 做好定期維護

通過使用如下命令進行維護:
-reorg表和索引定期重組
-runstats表和索引的統計信息定期更新
-rebind 程序包定期重新編譯