內(nèi)容的順序基本沒什么問題,從由淺入深,可以考慮按下面順序:
創(chuàng)新互聯(lián)公司擁有網(wǎng)站維護技術(shù)和項目管理團隊,建立的售前、實施和售后服務體系,為客戶提供定制化的成都做網(wǎng)站、網(wǎng)站制作、網(wǎng)站維護、珉田數(shù)據(jù)中心解決方案。為客戶網(wǎng)站安全和日常運維提供整體管家式外包優(yōu)質(zhì)服務。我們的網(wǎng)站維護服務覆蓋集團企業(yè)、上市公司、外企網(wǎng)站、商城網(wǎng)站開發(fā)、政府網(wǎng)站等各類型客戶群體,為全球近千家企業(yè)提供全方位網(wǎng)站維護、服務器維護解決方案。
2、 oracle數(shù)據(jù)庫安裝、啟動、卸載
1、 oracle數(shù)據(jù)庫的常用術(shù)語和基本概念
3、 oracle數(shù)據(jù)庫管理員(也可以在12之后再看)
(1) orcale的用戶類型
(2) 數(shù)據(jù)庫管理員的安全和權(quán)限
(3) 數(shù)據(jù)庫管理員的創(chuàng)建、修改、刪除、權(quán)限設(shè)置
4、 創(chuàng)建、修改、刪除orcale數(shù)據(jù)庫
8、 管理表
11、 數(shù)據(jù)庫的備份和還原
12、 數(shù)據(jù)的導入導出
5、 管理表空間
6、 管理控制文件
7、 管理數(shù)據(jù)文件
9、 管理分區(qū)表和分區(qū)索引
10、 檢測和修復數(shù)據(jù)塊損壞
13、 Oracle數(shù)據(jù)庫的遷移
14、 數(shù)據(jù)庫安全策略
15、 SQL程序設(shè)計
基本概念很重要,西方人喜歡把一個復雜的功能切割成很多獨立的小部分,所以首先應當了解數(shù)據(jù)庫要實現(xiàn)的總體功能,各個組件是如何設(shè)置來實現(xiàn)這些功能的以及Oracle的體系架構(gòu),這樣學習起來才能事半功倍。
在模型設(shè)計方面,10g和11g沒有任何區(qū)別,這里沒必要非得選11g。
1、 ORACLE 實例――包括內(nèi)存結(jié)構(gòu)與后臺進程 2、 ORACLE 數(shù)據(jù)庫――物理操作系統(tǒng)文件的集合 3、 了解內(nèi)存結(jié)構(gòu)的組成 4、 了解后臺進程的作用
1、 Oracle 實例――包括內(nèi)存結(jié)構(gòu)與后臺進程
2、 Oracle 數(shù)據(jù)庫――物理操作系統(tǒng)文件的集合
3、 了解內(nèi)存結(jié)構(gòu)的組成
4、 了解后臺進程的作用
5、 了解數(shù)據(jù)庫的物理文件
6、 解釋各種邏輯結(jié)構(gòu)
一、Oracle實例
1、Oracle 實例
System Global Area(SGA) 和 Background Process 稱為數(shù)據(jù)庫的實例。
2、Oracle 數(shù)據(jù)庫
一系列物理文件的集合(數(shù)據(jù)文件,控制文件,聯(lián)機日志,參數(shù)文件等)
3、系統(tǒng)全局共享區(qū)System Global Area(SGA)
System Global Area 是一塊巨大的共享內(nèi)存區(qū)域,他被看做是Oracle 數(shù)據(jù)庫的一個大緩沖池,這里的數(shù)據(jù)可以被Oracle的各個進程共用。其大小可以通過如下語句查看:
SQL select * from v$sga;
NAME VALUE
-------------------- ---------
Fixed Size 39816
Variable Size 259812784
Database Buffers 1.049E+09
Redo Buffers 327680
更詳細的信息可以參考V$sgastat、V$buffer_pool
主要包括以下幾個部分:
a、 共享池(Shared pool)
共享池是SGA中最關(guān)鍵的內(nèi)存片段,特別是在性能和可伸縮性上。一個太小的共享池會扼殺性能,使系統(tǒng)停止,太大的共享池也會有同樣的效果,將會消耗大量的CPU來管理這個共享池。不正確的使用共享池只會帶來災難。共享池主要又可以分為以下兩個部分:
SQL語句緩沖(Library Cache)
當一個用戶提交一個SQL語句,Oracle會將這句SQL進行分析(parse),這個過程類似于編譯,會耗費相對較多的時間。在分析完這個SQL,Oracle會把他的分析結(jié)果給保存在Shared pool的Library Cache中,當數(shù)據(jù)庫第二次執(zhí)行該SQL時,Oracle自動跳過這個分析過程,從而減少了系統(tǒng)運行的時間。這也是為什么第一次運行的SQL 比第二次運行的SQL要慢一點的原因。
下面舉例說明parse的時間
SQL select count(*) fromscpass ;
COUNT(*)
----------
243
Elapsed: 00:00:00.08
這是在Share_pool 和Data buffer 都沒有數(shù)據(jù)緩沖區(qū)的情況下所用的時間
SQL alter system flush SHARED_POOL;
System altered.
清空Share_pool,保留Data buffer
SQL select count(*) from scpass ;
COUNT(*)
----------
243
Elapsed: 00:00:00.02
SQL select count(*) from scpass ;
COUNT(*)
----------
243
Elapsed: 00:00:00.00
從兩句SQL 的時間差上可以看出該SQL 的Parse 時間約為00:00:00.02
對于保存在共享池中的SQL語句,可以從V$Sqltext、v$Sqlarea中查詢到,對于編程者來說,要盡量提高語句的重用率,減少語句的分析時間。一個設(shè)計的差的應用程序可以毀掉整個數(shù)據(jù)庫的Share pool,提高SQL語句的重用率必須先養(yǎng)成良好的變成習慣,盡量使用Bind變量。
數(shù)據(jù)字典緩沖區(qū)(Data Dictionary Cache)
顯而易見,數(shù)據(jù)字典緩沖區(qū)是Oracle特地為數(shù)據(jù)字典準備的一塊緩沖池,供Oracle內(nèi)部使用,沒有什么可以說的。
b、塊緩沖區(qū)高速緩存(Database Buffer Cache)
這些緩沖是對應所有數(shù)據(jù)文件中的一些被使用到的數(shù)據(jù)塊。讓他們能夠在內(nèi)存中進行操作。在這個級別里沒有系統(tǒng)文件,,戶數(shù)據(jù)文件,臨時數(shù)據(jù)文件,回滾段文件之分。也就是任何文件的數(shù)據(jù)塊都有可能被緩沖。數(shù)據(jù)庫的任何修改都在該緩沖里完成,并由DBWR進程將修改后的數(shù)據(jù)寫入磁盤。
這個緩沖區(qū)的塊基本上在兩個不同的列表中管理。一個是塊的“臟”表(Dirty List),需要用數(shù)據(jù)庫塊的
書寫器(DBWR)來寫入,另外一個是不臟的塊的列表(Free List),一般的情況下,是使用最近最少使用 (Least Recently Used,LRU)算法來管理。塊緩沖區(qū)高速緩存又可以細分為以下三個部分(Default pool,Keep pool,Recycle pool)。如果不是人為設(shè)置初始化參數(shù)(Init.ora),Oracle將默認為Default pool。由于操作系統(tǒng)尋址能力的限制,不通過特殊設(shè)置,在32位的系統(tǒng)上,塊緩沖區(qū)高速緩存最大可以達到1.7G,在64位系統(tǒng)上,塊緩沖區(qū)高速緩存最大可以達到10G。
c、重做日志緩沖區(qū)(Redo log buffer)
重做日志文件的緩沖區(qū),對數(shù)據(jù)庫的任何修改都按順序被記錄在該緩沖,然后由LGWR進程將它寫入磁盤。這些修改信息可能是DML語句,如(Insert,Update,Delete),或DDL語句,如(Create,Alter,Drop等)。 重做日志緩沖區(qū)的存在是因為內(nèi)存到內(nèi)存的操作比較內(nèi)存到硬盤的速度快很多,所以重作日志緩沖區(qū)可以加快數(shù)據(jù)庫的操作速度,但是考慮的數(shù)據(jù)庫的一致性與可恢復性,數(shù)據(jù)在重做日志緩沖區(qū)中的滯留時間不會很長。所以重作日志緩沖區(qū)一般都很小,大于3M之后的重作日志緩沖區(qū)已經(jīng)沒有太大的實際意義。
d、Java程序緩沖區(qū)(Java Pool)
Java 的程序區(qū),Oracle 8I 以后,Oracle 在內(nèi)核中加入了對Java的支持。該程序緩沖區(qū)就是為Java 程序保留的。如果不用Java程序沒有必要改變該緩沖區(qū)的默認大小。
e、大池(Large Pool)
大池的得名不是因為大,而是因為它用來分配大塊的內(nèi)存,處理比共享池更大的內(nèi)存,在8.0開始引入。
下面對象使用大池:
MTS――在SGA的Large Pool中分配UGA
語句的并行查詢(Parallel Executeion of Statements)――允許進程間消息緩沖區(qū)的分配,用來協(xié)調(diào) 并行查詢服務器
備份(Backup)――用于RMAN磁盤I/O緩存
4、后臺進程(Background process)
后臺進程是Oracle的程序,用來管理數(shù)據(jù)庫的讀寫,恢復和監(jiān)視等工作。Server Process主要是通過他和user process進行聯(lián)系和溝通,并由他和user process進行數(shù)據(jù)的交換。在Unix機器上,Oracle后臺進程相對于操作系統(tǒng)進程,也就是說,一個Oracle后臺進程將啟動一個操作系統(tǒng)進程;在Windows機器上, Oracle后臺進程相對于操作系統(tǒng)線程,打開任務管理器,我們只能看到一個Oracle.EXE的進程,但是通過另外的工具,就可以看到包含在這里進程中的線程。
在Unix上可以通過如下方法查看后臺進程:
ps ?ef | grep ora_
# ps -ef | grep ora_ | grep XCLUAT
Oracle 29431 1 0 Sep 02 2:02 ora_dbwr_SID
Oracle 29444 1 0 Sep 02 0:03 ora_ckpt_SID
Oracle 29448 1 0 Sep 02 2:42 ora_smon_SID
Oracle 29442 1 0 Sep 02 3:25 ora_lgwr_SID
Oracle 29427 1 0 Sep 02 0:01 ora_pmon_SID
a、Oracle系統(tǒng)有5 個基本進程他們是
DBWR(數(shù)據(jù)文件寫入進程)
LGWR(日志文件寫入進程)
SMON(系統(tǒng)監(jiān)護進程)
PMON(用戶進程監(jiān)護進程)
CKPT(檢查點進程,同步數(shù)據(jù)文件, 日志文件,控制文件)
b、DBWR
將修改過的數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)寫入對應數(shù)據(jù)文件
維護系統(tǒng)內(nèi)的空緩沖區(qū)
這里指出幾個容易錯誤的概念:
當一個更新提交后,DBWR把數(shù)據(jù)寫到磁盤并返回給用戶提交完成.
DBWR會觸發(fā)CKPT 后臺進程
DBWR不會觸發(fā)LGWR 進程
上面的概念都是錯誤的.
DBWR是一個很底層的工作進程,他批量的把緩沖區(qū)的數(shù)據(jù)寫入磁盤。和任何前臺用戶的進程幾乎沒有什么關(guān)系,也不受他們的控制。至于DBWR會不會觸發(fā)LGWR和CKPT進程,我們將在下面幾節(jié)里討論。
DBWR工作的主要條件如下
DBWR 超時
系統(tǒng)中沒有多的空緩沖區(qū)用來存放數(shù)據(jù)
CKPT 進程觸發(fā)DBWR 等
c、LGWR
將重做日志緩沖區(qū)的數(shù)據(jù)寫入重做日志文件,LGWR是一個必須和前臺用戶進程通信的進程。當數(shù)據(jù)被修改的時候,系統(tǒng)會產(chǎn)生一個重做日志并記錄在重做日志緩沖區(qū)內(nèi)。這個重做日志可以類似的認為是以下的一個結(jié)構(gòu):
SCN=000000001000
數(shù)據(jù)塊ID
對象ID=0801
數(shù)據(jù)行=02
修改后的數(shù)據(jù)=0011
提交的時候,LGWR必須將被修改的數(shù)據(jù)的重做日志緩沖區(qū)內(nèi)數(shù)據(jù)寫入日志數(shù)據(jù)文件,然后再通知前臺進程提交成功,并由前臺進程通知用戶。從這點可以看出LGWR承擔了維護系統(tǒng)數(shù)據(jù)完整性的任務。
LGWR 工作的主要條件如下
用戶提交
有1/3 重做日志緩沖區(qū)未被寫入磁盤
有大于1M 重做日志緩沖區(qū)未被寫入磁盤
超時
DBWR需要寫入的數(shù)據(jù)的SCN號大于LGWR 記錄的SCN號,DBWR 觸發(fā)LGWR寫入
d、SMON
工作主要包含
清除臨時空間
在系統(tǒng)啟動時,完成系統(tǒng)實例恢復
聚結(jié)空閑空間
從不可用的文件中恢復事務的活動
OPS中失敗節(jié)點的實例恢復
清除OBJ$表
縮減回滾段
使回滾段脫機
e、PMON
主要用于清除失效的用戶進程,釋放用戶進程所用的資源。如PMON將回滾未提交的工作,釋放鎖,釋放分配給失敗進程的SGA資源。
f、CKPT
同步數(shù)據(jù)文件,日志文件和控制文件,由于DBWR/LGWR的工作原理,造成了數(shù)據(jù)文件,日志文件,控制文件的不一至,這就需要CKPT進程來同步。CKPT會更新數(shù)據(jù)文件/控制文件的頭信息。
CKPT工作的主要條件如下
在日志切換的時候
數(shù)據(jù)庫用immediate ,transaction , normal 選項shutdown 數(shù)據(jù)庫的時候
根據(jù)初始話文件LOG_CHECKPOINT_INTERVAL、LOG_CHECKPOINT_TIMEOUT、FAST_START_IO_TARGET 的設(shè)置的數(shù)值來確定
用戶觸發(fā)
以下進程的啟動需要手工配置
g、ARCH
當數(shù)據(jù)庫以歸檔方式運行的時候,Oracle會啟動ARCH進程,當重做日志文件被寫滿時,日志文件進行切換,舊的重做日志文件就被ARCH進程復制到一個/多個特定的目錄/遠程機器。這些被復制的重做日志文件被叫做歸檔日志文件。
h、RECO
負責解決分布事物中的故障。Oracle可以連接遠程的多個數(shù)據(jù)庫,當由于網(wǎng)絡問題,有些事物處于懸而未決的狀態(tài)。RECO進程試圖建立與遠程服務器的通信,當故障消除后,RECO進程自動解決所有懸而未決的會話。
i、服務進程Server Process
服務進程的分類
專用服務進程(Dedicated Server Process)
一個服務進程對應一個用戶進程
共享服務進程(MultiTreaded Server Process)
一個服務進程對應多個用戶進程,輪流為用戶進程服務。
PGA UGA
PGA = Process Global Area
UGA = User Global Area
他保存了用戶的變量、權(quán)限、堆棧、排序空間等用戶信息,對于專用服務器進程,UGA在PGA中分配。對于多線程進程,UGA在Large pool中分配。
j、用戶進程User Process
在客戶端,將用戶的SQL 語句傳遞給服務進程
5、一個貫穿數(shù)據(jù)庫全局的概念----系統(tǒng)改變號SCN(System Change Number)
系統(tǒng)改變號,一個由系統(tǒng)內(nèi)部維護的序列號。當系統(tǒng)需要更新的時候自動增加,他是系統(tǒng)中維持數(shù)據(jù)的一致性和順序恢復的重要標志。
a. 查詢語句不會使SCN增加,就算是同時發(fā)生的更新,數(shù)據(jù)庫內(nèi)部對應的SCN也是不同的。這樣一來就保證了數(shù)據(jù)恢復時候的順序。
b. 維持數(shù)據(jù)的一致性,當一
二、Oracle 數(shù)據(jù)庫
Oracle數(shù)據(jù)庫的組成――物理操作系統(tǒng)文件的集合。主要包括以下幾種。
1、控制文件(參數(shù)文件init.ora記錄了控制文件的位置)
控制文件包括如下主要信息
數(shù)據(jù)庫的名字,檢查點信息,數(shù)據(jù)庫創(chuàng)建的時間戳
所有的數(shù)據(jù)文件,聯(lián)機日志文件,歸檔日志文件信息
備份信息等
有了這些信息,Oracle就知道那些文件是數(shù)據(jù)文件,現(xiàn)在的重做日志文件是哪些,這些都是系統(tǒng)啟動和運行的基本條件,所以他是Oracle運行的根本。如果沒有控制文件系統(tǒng)是不可能啟動的。控制文件是非常重要的,一般采用多個鏡相復制來保護控制文件,或采用RAID來保護控制文件。控制文件的丟失,將使數(shù)據(jù)庫的恢復變的很復雜。
控制文件信息可以從V$Controlfile中查詢獲得
2、數(shù)據(jù)文件(數(shù)據(jù)文件的詳細信息記載在控制文件中)
可以通過如下方式查看數(shù)據(jù)文件
SQL select name from v$datafile;
NAME
---------------------------------------------
/u05/dbf/PROD/system_01.dbf
/u06/dbf/PROD/temp_01.dbf
/u04/dbf/PROD/users_01.dbf
/u09/dbf/PROD/rbs_01.dbf
/u06/dbf/PROD/applsys_indx_01.dbf
/u05/dbf/PROD/applsys_data_01.dbf
從以上可以看出,數(shù)據(jù)文件大致可以分為以下幾類:
i. 系統(tǒng)數(shù)據(jù)文件(system_01.dbf)
存放系統(tǒng)表和數(shù)據(jù)字典,一般不放用戶的數(shù)據(jù),但是用戶腳本,如過程,函數(shù),包等卻是保存在數(shù)據(jù)字典中的。
名詞解釋:數(shù)據(jù)字典 數(shù)據(jù)字典是一些系統(tǒng)表或視圖,他存放系統(tǒng)的信息,他包括數(shù)據(jù)庫版本,數(shù)據(jù)文件信息,表與索引等段信息,系統(tǒng)的運行狀態(tài)等各種和系統(tǒng)有關(guān)的信息和用戶腳本信息。數(shù)據(jù)庫管理員可以通過對數(shù)據(jù)字典的查詢,就可以了解到Oracle的運行狀態(tài)。
ii. 回滾段文件(rbs_01.dbf)
如果數(shù)據(jù)庫進行對數(shù)據(jù)的修改,那么就必須使用回滾段,回滾段是用來臨時存放修改前的數(shù)據(jù)(Before Image)。回滾段通常都放在一個單獨的表空間上(回滾表空間),避免表空間碎片化,這個表空間包含的數(shù)據(jù)文件就是回滾數(shù)據(jù)文件。
iii. 臨時數(shù)據(jù)文件(temp_01.dbf)
主要存放用戶的排序等臨時數(shù)據(jù),與回滾段相似,臨時段也容易引起表空間碎片化,而且沒有辦法在一個永久表空間上開辟臨時段,所以就必須有一個臨時表空間,它所包含的數(shù)據(jù)文件就是臨時數(shù)據(jù)文件,主要用于不能在內(nèi)存上進行的排序操作。我們必須為用戶指定一個臨時表空間。
iv. 用戶數(shù)據(jù)文件(/applsys_data_01.dbf ,applsys_indx_01.dbf)
存放用戶數(shù)據(jù),這里列舉了兩類常見的用戶型數(shù)據(jù),一般數(shù)據(jù)和索引數(shù)據(jù),一般來說,如果條件許可的話,可以考慮放在不同的磁盤上。
3、重做日志文件(聯(lián)機重做日志)
用戶對數(shù)據(jù)庫進行的任何操作都會記錄在重做日志文件。在了解重做日志之前必須了解重做日志的兩個概念,重做日志組和重做日志組成員(Member),一個數(shù)據(jù)庫中至少要有兩個日志組文件,一組寫完后再寫另一組,即輪流寫。每個日志組中至少有一個日志成員,一個日志組中的多個日志成員是鏡相關(guān)系,有利于日志文件的保護,因為日志文件的損壞,特別是當前聯(lián)機日志的損壞,對數(shù)據(jù)庫的影響是巨大的。
聯(lián)機日志組的交換過程叫做切換,需要特別注意的是,日志切換在一個優(yōu)化效果不好的數(shù)據(jù)庫中會引起臨時的“掛起”。掛起大致有兩種情況:
在歸檔情況下,需要歸檔的日志來不及歸檔,而聯(lián)機日志又需要被重新利用
檢查點事件還沒有完成(日志切換引起檢查點),而聯(lián)機日志需要被重新利用
解決這種問題的常用手段是:
i.增加日志組
ii.增大日志文件成員大小
通過v$log可以查看日志組,v$logfile可以查看具體的成員文件。
4、歸檔日志文件
Oracle可以運行在兩種模式之中,歸檔模式和不歸檔模式。如果不用歸檔模式,當然,你就不會有歸檔日志,但是,你的系統(tǒng)將不會是一個實用系統(tǒng),特別是不能用于生產(chǎn)系統(tǒng),因為你可能會丟失數(shù)據(jù)。但是在歸檔模式中,為了保存用戶的所有修改,在重做日志文件切換后和被覆蓋之間系統(tǒng)將他們另外保存成一組連續(xù)的文件系列,該文件系列就是歸檔日志文件。
有人或許會說,歸檔日志文件占領(lǐng)我大量的硬盤空間,其實,具體想一想,你是愿意浪費一點磁盤空間來保護你的數(shù)據(jù),還是愿意丟失你的數(shù)據(jù)呢?顯而義見,我們需要保證我們的數(shù)據(jù)的安全性。其實,歸檔并不是一直占領(lǐng)你的磁盤空間,你可以把她備份到磁帶上,或則刪除上一次完整備份前的所有日志文件。
5、初始化參數(shù)文件
initSID.ora或init.ora文件,因為版本的不一樣,其位置也可能會不一樣。在8i中,通常位于$Oracle_HOME/admin//Pfile下,初始化文件記載了許多數(shù)據(jù)庫的啟動參數(shù),如內(nèi)存,控制文件,進程數(shù)等,在數(shù)據(jù)庫啟動的時候加載(Nomount時加載),初始化文件記錄了很多重要參數(shù),對數(shù)據(jù)庫的性能影響很大,如果不是很了解,不要輕易亂改寫,否則會引起數(shù)據(jù)庫性能下降。
6、其他文件
i . 密碼文件
用于Oracle 的具有sysdba權(quán)限用戶的認證.
ii. 日志文件
報警日志文件(alert.log或alrt.ora)
記錄數(shù)據(jù)庫啟動,關(guān)閉和一些重要的出錯信息。數(shù)據(jù)庫管理員應該經(jīng)常檢查這個文件,并對出現(xiàn)的問題作出即使的反應。你可以通過以下SQL 找到他的路徑select value from v$PARAMETER where name ="background_dump_dest";
后臺或用戶跟蹤文件
系統(tǒng)進程或用戶進程出錯前寫入的信息,一般不可能讀懂,可以通過Oracle的TKPROF工具轉(zhuǎn)化為可以讀懂的格式。對于系統(tǒng)進程產(chǎn)生的跟蹤文件與報警日志文件的路徑一樣,用戶跟蹤文件的路徑,你可以通過以下SQL找到他的路徑select value from v$PARAMETER where name ="user_dump_dest";
三、Oracle邏輯結(jié)構(gòu)
1、 表空間(tablespace)
表空間是數(shù)據(jù)庫中的基本邏輯結(jié)構(gòu),一系列數(shù)據(jù)文件的集合。一個表空間可以包含多個數(shù)據(jù)文件,但是一個數(shù)據(jù)文件只能屬于一個表空間。
2、 段(Segment)
段是對象在數(shù)據(jù)庫中占用的空間,雖然段和數(shù)據(jù)庫對象是一一對應的,但段是從數(shù)據(jù)庫存儲的角度來看的。一個段只能屬于一個表空間,當然一個表空間可以有多個段。
表空間和數(shù)據(jù)文件是物理存儲上的一對多的關(guān)系,表空間和段是邏輯存儲上的一對多的關(guān)系,段不直接和數(shù)據(jù)文件發(fā)生關(guān)系。一個段可以屬于多個數(shù)據(jù)文件,關(guān)于段可以指定擴展到哪個數(shù)據(jù)文件上面。
段基本可以分為以下四種
數(shù)據(jù)段(Data Segment)
索引段(Index Segment)
回滾段(Rollback Segment)
臨時段(Temporary Segment)
3、區(qū)間(Extent)
關(guān)于Extent的翻譯有多種解釋,有的譯作擴展,有的譯作盤區(qū),我這里通常譯為區(qū)間。在一個段中可以存在多個區(qū)間,區(qū)間是為數(shù)據(jù)一次性預留的一個較大的存儲空間,直到那個區(qū)間被用滿,數(shù)據(jù)庫會繼續(xù)申請一個新的預留存儲空間,即新的區(qū)間,一直到段的最大區(qū)間數(shù)(Max Extent)或沒有可用的磁盤空間可以申請。 在Oracle8i以上版本,理論上一個段可以無窮個區(qū)間,但是多個區(qū)間對Oracle卻是有性能影響的,Oracle建議把數(shù)據(jù)分布在盡量少的區(qū)間上,以減少Oracle的管理與磁頭的移動。
4、Oracle數(shù)據(jù)塊(Block)
Oracle最基本的存儲單位,他是OS數(shù)據(jù)塊的整數(shù)倍。Oracle的操作都是以塊為基本單位,一個區(qū)間可以包含多個塊(如果區(qū)間大小不是塊大小的整數(shù)倍,Oracle實際也擴展到塊的整數(shù)倍)。
5、基本表空間介紹
a. 系統(tǒng)表空間
主要存放數(shù)據(jù)字典和內(nèi)部系統(tǒng)表基表
查看數(shù)據(jù)數(shù)據(jù)字典的SQL
select * from dict
查看內(nèi)部系統(tǒng)表的SQL
select * from v$fixed_view_definition
DBA對系統(tǒng)的系統(tǒng)表中的數(shù)據(jù)字典必須有一個很深刻的了解,他們必須準備一些基礎(chǔ)的SQL語句,通過這些SQL可以立即了解系統(tǒng)的狀況和數(shù)據(jù)庫的狀態(tài),這些基本的SQL包括
系統(tǒng)的剩余空間
系統(tǒng)的SGA
狀態(tài)系統(tǒng)的等待
用戶的權(quán)限
當前的用戶鎖
緩沖區(qū)的使用狀況等
在成為DBA 的道路上我們不建議你過分的依賴于OEM/Quest 等優(yōu)秀的數(shù)據(jù)庫管理工具,因為他們不利于你對數(shù)據(jù)數(shù)據(jù)字典的理解,SQL語句可以完成幾乎全部的數(shù)據(jù)庫管理工作。
大量的讀少量的寫是該表空間的一個顯著的特點。
b. 臨時表空間.
臨時表空間顧名思義是用來存放臨時數(shù)據(jù)的,例如排序操作的臨時空間,他的空間會在下次系統(tǒng)啟動的時候全部被釋放。
c. 回滾段表空間
i. 回滾段在系統(tǒng)中的作用
當數(shù)據(jù)庫進行更新插入刪除等操作的時候,新的數(shù)據(jù)被更新到原來的數(shù)據(jù)文件,而舊的數(shù)據(jù)(Before Image)就被放到回滾段中,如果數(shù)據(jù)需要回滾,那么可以從回滾段將數(shù)據(jù)再復制到數(shù)據(jù)文件中。來完成數(shù)據(jù)的回滾。在系統(tǒng)恢復的時候, 回滾段可以用來回滾沒有被commit 的數(shù)據(jù),解決系統(tǒng)的一至性。
回滾段在什么情況下都是大量的寫,一般是少量讀,因此建議把回滾段單獨出來放在一個單獨的設(shè)備(如單獨的磁盤或RAID),以減少磁盤的IO爭用。
ii. 回滾段的工作方式
一個回滾表空間可以被劃分成多個回滾段.
一個回滾段可以保存多個會話的數(shù)據(jù).
回滾段是一個圓形的數(shù)據(jù)模型
假設(shè)回滾段由4 個區(qū)間組成,他們的使用順序就是區(qū)間1à區(qū)間2à區(qū)間3à區(qū)間4à區(qū)間1。也就是說,區(qū)間是可以循環(huán)使用的,當區(qū)間4到區(qū)間1的時候,區(qū)間1里面的會話還沒有結(jié)束, 區(qū)間4用完后就不能再用區(qū)間1,這時系統(tǒng)必須分配區(qū)間5,來繼續(xù)為其他會話服務服務。
我們分析一個Update 語句的完成
①. 用戶提交一個Update 語句
②. Server Process 檢查內(nèi)存緩沖.
如果沒有該數(shù)據(jù)塊的緩沖,則從磁盤讀入
i. 如果沒有內(nèi)存的有效空間,DBWR被啟動將未寫入磁盤的臟緩沖寫入磁盤
ii. 如果有有效空間,則讀入
③. 在緩沖內(nèi)更新數(shù)據(jù)
i. 申請一個回滾段入口,將舊數(shù)據(jù)寫如回滾段
ii. 加鎖并更新數(shù)據(jù)
iii. 并在同時將修改記錄在Redo log buffer中
安裝oracle數(shù)據(jù)庫。
使用相應版本的arcsde連接到oracle數(shù)據(jù)庫。
post一下sde相關(guān)信息到oracle數(shù)據(jù)庫里面。
1.安裝oracle 11g
2.Oracle自帶的SQL Developer
在安裝完Oracle Database 11g Release 2數(shù)據(jù)庫,想試一下Oracle自帶的SQL DeveloperW工具,在操作系統(tǒng)菜單的所有程序中找到SQL Developer如下所示,并單擊:
結(jié)果卻提示缺少快捷方式,沒找到“SQLDEVELOPER.BAT”,**
在Oracle的安裝目錄D:\DataBaseInstall\Oralce_11g_r2\product\11.2.0\dbhome_1\sqldeveloper\sqldeveloper\bin下的確也沒找到sqldeveloper.bat文件。網(wǎng)上很多人都說重新下載SQL Developer替換掉安裝Oracle時自帶的那個。
重新到Oracle官網(wǎng)下載SQL Developer,當前最新版下載地址:
將下載下來的 sqldeveloper64-3.2.20.09.87-no-jre.zip解壓到Oracle安裝目錄下
這時重新單擊操作系統(tǒng)菜單中的“SQL Developer”,看到命令窗口閃一下就消失了。看了一下SQL Developer的“readme.html”文檔知道了SQL Developer 3.2支持的Java版本至少要1.6.0_04。
那就下載當前最新JDK安裝,在這里我下載的是jrockit-jdk1.6.0_37-R28.2.5-4.1.0-windows-x64.exe。下載完成后雙擊出現(xiàn)如下安裝界面:
在歡迎窗口中單擊“Next”:
設(shè)置JDK安裝目錄,單擊“Next”:
這里問你是否需要安裝示例或源代碼,根據(jù)需要選擇,這里我就不選了直接單擊“Next”:
這里是否安裝JRE,選擇“Yes”,單擊“Next”:
設(shè)置JRE安裝目錄,單擊“Next”:
安裝過程:
安裝完畢,單擊“Done”關(guān)閉。
現(xiàn)在新的JDK安裝完后,重新單擊操作系統(tǒng)菜單中的“SQL Developer”,這時“SQL Developer”可以啟動,但是報了如下的異常:
Exception initializing 'oracle.dbtools.raptor.plsql.PLSQLAddin' in extension 'Or
acle SQL Developer': java.lang.NoClassDefFoundError: com/sun/jdi/Bootstrap
at oracle.jdevimpl.debugger.jdi.DebugJDIConnector.getVersion(DebugJDICon
nector.java:30)
at oracle.jdevimpl.debugger.support.DebugFactory.(DebugFactory.j
ava:81)
at oracle.dbtools.raptor.plsql.PLSQLAddin.initialize(PLSQLAddin.java:97)
at oracle.ideimpl.extension.AddinManagerImpl.initializeAddin(AddinManage
rImpl.java:407)
at oracle.ideimpl.extension.AddinManagerImpl.initializeAddins(AddinManag
erImpl.java:214)
at oracle.ideimpl.extension.AddinManagerImpl.initProductAndUserAddins(Ad
dinManagerImpl.java:128)
at oracle.ide.IdeCore.initProductAndUserAddins(IdeCore.java:1941)
at oracle.ide.IdeCore.startupImpl(IdeCore.java:1565)
at oracle.ide.Ide.startup(Ide.java:703)
at oracle.ideimpl.DefaultIdeStarter.startIde(DefaultIdeStarter.java:35)
at oracle.ideimpl.Main.start(Main.java:184)
at oracle.ideimpl.Main.main(Main.java:146)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at oracle.ide.boot.PCLMain.callMain(PCLMain.java:62)
at oracle.ide.boot.PCLMain.main(PCLMain.java:54)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodA
ccessorImpl. java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces sorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at oracle.classloader.util.MainClass.invoke(MainClass.java:128) at oracle.ide.boot.IdeLauncher.bootClassLoadersAndMain(IdeLauncher.java: 189) at oracle.ide.boot.IdeLauncher.launchImpl(IdeLauncher.java:89) at oracle.ide.boot.IdeLauncher.launch(IdeLauncher.java:65) at oracle.ide.boot.IdeLauncher.main(IdeLauncher.java:54) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces sorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at oracle.ide.boot.Launcher.invokeMain(Launcher.java:713) at oracle.ide.boot.Launcher.launchImpl(Launcher.java:115) at oracle.ide.boot.Launcher.launch(Launcher.java:68) at oracle.ide.boot.Launcher.main(Launcher.java:57)
看著異常就不爽啊,解決唄。運行命令行窗口查看是否設(shè)置了JDK系統(tǒng)環(huán)境變量,這里顯然是沒有設(shè)置JDK系統(tǒng)環(huán)境變量:
設(shè)置系統(tǒng)環(huán)境變量
在桌面選中“計算機”右鍵選擇“屬性”,單擊“高級系統(tǒng)設(shè)置”:
在高級選項卡中單擊“環(huán)境變量”:
在系統(tǒng)變量下單擊“新建”,填入變量名“JAVA_HOME”,變量值為JDK的安裝目錄,我這里為“ D:\JAVAEEServiceInstall\Java\jrockit-jdk1.6.0_37-R28.2.5-4.1.0 ”,單擊“確定”:
在系統(tǒng)變量中找到“Path”,單擊“編輯”,在變量值中加入“%JAVA_HOME%\bin”以“;”相隔,單擊“確定”:
系統(tǒng)環(huán)境變量設(shè)置完成后,重新啟動命令行窗口,檢查是否成功。如下為設(shè)置成功:
重新單擊操作系統(tǒng)菜單中的“SQL Developer”,這時“SQL Developer”可以正常啟動:
如果希望不出現(xiàn)“[WARN ][jrockit] MaxPermSize=128M ignored: Not a valid option for JRockit”警告,那用記事本打開SQL Developer的bin目錄下的“sqldeveloper.bat”文件,找到“-XX:MaxPermSize=128M”直接刪除。因為jrockit已經(jīng)不需要-XX:MaxPermSize這樣的參數(shù)了。
注:1.JDK一定要是1.6版本的即U6版本。
2.發(fā)現(xiàn)SQL_developer還是會一閃而過,但是SQL_developerW可以方面使用。
3.Oracle SQL Developer 添加SQLServer 和Sybase 連接
1. 開始只有oracle 和access 連接
\
喎?"/kf/ware/vc/" target="_blank" class="keylink"vcD4KPHA+CjxzdHJvbmc+Mi4gtPK/qk9yYWNsZSBTUUwgRGV2ZWxvcGVyo7o8L3N0cm9uZz48L3A+CjxwPgo8c3Ryb25nPrmkvt+hqqGqPHN0cm9uZz4mZ3Q7PC9zdHJvbmc+ytfRoc/uoaqhqjxzdHJvbmc+Jmd0Ozwvc3Ryb25nPsr9vt2/4qGqoaomZ3Q7tdrI/be9SkRCQ8f9tq+zzNDyoaqhqiZndDvM7bzTx/22r8z1xL88L3N0cm9uZz48YnI+CjwvcD4KPHA+CjxpbWcgc3JjPQ=="/uploadfile/Collfiles/20160421/20160421091223242.jpg" alt="\"
\
3. 自動加載到目錄,JTDS.jar 下載后就到放這里。
(我的路徑:C:\Documents and Settings\Administrator\Application Data\SQL Developer\)
我的JTDS.jar免費下載地址:
\
4. 完成后添加連接有SQLServer 和Sybase了。
\
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
還有一種添加方法是:
1. 幫助——檢查更新
\
2. 選擇可更新的相關(guān)軟件查件
\
3. 單擊下一步自動更新,則出現(xiàn)下列詳細插件,選取JTDS JDBC Driver……
\
\
4. 填寫在官方網(wǎng)址上的賬戶信息,確定。
\
4.sqlserver 轉(zhuǎn)oracle
上一次,我使用手工轉(zhuǎn)換SQL腳本的方式進行數(shù)據(jù)庫的遷移,其間過程相當繁瑣,特別是標識符長度的限制讓我焦頭爛額,因為我們的系統(tǒng)中長標識符真是多如繁星,另外,表結(jié)構(gòu)建好之后,數(shù)據(jù)的遷移又是一個相當復雜的過程,因為修改了不少的表名,需要把導出的數(shù)據(jù)和表一一對應上。
但是,除了手工的方式之外,其實我們還有更為簡便和自動化的解決方案,那就是ORACLE官方提供的Sql Developer自帶的Oracle Migration Workbench。
什么是Oracle SQL Developer?在官方頁面上,是這樣介紹它的:
Oracle SQL Developer is a free and fully supported graphical tool for database development. With SQL Developer, you can browse database objects, run SQL statements and SQL scripts, and edit and debug PL/SQL statements. You can also run any number of provided reports, as well as create and save your own. SQL Developer enhances productivity and simplifies your database development tasks .
另外,通過第三方驅(qū)動包,該工具還支持連接和管理各種主流數(shù)據(jù)庫服務器。
下面就把我使用這個工具遷移Microsoft SQL Server 2008數(shù)據(jù)庫到Oracle 11G的過程記錄下來,為了積累也為分享。
第一部分:獲取工具
第二部分:建立資料檔案庫(Migration Repository)
第三部分:數(shù)據(jù)庫移植向?qū)?/p>
第四部分:SqlServer中的架構(gòu)到Oracle中的模式,名稱的處理
第五部分:轉(zhuǎn)移數(shù)據(jù)
第六部分:存儲過程和函數(shù)
首先,當然是獲得工具,該工具在Oracle Sql Developer官方下載頁面里面可以直接下載到。Windows 32位直連地址:Windows 32bit Sql Developer。Oracle Sql Developer需要JDK的支持,在下載頁面中提供了包含JDK的下載包,還有支持各種操作系統(tǒng)的下載選項。
下載后,解壓到任意位置。直接運行程序。第一次運行,需要指定JDK的目錄。
啟動后,我們要做的第一件事,不干別的,先下載SQL SERVER的驅(qū)動程序。點擊菜單幫助,選擇檢查更新,彈出檢查更新向?qū)Т翱冢谝豁撘话闶菑U話,直接下一步,等更新中心列表加載完畢后,只選擇“Third Party SQL Developer extensions”,點擊下一步,等待更新搜索完畢后,中列表中找到并選中 JTDS JDBC Driver,如下圖:
image
下一步,在許可協(xié)議頁面,點擊“我同意”按鈕后再點下一步,等下載完畢后關(guān)閉窗口,彈出提示需要重啟程序才能完成更新,點擊“是”。等程序重啟完畢。
環(huán)境準備完畢,開始進入到正題移植數(shù)據(jù)庫。
建立資料檔案庫(Migration Repository)
一、連接到Oracle
在程序左邊的連接窗口中,點擊加號按鈕,添加一個到Oracle數(shù)據(jù)庫的dba連接,如下圖:
image
配置完成后,點擊連接按鈕,連接到數(shù)據(jù)庫。
二,建立用戶
打開到Oracle數(shù)據(jù)的連接,新建一個用戶,我們要在該用戶的模式中建立所謂的“資料檔案庫”,并使用該用戶去建立SQL Server移植后的用戶名,以及做其它的一些工作。按照幫助中的說明,這個用戶最少需要以下權(quán)限和角色:
Roles
CONNECT WITH ADMIN OPTION,RESOURCE WITH ADMIN OPTION
Privileges
ALTER ANY ROLE,ALTER ANY SEQUENCE,ALTER ANY TABLE,ALTER TABLESPACE,ALTER ANY TRIGGER,COMMENT ANY TABLE,CREATE ANY SEQUENCE,CREATE ANY TABLE,CREATE ANY TRIGGER,CREATE VIEW WITH ADMIN OPTION,CREATE PUBLIC SYNONYM WITH ADMIN OPTION,CREATE ROLE
CREATE USER,DROP ANY SEQUENCE,DROP ANY TABLE,DROP ANY TRIGGER,DROP USER,DROP ANY ROLE,GRANT ANY ROLE,INSERT ANY TABLE,SELECT ANY TABLE,UPDATE ANY TABLE
以下語句直接建立一個名為migrations的用戶:
-- Create the user
create user MIGRATIONS
identified by MIGRATIONS
default tablespace USERS
temporary tablespace TEMP
profile DEFAULT;
-- Grant/Revoke role privileges
grant connect to MIGRATIONS with admin option;
grant resource to MIGRATIONS with admin option;
-- Grant/Revoke system privileges
grant alter any role to MIGRATIONS;
grant alter any sequence to MIGRATIONS;
grant alter any table to MIGRATIONS;
grant alter any trigger to MIGRATIONS;
grant alter tablespace to MIGRATIONS;
grant comment any table to MIGRATIONS;
grant create any sequence to MIGRATIONS;
grant create any table to MIGRATIONS;
grant create any trigger to MIGRATIONS;
grant create any view to MIGRATIONS;
grant create materialized view to MIGRATIONS with admin option;
grant create public synonym to MIGRATIONS with admin option;
grant create role to MIGRATIONS;
grant create session to MIGRATIONS with admin option;
grant create synonym to MIGRATIONS with admin option;
grant create tablespace to MIGRATIONS;
grant create user to MIGRATIONS;
grant create view to MIGRATIONS with admin option;
grant drop any role to MIGRATIONS;
grant drop any sequence to MIGRATIONS;
grant drop any table to MIGRATIONS;
grant drop any trigger to MIGRATIONS;
grant drop tablespace to MIGRATIONS;
grant drop user to MIGRATIONS;
grant grant any role to MIGRATIONS;
grant insert any table to MIGRATIONS;
grant select any table to MIGRATIONS;
grant unlimited tablespace to MIGRATIONS with admin option;
grant update any table to MIGRATIONS;
再次點擊連接中的加號按鈕,添加一個使用剛剛新建立的用戶的連接。
image
連接后,在該連接上點擊右鍵,選擇移植資料檔案庫-關(guān)聯(lián)移植資料檔案庫,程序會在該用戶下建立移植資料檔案庫所需要的表、存儲過程等等,彈出一個對話框顯示當前建立的進度,稍等片刻即建立完畢。
數(shù)據(jù)庫移植向?qū)?/p>
一,建立到源SqlServer數(shù)據(jù)庫的連接
在連接窗口中,點擊綠色加號按鈕,打開連接配置窗口,按下圖建立到SqlServer的連接:
image
因為動態(tài)商品的使用,使得原來SqlServer配置頁中默認的1433往往沒有辦法連接到SqlServer2008數(shù)據(jù)庫,修改為1434即可。
二、啟動數(shù)據(jù)庫移植向?qū)?/p>
建立到SqlServer的連接后,開始對數(shù)據(jù)庫進行移植。有兩個地方可以啟動數(shù)據(jù)庫移植向?qū)В粋€是在新建的SqlServer連接上點擊右鍵,選擇移植到Oracle,另一個是在菜單工具-移植-移植,啟動向?qū)Ш螅谝豁摦斎皇窍驅(qū)У暮喗椋ㄟ^簡介,我們可以知道整個移植過程有7步,并且有兩個先決條件,如下圖:
image
直接點擊下一步。
三、選擇資料檔案庫
在這個頁面中,我們也可以去建立連接和資料檔案庫,也就是前一部分中我們所做的工作在這里也可以進行。當然選擇我們剛剛建立的migrations連接,如下圖:
image
這里截斷的意思是將資料檔案庫清空,我們建立一個移植項目后,所有抓取的數(shù)據(jù)庫結(jié)構(gòu)信息、統(tǒng)計信息還有轉(zhuǎn)換記錄等都保存在這個資料檔案庫中,只要項目名稱不同,即使不清空資料檔案庫也不會影響到移植工作。當然,如果希望更“清爽”一點,也可以勾選。這是后話。
四、為轉(zhuǎn)換項目命名
選擇好資料檔案庫后,點擊下一步,為我們的轉(zhuǎn)換項目輸入名稱和備注,以便識別。另外,還需要指定腳本生成目錄,用于存放向?qū)?zhí)行過程中生成的腳本。
五、選擇源數(shù)據(jù)庫連接
然后繼續(xù)下一步,選擇源數(shù)據(jù)庫,在這里有聯(lián)機和離線兩種模式,聯(lián)機即是直接連接到源數(shù)據(jù)進行抓取,而離線則是在SqlDeveloper不直接連接到源數(shù)據(jù)庫的情況下,通過SqlDeveloper提供的腳本預先捕獲數(shù)據(jù)庫,得到數(shù)據(jù)庫結(jié)構(gòu)文件后,通過向?qū)搿?/p>
這里當然是選擇我們剛才建立的SqlServer連接。
六、選擇捕獲源數(shù)據(jù)庫
本文描述了遠程消息傳遞和遠程支持集群環(huán)境的搭建配置過程。這個集群環(huán)境由三個集群組成,具體的拓撲結(jié)構(gòu)是:
應用程序集群,不但為應用程序提供工作負載管理以及URL和EJB 請求故障轉(zhuǎn)移功能,而且還部署了BPC和HTM 容器,提供了對長業(yè)務流程和人工業(yè)務流程的應用程序的支持。
遠程消息集群,運行WPS默認提供的四個總線(SCA應用,SCA系統(tǒng),BPC和CEI)提供獨立的高效的消息引擎。
遠程支持集群,部署通用事件體系結(jié)構(gòu)和業(yè)務規(guī)則管理等其他應用程序,提供異步的事件查詢。
這三個集群配置在兩臺機器的不同的節(jié)點上,即三個集群的成員水平部署在兩臺機器上。在一個集群中的兩個成員是該集群中完全相同的副本。消息傳遞引擎、業(yè)務支持和業(yè)務流程應用程序分別位于不同的集群上,所以可以根據(jù)實際業(yè)務負載和硬件環(huán)境,靈活調(diào)配所需的資源。這種模式,也稱為黃金拓撲,是 WPS 中最復雜的拓撲結(jié)構(gòu),是大多數(shù)企業(yè)集成應用用戶的首選,具有如下優(yōu)點:
可靠性。將所有的應用、消息引擎和通用事件部署在三個集群上面,方便管理和使用。
可擴展性。因為系統(tǒng)中的消息引擎處于的關(guān)鍵地位,可能存在之后的訪問需求增長等擴展需要,單獨創(chuàng)建消息引擎集群可以很方便實行這一點。
對于系統(tǒng)運行時可能遇到的處理量非常大和可伸縮性等問題,通過將通用事件基礎(chǔ)架構(gòu)(CEI)和應用程序分離,可以確保這兩個組件不會爭用相同的資源(內(nèi)存和CPU)。此拓撲還能幫助創(chuàng)建集中的事件服務器以處理來自多個源的事件。
所有的應用服務器由 Deployment Manager 統(tǒng)一管理,降低了系統(tǒng)管理的復雜度。
安裝前的注意事項
在集群環(huán)境的安裝過程中,需要同步兩臺主機的信息,確保它們之間能夠良好的通信。主要同步的信息包括兩臺主機的系統(tǒng)時間、時區(qū)設(shè)置,并確保兩臺機器的時間差在5分鐘之內(nèi),如果時間差超過5分鐘,聯(lián)合操作將失敗。
更新兩臺主機的hosts 文件(默認目錄為/etc/hosts ),確保每臺機器均包含對方的host name 和對應的IP 地址,以便主機間的相互訪問。
在使用向?qū)О惭b和配置概要時,請按照從上到下的順序輸入配置參數(shù),對于WPS V6.12 ,輸入順序的改變有可能導致未知錯誤。
集群環(huán)境的搭建步驟
Informix 數(shù)據(jù)庫規(guī)劃
WPS的集群環(huán)境需要后臺數(shù)據(jù)庫的支持。為了提高集群在實際運行中的效率,建議根據(jù)功能的不同,創(chuàng)建不同的數(shù)據(jù)庫。數(shù)據(jù)庫的詳細信息如下表所示:
數(shù)據(jù)庫名稱 說明
WPRCSDB 公共數(shù)據(jù)庫
EVENT 通用事件體系結(jié)構(gòu)數(shù)據(jù)庫
CEIDB 通用事件體系結(jié)構(gòu)消息傳遞引擎數(shù)據(jù)庫
SCASYSDB 服務組件系統(tǒng)消息傳遞引擎數(shù)據(jù)庫
SCAAPPDB 服務組件應用程序消息傳遞引擎數(shù)據(jù)庫
BPCDB 業(yè)務流程編排器數(shù)據(jù)庫
BPCME 業(yè)務流程編排器消息傳遞引擎數(shù)據(jù)庫
OBSVRDB 業(yè)務流程編排器事件收集器數(shù)據(jù)庫
注意:本文選擇英文語言的數(shù)據(jù)庫安裝。如果要安裝中文語言的數(shù)據(jù)庫,請參考本文的:在數(shù)據(jù)源定制屬性中添加數(shù)據(jù)庫語言。
安裝WPS的步驟
首先使用圖形化安裝向?qū)г趦膳_主機上分別安裝WPS v6.1.2 產(chǎn)品,。在安裝產(chǎn)品和搭建集群過程中,步驟如下:
1.選擇“Typical installation”安裝類型。典型安裝也稱為完全安裝,提供了環(huán)境的初始化定義,包括通過概要管理工具創(chuàng)建特定了類型的概要文件。
圖2 選擇安裝類型
2.在選擇概要類型界面提供了四種可選擇的概要類型(圖3)。我們選擇“None”,即不創(chuàng)建任何類型的概要,以便在以后的步驟中手動創(chuàng)建概要。
使用Profile Management Tool(PMT) 創(chuàng)建Deployment Manager 概要
Deployment Manager(DM)是管理控制節(jié)點,它對集群環(huán)境下的所有節(jié)點提供了圖形化的管理功能。一個集群環(huán)境中一般只需要一個管理概要。下面我們將向您講述創(chuàng)建DM 概要的主要步驟:
1. 在WPS_HOME/bin/ProfileManagement/ 下執(zhí)行命令pmt.sh ,彈出安裝界面。在各種類型的環(huán)境選項中選擇 WPS,進入下一步。
2. 在概要類型中提供了三種典型的概要類型,選擇 Deployment manager profile,搭建DM 概要。
3. 在創(chuàng)建方式界面中,默認選項為創(chuàng)建典型的概要文件,在此需要選擇 Advanced profile creation,以便我們在后續(xù)步驟中通過管理控制臺手動進行集群配置,以滿足特定環(huán)境的需求。
4. 填寫要創(chuàng)建的Deployment manager profile的名稱和安裝目錄。
5. 填寫概要的Node Name和Cell name ,指定 Host Name。
6. 在管理安全選項中,如果選中 Enable administrative security 選項,請記住 WPS v 6.1.2
用戶名稱和密碼。這里建議取消 Enable administrative security 選項,不設(shè)置安全管理。在后續(xù)步驟中可以根據(jù)需要手動啟動安全管理選項,設(shè)定用戶名密碼。
7. 配置服務器的端口。
8. 進行數(shù)據(jù)庫的配置。首先從 Choose a database product 選擇 Informix Dynamic Server 作為公共數(shù)據(jù)庫類型,并選擇 Use an existing database。另外,需要指定 Database name,本例中使用先前創(chuàng)建的數(shù)據(jù)庫 WPRCSDB。不選擇“Deplay execution of database scripts for new or existing database”選項,因為概要文件的安裝過程中會自動創(chuàng)建數(shù)據(jù)庫 WPRCSDB 中的表。注意:如果創(chuàng)建的數(shù)據(jù)庫為中文字符集,則需要選擇 “Deplay execution of database scripts for new or existing database“選項,在概要創(chuàng)建完成后,手動執(zhí)行創(chuàng)建數(shù)據(jù)庫表(請參考本節(jié)內(nèi)容中的步驟 11)。
9. 在數(shù)據(jù)庫配置的第2步,需要對 Common DB 參數(shù)進行配置。如果是遠程數(shù)據(jù)庫,則在填寫 Database server host name時,要確保遠程數(shù)據(jù)庫的host name 已經(jīng)添加到本地主機(參考本文的第三部分內(nèi)容“安裝前的注意事項”);也可以直接在該項填寫遠程數(shù)據(jù)庫的IP 地址。換句話說,在點擊下一步之前,請確認數(shù)據(jù)庫的參數(shù)信息,否則將在點擊下一步后,會收到不能連接數(shù)據(jù)庫的錯誤提示。
10. 完成以上步驟后,系統(tǒng)會顯示概要的創(chuàng)建信息。如果發(fā)現(xiàn)參數(shù)需要調(diào)整可以后退向?qū)е匦逻M行輸入。DM 創(chuàng)建成功后,可取消選擇 Launch the First steps console和Create another profile,點擊完成。至此,Deployment Manager 創(chuàng)建完成。如果創(chuàng)建DM 失敗,請查看 WPS_HOME/logs/manageprofile 目錄下的日志文件進行分析。
11. 另外,如果需要手工創(chuàng)建Common DB(WPRCSDB) 相關(guān)的表,可執(zhí)行DM 概要創(chuàng)建生成的數(shù)據(jù)庫腳本,默認目錄為:
WPS_HOME/profiles/Dmgr01/dbscripts/CommonDB/Informix/WPRCSDB 。
請將這些腳本復制到 Informix 數(shù)據(jù)庫所在機器,并設(shè)置如下環(huán)境變量:
INFORMIXSERVER=IFX_INSTANCENAME
INFORMIXDIR=IFX_INSTALL_HOME
之后執(zhí)行如下命令:
dbaccess – createDatabase_CommonDB.sql
如果WPRCSDB已經(jīng)創(chuàng)建,可以忽略。
dbaccess WPRCSDB createTable_AppScheduler.sql
dbaccess WPRCSDB createTable_CommonDB.sql
dbaccess WPRCSDB createTable_customization.sql
dbaccess WPRCSDB createTable_lockmanager.sql
dbaccess WPRCSDB createTable_mediation.sql
dbaccess WPRCSDB createTable_Recovery.sql
dbaccess WPRCSDB createTable_RelationshipMetadataTable.sql
dbaccess WPRCSDB createTable_EsbLoggerMediation.sql
dbaccess WPRCSDB insertTable_CommonDB.sql
使用PMT 創(chuàng)建自定義概要
接下來,我們手動進行自定義概要的創(chuàng)建。這樣,能夠在創(chuàng)建概要過程中,根據(jù)客戶特定的使用需求和環(huán)境特點,選擇適合于自己的數(shù)據(jù)庫,并進行端口、用戶名、密碼等信息的設(shè)置。
在創(chuàng)建自定義概要(Custom profile)之前啟動 DeploymentManager(DM)概要,在目錄WPS_HOME/profiles/Dmgr01/bin 下,運行startManager.sh 命令。節(jié)點概要的創(chuàng)建與 DM 概要的創(chuàng)建類似,在目錄WPS_HOME/bin/ProfileManagment 下執(zhí)行命令pmt.sh,隨即獲得安裝界面,主要步驟如下。
1.選擇 Create 即創(chuàng)建一個新的概要文件。
2.在環(huán)境選項中,選擇 WPS,進入下一步。
3.在創(chuàng)建概要的類型中,選擇 Custom Profile,創(chuàng)建一個自定義節(jié)點概要。
4.在安裝類型選項中,選擇 Advanced profile creation,以便在后續(xù)步驟中通過手動配置相關(guān)參數(shù),定制特定的節(jié)點概要。
5.輸入節(jié)點所對應的DM 概要的主機名稱和端口,默認端口為8879。如果在創(chuàng)建DM時啟動了管理安全性,則需要輸入用戶名和密碼。Federate this node later 選項的選擇取決于是否要在創(chuàng)建節(jié)點的同時將其聯(lián)合到指定的DM 概要中。這里,我們不選擇該選項,節(jié)點會自動與 DM 概要聯(lián)合,需要注意的是,要確保 DM 概要此時為啟動狀態(tài)。
若選擇創(chuàng)建節(jié)點之后手動聯(lián)合到 DM 概要中,則需要在創(chuàng)建節(jié)點完成后使用WPS_HOME/Custom01/bin 目錄下的addNode.sh 命令進行節(jié)點與 DM的手動聯(lián)合,具體命令如下:
addNode.sh dmgr_hostname –username username –password password
6.輸入DM的信息后,進入端口設(shè)置頁面,可以自行修改端口號。
7.在數(shù)據(jù)庫選項中選擇 Informix Dynamic Server 作為數(shù)據(jù)庫類型,并為Informix JDBC driver 指定正確的路徑。該路徑指向節(jié)點所在的本地機器上 ifxjdbc.jar和ifxjdbcx.jar的存儲位置。
8.瀏覽匯總信息無誤后,點擊 Create 開始創(chuàng)建自定義概要。
9.創(chuàng)建成功后,重復以上步驟為另一臺機器創(chuàng)建自定義概要。
命令行方式創(chuàng)建Deployment Manager 實例和托管節(jié)點實例
創(chuàng)建DM profile 和Custom profile時,除了使用pmt.sh 命令外,還可以選擇命令行方式,即執(zhí)行WPS_HOME /bin/manageprofiles.sh 命令創(chuàng)建概要。創(chuàng)建Deployment manager 概要的命令和腳本如下:
./manageprofiles.sh –create -dbServerPort 8002
–templatePath WPS_HOME/profileTemplates/dmgr.wbiserver
–profileName Dmgr01
-dbDelayConfig true –dbCommonForME false
–dbType INFORMIX –dbHostName aix235.cn.ibm.com
–dbInstance IFXTest –hostName aix235.cn.ibm.com
–enableAdminSecurity false –dbName wprcsdb
–dbPassword informix –ndtopology false
-cellName aix235Cell01 –nodeName aix235CellManager01
–dbJDBCClasspath /opt/jdbc/lib –dbUserId Informix
–dbCreateNew false –profilePath WPS_HOME/profiles/Dmgr01
創(chuàng)建自定義節(jié)點的命令和腳本如下:
./manageprofiles.sh –create –dmgrHost 9.186.111.234
–profileName Custom01 –templatePath WPS_HOME/profileTemplates/managed.wbiserver
–dbType INFORMIX –ndtopology false
–cellName aix234Node01Cell –hostName aix234.cn.ibm.com
–nodeName aix234Node01 –dbJDBCClasspath /home/jdbc/lib
–dmgrPort 8879 –profilePath WPS_HOME/profiles/Custom01
網(wǎng)站名稱:oracle架構(gòu)如何搭建,oracle系統(tǒng)架構(gòu)
URL網(wǎng)址:http://m.newbst.com/article6/hsegog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、面包屑導航、動態(tài)網(wǎng)站、網(wǎng)站策劃、移動網(wǎng)站建設(shè)、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)