2007年11月21日 星期三

PostgreSQL 的 Server instrumentation 功能

PostgreSQL 雖然有 pgAdmin III 這個極好用的管理工具,但是 pgAdmin 還是有一些資訊,必須由伺服器本身提供。但是,PostgreSQL server 原本並沒有主動提供這些「系統」資訊到管理界面的功能,所以,就必須再加裝一些擴充模組,讓伺服器擁有提供這些資訊的能力。這個擴充模組叫做 adminpack contrib module,它提供了一些和 pgAdmin 相互交換資訊的功能:
  • 在 pgAdmin 主視窗的「統計情報」頁籤(Statistics tab)中顯示「表空間」(tablespaces) 、資料庫(databases)、資料表(tables)和索引(Indexes)在硬碟裏所占的尺寸大小。
  • 如果伺服器的日誌檔(log files)設定一切很適當的話,在「伺服器狀態」對話方塊(The Server Status dialogue,可以由主功能表的「工具」→「伺服器狀態」叫出)裏會出現「日誌檔」頁籤,而且在這個頁籤可以瀏覽伺服器的日誌檔內容。
  • 可以把其它使用者正在執行中的查詢在「伺服器狀態」對話方塊中把它取消掉。
  • 可以直接編輯伺服器的 postgresql.conf 和 pg_hba.conf 這兩個重要的設定檔,還可以從遠端重載(reload)它們。
    也就是說,如果你不去安裝這個模組,以上的功能,你的 pgAdmin 就不會提供。所以如果你發現你的 pgAdmin 無法使用以上的功能來控制伺服器時,就是你之前沒裝 adminpack 模組。還有,如果你的伺服器的版本還在 8.0 版以前,那麼抱歉,以下不用再看下去了,因為之前的版本並沒有這個擴充模組。
如果你是使用 Windows 原生版本的 PostgreSQL,那麼你也不用再看下去了,因為你的伺服器應該早就有提供上述的這些功能了。那是因為官方版本的 pgInstaller 不但已經幫你安裝了,而且也幫你把它啟動了。可是如果你是用其它的系統(包括 Windows 上的 Cygwin 版本),那麼你就必須手動地安裝並啟動它。因為我目前只試過在 FreeBSD 上安裝,所以我先介紹如何在 FreeBSD 上把 adminpack 安裝和啟動,過幾天等我試過如何把 Ubuntu 版本的 adminpack 裝起來後,再來把這部份加入。至於其它版本,抱歉,愛莫能助!
    在 FreeBSD 上,首先你要先以 root 權限,切換到 port tree 上的 postgresql-contrib 套件的目錄下:
      # cd /usr/ports/databases/postgresql-contrib/
        接著安裝:
          # make install clean
            這樣就裝好了。很容易吧!事實上,contrib 擴充模組並不只有 adminpack 這個模組,但是其它模組和本文無關,先暫時不介紹。
              裝好了以後,接著要把它啟動。啟用它的方法就是手動把這個模組裝到你的維護資料庫內。所謂的維護資料庫就是用來存放你的伺服器的資料庫目錄的那個資料庫,通常是 postgres 這個資料庫,當然你也可能在安裝時改用其它的資料庫,那就請你將下列的 postgres 改成你的維護資料庫名。剛才在安裝 adminpack 時,裝了一個 adminpack.sql 的 SQL 指令檔,這個檔就是我們所要安裝的指令檔,請你先把它找出來。沒意外的話,在 FreeBSD 的 postgresql-contrib 套件將這個檔放在 /usr/local/share/postgresql/contrib 目錄下。這時,因為在 FreeBSD 中,root 權限不能執行 psql,所以你先要切換成 pgsql 這個使用者:
                # su - pgsql
                  $ psql cheeren < /usr/local/share/postgresql/contrib/adminpack.sql
                  CREATE FUNCTION
                  CREATE FUNCTION
                  CREATE FUNCTION
                  CREATE FUNCTION
                  CREATE FUNCTION
                  CREATE FUNCTION
                  CREATE FUNCTION
                  CREATE FUNCTION
                    $ _
                      這就裝好了。這時你如果已經是在使用 pgAdmin,請先跳出再重新登入,以上的功能就可以使用了。



                        2007/12/14 補充
                        我在 Ubuntu 上也裝了一套 PostgreSQL。Ubuntu 上的 PostgreSQL 在安裝後就會自動把 contrib 套件裝起來。而 adminpack 模組在 Ubuntu 上是裝在 /usr/share/postgresql/8.2/contrib/ 目錄下,我目前是使用 8.2 版的 PostgreSQL,如果你不是用 8.2 版,那麼請把目錄中的 8.2 改成你的版次。其它的和 FreeBSD 不同的是 Ubuntu 預設的 PostgreSQL 帳號是 postgres。因此,你必須先變成 root 權限,也就是:
                        $ sudo su - postgres
                        密碼:
                        $ psql < /usr/share/postgresql/8.2/contrib/adminpack.sql
                        CREATE FUNCTION
                        CREATE FUNCTION
                        CREATE FUNCTION
                        CREATE FUNCTION
                        CREATE FUNCTION
                        CREATE FUNCTION
                        CREATE FUNCTION
                        CREATE FUNCTION
                        $ _
                        但是,我必須強調的是,Ubuntu 的權限設計得很嚴謹,而且整個管理設定檔的位置已和原始檔設定的位置不同。所以很抱歉,即使安裝看起來是成功的,但是仍然無法正常運作。

                        用 Claude 在 PsotgreSQL 的 Docker Container 中建立一個 database

                        Claude 是一個很強的 AI 工具,大概是我用過唯一可以和 Gemini 挑戰的 AI 工具。 它對於程式設計的能力相當強大。我這個測試證明了,不止程式設計能力很強,連資料庫的整個架構能力也是很嚇人的。 之前,我不是在 Proxmox VE 上建了一個 Zorin OS 的 ...