2009年7月29日 星期三

手癢的後果-- MAX_SGA_SIZE 的惡夢

今日根據OEM的建議結果,調整DB速度瓶頸之一的方式就是增加 SGA_TARGET 的 Size。SGA_TARGET 建議值為2G多的大小,好大喜功的我心癢手也癢,很自然的就給他照建議調下去了。但Oracle預設的MAX_SGA_SIZE只有1G,所以得再回頭調整 MAX_SGA_SIZE 之後才能再繼續調整SGA_TARGET的大小。

手癢繼續驅動著我,懷疑精神絲毫沒在我腦袋裡閃過,於是我又很自然的透過OEM先將MAX_SGA_SIZE改成2G,然後喜孜孜的重新啟動Oracle後,期待接下來的調整步驟。但是,惡運總是來得比想像中的快,Oracle冷靜的回覆我:

ORA-27100: shared memory realm already exits

果然,手癢沒好下場。

好吧,Google了一下解決方案,作法比想像中的簡單,幾個步驟就行:
  1. 找到spfile的位置,將spfile改名
  2. 登入成sysdba,以預設的Oracle ini檔啟動DB,指令可能長得如下:

    startup pfile='D:\oracle\product\10.2.0\admin\myDB\pfile\init.ora.226200920330'
資料庫就呼嚕呼嚕的起來了。這件事告訴我們,沒把握的事盡量在一個夜深人靜的時候做比較好,否則一堆眼睛可憐兮兮的看著你的時候,壓力可真的不是開玩笑的。 ><"

2009年7月24日 星期五

設定SQL 2005 Net Send 服務

說穿了 SQL 2005的Net Send就是執行 Windows 的 Messenger 服務,要啟動它簡單幾個步驟就搞定:

  1. 啟動SQL Server主機 的Messenger 服務
  2. 新增操作員
  3. 設定操作員的Net Send的主機位址(IP也可)
  4. 開啟操作員登入的Client端主機的Messenger 服務
四個步驟就可以搞定通知服務了。

Transaction log 吃掉你的硬碟時怎麼辦?

前幾天剛好遇到交易紀錄檔長滿了(700GB)搞到硬碟空間一滴不剩,相依的應用系統陸續掛點。最後判斷log不重要後,解決的方式就採破釜沉舟的方式進行

1. 對交易紀錄檔作截斷處理(這動作還不會釋放空間)

backup log mydb with truncate_only

參考http://technet.microsoft.com/zh-tw/library/ms189085.aspx

2. 壓縮交易紀錄檔空間(這個才會釋放空間)

dbcc shrinkfile(‘mydb_log’,2) //給我縮到2mb!

參考:http://technet.microsoft.com/zh-tw/library/ms189493.aspx

2009年7月23日 星期四

檢閱 Oracle Enterprise Manager Data Control的port number

由於我常記不住這麼簡單的東西,只好再拿來充數了。

關於Oracel Enterprise Manager Data Control的portal number,可以打開$ORACLE_HOME/install/portlist.ini檔的HTTP連接埠設定:

iSQL*Plus HTTP 連接埠號碼 =5560
Enterprise Manager 主控台 HTTP 連接埠 (MyOracleDB) = 5500 //就是這個光~
Enterprise Manager 代理程式連接埠 (MyOracleDB) = 3938

連接到Data Control時就可打上 http://myDBHostName:5500/em 就可連上了~

參考:Accessing the Oracle Enterprise Manager Data Control