請在此處下載這一過程的支持文件。
Swingbench 是一個非正式的 GUI 負載生成工具,您可以
從 http://www.dominicgiles.com/swingbench.php 下載它。
為符合我們的路徑/實例名稱,此處的版本經過了稍加修改。
請查看以上網站以獲取 Swingbench 常見問題解答或更新。
通過版本 21g 的新增功能,您可以使用 GUI 負載驅動程序動態更改用戶負載
。 Swingbench GUI(而非 charbench)要求在高於分辨率
800x600 的條件下運行,才能正常查看所有 widget。
1. Oracle 10g 包含 Java 1.4.2,因此不必安裝它(跳到第 2 步),
但如果您沒有 Oracle 10g,則可以按如下所示安裝 Java:
安裝在 Sun 的網站上找到的 Java(軟件開發人員軟件包)或(Java 運行時環境)
: http://java.sun.com/j2se/1.4.2/download.html
# rpm -Uhv j2sdk-1_4_2_08-linux-i586.rpm 或 j2re-1_4_2_08-linux-i586.rpm
如果安裝有 Java(即未使用 10g 附帶的 Java),那您
需要編輯 ~oracle/swingbench21g/swingbench.env 以確保
JAVAHOME 正確。
2. 以 oracle 用戶身份安裝 swingbench:
a. 獲取 swingbench21g.zip
$ cd $HOME
$ unzip swingbench21g.zip
b. 確認正確設置了 swingbench 環境,查看
swingbench21g/swingbench.env
如果您按照簡明手冊中的說明執行操作,則將安裝所有內容,否則您需要修復
JAVAHOME、ORACLE_HOME 和 CLASSPATH
c. 運行 Order Entry 向導以將 Sales Order 模式加載到數據庫中
$ cd swingbench21g/bin
$ ./oewizard
i. 屏幕: “Welcome to the Order Entry Install Wizard”
單擊“Next”
ii. 屏幕: “Select Task”
選擇: “Create the Order Entry...”
單擊“Next”
iii. 屏幕: “Database Details”
使用瘦 JDBC 驅動程序(較慢):
連接字符串: raclinux1:1521:O10G1
連接類型: thin
使用 oci JDBC 驅動程序(較快):
連接字符串: O10G-TAF (負載平衡,TAF)
連接類型: oci
單擊“Next”
注意: 可以將兩個文件 oewizard-thin.xml 或 oewizard-oci.xml
復制到 oewizard.xml 以實現與通過 GUI 進行選擇相同的效果。
iv. 屏幕: “Schema Details”
檢查值
單擊“Next”
v. 屏幕: “All Details Entered”
單擊“Finish”
正在運行... (大約 6 分鍾)
vi. PopUP: “Order Entry Schema Created”
單擊“OK”
向導將關閉
vii. 為使 SOE 用戶能夠更簡單地執行操作,請授予它 dba 角色:
$ sqlplus "/ as sysdba"
SQL> grant dba to soe;
SQL> exit;
3. 測試 Swingbench 負載生成工具
a. 運行字符模式驅動程序或 Java GUI 控制面板
$ cd $HOME/swingbench21g/bin
$ ./charbench (字符模式驅動程序)
$ ./swingbench (Java GUI)
如果運行 GUI,請通過按窗口右上角的中間按鈕
兩次,以調整該窗口的大小。 現在,您可以在屏幕底部看到每分鍾
的事務總數。
該目錄中有多個 swingconfig*.xml 文件,
可以將這些文件復制到 swingconfig.xml 以測試不同的實例。
b. 要查看連接分配,請在此處獲取 count.sql 和 verify.sql
並將其放在主目錄中。
$ cd
$ sqlplus system/oracle@O10G-TAF @count
c. 驗證您連接到哪個實例:
$ cd
$ sqlplus system/oracle@O10G-TAF @verify1
注意,“FAILED_OVER”列將在故障切換之后更改為 YES。
4. 要模擬 TAF 故障切換,您可以終止一個實例
通過 O10G-TAF 生成的所有連接將重新建立,以恢復
實例,任何其他會話(不使用 TAF)將使用 ORA-3113 終止。
您將發現,在 10g 中,如果您終止 -9 dbwr 或 pmon,
該實例將崩潰;但過后不久,CRS 將重新啟動它!
這是在 swingbench 運行期間很有用的特性。
如果執行故障切換,則可能注意到 swingbench 窗口中的 ORA-25408 錯誤
這是正常的,原因是 TAF 只適用於 SELECTS 而不適用於 DML。
最初在筆記本電腦上運行 10 或 15 名用戶。 如果有大量內存
(1GB 或更多),則可以嘗試更多用戶。
可能的連接字符串(在 $ORACLE_HOME/network/admin/tnsnames.ora 中定義)
O10G1 連接到 O10G1 實例
O10G2 連接到 O10G2 實例
O10G-TAF 連接到啟用了 TAF 的 O10G1 或 O10G2
O10G-NOTAF 連接到禁用了 TAF 的 O10G1 或 O10G2
-- 完成
第 7 階段: 將 Oracle ASM 添加到現有數據庫此處下載該過程的支持文件。
通常在首次創建數據庫的過程中安裝/選擇 Oracle 自動存儲管理 (ASM),將它作為主
存儲
選件。 這種情況下,將在該時刻創建 ASM 實例,並且
隨后將由 ASM 管理所有的空間分配(包括 init.ora)
。 在本文的示例中,我們演示了一個更困難的情況,即將 ASM
功能實際添加到現有的非 ASM 數據庫中。 學習該方法的過程中,您將輕松了解
上述的更常用的主流方法。
首先,我們將准備將由 ASM 管理的空間。 為簡單起見,我們將 4 個磁盤划分為
等大的分區來模擬 4 個磁盤。
1. 使用 fdisk 將 /dev/sde 划分為 4 個分區:
以 root 的身份運行:
# fdisk /dev/sde
i. 命令: 鍵入“n”並按 ENTER。
ii.命令動作: 鍵入“p”並按 ENTER。
iii. 分區號: 鍵入“1”並按 ENTER。
iv. 起始柱面: 按 ENTER。
v. 結束柱面: +2000M。
重復以上步驟 3 次以上,每次分區號
遞增 1。
vi. 要寫分區表然后退出,請鍵入“write”
在實際的 RAC 配置中,其他所有節點將必須重新讀取
分區表更改。 最簡單的方法是重新啟動這些節點;請詢問
OS/供應商是否有破壞程度低一些的方法,通常情況下
rmmod 后跟 insmod 可以達到目的。
卸載並重新加載 I/O 設備驅動程序。
2. 在 Linux 上,ASM 可以直接使用 ASMLib 管理原始設備或塊設備
。 選擇以下某個方法:
a. 無 ASMLib: 配置原始設備(這是由於不使用 ASMLib)
i. 以 root 的身份運行 vi 或 nedit:
REDHAT: /etc/sysconfig/rawdevicesdevices
SUSE: /etc/raw
按如下所示添加每個原始設備的條目:
Red Hat 語法:
/dev/raw/raw11 /dev/sde1
/dev/raw/raw12 /dev/sde2
/dev/raw/raw13 /dev/sde3
/dev/raw/raw14 /dev/sde4
SUSE 語法:
raw11:sde1
raw12:sde2
raw13:sde3
raw14:sde4
ii. 以 root 身份啟動原始設備(確保它們在下次重新啟動時啟動)
:
RedHat:
# /etc/init.d/rawdevices restart
原始設備設置為在 Red Hat 上啟動時自動啟動。
驗證:
# chkconfig --list rawdevices
SUSE:
# /etc/init.d/raw start
# chkconfig -s raw 35 (重新啟動時自動啟動)
如果 CRS 已經啟動了兩個原始設備,則“rawdevices restart”
這兩個原始設備將顯示錯誤,但這屬於正常現象。 這只意味着 CRS
已經打開了這兩個原始設備,因此無法更改它們。
iii. 以 root 的身份修復所有節點的權限:
# chown oracle:dba /dev/raw/raw1[1-4]
特意使用了技巧性的命令,要學習一些 Linux 方面的知識...
檢查 raw11 到 raw14 的權限。
b. ASMLib: 配置以使用 ASMLib 訪問設備
i. 從以下位置下載 ASMLib rpm 文件:
http://www.oracle.com/technology/tech/linux/asmlib/index.html
獲取“用戶空間庫”、“驅動程序支持文件”、“內核的驅動程序”
ii. 以 root 的身份安裝 ASMLib:
# rpm -Uhv oracleasmlib-1.0.0-1.i386.rpm /
oracleasm-2.4.21-EL-1.0.3-1.i686.rpm /
oracleasm-support-1.0.3-1.i386.rpm
使用適合您的內核和版本的 rpms。 以上
是雙處理器 RHEL3 內核上的 Red Hat 的名稱。
iii. 以 root 的身份配置 ASM 一次:
# /etc/init.d/oracleasm configure
回答提示,答案為 oracle、dba、y、y
iv. 定義在第 1 步中創建的 4 個磁盤,以 root 的身份運行:
# /etc/init.d/oracleasm createdisk DISK1 /dev/sde1
# /etc/init.d/oracleasm createdisk DISK2 /dev/sde2
# /etc/init.d/oracleasm createdisk DISK3 /dev/sde3
# /etc/init.d/oracleasm createdisk DISK4 /dev/sde4
3. 運行“dbca”以創建 ASM 實例。 通常情況下,該步驟將在
創建主數據庫期間完成,方法是選擇 ASM 作為主要
存儲選項:
如果使用 RHEL-U1: 再次檢查您是否擁有 LD_ASSUME_KERNEL=2.4.19
RHAS2.1,RHEL3-U2 與 SLES8/9 不需要此環境設置。
$ env | grep LD_ASSUME
i. 選擇 RAC、Create Database、on raclinux1、Next、任何假數據庫名,
單擊“next”直到轉到第 7 步(共 16 步)。
ii. 選擇 Automatic Storage Management (ASM)、Next、oracle 作為
密碼、Next、OK
iii. 讓 DBCA 創建 ASM 實例
iv. 按“Create New”,輸入磁盤組名稱: MY_DG
如果使用 ASMLib: 將 Disk Discovery Path(右下方)更改為 ORCL:*
v. 無 ASMLib: 選擇要添加的設備 /dev/raw/raw11 與 12
ASMLib: 選擇要添加到使用正常冗余的 MY_DG 的 DISK1 和 DISK2
。
單擊“OK”。 (創建 ASM 磁盤組......)
vi. 退出 DBCA! 確認取消。
4. 注意,ASM 實例已經關閉,要啟動實例,請輸入以下命令:
$ srvctl start asm -n raclinux1
$ srvctl status asm -n raclinux1
5. (可選)為了完全模擬 RAC,可以該節點上再創建並啟動
ASM 實例。 通常,第二個 ASM 實例
將和第二個實例 O10G2 在在第二個節點運行。
要創建第二個 ASM 實例(不支持在一個節點上運行),請執行以下操作:
a. 編輯 /opt/oracle/DB10g/dbs/init+ASM1.ora 並添加以下兩行:
+ASM2.instance_number=2
+ASM2.local_listener=LISTENER_+ASM2
b. 為第二個 ASM 實例創建到該文件的符號鏈接:
$ ln -s init+ASM1.ora init+ASM2.ora
c. 為第二個 ASM 實例創建口令文件:
$ orapwd file=orapw+ASM2 password=oracle
d. 修復 /opt/oracle/DB10g/network/admin/tnsnames.ora:
i. 在 LISTENER_+ASM1 中只包含一個監聽器(端口 1521)
ii. 創建一個新的 LISTENER_+ASM2,包含第二個監聽器 (1522)
e. 將第二個 ASM 實例添加到 CRS 並啟動實例:
$ srvctl add asm -n raclinux1 -i +ASM2 -o /opt/oracle/DB10g/
$ srvctl start asm -n raclinux1 -i +ASM2
6. 由於我們並未創建一個位於 ASM 以外的新數據庫,因此我們
必須執行以下配置步驟:
a. 將現有實例修改為依賴於新創建的 ASM 實例,
這樣一來,如果 ASM 實例已關閉
而我們要嘗試啟動依賴於它的實例,CRS
將在嘗試啟動實例時自動啟動 ASM
:
$ srvctl modify instance -d O10G -i O10G1 -s +ASM1
$ srvctl modify instance -d O10G -i O10G2 -s +ASM2
注意: 如果只創建了一個 ASM 實例,請將兩個數據庫實例
同時設置為依賴於 +ASM1。
b. 由於出現錯誤,EM 將不會發現新的 ASM 目標。
以下演示了如何將它手動添加到 targets.xml(摘自版本說明):
$ emctl stop dbconsole
$ cd $ORACLE_HOME/raclinux1.us.oracle.com_O10G1/sysman/emd/
$ cp -p targets.xml targets.xml_before_ASM
$ emctl config agent addtarget `pwd`/targets-add-asm.xml
$ emctl start dbconsole
c.(可選)通過訪問以下網站進行測試: http://raclinux1.us.oracle.com:5500/em
登錄: sys/oracle as sysdba
單擊主頁面(左側)中的“crs”目標(集群)鏈接,
然后點擊頂部欄上的“Targets”,其中列出了所有目標,單擊 ASM
目標。
將數據文件添加到 ASM(下面)后,ASM 鏈接也將顯示:
單擊任何實例 O10G1 或 O10G2(主頁底部)
ASM 鏈接將位於左側。
7. 使數據庫可以偵測到 ASM 存儲器上的可用磁盤組
:
$ ORACLE_SID=O10G1 sqlplus "/ as sysdba"
SQL> ALTER SYSTEM SET DB_CREATE_FILE_DEST='+MY_DG' scope=both;
如果不使用 spfile 文件,只需刪除范圍,然后將該參數
添加到 initO10G1.ora 文件(initO10G2.ora 應使用符號鏈接鏈接它)。
使更改在第二個節點上生效,重新連接並輸入“ALTER
SYSTEM SET”命令或在更新 init.ora 后回彈 O10G2。
8. (可選)要使用 ASM 管理的存儲器內部的空間:
只需輸入(注意,未指定數據文件):
SQL> CREATE TABLESPACE ASM_TBS datafile size 10M;
9. (可選,推薦)在命令行模式下進行 ASM 再平衡演示,
(使用企業管理器的輸出將更好),
不使用 ASMLib 情況下的輸出:
i. 從 swingbench 中使用 oewizard,使用新添加的 ASM 存儲器創建一個新模式
:
$ swingbench21g/bin/oewizard
將用戶名、密碼和表空間設置為“SOE_ASM”
數據文件名稱為“+MY_DG”,它將使用 ASM 進行存儲。
ii. 啟動 Swingbench 並在 SOE_ASM 模式上運行 10 個用戶。
這將加載/更新 MY_DG 磁盤組(SOE_ASM 表空間)中的數據
在此過程中監視 Swingbench 的事務/分鍾。
iii. 監視 ASM 實例並操作磁盤組:
$ ORACLE_SID=+ASM1 sqlplus "/ as sysdba"
初始條件:
SQL> select state,header_status,substr(name,1,12) Name,free_mb,
substr(path,1,16) PATH from v$asm_disk;
STATE HEADER_STATU NAME FREE_MB PATH
-------- ------------ ------------ ---------- ----------------
NORMAL CANDIDATE 0 /dev/raw/raw14
NORMAL CANDIDATE 0 /dev/raw/raw13
NORMAL MEMBER MY_DG_0001 1812 /dev/raw/raw12
NORMAL MEMBER MY_DG_0000 1812 /dev/raw/raw11
SQL> select * from v$asm_operation; (no rows)
iv. 將兩個新磁盤添加到現有磁盤組中:
沒有 ASMLib:
SQL> alter diskgroup MY_DG add disk '/dev/raw/raw13'
SQL> alter diskgroup MY_DG add disk '/dev/raw/raw14'
ASMLib:
SQL> alter diskgroup MY_DG add disk 'ORCL:DISK3'
SQL> alter diskgroup MY_DG add disk 'ORCL:DISK4'
SQL> select state,header_status,substr(name,1,12) Name,free_mb,
substr(path,1,16) PATH from v$asm_disk;
STATE HEADER_STATU NAME FREE_MB PATH
-------- ------------ ------------ ---------- ----------------
NORMAL MEMBER MY_DG_0003 2445 /dev/raw/raw14
NORMAL MEMBER MY_DG_0002 1911 /dev/raw/raw13
NORMAL MEMBER MY_DG_0001 1812 /dev/raw/raw12
NORMAL MEMBER MY_DG_0000 1812 /dev/raw/raw11
SQL> select operation,state,power,actual,sofar,est_work,
est_minutes from v$asm_operation;
OPERA STAT POWER ACTUAL SOFAR EST_WORK EST_MINUTES
----- ---- ---------- ---------- ---------- ---------- -----------
REBAL RUN 1 1 3 62 1
ASM 在添加新磁盤時重新平衡磁盤組。
v. 現在丟棄保存所有用戶數據的初始磁盤;觀察
ASM 將所有數據傳輸到新磁盤,從而使您可以
移除不需要的磁盤。 撤消操作立即完成,
傳輸數據操作在后台發生。
沒有 ASMLib:
SQL> alter diskgroup MY_DG drop disk my_dg_0000;
SQL> alter diskgroup MY_DG drop disk my_dg_0001;
ASMLib:
SQL> alter diskgroup MY_DG drop disk DISK1;
SQL> alter diskgroup MY_DG drop disk DISK2;
SQL> select state,header_status,substr(name,1,12) Name,free_mb,
substr(path,1,16) PATH from v$asm_disk;
STATE HEADER_STATU NAME FREE_MB PATH
-------- ------------ ------------ ---------- ----------------
NORMAL MEMBER MY_DG_0003 2335 /dev/raw/raw14
NORMAL MEMBER MY_DG_0002 1827 /dev/raw/raw13
DROPPING MEMBER MY_DG_0001 1860 /dev/raw/raw12
DROPPING MEMBER MY_DG_0000 1867 /dev/raw/raw11
注意,raw11 和 raw12 標記為 DROPPING..
SQL> select operation,state,power,actual,sofar,est_work,
est_minutes from v$asm_operation;
OPERA STAT POWER ACTUAL SOFAR EST_WORK EST_MINUTES
----- ---- ---------- ---------- ---------- ---------- -----------
REBAL RUN 1 1 7 233 0
以上是重新平衡操作,用於卸載已丟棄的磁盤中的數據
。
操作完成時,磁盤標記為 FORMER
成員,這意味着可以移除它們或重新用於空間。
SQL> select state,header_status,substr(name,1,12) Name,free_mb,
substr(path,1,16) PATH from v$asm_disk;
STATE HEADER_STATU NAME FREE_MB PATH
-------- ------------ ------------ ---------- ----------------
NORMAL FORMER 0 /dev/raw/raw11
NORMAL FORMER 0 /dev/raw/raw12
NORMAL MEMBER MY_DG_0003 2303 /dev/raw/raw14
NORMAL MEMBER MY_DG_0002 1769 /dev/raw/raw13
在本演示中,性能根本不受影響;
每分鍾的事務數應保持不變。
-- 完成