2012年11月29日 星期四

SAP HANA 效應

原文連結http://www.experiencesaphana.com/community/blogs/blog/2012/05/03/the-sap-hana-effect

翻譯原文連結http://scn.sap.com/community/chinese/hana/blog/2012/10/22/sap-hana-%E6%95%88%E5%BA%94?source=email-cn-scn-newsletter-20121127

在最近的一次公開網絡研討會上,某位競爭對手由於缺乏對 SAP HANA 的了解,而對產業和金融分析師發表了有限的和不准確的理解。在 SAP 我們通常不對這種事情做出回應。但是這個戲劇化的事情的發生,讓我不禁思考:我們一定是做了很正確的事情!我是指,一個數據庫的領先和卓越的建設者怎麼可能根本不知道下一代數據庫技術呢?或者,僅僅因為他們不願意承認現實,所以才以訛傳訛?
        HANA 團隊對三件事有著同樣的激情 --HANA 客戶的成功,寓樂於工作,對現狀質疑。本著這一精神,我想代表 HANA 團隊,將我們的記錄設置在我們的競爭對手的一些不准確的信息上,這樣做本身也是十分有趣的。

SAP HANA 優勢

        一開始,我想指出的是: (A). 對過去的技術方法進行比較是完全沒有意義的。(B). HANA 的客戶都享受著不間斷的現代技術所帶來的非凡好處。(C). HANA 代表了企業計算環境中、特別是在數據庫技術的全新一代。這是一個為實時分析和應用而產生的現代的數據平台,它使組織能夠根 ​​據各種體積大而詳細的數據實時分析業務操作,它的存在消除了 OLTP 和 OLAP 系統之間的延遲和層,使它們成為 “真正的”實時系統。SAP HANA Advantage 是一個緊密集成的系統,不同的完全事務性的組件集成在系統優化器中。所有組件,如 OLTP , OLAP (業務以及倉庫操作)都能無縫地工作,來進行向上和向外擴展文本、規劃和純應用程序的開發。在沒有服務器 zoo 、沒有內部複製、沒有物化聚合、更沒有堆棧引擎的情況下,它也可以方便地部署!
      在我下面的分析中,我會盡量精簡一些。我會定期更新這個博客,不斷為 SAP HANA 還原真相。修正如下:
#1 數據庫的未來設計中心
錯誤觀點:    內存 DBMS 無法替代所有或大部分關係型 DBMS 。
正確觀點:內存 DBMS 是數據庫的一個未來的設計中心。它已經取代絕大部分的數據庫市場 -- 尤其是分析,規劃,仿真和實時應用程序(例如:遊戲市場)。基於完善的學術研究,它能支持 OLAP 和 OLTP 。它在性能至上的市場中已經成為流行品。就像改變了雲以及事務處理的應用程序一樣,它將以同樣的方式將改變企業的市場。

#2 數據庫平台的作用
錯誤觀點:內存數據庫只能做一些事情,如 MOLAP ,運行報告,查詢和分析,規劃和預算編制,以及發現非結構化信息。
正確觀點: SAP HANA 在內存中的數據庫平台是一個通用的內存數據庫平台 — 它能帶來新的數據,捕捉交易與全面的 ACID 兼容性,當它們發生時分析它們,做數據庫處理,下放商業、預測和規劃的邏輯,它服務的客戶包括分析師、雲計算和移動應用程序。它的主流應用遠遠超過了小眾對數據庫的理解,你並不需要添加多種技術和或將一個 box 中的引擎複製為不同的用途。( 例: Endeca – text Essbase - planning, Times Ten - caching, analytics)。

#3 數據量增加而向外擴展與NUMA 支持
錯誤觀點: SAP HANA 對數據市場和數據倉庫的支持有限,因而不能向外擴展。
正確觀點: SAP HANA 可以擴展到無限數量的內核 / 節點,而硬件價格在不斷下降。去年五月,在我們的 SAPPHIRE NOW 大會, Hasso 已經使用 SAP HANA 展示了 32 個節點 / 1000+ 核心(在他講話的第 13 分 45 秒)。順便說一句,我們在世界各地已經運行了 3 個像這樣的 1000 + 的核心系統。我們有多節點向外擴展系統的現場客戶和幾個合作夥伴,包括 IBM , HP ,應用範圍早已向外擴展。
此外,我們最近在 100TB 的基准上運行了 16 個節點的 IBM 的 X5 服務 ​​器。每個服務器都有 0.5 TB 的主存,並能在業務報告情況下,使用 300-500 毫秒處理 100TB 的數據倉庫, 800 毫秒 -2 秒處理臨時分析查詢。此外,數據可以被交換成標準的的 HANA 機制,如過時的查詢。HANA 也支持 NUMA 架構。相反,在 Oracle Exalytics 上公共文件的限制為 1 TB ,他們已公開表示這方面的一個重要部分是用於放在一起的所有產品的工作內存( Essbase+Endeca+TimesTen )。

#4 OLTP & OLAP
錯誤觀點:“ SAP HANA 寫入性能有限。”
正確觀點:對於 OLTP+ OLAP 而言, SAP HANA 在單一硬件和單一操作系統上是一個單一的基礎,它能向上和向外擴展(從小型到 1000 + 核心的多個節點之間),也會因工作負載而動態地調節。只有我們在內存中的數據庫中插入了一個高寫入性能和高分析性能的柱狀存儲。這是 SAP HANA 的一個關鍵的差異化。

#5 存儲方式 – 行、列、文本
錯誤觀點: SAP HANA 不支持非結構化的數據,也不提供行和列的壓縮。
正確觀點: SAP HANA 可以在一個數據庫中存儲行、列以及文本, 它本身就支持非結構化數據的存儲。因為這些都整合在一起了,所以就簡化了各個不同的存儲器中的事務以及分析操作。事實上, SAP HANA 就是在非結構化基礎上建立起來的。它能處理在結構數據上的標準搜索、文本挖掘、以及類文本的搜索。SAP HANA 中也將包含 Inxight 技術在語言上的功能,如標籤,特徵提取,實體提取和情感分析。Inxight 在市場上是最好的文本分析軟件。SAP HANA 支持大量壓縮的列存儲。行存儲並不需要大量壓縮,因為它只被用做壓縮列和不相關的表格的緩衝器而已。

#6 數據緩存和查詢優化
錯誤觀點: SAP HANA 和 TimesTen 都能做數據緩存。
正確觀點:上一代的數據庫使用緩存來提高性能。HANA 是基於一個新的建築範式上的一個純內存數據庫。既然整個數據庫都在 HANA 中,你就不用再緩存數據。SAP HAHA 有一個世界頂級的查詢優化器,本身就允許大規模的平行查詢執行,包括內部和外部運營的平行操作。

#7 :ACID 性質和交易的完整性
錯誤觀點: SAP HANA 不具有“事務完整性 / 正確性”,缺乏“多版本並發控制( MVCC )”。
正確觀點: SAP HANA 是完全符合 ACID 的,我們使用永久性存儲系統來保證備份和持久性。SAP HABA 的並發性很完整,它有著例如語句級和快照隔離的常規功能的。

#8 :聚合和物化視圖
錯誤觀點:你需要聚合數據的物化視圖取得高性能。
正確觀點:又是一個!就像電動車不需要火花塞一樣,內存中詳細數據瞬時聚合性能高得多。聚合是過時的技術,因為需要耗費大量精力來創建,存儲冗餘和管理變化。SAP HANA 並不需要像傳統數據庫那樣上性能指標,鑑於它所有的部分都存在在內存中,面對所有尺寸的數據,它能將自己的行為設置成就像一個索引一樣。

#9 :商業智能客戶端
錯誤觀點: SAP HANA 只對一些 BI 客戶端提供有限的支持。
正確觀點: SAP HANASAP 已經優化 Business Objects 的運行。此外 _ 如今眾多 _ 第三方客戶端已成為可能(如 Tableau , TIbco Spotfire ),我們將繼續在 SAP HANA 上向第三方 BI 客戶端完全開放。

#10 :規劃應用程序和分析功能
錯誤觀點: SAP HANA 為規劃和預算編制程序提供了很有限的支持。
正確觀點: SAP HANA 為規劃程序提供了完整的支持,有相當多的 SAP 企業績效管理程序可以運行在 SAP HANA 上。SAP HANA 在數據庫中有本地規劃支持 與規劃引擎。類似於分解聚合、複製和其他的操作符是 SAP HANA 中關係代數的一部分。此外,我們支持 SAP 數據庫內自帶的規劃語言 FOX 。
規劃是 SAP HANA 一個巨大的參數 — 而不是其他方式。SAP HANA 不需要標準多維立方體( cube )操作,因為我們都是瞬時計算。SAP HANA 的庫包含了主要的分析和商業功能,例如數學函數、貨幣轉換、單位轉換、異動加權、時間序列分析、層次處理和預測函數,並且還對其他庫提供了擴展支持。有了運行在 HANA 上的 SAP BW ,我們沒有層;我們把規劃計算下放到 HANA 數據庫層來實現高性能。SAP HANA 將支持所有事務應用、商業倉庫、 BI 和所有 SAP 雲應用程序。我們也有第三方合作夥伴開發內置於 SAP HANA 中的規劃應用程序。

#11 :運營報表和數據源
錯誤觀點: SAP HANA 對使用複制和 ETL 技術的運營報表能力有限,由於“有限的數據源”。
正確觀點: SAP 擁有非常好的對於不同數據源(如 SAP CO-PA 加速器)的實時運行報表解決方案;其中很多都是非 SAP 程序數據源。SAP 數據服務和 SAP Sybase 複製服務器是市場領先的 ETL 和復制技術,可以從非 SAP 和 SAP 數據源加載數據。HANA 具有極高的插入率,由於大規模並行的批量機制,它支持所有的數據源,並且測試表明數據傳入 SAP HANA 的速度為每小時 2TB 。

#12 :價格
錯誤觀點:“ SAP HANA 比Exalytics 貴上 5 至 50 倍”。1TB HANA H/W 價格為 36.2 萬美元, SAP HANA 軟件收費 375 萬美元。
正確觀點:對於 1TB 存儲,我們對 H/W 期望價格為 40 至 60 萬美元(並非 36.2 萬),而軟件也遠沒有這裡說的那麼貴。SAP HANA 也針對不同市場提供了不同的價格。
價格範圍從小型業務(例如,單個 H/W 節點為 1.2 萬美元 +2 萬美元的 SAP B1 Analytics ON HANA )到大於 100TB 內存的超大型業務場景。客戶也可以為單個應用程序 (BW, BPC, CO-PA, Smart Meter Analytics 等 ) 購買 SAP HANA ,或者數據集市和數據倉庫。對於 40TB 的數據倉庫, BW on HANA 是很有競爭力的。另外, HANA 價格也包括了客戶所需要的一切 – 測試、開發和 QA 環境環境和支持。無需為數據加載和移動、存儲加速(如 Exadata )購買其他軟件。綜上這些 - 對於一個 512GB 使用配置, SAP HANA 總價比對手產品的價格大約低 50% 。

#13 :標準和開放性
錯誤觀點:“ HANA 只能同 SAP 工具使用,只有有限的甚至非標準的 SQL 。”
正確觀點:大多數客戶使用 HANA 處理非 SAP 數據和用例 – 同時是 SAP 和非 SAP 應用程序的用例。工作在標準的 SQL 和 MDX ,並且對每個應用都有標準接口,對每一層都是開放的:
·         開放選擇 H/W 供應商,在競爭對手前選擇為市場帶來新的芯片級的創新。
·         開放選擇 BI 客戶端。
·         開放選擇所有應用程序和平台。
·         有數以百計的在 SAP HANA 上的自定義(非 SAP )應用程序正在開發。
舉個例子, Oracle 應用程序和 Oracle BI 無需做任何改變,即可運行在 SAP HANA 上。已有的 Oracle 存儲過程將因知識產權原因翻譯成 SQLScript ,展示了 SAP HANA 的完全開放性。

#14 :磁盤中的 SAP HANA
錯誤觀點: SAP HANA 不支持數據存儲至磁盤中。
正確觀點: SAP HANA 通過使用優先級技術,例如最近最少使用( LRU )支持數據存儲磁盤。SAP HANA 可以將相關數據放在內存中,而來自磁盤的數據則根據需要加載。

#15 :查詢速度
錯誤觀點: SAP HAN 執行查詢的速度不比其他數據庫快。
正確觀點: SAP HANA 將所有數據以整數格式列式存儲,並且利用了最新的 intel 創新技術,如向量運算的 CPU 開發優化。SAP HANA 下一代架構以及芯片級的創新使其快於市場上任何一家競爭對手數據庫。舉個例子,我們有 4 個客戶使用了 SAP HANA 後,業務流程提升了 10 萬倍。領先的是 MKI ,其零售、物流數據分析提升了 40.8 萬倍。

#16 : SAP HANA 運行比 Exadata 和 Exalytics 慢。
錯誤觀點:“ SAP HANA 跑的沒有 Exadata 快,更別提 Exalytics ”。
正確觀點:在一個客戶架構的例子中, SAP HANA 對信用檢查和信用額度驗證業務流程,使用同樣數據和查詢語句比 Oracle Exadata 快 1.5 萬倍。該實時性能是比較了事務中多個冗餘沙箱、分析、內存加速和文本處理得出的,由於在他們架構中有固有延遲。我們已經在幾個客戶發現了這個現象,這裡只舉出一個作為例子。

目前市場上的方式:

SAP HANA 使用的新方式:


#17 :安裝和實施經歷
錯誤觀點: SAP HANA 需要幾天去安裝,而實施則需要幾月甚至幾年。
正確觀點: SAP HANA 在數據中心安裝只需幾分鐘至一小時。事實上,很快你就能從我們合作夥伴或者云上安裝。Provimi 的利潤分析僅用了 3 個星期就上線了。

#18 :考勤和差旅
錯誤觀點:如果沒有顯著系統開銷,數據庫很難展示基於時間的報表。
正確觀點:你可以使用 SAP HANA 對你的報表時間遍歷(例如,比較實際天數和預測天數),以及比如使用滑動瀏覽時間軸,而報表則瞬時生成,無需存儲另外的指標或者視圖。

總結

我列舉了這些事實,以期你能了解 SAP HANA 背後的真相。SAP HANA 的表現打亂了原本安靜的傳統數據庫市場,開創了集 OLTP+OLAP 於一個硬件和一個操作系統,可以運行在小至微型機,大至 1000+ 內核的服務器集群中的先河。其技術定義和我們真正關心的屬性交叉在一起,例如,
1. 1. 爆炸式數據量(是的,隨著你的發展而調節、與磁盤存儲一起工作)。
2. 2. 多結構數據(是的,包括文本和機器數據)。
3. 3. 對新鮮數據的實時分析(是的,實時)。
4. 4. 高速互動(是的,以人類思考的速度)。
5. 5. 無需調優數據庫(是的,更簡單更便宜)。
以上這些提供了性能上進行改進的順序。SAP HANA 通過重新改革公司的客戶互動、財務和供應鏈性能,為全世界的公司帶來了巨大商業貿易以及競爭優勢。農夫山泉( Oracle 數據庫提升了 2.2 萬倍性能)正在停用 Oracle 。
我們也在開創新的領域,例如醫藥行業中,重新改革基因組分析或者為全世界帶來貿易和實時銀行分析,以及我們這個時代的其他一些大挑戰。時間正召喚我們追趕新的地平線,世界不只是過去的增加,更是我們可以創造的更美好的事物。人生苦短,我們不應被這些謠傳阻止前進步伐。

2012年10月24日 星期三

Rolling Patch - OPatch Support for RAC [ID 244241.1]


Rolling Patch - OPatch Support for RAC [ID 244241.1]

Applies to:

Oracle Server - Enterprise Edition - Version: 9.0.1.0 to 11.2.0.2 - Release: 9.0.1 to 11.2
Oracle Server - Standard Edition - Version: 9.0.1.0 to 11.2.0.2   [Release: 9.0.1 to 11.2]
Information in this document applies to any platform.

Purpose

This note is to describe the current support of OPatch for Real Application Clusters. Before reading opatch RAC Support, you should be familiar with single-instance OPatch processing.

For more information about OPatch, please refer to Note 189489.1 - Oracle Data Server Interim Patch Installation (OPatch)

For more information about Oracle Clusterware (CRS) Rolling Upgrades, please refer to <note 338706.1>

Scope and Application

This document is intended for DBAs, System Administrators and Oracle Support Engineers that are going to apply Oracle Interim Patches on RAC environment.

Rolling Patch - OPatch Support for RAC


1 - RAC Patching methods
     patch的方式

OPatch supports 3 different patch methods on a RAC environment:

Patching RAC as a single instance (All-Node Patch)
In this mode, OPatch applies the patch to the local node first, then propagates the patch to all other nodes, and finally updates the inventory. All instances will be down during the whole patching process.
Patching RAC using a minimum down-time strategy (Min. Downtime Patch)
In this mode, OPatch patches the local node, asks users for a sub-set of nodes, which will be the first nodes to be patched. After the initial subset of nodes are patched, Opatch propagates the patch to the other nodes and finally updates the inventory. The downtime would happen between the shutdown of the the second subset of nodes and the startup of the initial subset of nodes patched.
Patching RAC using a rolling strategy - No down time (Rolling Patch)
With this method, there is no downtime. Each node would be patched and brought up while all the other nodes are up and running, resulting in no disruption of the system.

A rolling patch does not always no downtime as some patches require post-installation steps, i.e. running sql scripts to patch the actual database. Please refer to patch readme to find out whether post-installation steps requires downtime.


2 - Flow diagrams
     流程說明

All-Node Patch
. Shutdown all Oracle instances on all nodes
. Apply the patch to the RAC home on all nodes
. Bring all instances up
Minimum downtime
. Shutdown the Oracle instance on node 1
. Apply the patch to the RAC home on node 1
. Shutdown the Oracle instance on node 2
. Apply the patch to the RAC home on node 2
. Shutdown the Oracle instance on node 3
. At this point, instances on nodes 1 and 2 can be brought up
. Apply the patch to the RAC home on node 3
. Startup the Oracle instance on node 3
Rolling patch (no downtime)
. Shutdown the Oracle instance on node 1
. Apply the patch to the RAC home on node 1
. Start the Oracle instance on node 1
. Shutdown the Oracle instance on node 2
. Apply the patch to the RAC home on node 2
. Start the Oracle instance on node 2
. Shutdown the Oracle instance on node 3
. Apply the patch to the RAC home on node 3
. Start the Oracle instance on node 3

3 - How does OPatch select which method to use?
     選擇何種patch方式?

To be eligible to be applied on as a rolling patch, the patch need to meet certain criteria, which are determined by Oracle developers. To be applied on a "rolling fashion", the patch must be designated as a "rolling updatable patch" or simply "rolling patch".

The algorithm used to decide which method is going to be used is the following:

       If (users specify minimize_downtime)
              patching mechanism = Min. Downtime
       else if (patch is a rolling patch)
              patching mechanism = Rolling
            else
                  patching mechanism = All-Node  


4 - Availability of rolling patches
      Rolling patch的可用性

As patches are released they will qualified and identified as a "rolling" or "not rolling patch". While most patches can be applied in a rolling fashion some patches can not be applied in this fashion. Patches that could potentially be installed on rolling fashion include:

   . Patches that do not affect the contents of the database.
   . Patches not related to the RAC internode communication infrastructure.
   . Patches that change procedural logic and do not modify common header definitions of kernel modules. This includes client side patches that only affect utilities like export, import, sql*plus, sql*loader, etc.

Only individual patches -- not patch sets -- will be “rollable”. It should also be noted that a merge patch of a “rolling patch” and an ordinary patch will not be a “rolling patch”.

From 9.2.0.4 on, all patches released will be marked as a "rolling" or "not rolling patch", based on defined set of rules. Patches previously released are packaged as "not rolling".

Because the set of rules currently defined are very conservative, patches released as "not rolling patches", either before and after 9.2.0.4, may be eligible to be re-released as "rolling patches", after analysis from Oracle Development.

If you plan to apply a patch that is marked as "not rolling" and want to check if is possible to take advantage of the rolling patch strategy, please contact Oracle Support.



5 - How to determine if a patch is a "rolling patch" or not? 
     如何得知是否是 rolling patch?

As database user execute the following:

    - 9i or 10gR1: opatch query -is_rolling

    - 10gR2: opatch query -all  [unzipped patch location] | grep rolling

    - 10gR2 on Windows: opatch query -all [unzipped patch location] | findstr rolling

    - Later 10gR2 or 11g: opatch query -is_rolling_patch [unzipped patch location]

The command may not work if unzipped patch location has more than one patch sub-directory, example output while checking CPU patches:

Failed to load the patch object.  Possible causes are:
  The specified path is not an interim Patch shiphome
  Meta-data files are missing from the patch area
  Patch location = /home/oracle/stage/8836308
  Details = Input metadata files are missing.

Patch Location "/home/oracle/stage/8836308" doesn't point to a valid patch area.

OPatch failed with error code 75

Please refer to patch readme to find out whether the patch is rolling patch or not.



6 - Current Limitations 
     限制

. Patching with Shared File System

Currently OPatch treats Shared File System, like CFS, as a single-instance patch.  It means that OPatch will blindly patch files under a given ORACLE_HOME knowing that other nodes will pick up the changes via the Shared File System. Unfortunately, this means that OPatch cannot take advantage of a rolling patch on a Shared File System environment; all nodes must be down throughout the patching process.


. Patching one node at time

The Opatch strategies discussed above (All-Node, Min. Down-Time, and Rolling) presumes that all nodes will be patched at the same time. Additionally, each node can be patched individually, at different times, using the "-local" key word, which will patch only the local node.

也可以參考 http://www.cnblogs.com/wenjiewang/archive/2012/10/23/2735681.html

2012年10月7日 星期日

Windows 指令大全 (XP)

windows 指令大全《XP》
指令:【gpedit.msc】群組原則
指令:【sndrec32】錄音機
指令:【Nslookup】IP位址偵測器
指令:【explorer】開啟檔案總管
指令:【logoff】登出指令 tsshutdn 60秒倒計時關機指令
指令:【lusrmgr.msc】本地機用戶和組
指令:【services.msc】本機服務設定
指令:【oobe/msoobe /a】檢查XP是否啟動
指令:【notepad】開啟記事本
指令:【cleanmgr】磁碟垃圾整理
指令:【net start messenger】開始信使服務
指令:【compmgmt.msc】電腦管理
指令:【net stop messenger】停止信使服務
指令:【conf】啟動
指令:【netmeetingdvdplay】DVD播放器charmap】啟動字元對應表
指令:【diskmgmt.msc】磁牒管理實用程序
指令:【calc】啟動電子計算器
指令:【dfrg.msc】磁碟重組工具
指令:【chkdsk.exe】Chkdsk磁牒檢查
指令:【devmgmt.msc】裝置管理員
指令:【drwtsn32】系統醫生
指令:【rononce -p】15秒關機
指令:【dxdiag】檢查DirectX資訊
指令:【regedt32】註冊表編輯器
指令:【Msconfig.exe】系統配置實用程序
指令:【rsop.msc】群組原則結果集
指令:【mem.exe】顯示記憶體使用情況
指令:【regedit.exe】註冊表
指令:【winchat】XP自帶區域網路聊天
指令:【progman】程序管理器
指令:【winmsd】系統資訊
指令:【 perfmon.msc】電腦效能監測程序
指令:【winver】檢查Windows版本
指令:【sfc /scannow】掃瞄錯誤並復原
指令:【taskmgr】工作管理器(2000/xp/-2003)
指令:【eventvwr.msc】事件檢視器
指令:【secpol.msc】本機安全性設定
指令:【rsop.msc】原則的結果集
指令:【ntbackup】啟動制作備份還原嚮導
指令:【mstsc】遠端桌面
指令:【wmimgmt.msc】開啟windows管理體系結構WMI)
指令:【wupdmgr】windows更新程序
指令:【wscript】windows指令碼宿主設定
指令:【write】寫字板
指令:【wiaacmgr】掃瞄儀和照相機嚮導
指令:【winchat】XP原有的區域網路聊天
指令:【mplayer2】簡易
指令:【widnows media player mspaint】畫圖板
指令:【mstsc】遠端桌面連接
指令:【mplayer2】媒體播放機
指令:【magnify】放大鏡實用程序
指令:【mmc】開啟控制台
指令:【mobsync】同步指令
指令:【dfrg.msc】磁碟重組程式
指令:【dcomcnfg】開啟系統元件服務
指令:【ddeshare】開啟DDE共享設定
指令:【dvdplay】DVD播放器
指令:【nslookup】網路管理的工具嚮導
指令:【ntbackup】系統制作備份和還原
指令:【narrator】螢幕「講述人」
指令:【ntmsmgr.msc】移動存儲管理器
指令:【ntmsoprq.msc】移動存儲管理員操作請求
指令:【netstat -an】(TC)指令檢查連接
指令:【syncapp】新增一個公文包
指令:【sysedit】系統配置編輯器
指令:【sigverif】文件簽名驗證程序
指令:【shrpubw】新增共用資料夾
指令:【secpol.msc】本機安全原則
指令:【syskey】系統加密,一旦加密就不能解開,保護windows xp系統的雙重密碼
指令:【Sndvol32】音量控制程序
指令:【sfc.exe】系統檔案檢查器
指令:【sfc /scannow】windows文件保護
指令:【tourstart】xp簡介(安裝完成後出現的漫遊xp程序)
指令:【taskmgr】工作管理器
指令:【eventvwr】事件檢視器
指令:【eudcedit】造字程序
指令:【explorer】開啟檔案總管
指令:【packager】對像包裝程序
指令:【regsvr32 /u *.dll】停止dll文件執行
指令:【regsvr32 /u zipfldr.dll】取消ZIP支持
指令:【cmd.exe】CMD命令提示字元
指令:【chkdsk.exe】Chkdsk磁牒檢查
指令:【certmgr.msc】證書管理實用程序
指令:【calc】啟動計算器
指令:【cliconfg】SQL SERVER 客戶端網路實用程序
指令:【Clipbrd】剪貼板檢視器
指令:【netmeeting compmgmt.msc】電腦管理
指令:【ciadv.msc】索引服務程序
指令:【osk】開啟螢幕小鍵盤
指令:【odbcad32】ODBC資料來源管理器
指令:【iexpress】木馬元件服務工具,系統原有的
指令:【fsmgmt.msc】共用資料夾管理器
指令:【utilman】協助工具管理器
指令:【Clipbrd】剪貼板檢視器
指令:【packager】對像包裝程序
指令:【sfc /scannow】windows文件保護

============================================================

開機→執行→命令(命令集錦,豐富你的知識)

【winver】檢查Windows版本
【wmimgmt.msc】打開windows管理體系架構(WMI)
【wupdmgr】windows更新程式
【wscript】windows腳本宿主設置
【write】寫字板
【winmsd】系統訊息
【wiaacmgr】掃描儀和照相機向導
【winchat】XP自帶局域網聊天
【mem.exe】顯示內存使用情況
【Msconfig.exe】系統配置實用程式
【mplayer2】簡易widnows media player
【mspaint】畫圖板
【mplayer2】媒體播放機
【magnify】放大鏡實用程式
【mmc】打開控制台
【dxdiag】檢查DirectX訊息
【drwtsn32】系統醫生
【devmgmt.msc】 設備管理器
【dfrg.msc】磁片碎片整理程式
【diskmgmt.msc】磁片管理實用程式
【dcomcnfg】打開系統組件服務
【ddeshare】打開DDE共享設置
【dvdplay】DVD播放器
【net stop messenger】停止信使服務
【net start messenger】開始信使服務
【notepad】打開記事本
【nslookup】網路管理的工具向導
【ntbackup】系統備份和還原
【narrator】螢幕“講述人”
【ntmsmgr.msc】移動存儲管理器
【ntmsoprq.msc】移動存儲管理員*(糙)*作請求
【netstat -an】(TC)命令檢查界面
【syncapp】創建一個公文包
【sysedit】系統配置編輯器
【sigverif】文件簽名驗証程式
【sndrec32】錄音機
【shrpubw】創建共享文件夾
【secpol.msc】本地安全策略
【syskey】系統加密,一旦加密就不能解開,保護windows xp系統的雙重密碼
【services.msc】本地服務設置
【Sndvol32】音量控制程式
【sfc.exe】系統文件檢查器
【sfc /scannow】windows文件保護
【tsshutdn】60秒倒計時關機命令
【tourstart】xp簡介(安裝完成后出現的漫遊xp程式)
【taskmgr】任務管理器
【eventvwr】事件查看器
【eudcedit】造字程式
【explorer】打開資源管理器
【packager】對象包裝程式
【perfmon.msc】計算機性能監測程式
【progman】程式管理器
【regedit.exe】註冊表
【rsop.msc】組策略結果集
【regedt32】註冊表編輯器
【rononce -p】15秒關機
【regsvr32 /u *.dll】停止dll文件營運
【regsvr32 /u zipfldr.dll】取消ZIP支持
【cmd.exe】CMD命令提示符
【chkdsk.exe】Chkdsk磁片檢查
【certmgr.msc】證書管理實用程式
【calc】啟動電算機
【charmap】啟動字符映射表
【cliconfg】SQL SERVER 客戶端網路實用程式
【Clipbrd】剪貼板查看器
【conf】啟動netmeeting
【compmgmt.msc】計算機管理
【cleanmgr】垃圾整理
【ciadv.msc】索引服務程式
【osk】打開螢幕鍵盤
【odbcad32】ODBC數據源管理器
【oobe/msoobe /a】檢查XP是否激活
【lusrmgr.msc】本機用戶和組
【logoff】註銷命令
【fsmgmt.msc】共享文件夾管理器
【utilman】輔助工具管理器
【gpedit.msc】組策略

資料來源:
http://vmixclub.pixnet.net/blog/post/2266937-windows-%E6%8C%87%E4%BB%A4%E5%A4%A7%E5%85%A8%E3%80%8Axp%E3%80%8B

2012年10月1日 星期一

Can't find oracle_process_id in fnd_concurrent_requests with Oracle ERP 11.5.10.2 report

打開 Report Builder
1. Data Model => User Parameters => 定義 P_CONC_REQUEST_ID


Data Model => User Parameters => 定義 P_REQUEST_ID

2. Report => Report Triggers => Before Report
     SQL_TRACE;


Report => Report Triggers => After Report
     SRW.USER_EXIT('FND SRWEXIT');

3. Program Units => 定義 SQL_TRACE

PROCEDURE SQL_TRACE IS

   CURSOR c_program_id(p_request_id IN NUMBER) IS
  SELECT concurrent_program_id, nvl(enable_trace,'N')
  FROM apps.FND_CONCURRENT_REQUESTS
  WHERE REQUEST_ID = p_request_id;

  CURSOR get_audsid IS -- RC kpvs
  SELECT a.sid, a.serial#, b.spid FROM gv$session a,gv$process b
  WHERE audsid = userenv('SESSIONID')
  AND a.paddr = b.addr
  and a.inst_id= b.inst_id;


  CURSOR get_dbname IS
  SELECT name FROM gv$database;

  v_enable_trace apps.FND_CONCURRENT_PROGRAMS.enable_trace%TYPE;
  v_program_id apps.FND_CONCURRENT_PROGRAMS.concurrent_program_id%TYPE;
  v_sid gv$session.sid%TYPE;
  v_serial gv$session.serial#%TYPE;
  v_spid gv$process.spid%TYPE;
  v_name gv$database.name%TYPE;

BEGIN
 SRW.USER_EXIT('FND SRWINIT');
    SRW.MESSAGE( 1275, 'Report Version -> 616.4, LastUpdateDate -> 06/11/2003');

    OPEN c_program_id(:p_conc_request_id);
    FETCH c_program_id INTO v_program_id, v_enable_trace;
    CLOSE c_program_id;

    SRW.message( 1275, 'v_program_id -> '||v_program_id
    ||', v_enable_trace -> '||v_enable_trace
    ||', request_id -> '||:P_CONC_REQUEST_ID);

    IF v_enable_trace = 'Y' THEN

      OPEN get_audsid; -- RC kpvs
      FETCH get_audsid INTO v_sid, v_serial, v_spid;
      CLOSE get_audsid;

      OPEN get_dbname;
      FETCH get_dbname INTO v_name;
      CLOSE get_dbname;

      srw.message(1275,'TraceFile Name = '||lower(v_name)||'_ora_'||v_spid||'.trc');
      SRW.DO_SQL('ALTER SESSION SET EVENTS ''10046 trace name context forever, level 4''' );
    END IF;
EXCEPTION
  WHEN OTHERS THEN
    SRW.MESSAGE( 1275, 'Error during enabling the trace. ErrCode -> '||SQLCODE ||', ErrMesg -> '||SQLERRM );
END;

補充:
在Oracle論壇上有人是這麼做的:

1. before report trigger
add SRW.USER_EXIT('FND SRWINIT');
2. after report trigger
and SRW.USER_EXIT('FND SRWEXIT');
3. add a parameter P_CONC_REQUEST_ID in User PARAMETERS

2012年9月4日 星期二

SAP t-codes are displayed in the SAP menu


Check whether the t-codes are displayed in the SAP menu.
Tcodes-in-SAP-Menu-1
T-codes are not displayed in this case. So how to display the t-codes along with description in SAP menu?
Tcodes-in-SAP-Menu-2
Go to Extras -> Settings in the Menu bar.
Tcodes-in-SAP-Menu-3
Check the “Display technical names” checkbox and press continue. Now check the SAP menu.
Tcodes-in-SAP-Menu-4

Reference Site:

2012年9月3日 星期一

Oracle Discoverer SQL


Find BA/Folder if giving a specific SQL Statement
-----------------------------------------------------------

select * from
(SELECT
BA.BA_NAME,
OBJ.OBJ_ID OBJ_ID,
OBJ.OBJ_NAME FOLDER_NAME,
1 SEQUENCE_NUMBER,
OBJ.OBJ_OBJECT_SQL1 ||
OBJ.OBJ_OBJECT_SQL2 ||
OBJ.OBJ_OBJECT_SQL3 SQL_CODE
FROM
discadm.eul4_OBJS OBJ,
discadm.EUL4_BAS BA,
discadm.EUL4_BA_OBJ_LINKS BOL
WHERE
OBJ.OBJ_TYPE = 'CUO'
AND OBJ_OBJECT_SQL1 IS NOT NULL
AND BA.BA_ID = BOL.BOL_BA_ID
AND BOL.BOL_OBJ_ID = OBJ.OBJ_ID
UNION
SELECT
BA.BA_NAME,
SEG_OBJ_ID OBJ_ID,
OBJ.OBJ_NAME FOLDER_NAME,
SEG.SEG_SEQUENCE SEQUENCE_NUMBER,
SEG.SEG_CHUNK1 ||
SEG.SEG_CHUNK2 ||
SEG.SEG_CHUNK3 ||
SEG.SEG_CHUNK4 SQL_CODE
FROM
discadm.eul4_SEGMENTS SEG,
discadm.eul4_OBJS OBJ,
discadm.EUL4_BAS BA,
discadm.EUL4_BA_OBJ_LINKS BOL
WHERE
OBJ.OBJ_TYPE = 'CUO'
AND OBJ_OBJECT_SQL1 IS NULL
AND SEG.SEG_OBJ_ID = OBJ.OBJ_ID
AND BA.BA_ID = BOL.BOL_BA_ID
and BOL.BOL_OBJ_ID = OBJ.OBJ_ID
AND SEG.SEG_SEG_TYPE = 1
ORDER BY 2, 3) a
where a.sql_code like '%&aaa%'
and a.sql_code like '%&bbb%'
and a.sql_code like '%&ccc%'
;

2012年5月31日 星期四

yum 使用方法



[轉貼]yum 使用方法
更新/升級 update/upgrade
(1)列出所有可更新的套件清單
yum check-update
(2)更新所有系統已安裝套件
yum update
(3)升級套件,會連一些過舊即將淘汰的套件也一併升級,用在做大規模的版本升級動作時 (如 8.0 升到 9.0)
yum upgrade

安裝/移除/搜尋 install/remove/search
(1)安裝指定的套件
yum install <package_name>
(2)移除指定的套件
yum remove <package_name>
(3)搜尋套件
yum search <keyword>

清除 clean
(1)清除暫存目錄(/var/cache/yum)下的套件
yum clean packages
(2)清除暫存目錄(/var/cache/yum)下的 headers
yum clean headers
(3)清除暫存目錄(/var/cache/yum)下舊的 headers
yum clean oldheaders
(4)清除暫存目錄(/var/cache/yum)下的套件及舊的 headers
yum clean all (= yum clean packages; yum clean oldheaders)
[註] yum clean 已不適用於新版的 yum,新版的 yum 在 clean 的後面必須明確指出要清除的東西,否則會有錯誤訊息「Error: clean requires an option: headers, packages, cache, metadata, all」,另補充兩個新版 yum clean 新增選項

(5)清除暫存目錄(/var/cache/yum)下的 cache
yum clean cache
(6)清除暫存目錄(/var/cache/yum)下的 metadata
yum clean metadata

列表 list
(1)列出所有可安裝的套件
yum list
(2)列出所有可更新的套件
yum list updates
(3)列出所有已安裝的套件
yum list installed
(4)列出所有已安裝但不在 Yum Repository 內的套件
yum list extras
(5)列出所指定的套件
yum list <package_name>

群組 group
(1)列出所有可安裝的群組套件
yum grouplist
(2)安裝群組套件
yum groupinstall
(3)更新群組套件
yum groupupdate
(4)移除群組套件
yum groupremove
(5)列出群組套件資訊
yum groupinfo

資訊 info
(1)列出所有套件的資訊
yum info
(2)列出所有可更新的套件資訊
yum info updates
(3)列出所有已安裝的套件資訊
yum info installed
(4)列出所有已安裝但不在 Yum Repository 內的套件資訊
yum info extras
(5)列出所指定的套件資訊
yum info <package_name>
(6)列出套件提供哪些檔案
yum provides <package_name>

設定檔
(1)/etc/yum.conf
設定排除更新的套件,加上一行,如不更新核心套件

exclude=kernel* 或 exclude=kernel kernel-devel

狀況排除
Q1. 執行 yum 時,系統找不到 RPM-GPG-KEY
A1.
手動安裝 RPM-GPG-KEY 即可
Fedora Core 3
rpm --import /usr/share/doc/fedora-release-3/RPM-GPG-KEY-fedora
Fedora Core 4
rpm --import /usr/share/doc/fedora-release-4/RPM-GPG-KEY-fedora

Q2. 如何安裝某個套件的完整版
A2.
用 yum install <package_name>,yum 也不會安裝該套件的所有元件,僅會安裝一般常用的
比如說 yum install php,就會發現漏裝很多東西,像 php-mysql
此時可用 yum install php*,即可安裝該套件的所有程式
如果不是真的對套件各個元件非常了解,建議安裝任何套件時,都直接在後面加上 *
以避免缺東缺西,導致整體服務運作失常
原文出處:yum 使用方法 @ 誰住在深海大鳳梨裡? :: 痞客邦 PIXNET ::


[轉貼]YUM常用命令介紹
去論壇討論 來源: 作者: 發佈時間:2008-01-05
1.列出所有可更新的軟件清單
命令:yum check-update
2.安裝所有更新軟件
命令:yum update
3.僅安裝指定的軟件
命令:yum install <package_name>
4.僅更新指定的軟件
命令:yum update <package_name>
5.列出所有可安裝的軟件清單
命令:yum list
用YUM安裝刪除軟件
裝了系統添加刪除軟件是常事,yum同樣可以勝任這一任務,只要軟件是rpm安裝的。
安裝的命令是,yum install xxx,yum會查詢數據庫,有無這一軟件包,如果有,則檢查其依賴衝突關係,如果沒有依賴衝突,那麼最好,下載安裝;如果有,則會給出提示,詢問是否要同時安裝依賴,或刪除衝突的包,你可以自己作出判斷。
刪除的命令是,yum remove xxx,同安裝一樣,yum也會查詢數據庫,給出解決依賴關係的提示。

1.用YUM安裝軟件包
命令:yum install <package_name>
2.用YUM刪除軟件包
命令:yum remove <package_name>

用YUM查詢軟件信息
我 們常會碰到這樣的情況,想要安裝一個軟件,只知道它和某方面有關,但又不能確切知道它的名字。這時yum的查詢功能就起作用了。你可以用 yum search keyword這樣的命令來進行搜索,比如我們要則安裝一個Instant Messenger,但又不知到底有哪些,這時不妨用 yum search messenger這樣的指令進行搜索,yum會搜索所有可用rpm的描述,列出所有描述中和messeger有關的rpm包,於 是我們可能得到gaim,kopete等等,並從中選擇。
有時我們還會碰到安裝了一個包,但又不知道其用途,我們可以用yum info packagename這個指令來獲取信息。

1.使用YUM查找軟件包
命令:yum search <keyword>
2.列出所有可安裝的軟件包
命令:yum list
3.列出所有可更新的軟件包
命令:yum list updates
4.列出所有已安裝的軟件包
命令:yum list installed
5.列出所有已安裝但不在 Yum Repository 內的軟件包
命令:yum list extras
6.列出所指定的軟件包
命令:yum list <package_name>
7.使用YUM獲取軟件包信息
命令:yum info <package_name>
8.列出所有軟件包的信息
命令:yum info
9.列出所有可更新的軟件包信息
命令:yum info updates
10.列出所有已安裝的軟件包信息
命令:yum info installed
11.列出所有已安裝但不在 Yum Repository 內的軟件包信息
命令:yum info extras
12.列出軟件包提供哪些文件
命令:yum provides <package_name>

清除YUM緩存
yum 會把下載的軟件包和header存儲在cache中,而不會自動刪除。如果我們覺得它們佔用了磁盤空間,可以使用yum clean指令進行清除,更精確 的用法是yum clean headers清除header,yum clean packages清除下載的rpm包,yum clean all一 股腦兒端

1.清除緩存目錄(/var/cache/yum)下的軟件包
命令:yum clean packages
2.清除緩存目錄(/var/cache/yum)下的 headers
命令:yum clean headers
3.清除緩存目錄(/var/cache/yum)下舊的 headers
命令:yum clean oldheaders
4.清除緩存目錄(/var/cache/yum)下的軟件包及舊的headers
命令:yum clean, yum clean all (= yum clean packages; yum clean oldheaders)
原文出處:YUM常用命令介绍 - Linux天空

Linux mount iso檔的語法

Linux mount iso檔的語法

# mkdir /mnt/iso
# mount -o loop -t iso9660 <filename.iso> /mnt/iso
# unmount /mnt/iso

2012年5月24日 星期四

Oracle Update/Delete in a loop


rem -----------------------------------------------------------------------
rem Filename:  plsloop.sql
rem Purpose:   Example: UPDATE/DELETE in a loop and commit very X records
rem            Handy for huge tables that cause rollback segment problems
rem            DON'T ISSUE COMMIT TOO FREQUENTLY!
               Run "set serveroutput on" first in SQL*PLUS
rem Date:      09-Apr-1999; Updated: 25-Nov-2004
rem Author:    Frank Naude, Oracle FAQ
rem -----------------------------------------------------------------------

declare
  i number := 0;
  cursor s1 is SELECT rowid, t.* FROM tab1 t WHERE col1 = 'value1';
begin
  for c1 in s1 loop
      update tab1 set col1 = 'value2'
             where rowid = c1.rowid;

      i := i + 1;              -- Commit after every X records
      if i > 10000 then
         commit;
         i := 0;
      end if;

  end loop;
  commit;
end;
/

-- Note: More advanced users can use the mod() function to commit every N rows. 
--       No counter variable required:
--
-- if mod(i, 10000) 
--    commit;
--    dbms_output.put_line('Commit issued for rows up to: '||c1%rowcount);
--  end if;
--

2012年5月22日 星期二

Oracle 10g 的資料回溯機制


現象:
!我不小心droptable!!

目的:
Windows作業系統裡面有"資源回收筒",防止使用者誤刪資料,但是資料庫往往將table殺掉之後,DBA需要花費極大的成本才能將資料restore回來,是否能徹底解決這項困擾呢?
Oracle 10g的資料回溯機制(Flashback)將會徹底這個問題!!

如何查詢:
查詢user_recyclebin的資料字典
SQL*Plus內執行show recyclebin指令
直接查詢Recyclebin Table

Oracle如何處理Recyclebin內的物件:
一般來說,Oracle不會主動清除,除非:
- tablespace space不夠
- 執行purge指令
- 執行undrop指令

如何清除資源回收筒:
purge table "recyclebin table name";
purge tablespace <tablespace_name>;

哪幾種drop不會寫到recyclebin
drop tablespace <tablespace_name> including contents;
drop user <user_name> cascade;

如何復原資源回收桶的物件:
undrop table <table_name> as <table_name>;
undrop之前,index,trigger以及constrate會回復嗎?
=> 會以recyclebin_name呈現,所以在undrop之前,要先到recyclebin查原始名稱

資料庫 "倒帶"
flashback database to timestamp(sysdate-1/24);
flashback database to scn <scn_number>;

總結:
        如果你的應用系統背後的資料庫用的是Oracle 10g版本的話,那恭喜你,你再也不用為了誤刪資料或是table而感到心驚膽跳,但是並不是因為這樣就不用審慎的對待任何一筆與公司有關的交易。
        如果你的應用系統背後的資料庫用的不是Oracle 10g版本的話,趕快將這個新功能告訴你的DBA!!