A. Win7下如何實現連接到不同網路自動切換代理Pac腳本
PAC的配置方法非常簡單,不需要安裝任何軟體或插件,只需用記事本建立一個腳步文件即可,我們可以把這個文件保存在硬碟的任何位置,也可以保存在伺服器上,然後打開Internet選項 - 進入 連接 選項卡 - 點擊區域網選項 - 選中 使用自動配置腳本 選項 - 在地址裡面填入你的文件位置,比如files://d:/goagent.pac ,即可完成配置。
B. oracle資料庫如何每天自動執行腳本完成正式資料庫到備份資料庫的備份
寫個腳本完成正式資料庫到備份資料庫的備份
再設定Task Schele 每天某個時間自動執行這個腳本
C. 如何在dataguard環境做到client的自動切換
如果做通用的方案,需要客戶端自己提供自動重連的能力,這點大多數Java的occi的連接池都有實現。
但這些已有實現大多是對同一連接配置發起重連,所以需要考慮為application提供透明的連接方式,而不讓應用看到具體data guard的多個ip和service name,這就需要做些額外的配置工作。
一種方式通過vip,真實轉發的ip只掛靠在有效資料庫的ip上。這種方式切換發生後,application在斷連的舊connection上發起dml會獲得ORA-3113 "end of file on communication channel"的錯誤,此時application可以嘗試重連機制和新的primary建立連接。
在f5上可以通過設置心跳sql和期望的返回結果內容,以類似ping方式獲取遠端資料庫是否可用,來決定ip是否應該轉發到該物理ip上。
另一種方式是通過設置tns和資料庫的service name來訪問,通過合理設置,甚至可以做到在發生切換時的select操作僅僅被阻塞一會,而不會感覺到資料庫已經完成了主備切換。
設置步驟如下:
1.客戶端的tnsnames.ora中tns配置成
MYAPP =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = HostA)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = HostB)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = myapp)
)
)
2.在primary資料庫運行
begin
dbms_service.create_service("myapp","myapp");
end;
/
begin
DBMS_SERVICE.START_SERVICE("myapp");
end;
/
3.在primary資料庫創建觸發器:
create trigger myapptrigg after startup on database
declare
v_role varchar(30);
begin
select database_role into v_role from v$database;
if v_role = "PRIMARY" then
DBMS_SERVICE.START_SERVICE("myapp");
else
DBMS_SERVICE.STOP_SERVICE("myapp");
end if;
end;
/
解釋下:這個方案的思路就是將兩邊的資料庫的service name都設置成"myapp",當發生切換時,由觸發器在資料庫startup的時候把primary的實例以"myapp"的名字顯示,而把standby的"myapp"服務名給停掉,這樣任何時刻只有主節點顯示名字為"myapp"的服務。
注意這里的plsql都是運行在primary,無需在standby上做任何設置,因為data guard會自動將變化同步到standby資料庫。
通過在primary資料庫運行下面程序,可以讓客戶端在做select的時候甚至意識不到資料庫的切換:
begin
dbms_service.modify_service
("myapp",
FAILOVER_METHOD => "BASIC",
FAILOVER_TYPE => "SELECT",
FAILOVER_RETRIES => 200,
FAILOVER_DELAY => 1);
end;
/
注意如果在切換時有comit的提交事務發生,還是會出現失誤提交失敗,要求回滾的情況。
下面tns是另一種配置方式(類似rac的failover配置思想),使用這種方式,不需要在Oracle server中運行任何plsql腳本,在DESCRIPTION_LIST中的兩個資料庫甚至根本不需要處於data guard中,可以是任意兩個資料庫。driver會按順序遍歷list中的資料庫,一直到能連接上為止。
MYAPP =
(DESCRIPTION_LIST=
(LOAD_BALANCE=off)
(FAILOVER=on)
(DESCRIPTION =(CONNECT_TIMEOUT=5)(TRANSPORT_CONNECT_TIMEOUT=3)(RETRY_COUNT=10)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = myapp1)
)
)
(DESCRIPTION =(CONNECT_TIMEOUT=5)(TRANSPORT_CONNECT_TIMEOUT=3)(RETRY_COUNT=10)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = otherIP)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = myapp2)
)
)
)
這種方式需要注意的地方:
1.jdbc必須走oci的方式,如果為jdbc:thin+tns方式,則會出現
Exception in thread "main" java.lang.: 545
at oracle.NET.nl.NVTokens.parseTokens(Unknown Source)
at oracle.Net.nl.NVFactory.createNVPair(Unknown Source)
其原因在於jdbc的driver本身無法識別這種格式的tns內容。
此時即使以jdbc:thin+tns的方式訪問其他正常的tns也會一樣拋出這個錯誤,因為這導致了jdbc根本無法正確解析整個tnsnames.ora文件。
而jdbc:oci實際上負責解析tnsnames.ora和處理通信的是依賴oci.lib,因此就不存在這個問題。
2.這種配置適用於任何依賴oci通信的客戶端,包括oci,occi,一些基於它們的wrap庫,以及pl/sql developer此類的工具軟體。
3.注意如果連接的資料庫組屬於manually switch的模式,而不是fail down導致的切換,比如tns中的a資料庫是mount狀態,b是primary,而tns的列表順序是先a後b,則會出現盡管客戶端連a時,拋出ORA-0133錯誤,但是不會按順序去嘗試連接b。
原因是在處理這個鏈接時,oci客戶端會嘗試通過listener和service建立連接。
如果listener是關閉的,或者客戶端能連上listener但是找不到對應service,則都會嘗試連接處於第二個的b,但是如果通過listener找到了對端的service,只是無法建立連接(如資料庫處於mount狀態),則此時不會嘗試連接b,而直接會以拋出
ORA-0133:ORACLE initialization or shutdown in progress
終止連接嘗試。
所以在使用這種tns的時候要確保通過tns列表能訪問到的所有資料庫都不會一直處於mount狀態,否則連接它會打斷對後面正常open資料庫的連接嘗試。
這也是為何手動切換的dataguard資料庫,客戶端不能依賴這種tns配置方法做自動切換,因為手動切換的dataguard資料庫狀態肯定是一個open一個mount,如果mount處於tns的列表靠前的位置,在連接它失敗後會拋出ORA-0133異常阻止客戶端嘗試連接正常open的那個資料庫。
D. 按鍵精靈如何自動切換腳本
簡單的思路,
如你把a腳本的啟動鍵設置為f8,終止為f9,
b腳本的啟動鍵設置為f10,終止為f11
編寫第三個腳本控制這兩個腳本,思路如下:
循環開始
按鍵f8,啟動a腳本
延時1800秒,即30分鍾
按鍵f9終止a腳本,按鍵f10,啟動b腳本
延時1800秒
循環終止
E. 實現WEB伺服器當機子自動切換到備用WEB伺服器上面!
看你怎麼訪問你的web了,如果是ip地址訪問,做的麻煩點,需要1,2上面都做設置
如果是域名訪問,可以用dns來解決,需要有宕機檢測
以上是網路解決,要不就多一個網卡做心跳線互聯,自己寫腳本
F. 求個自動在2個窗口之間切換的腳本。前台後台無所謂,一定要是按鍵精靈
你只要錄制就行了
再把延時DELAY改成1000
就是點錄制之後先點一下第一個窗口,過一秒再點第二個窗口,然後保存