2011年11月13日 星期日

ASP.NET MVC + Oracle 11g XE + Entity Framework. Part 2


使用及管理Oracle 11g Express Edition,使用Oracle SQL Developer, Navicat Lite

資料庫裝好之後就是要來用,但是 Oracle 11g XE 所預設的管理介面看起來實在太過於陽春了,又或許應該說,我不會用這個管理介面來管理安裝好的資料庫,因為 Oracl XE 資料庫的安裝就如同 MS SQL Express 安裝一樣,安裝好只是把資料庫的 Instance 裝好而已,要一個 GUI 的管理工具就必須另外安裝,MS SQL Server Express 就有一個「MS SQL Server Management Studio Express」的GUI工具,而Oracle資料庫則是有個官方版的「Oracle SQL Developer」,另外也有個相當好用的第三方管理工具「Navicat Lite」,上面兩種在使用後的感覺是,Oracle SQL Developer 比較佔資源,而Navicat Lite則是比較輕巧些。



Oracle SQL Developer

這篇文章編寫時的最新版本為「3.0.04.34」
http://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/index.html

image

下載的時候需要注意一下你所需要的版本,可以依據你的作業系統版本來下載,不過有一點要注意,就是你執行程式的環境必須要有安裝JDK 6,在Oracle SQL Developer的下載裡就有提供不同的安裝內容:

32-bit Windows

image

image

64-bit Windows

image

 

我們就先下載「Oracle SQL Developer for 32-bit Windows (This zip file includes the JDK1.6.0_11)」這個版本,在已安裝Oracle 11g XE的VM中來使用,將壓縮檔案解縮到VM中,預設是解壓縮到「C:\」下,壓縮檔裡面就只有一個目錄「sqldeveloper」,解壓縮完成後進入到「sqldeveloper」目錄中,

SNAGHTML903055

直接執行「sqldeveloper.exe」,首先會看到準備執行中的視窗畫面,

image

接著就是進入到Oracle SQL Developer中,因為是第一次執行,所以會先詢問是否要將一些副檔名的檔案做關聯,日後在VM中只要點擊有關聯副檔名的檔案就會開啟Oracle SQL Developer,接著就是主畫面,當然一開始都還沒有建立任何的資料庫連線,所以都是空空的內容,

image

點選畫面中的綠色「+」圖示,新增一個資料庫連線,

SNAGHTML96c228

出現新建資料庫連線的視窗後,在畫面中的欄位上去輸入連線資訊,

image

連線名稱:任意輸入一個便是連線的名稱

使用者名稱與密碼:這邊先輸入系統管理者帳號與密碼

主機名稱:預設是連線到本機的資料庫,所以使用localhost

連線埠:預設為1521

SID:預設為xe

輸入完畢之後,先點擊「測試」鈕以測試連線資訊是否正確,

image

測試正常之後就可以點擊「連線」就會把資料庫連線資訊儲存以及連線,

SNAGHTML9c961a

點開左側的「OracleXE_System」就會展開這個資料庫連線的內容,

image

點開表格後,就會展開一堆資料庫中已經預設建立的資料表格

image

這邊先說明一下,不要看這些表格不順眼就全部刪除,「千萬不要亂刪除!!!」因為OracleXE雖然只能建立一個資料庫,但是我們可以建立不同的Tablespace以及使用者,如此就可以在OracleXE上使用多組不同的資料來開發我們的應用程式。

 

建立Tablespace

一個Database是由多個Tablespace(表格空間)所構成的,而Table就是存在於Tablespace當中,因為OracleXE僅能是單一個Database運作而無法有多個資料庫做區別,所以為了可以讓不同的應用程式來使用,就必須搭配使用者帳號,而個別的使用者帳號再去指定使用不同的Tablespace,用這樣的方式來做到不同應用程式再同一個資料庫中去存取資料。

參考連結:TableSpace介紹

 

因為在Oracle SQL Developer中並沒有所謂建立Tablespace的功能,所以就必須使用SQL Script的方式來建立,

參考連結:CREATE TABLESPACE: Examples

參考連結:在 Oracle 中建立固定表格空間的 SQL script 範例

 

例如說,用以下的SQL Script來建立一個Tablespace「TestTablespace」,指定這個Tablespace的檔案存放位置,以及初始的檔案大小,

CREATE TABLESPACE TestTablespace
datafile 'C:\oraclexe\app\oracle\oradata\XE\TestTablespace.dbf' SIZE 20M;

執行:

image

建立Tablespace檔案

image

於建立使用者帳號時,於「預設表格空間」的下拉選單中可以看到剛才所建立的Tablespace

image

而建立Tablespace之後,似乎就無法修改Tablespace的名稱(關於這一點,我Google很久,似乎沒有正解),所以當建立好Tablespace後,如果需要移除的話,就使用以下的SQL Script來移除Tablespace,這樣會連帶將這個Tablespace的資料檔也一併移除。

Drop tablespace TESTTABLESPACE 
including contents and datafiles;

執行:

image

Tablespace「TESTTABLESPACE」的資料檔也已經移除了

image

 

當然,基本的建立 Tablespace 語法是要認識,上面所使用的建立 Tablespace 的 SQL Script 其實相當陽春,因為還可以使用 SQL Script 去設定 Tablespace datafile 的最大檔案大小、指定每次檔案大小增加的大小或是百分比、指定Temp Tablespace等,因為指令不是每個人都可以牢牢記住的,所以我還是會希望有一個GUI的工具可以去做建立Tablespace的動作,而 Oracle SQL Developer 沒有提供這一個功能,但是還是有別的GUI工具是有提供的。

 

Navicat Lite

這邊就像各位介紹另一個Oracle的管理工具,導覽貓「Navivcat」,

連結:http://www.navicat.de/cht

下載:http://www.navicat.com/cht/download/download.html

可以去官網註冊試用,會在官網的回信中給你下載Navicat Lite的連結網址。

Navica線上手冊:http://www.navicat.com/manual/online_manual/cht/win_manual/index.html

 

Navicat並不只限定連接Oracle資料庫而已,其實他也可以連結多種的資料庫,如:MySQL, PostgreSQL…etc,

image

Navicat 建立資料庫連接

image

如果你在Navicat 建立資料庫資訊做連線測試時有出現以下的訊息:

image

這表示要去設定一下Navicat的OCI以及Sqlplus的路徑,

工具 → 選項

image

其他 →  OCI

image

指定安裝在VM的C槽的oraclexe目錄

C:\oraclexe\app\oracle\product\11.2.0\server\bin

image

OCI.DLL「C:\oraclexe\app\oracle\product\11.2.0\server\bin\oci.dll」

SQL*Plus「C:\oraclexe\app\oracle\product\11.2.0\server\bin\sqlplus.exe」

image

設定完成,按下「確定」後要記得重新啟動 Navicat Lite

重新設定連線資訊後做「連線測試」

image

展開連線的內容

image

關於Navicat對於Oracle資料庫的操作在之後都會慢慢介紹,或是自己去試試看,因為Navicat的功能操作上比較直覺也容易上手。

 

使用Navicat建立Tablespace

點擊Navicat上方功能列的「其他」,選擇「資料表空間」

image

顯示出目前資料庫有哪些已經建立的Tablespace

image

接下來就是直接點擊「新增資料表空間」

image

資料表空間類型:選擇「PERMANENT」

資料檔案:就是datafile,設定名稱、大小、單位

路徑:datafile置放的目錄路徑

自動延伸:當資料大小已經增加到原先設定容量時,是否會自動依據設定增加容量

下一個大小:當設定自動延伸後,每一次增加容量的大小

無上限:當此選項勾選時,下一個「最大大小」就無作用,無勾選此項時,「最大大小」才有作用

最大大小:datafile的最大容量

以下是我所要建立Tablespace「Northwind」的內容:

image

上方的最後一個頁籤「SQL預覽」,可以看到我們藉由這個「新增資料表空間」的設定所產生的SQL Script內容,

image

CREATE  TABLESPACE "NewTableSpace" 
DATAFILE 'C:\ORACLEXE\APP\ORACLE\ORADATA\XE\Northwind' SIZE 100 M 
AUTOEXTEND ON NEXT 10 M 
MAXSIZE UNLIMITED ;

當設定完成並確定新增此Tablespace,就按下上方功能列的的「儲存」,按下後會跳出一個視窗讓我們輸入Tablespace的名稱,這邊一樣輸入與Datafile一樣的名稱「Northwind」

image

輸入完Tablespace名稱後再按下「確定」,就可以看到已經新增了Tablespace「Northwind」

image

 

建立使用者帳號

建立好新的Tablespace之後就接著來建立一個新的使用者帳號,這裡我們回到Oracle SQL Developer來操作這個功能,輸入新使用者的登入帳號與密碼,而且記得要將預設表格空間設定為「Northwind」而暫時表格空間就使用「TEMP」

image

再來是角色的設定,如果這邊不知道要設定哪些角色的話,就先授權三種角色,分別是

「CONNECT」「DBA」「RESOURCE」

image

CONNECT:授與使用者可以連線資料庫並執行基本的資料庫操作

RESOURCE:可以讓使用者去建立資料庫的物件,如TABLE. TRIGGER, PROCEDURE

DBA:可以讓使用者存取所有其他使用者的資料庫物件與管理資料庫

(DBA:DataBase Admnistrator access,此角色權限就如同SYSTEM與SYS一樣)

 

再來是「系統權限」,我這邊都是直接「全部授權」與「全為管理員」

image

 

再來是「配額」,這邊不做任何的設定

image

 

「SQL」,顯示剛才所設定內容的SQL Script

image

 

上面都設定完成後,就可以點擊右下方的「套用」鍵,在最後的「結果」頁籤當中就可以看到執行新建使用者的結果

image

 

執行完畢後,點選「關閉」鍵,再回到Oracle SQL Developer的「其他使用者」去看,就可以看到剛才所建立的新使用者「NORTHWIND_USER」

image

展開「NORTHWIND_USER」的項目,「表格」項目下還沒有任何的Table,因為Tablespace「Northwind」也是剛剛才新建立的,還沒有建立任何的Table,

image

 

使用新建立的使用者帳號新增一個資料庫連線

因為剛才的建立動作都是使用SYSTEM這個使用者帳號,所以為了確認剛才新建立的使用者是否可以連線,我們將現在的資料庫連線中斷,

image

用剛才建立的使用者「Northwind_user」來建立新的資料庫連線

image

Oracle SQL Developer 完成建立連線

image

Navicat Lite 建立連線

image

 

以上就是分別介紹兩個用來管理以及操作Oracle資料庫的GUI工具:Oracle SQL Developer, Navicat Lite

並且說明如何在Navicat Lite中去新建立一個Tablespace,也在Oracle SQL Developer中去新增加一個使用者帳號,而且這個新使用者帳號的預設Tablespace是設定新建立的Tablespace。

 

這兩套 Oracle 的 GUI 管理工具都很容易上手,一般的實務操作上,我使用 Navicat 的次數比較多,就如同一開始所說的,Navicat 開啟的速度與時間都比 Oracle SQL Developer 來得快,而且執行時所佔用的資源也比較少,操作上各有各的優點,所以我會建議兩套都使用 …

image

 

這一篇就說到這裡,下一篇就是再Tablespace「Northwind」中去建立Table以及新增資料。

以上

2 則留言:

  1. 請問一下 建立TABLESPACE後
    如要增加一筆資料 要用甚麼語法呢
    有例子說明嗎

    回覆刪除
    回覆
    1. Hello, 文章最後有說到[建立Table以及新增資料]的部份是下一篇內容。
      ASP.NET MVC + Oracle 11g XE + Entity Framework. Part 3
      http://kevintsengtw.blogspot.tw/2011/11/northwindoracle-ms-sql-servernorthwind.html

      刪除

提醒

千萬不要使用 Google Talk (Hangouts) 或 Facebook 及時通訊與我聯繫、提問,因為會掉訊息甚至我是過了好幾天之後才發現到你曾經傳給我訊息過,請多多使用「詢問與建議」(在左邊,就在左邊),另外比較深入的問題討論,或是有牽涉到你實作程式碼的內容,不適合在留言板裡留言討論,請務必使用「詢問與建議」功能(可以夾帶檔案),謝謝。