标签: Oracle數據庫

  • 調查:Oracle 11g版本選用情況仍不樂觀

    在本年度數據庫技術應用技術問卷調查中,我們持續對Oracle數據庫用戶的版本情況做了調查,以便更好地分析Oracle數據庫用戶版本保有及升級更新狀況。

              如何我們回顧06年的數據,進而再對比上面08年和07年的調查數據,可以發現,在06到07年裡,Oracle數據庫的市場使用進一步增加,在2006年的受訪用戶中,有15 %沒有使用Oracle數據庫,2007年這一數字降低到11%。

            分析2008年的調查數據,只有4.7%的客戶升級到了Oracle 11g版本,而在2007年,這些“敢於吃螃蟹”的人僅僅有0.2%。考慮到11g版本的推出時間和推廣力度,2008年的Oracle 11g版本佔有量比例的確不算高。

            記者就此採訪ITPUB社區的一位數據庫專家,他認為:“08年升級到11g用戶應該主要是8i,9i產品的用戶,他們已經有升級計劃,趕上最新的版本11g推出,所以就直接跳過了10g數據庫,直接到11g上去了;這一比例中,應該不會有或者說很少有10g的用戶轉化過來的。”

           筆者註意到,甲骨文對Oracle 11g的推廣也開始採用新的思路和方法,在2008年到2009年,Oracle在大力推廣數據庫選件(database options),這些多樣化的功能特性,是針對不同用戶對數據庫的特殊需求所提供的,大部分都集成在高版本的數據庫產品中。這種推廣和銷售模式,有將產品和功能分拆開來賣的意味。

       再來看Oracle 10g的情況。 Oracle 10g的佔有量已經高達44.2%,相比2007年增長了近5個百分點,已經成為最主要的使用數據庫版本。 2007年,在數據庫版本上,Oracle 10g獲得了市場和用戶的廣泛認同,使用的比例占到39.8%,而2006年的數字僅為27.9%,有幾乎12個百分點的比較大的增長;在2007年,Oracle 10g的用戶使用也首次超過了Oracle 9i,在2006年使用Oracle 9i的用戶比例高達47%,這個數字在2007年下降了9個百分點。這一變化可能受到Oracle 9i的退出計劃影響,但是毋庸置疑的是,Oracle 10g已經得到了大規模普及和採用。

            在2008年的調查結果中,另外一個比較有趣是數據是“沒有使用Oracle數據庫”的用戶比例,2008年沒有使用Oracle數據庫的用戶達到13.6%,而在07年這一比例只有11%;無獨有偶,本次調查涉及SQL Server,DB2,Oracle數據庫的這一數據時,未使用的比例都略有上升。 Itpub社區的一位數據庫分析師認為,這是開源數據庫使用量增長的結果,導致商業數據庫用戶都在不同程度的流失,特別是在當前經濟形式日趨嚴峻的形勢下,開源數據庫的吸引力會進一步加強。

    看來,商業數據庫廠商需要推出更加靈活的授權許可和服務模式,進一步降低企業的IT投資成本,才能保住用戶,以免流失。

  • 基於Oracle 高級複製功能的數據庫同步研究與應用

    摘要:隨著數據庫的廣泛使用和網絡的迅速發展,數據庫同步技術的研究一直是一個熱點。本文介紹了Oracle 的高級複製功能的相關概念及提供的功能。接著分析比較了幾種網絡間數據庫同步方法,並總結了基於Oracle 高級複製功能的同步的優勢。最後通過一個具體的數據庫同步需求,介紹一種基於Oracle高級複製功能的數據庫同步方案的具體實現。

    1.引言
    數據庫系統是現代企業運作和管理自動化系統的重要組成部分。在Internet 飛速發展的今天,數據庫一方面向集中化,大型化方向發展,但應用卻在向著分散化,小型化的方向延伸。對於越來越多的企業分支機構和辦公人員,他們需要隨時查詢和更新數據庫,而他們所需要操作的一般並不是數據庫的全部,而往往只是與之緊密相關的少量數據,但少量的數據必須與企業中心數據庫同步更新。如何根據實際情況有效地解決數據庫系統的數據同步問題已成為企業或系統的整個數據庫系統應用的核心環節。

    點擊下載:Oracle高級複製功能的數據庫同步研究與應用

  • 利用Oracle 10g 的MODEL SQL 進行行間計算

    以產品產量表為例,一個工廠(用code 表示)生產多種產品(用p_id 表示),每種產品具有生產量(v1)和銷售量(v2)產品代碼具有審核關係,如’10’=’30’+’31’,其中’10’代表大類,’30’和’31’代表’10’大類下的小類。
    SQL>createtablet603(codevarchar(10),p_idvarchar(7),v1number(10),v2number(1
    0));
    Tablecreated.
    SQL>insertintot603values(‘600001′,’30’,1,1);
    SQL>insertintot603values(‘600001′,’31’,1,1);
    SQL>insertintot603values(‘600001′,’10’,2,2);
    SQL>insertintot603values(‘600002′,’10’,3,2);
    SQL>insertintot603values(‘600002′,’31’,2,1);
    SQL>insertintot603values(‘600002′,’30’,2,1);
    SQL>commit;
    Commitcomplete.
    SQL>select*fromt603;
    CODEP_IDV1V2
    ————————————-
    6000013011
    6000013111

    6000011022
    6000021032
    6000023121
    6000023021
    6rowsselected.
    SELECTcode,
    p_id,v1
    FROMt603
    WHEREcodeIN(‘600001′,’600002’)
    MODELRETURNUPDATEDROWS
    PARTITIONBY(code)
    DIMENSIONBY(p_id)
    MEASURES(v1)
    RULES(
    v1[‘err1′]=v1[’30’]+v1[’31’]-v1[’10’])
    ORDERBYcode,p_id;
    其中rule 表示計算規則,’err1’表示這條審核關係的代號,它的值等於P_ID 為’30’的v1 值+P_ID 為’31’的v1 值-P_ID 為’10’的v1 值PARTITION BY (code)表示按工廠分區,即審核在一個工廠內的產品MODEL 關鍵字後面的RETURN UPDATED ROWS 子句將結果限制為在該查詢中創建或更新的那些行。使用該子句是使結果集只包含新計算的值,在本例中就是審核結果

    CODEP_IDV1
    —————————
    600001err10
    600002err11
    如果返回值=0,表示v1[’30’] + v1[’31’] =v1[’10’]審核通過,否則,審核不通過

    (更多…)