2012年6月22日星期五

查看Oracle資料庫(database)的記憶體使用分配

要查看Oracle資料庫的記憶體使用情況,可以DBA用戶執行以下指令:

  $ sqlplus / as sysdba > show sga;


2012年6月13日星期三

查看Oracle Database的系統記錄檔(error log)的儲存位置

使用sysdba用戶登入:

$ sqlplus / as sysdba 


用以下SQL去查看系統記檔的儲存位置

> SELECT value FROM v$parameter WHERE name='background_dump_dest';



> show parameter BACKGROUND_DUMP_DEST

結果會顯示系統記檔的儲存位置


部份資料源自:http://www.adp-gmbh.ch/ora/concepts/alert_log.html

2012年6月12日星期二

Arch Linux上暫停某套件的更新

在/etc/pacman.conf裡,找IngnorePkg並在後面加上不想更新的套件名稱。例如:
IgnorePkg = jre jdk

2012年6月7日星期四

INNER JOIN大不同


在使用LEFT JOIN時,遇到了結果不對的問題。
在StackOverflow找到了答案:http://stackoverflow.com/q/354070/822864


使用StackOverflow上的例子解釋一下。

以下兩句SQL回來的結果,看來是一樣。而且例子1在JOIN的條件上已有Orders.ID=12345這個名似是一個篩選條件,想來合併速度定必更快。

例子1:
SELECT *
FROM Orders
LEFT JOIN OrderLines ON OrderLines.OrderID=Orders.ID AND Orders.ID=12345



例子2:
SELECT *
FROM Orders
LEFT JOIN OrderLines ON OrderLines.OrderID=Orders.ID
WHERE Orders.ID = 12345



但事實並非如此。

例子1的執行結果會把OrderLines裡的記錄全都合併進去,而只有符合OrderLines.OrderID=Orders.ID和Orders.ID=12345這兩個條件的才會被連結成一個記錄。

而例子2則能輸出我想要的結果:把兩個表格合併並只出現Orders.ID = 12345的記錄。

根據現代的資料庫,他們一般也有優化SQL邏輯的能力。這種老掉牙JOIN語法,優化器是種得把集合處理好的。



*測試和使用環境是Oracle Enterprise Database 11g Release 2