一、怎樣配置EM使其支持SSL 協議
具體操作:
1. 如果沒有環境變量ORACLE_SID,請先配置,或者直接敲入set ORACLE_SID=xxx (UNIX環境下請根據不同的shell類型使用不同的語法:setenv, export...)
2. 鍵入 emctl secure ,可以看到全部的選項:
secure oms
[
secure agent
secure em
secure dbconsole
[
secure setpwd
secure status [oms url]
secure lock | unlock
3. 以配置oms為例
3.1 先停掉所有與oms相關的 服務(opmnctl stopall)
3.2 敲入: emctl secure oms,會讓你輸入registration password,然后系統會產生相關的證書文件, 如果一切順利的話,系統會有提示配置成功的信息
3.3 重新啟動服務(opmnctl startall)
缺省情況下,7777和4889這兩個端口是可用的, 配置成secure 模式后,4888端口是支持SSL協議的. 從$EM_HOME\sysman\config目錄下的emoms.properties文件中可以看到配置信息.
3.4 檢測oms是否已經運行在https協議下
emctl secure status oms url
注意: URL 要輸入完整,
例如: https://myserver:4888/em/upload/
4. Agent, DBconsole的配置基本類似.
5. 啟動瀏覽器運行時,IE會彈出一個安裝安全證書的窗口,按"確認".
二、出現了問題,怎樣解決
以DB Control為例, 大致的步驟是這樣的:
1. emctl status dbconsole 查看db control 的狀態
2.去 $ORACLE_HOME\hostname_sid\sysman\log目錄下查看相關日志(emoms.log,emagent.log等)
3. 檢查配置文件 emd.properties,emoms.properties
目錄: $ORACLE_HOME\hostname_sid\sysman\config
4. 確保監聽器工作正常: lsnrctl status
5.
目錄: $ORACLE_HOME\hostname_sid\sysman\config
文件: emoms.properties.
參數: oracle.sysman.eml.mntr.emdRepConnectDescriptor
三、修改了監聽端口, 怎樣保證 DB Control 正常運行
1. 修改 listener.ora 和tnsnames.ora 這兩個文件:
tnsnames.ora 中需要加入:
listener_1 =
(ADDRESS = (PROTOCOL = TCP)
(HOST = xxxx)(PORT = 新的端口))
然后啟動數據庫:
SQL> show parameter local_listener ;
SQL> alter system set local_listener='listener_1' scope=spfile;
重啟數據庫使得修改生效
2. 修改 $ORACLE_HOME\hostname_sid\sysman\config
下的emoms.properties文件:
oracle.sysman.eml.mntr.emdRepPort=新的端口
oracle.sysman.eml.mntr.emdRepConnectDescriptor=(DESCRIPTION\=(ADDRESS_LIST\=(ADDRESS\=(PROTOCOL\=TCP)(HOST\=xxx)(PORT\=新的端口)))(CONNECT_DATA\=(SERVICE_NAME\=xxx)))
3. 最后,還要修改 $ORACLE_HOME\hostname_sid\sysman\emd
下的targets.xml:
4. 重新啟動監聽器和dbconsole 服務.
5. 如果嫌上面的操作麻煩,可以用emca這個命令行工具:
emca -h 查看所有可用的命令
emca -r 跳過資料檔案庫的創建.
四、怎樣修改 DB Control 的服務端口
缺省情況下, DB Control 的端口是5500, 可以參考下面的說明更改端口。
如果用戶想改變oms端口,必須改變以下三個文件,然后重啟db control以使得改變生效:
1.編輯$ORACLE_HOME/_/sysman/config/emoms.properties并改變以下參數:
oracle.sysman.emSDK.svlt.ConsoleServerPort
oracle.sysman.emSDK.svlt.ConsoleServerHTTPSPort
2.編輯$ORACLE_HOME/_/sysman/config/emd.properties并改變以下參數:
REPOSITORY_URL
emdWalletSrcUrl
3.編輯$ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole__/config/http-web-site.xml并改變以下參數:
web-site port
注:請在修改前備份。
五、如何使用"Automatic SGA Management"
Automatic SGA Management 是
至于參數的合理性,還需要結合AWR Report 去驗證.
SGA_TARGET = db_cache_size + db_nk_cache_size(n=2,4,...)
+ db_keep_cache_size + db_recycle_cache_size +
shared_pool_size + java_pool_size + large_pool_size + xxxx
xxx: 是一個保留值,從目前的實驗來看,基本是
步驟:
1.
alter system set sga_target=
create pfile from spfile;
shutdown immediate;
修改init.ora 文件,將這些參數的值設成0:
db_cache_size, shared_pool_size, java_pool_size,large_pool_size
2. 啟動SQLPLUS,以新的pfile文件啟動數據庫
SQL> startup pfile='....'
讓我們來看看調整的結果:
SQL> select name, block_size, current_size from v$buffer_pool;
name block_size current_size
-------------------------------------------------------------
KEEP 8192 204
SQL> Select pool, sum(bytes)/1024/1024 as "M bytes" from v$SGASTAT
group by pool;
pool M bytes
-------------------------------------------------
java pool 4
large pool 4
shared pool 84
205.002403
205.002403=buffer cache + log buffer + fixed sga + all others ...
改動java pool的值
SQL> alter system set java_pool_size=
SQL> select name, block_size, current_size,prev_size from v$buffer_pool;
name block_size current_size prev_size
----------------------------------------------------------------------------------------------
KEEP 8192 188 204
SQL> Select pool, sum(bytes)/1024/1024 as "M bytes" from v$SGASTAT
group by pool;
pool M bytes
-------------------------------------------------
java pool 20
large pool 4
shared pool 84
189.002403
可以看出, db_cache_size的值已經被自動調小了.
再把java pool 的值改回去
SQL> alter system set java_pool_size=
SQL> select name, block_size, current_size,prev_size from v$buffer_pool;
name block_size current_size prev_size
-----------------------------------------------------------------------------------
KEEP 8192 188 204
SQL> select name, block_size, current_size,prev_size from v$buffer_pool;
pool M bytes
-------------------------------------------------
java pool 20
large pool 4
shared pool 84
189.002403
這一次, db_cache_size的值沒有變化 , JAVA_POOL_SIZE的值也沒有變化
修改large pool的值為
SQL> alter system set large_pool_size=
System altered.
SQL> select name,block_size,current_size,prev_size from v$buffer_pool;
NAME BLOCK_SIZE CURRENT_SIZE PREV_SIZE
-------------------- ---------- ------------ ---------
DEFAULT 8192 176 188
SQL> Select pool, sum(bytes)/1024/1024 as "M bytes" from v$sgastat group by pool;
POOL M bytes
------------ ----------
java pool 20
large pool 16
shared pool 84
177.002403
這次,db_cache_size和large_pool_size的值都變了
同樣,調大shared_pool_size后, db_cache_size會自動減小.
雖然db_nk_cache_size的值不會隨著workload 的改變而自動調整, 我們還是可以看看手工改動db_nk_block_size 的情況
SQL> alter system set db_2k_cache_size=
System altered.
SQL> select name,block_size,current_size,prev_size from v$buffer_pool;
NAME BLOCK_SIZE CURRENT_SIZE PREV_SIZE
---------------- ----------------- ------------ ----------
DEFAULT 8192 172 176
DEFAULT 2048 4 0
SQL> alter system set db_2k_cache_size=0;
System altered.
SQL> select name,block_size,current_size,prev_size from v$buffer_pool;
NAME BLOCK_SIZE CURRENT_SIZE PREV_SIZE
----------------- ---------------- ------------------ --------------
DEFAULT 8192 176 172
SQL> alter system set db_2k_cache_size=
System altered.
SQL> select name,block_size,current_size,prev_size from v$buffer_pool;
NAME BLOCK_SIZE CURRENT_SIZE PREV_SIZE
-------------------- ---------- ------------ ----------
DEFAULT 8192 168 176
DEFAULT 2048 8 0
結論: 手工調整db_nk_cache_size確實會影響原有的參數.
最后說一點: SGA_TARGET參數與SGA_MAX_SIZE參數有密切關聯,基本的原則就是前者的值不能大于后者的值.
總結:設置了SGA_TARGET參數后,數據庫會在這個范圍內自行調整;但許多情況下, 怎樣合理地設置這個參數仍是DBA需要考慮的問題, 他們需要結合AWR Report等輔助的工具來分析.( 當然,我們可以根據Advisor的歷史信息而確定一個比較合理的值)。
(待續...)