By leverage "Oracle By Example - Chapter 10: Monitoring and Tuning the Database"
從Oracle DB Console, Performance 看效能,如下圖:
我們期望CPU的部分是佔主要的部分,其它顏色的部分是愈少愈好。上圖,很顯然CPU的部分所佔的比例太少,其它wait events太多,有調校的空間。
如果問題發生的時間夠長,ADDM自然會自動進行分析,其分析的結果可以在"Home"頁籤下的 "ADDM Performance Analysis" 找到;如果ADDM還尚未執行,則可以在 "Performance" -> "Average Active Sessions" 點選 "View ADDM Run" 圖示。
點選對資料庫時間造成最大影響的連結
可以看到對資料庫時間造成影響的原因。範例為"Top SQL Statements"
點選該SQL連結
再按下"Schedule SQL Tuning Advisor"按鈕;我們想省點力氣,讓Oracle ADDM告訴我們怎麼調整SQL
完成 SQL Tuning Advisor 的工作
這個時候Advisor會告訴我們該如何調整SQL。範例非常適用於套裝軟體(無法變更SQL指令),但是Oracle 找到另一種更好執行的方式,因此建議使用"SQL Profile"來變動原執行計劃的方式。直接下實施"Implement"
按下"Yes"
SQL Profile 已經建立
再檢視OEM,應該就會看到校能改善
Monday, January 02, 2012
Oracle 資料庫校能調校 -- 使用ADDM來解決Row Lock問題
By leverage "Oracle By Example - Chapter 10: Monitoring and Tuning the Database"
Oracle Database10g以後,最簡單對資料庫進行校能診斷的方法就是使用ADDM(Automatic Database Diagnostics Monitor)
在進行OEM (DB Console)主畫面之後,直接點選"Performance"頁籤,就可以看到資料庫執行校能的狀態
由畫面上可以看到有等待的事件--"Application"
點選"Application"就會進入到"Active Sessions Waiting"。在圖示的地方就可以很清楚地看到"enq TX: row lock contention"。我們裝傻一下。
往下捲到底層,可以看到"Additional Monitoring Links",點選"Snapshot"
接著按下"Create"
這時候會問你是否要手動建立snapshot(Are you sure you want to create a manual snapshot?)按下"Yes"。
當snapshot建立完成,按下右上角的"Database"頁籤
往下捲到"ADDM Performance Analysis",應該至少會出現2個警示,其中一個就會是"Row Lock Waits"
ADDM會自動定期(預設大約是1小時一次)地去檢視資料庫的執行校能並主動找出有問題的地方,然後顯示在這個地方
點選"Row Lock Waits"連結,可以再看到更細部的說明
點選Session ID再看細部資訊。其中可以看到那一個SQL指令造成Row Lock
此時,可以非常確定造成Row Lock 的原因了。按下"Performance"頁籤,並往下捲,點選"Additional Monitoring Links"下的"Blocking Sessions"
點選造成Row Lock的Session ID,再按下"Kill Session"
確認要 "Kill Session"的ID,按下"Yes"
到此,問題已完全解決。
Oracle Database10g以後,最簡單對資料庫進行校能診斷的方法就是使用ADDM(Automatic Database Diagnostics Monitor)
在進行OEM (DB Console)主畫面之後,直接點選"Performance"頁籤,就可以看到資料庫執行校能的狀態
由畫面上可以看到有等待的事件--"Application"
點選"Application"就會進入到"Active Sessions Waiting"。在圖示的地方就可以很清楚地看到"enq TX: row lock contention"。我們裝傻一下。
往下捲到底層,可以看到"Additional Monitoring Links",點選"Snapshot"
接著按下"Create"
這時候會問你是否要手動建立snapshot(Are you sure you want to create a manual snapshot?)按下"Yes"。
當snapshot建立完成,按下右上角的"Database"頁籤
往下捲到"ADDM Performance Analysis",應該至少會出現2個警示,其中一個就會是"Row Lock Waits"
ADDM會自動定期(預設大約是1小時一次)地去檢視資料庫的執行校能並主動找出有問題的地方,然後顯示在這個地方
點選"Row Lock Waits"連結,可以再看到更細部的說明
點選Session ID再看細部資訊。其中可以看到那一個SQL指令造成Row Lock
此時,可以非常確定造成Row Lock 的原因了。按下"Performance"頁籤,並往下捲,點選"Additional Monitoring Links"下的"Blocking Sessions"
點選造成Row Lock的Session ID,再按下"Kill Session"
確認要 "Kill Session"的ID,按下"Yes"
到此,問題已完全解決。
Oracle 資料庫 監測
By leverage "Oracle By Example - Chapter 10: Monitoring and Tuning the Database"
身為Oracle Database 管理人員,在主動監測資料庫空間上至可以做到
為資料表格空間(Tablespace)設定警示上限(Threshold)
發送警示通知
為資料表格空間(Tablespace)設定警示上限(Threshold)
在資料表格空間清單下,選擇要設定的資料表格空間(範使用的是TBSALERT),並按下"Edit"
點選"Thresholds"頁籤
在指定的Thresholds(Specified Thresholds)設定60%為警示,68%為嚴重,然後按下套用。這樣子就完成設定。
發送警示通知
在OEM的右上角按下"Setup"
接下來點選左邊選單上的"Notification Methods"
身為Oracle Database 管理人員,在主動監測資料庫空間上至可以做到
為資料表格空間(Tablespace)設定警示上限(Threshold)
發送警示通知
為資料表格空間(Tablespace)設定警示上限(Threshold)
在資料表格空間清單下,選擇要設定的資料表格空間(範使用的是TBSALERT),並按下"Edit"
點選"Thresholds"頁籤
在指定的Thresholds(Specified Thresholds)設定60%為警示,68%為嚴重,然後按下套用。這樣子就完成設定。
發送警示通知
在OEM的右上角按下"Setup"
接下來點選左邊選單上的"Notification Methods"
在Outgoing Mail (SMTP) Server 填入 SMTP 伺服器名稱,入SMTP認証的使用者名稱(User Name)與密碼(Password, Comfirm Password),發信者名稱(Identify Sender As)與發信者電子郵件(Sender's E-mail Address)。填完後,按下"Apply"
接下來按下右上角的"Preference"
在電子郵件清單(E-mail Addresses)下,按下"Add Another Row)
填入收件人的電子郵件,然後按下"Apply"
Oracle Database Memory Management
在 Oracle Database 11g 以後,建議使用Automatic Memory Management功能。省下分別設定SGA (System Global Area)與PGA (Program Global Area)的大小。
下圖為 Enable Automatic Memory Management,設定 Total Memory Size 與 Maximum Memory Size。要注意的是 Total Memory Size < Maximum Memory Size.
下圖為 Enable Automatic Memory Management,設定 Total Memory Size 與 Maximum Memory Size。要注意的是 Total Memory Size < Maximum Memory Size.
Sunday, January 01, 2012
Oracle Enterprise Manager (DB Console) 啓動與設定
By leverage "Oracle By Example - Chapter 3: Getting Started with Oracle Enterprise Manager"
啓動 DB Console
在Windows環境下,可以直接從"服務主控台"上直接啓動。
在Linux/Unix環境下,執行 "emctl start dbconsole"
設定其它使用者使用 EM (Oracle Enterprise Manager)
打開流覽器,預設的網址 https://<hostname>:1158/em
以 sys 登入 DB Console (記得"Connect As" 要選 "SYSDBA")
在網頁的右上角,按下"Setup"
接下來在左邊的選單,按下"Administrator",畫面會顯示管理者(Administrator)清單
按增下"Create"按鈕
使用者的欄位選取資料庫內的使用者(範是選取"HR");Administrator Privilege選取"Super Administrator",然後按下"Review",再按下"Finish"。
啓動 DB Console
在Windows環境下,可以直接從"服務主控台"上直接啓動。
在Linux/Unix環境下,執行 "emctl start dbconsole"
設定其它使用者使用 EM (Oracle Enterprise Manager)
打開流覽器,預設的網址 https://<hostname>:1158/em
以 sys 登入 DB Console (記得"Connect As" 要選 "SYSDBA")
在網頁的右上角,按下"Setup"
接下來在左邊的選單,按下"Administrator",畫面會顯示管理者(Administrator)清單
按增下"Create"按鈕
使用者的欄位選取資料庫內的使用者(範是選取"HR");Administrator Privilege選取"Super Administrator",然後按下"Review",再按下"Finish"。
新增的使用者就會列在"Administrator List"
Thursday, December 29, 2011
Hello ~ Oracle Database
Oracle Database 雖然賣的不錯,但不是有用的人就了解如何能充分使用Oracle Database。所以想就分享個人過去學習的經驗,能夠對想要進入學習Oracle DB的人有一些些的幫助。
要了解Oracle Database運作的最重要的一張圖(個人認為)如下:
只要了解這張圖,Oracle DB在做什麼事,執行效能上出問題,怎麼解決,解決的方向大概就不會偏離太多了。
說明待續
自從Oracle Database 10g開始,Oracle創新一項Oracle DB專屬的資料儲存磁碟管理系統--Automatic Storage Management (ASM)。ASM的確讓 Oracle DB充分發揮磁碟輸出與輸入能力,讓DB在I/O上效能調校變的更容易了。
讓初接觸的人來說,還蠻困惑的,什麼是ASM Instance。看簡單一點,把ASM Instance視為檔案管理系統的背景程式就行了。只不過以前呢,檔案系統的背景程式都是作業系統附贈的,沒人去理會,而且習以為常。現在Oracle提供了一種新的檔案系統(資料庫專屬的檔案系統) -- ASM,DBA也就開始又要學習了。
Real Application Cluster
如上圖,為3個節點的RAC資料庫,共同讀取同一(單一)資料庫。
在架構上Heartbeat 至為重要。Heartbeat除了是確認各個節點是否存活的重要溝通管道之外,Oracle DB也用Heartbeat來傳送資料,因為資料從Memory經過Heartbeat傳送到另一個節點的Memory遠遠要比資料從磁碟中讀取再放到Memory要來的快的很多;同時也提升了增加節點數量時可以穩定地提升處理能量。
可以看到每個節點上,各自有獨立的Database Instance,在Instance外有資料庫的"Service"。圖上顯示有三個Service:HR、Sales、Call Center。而從Application/Web Servers所提出的DB Service連線要求(同時提出HR、Sales、Call Center DB Service),則會分別各自落到各個節點所分配的服務上。當然也可以設定某DB Service由兩個以上的節點來提供服務。
如果有架設Oracle Real Application Cluster,必定要了解Grid Infrastructure(GI)。講簡單一點,GI是屬於作業系統層面的軟體,這對原來只懂DB的DBA的的確確是一大挑戰(Oracle 把DBA看成是無所不會的超人了)。沒有架設RAC的人可以暫時先跳過,如果想要了解的人就不能不看懂下面這一張圖:
要了解Oracle Database運作的最重要的一張圖(個人認為)如下:
只要了解這張圖,Oracle DB在做什麼事,執行效能上出問題,怎麼解決,解決的方向大概就不會偏離太多了。
說明待續
自從Oracle Database 10g開始,Oracle創新一項Oracle DB專屬的資料儲存磁碟管理系統--Automatic Storage Management (ASM)。ASM的確讓 Oracle DB充分發揮磁碟輸出與輸入能力,讓DB在I/O上效能調校變的更容易了。
讓初接觸的人來說,還蠻困惑的,什麼是ASM Instance。看簡單一點,把ASM Instance視為檔案管理系統的背景程式就行了。只不過以前呢,檔案系統的背景程式都是作業系統附贈的,沒人去理會,而且習以為常。現在Oracle提供了一種新的檔案系統(資料庫專屬的檔案系統) -- ASM,DBA也就開始又要學習了。
Real Application Cluster
如上圖,為3個節點的RAC資料庫,共同讀取同一(單一)資料庫。
在架構上Heartbeat 至為重要。Heartbeat除了是確認各個節點是否存活的重要溝通管道之外,Oracle DB也用Heartbeat來傳送資料,因為資料從Memory經過Heartbeat傳送到另一個節點的Memory遠遠要比資料從磁碟中讀取再放到Memory要來的快的很多;同時也提升了增加節點數量時可以穩定地提升處理能量。
可以看到每個節點上,各自有獨立的Database Instance,在Instance外有資料庫的"Service"。圖上顯示有三個Service:HR、Sales、Call Center。而從Application/Web Servers所提出的DB Service連線要求(同時提出HR、Sales、Call Center DB Service),則會分別各自落到各個節點所分配的服務上。當然也可以設定某DB Service由兩個以上的節點來提供服務。
如果有架設Oracle Real Application Cluster,必定要了解Grid Infrastructure(GI)。講簡單一點,GI是屬於作業系統層面的軟體,這對原來只懂DB的DBA的的確確是一大挑戰(Oracle 把DBA看成是無所不會的超人了)。沒有架設RAC的人可以暫時先跳過,如果想要了解的人就不能不看懂下面這一張圖:
Wednesday, December 28, 2011
建立台灣"北區"地圖
開啓SQLDeveloper(建議至OTN下載最新穩定的版本)
檢視剛匯入的表格,只有TWN_ADM2含有各縣市的圖資。我打算用HASC_2中的內容來識別不同的縣市。
在建立所謂"北"、"中"、"南"、"東"的區域之前,先建立另一獨立的表格來儲存這些資料。以下為建立新表格的操作步驟
除了給表格名稱之外,並且要建立SDO_GEOMETRY資料型態欄位,請勾選右上角"Advanced"的checkbox。因為只有在勾選之後才能選到該資料型態。SDO_GEOMETRY資料型態欄位的選擇:先在Schema下拉選單下選取"MDSYS",然後在"Type"選取"SDO_GEOMETRY"。
完成表格建立後的表格資料型態。
接下來,執行SQL指令。
透過SDO_AGGR_UNION函數將符合WHERE子句條件的資料聯集在一起
WHERE子句則是定義所有"北部"區域的代碼。
INSERT之後,別忘記執行"COMMIT:"
資料有了之後,仍需要進行"註冊"的動作,不然Oracle Spatial不認得該表格具有空間資訊。註冊的動作操作如下:
"Coordinate System Identifier"輸入"8307",全球GPS座標系統代碼(如果不知道要填多少,先填這個吧,除非自己很清楚知道要填多少)
接下來,要建立空間資訊索引(在大量空間資料中,可以快速的找到所要的圖資以及進行運算)步驟如下:
給一個空間資訊索引名稱
表格的內容
接下來就可以使用Mapbuilder來檢視匯入的圖資了。
Subscribe to:
Posts (Atom)










