2010年9月27日

平行連接埠驅動程式服務無法啟動

我真的是有某種程度上的軟體、設定潔癖。目前手邊的主機無論伺服器或一般 PC,多多少少都還存在像是 COM1、COM2、平行連接埠 ( 印表機用 )、MIDI 埠等八百年都不會用到的埠。

我的做法是:直接進主機板的 BIOS 將它們通通 Disable。徹底讓他們斷電、無法執行、不佔用我一絲一毫的資源。然而,這樣的做法,會導致 Windows 系列的機器,開機的過程中出現"一個開機服務無法執行"、"請查看事件檢視器"、"平行連接埠驅動程式服務無法啟動"等類似的訊息。

以下是解決平行連接埠(Parallel Port)誤判的方法:

  1. 按一下 > 開始 > 執行 > 輸入 regedit 然後按下確定。
  2. 找出並點選下列登錄子機碼:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Parport
  3. < 開始 > 項上按一下滑鼠右鍵,然後再按 [修改 ]。[ 數值資料 ] 方塊中鍵入 4,再按 [ 確定 ]
  4. 結束登錄編輯程式。
開始可以使用下列的值:
2 > 自動。這是預設值。
3 > 手冊。
4 > 停用。

參考資料:The Parallel port driver service failed to start

2010年9月23日

Oracle Datafile Rename 資料檔案更名筆記

方法一:

SELECT TABLESPACE_NAME, STATUS FROM DBA_TABLESPACES
先查詢 TABLESPACE 狀態

COLUMN NAME FORMAT A50
格式化輸入結果

SELECT FILE, STATUS, NAME FROM V$DATAFILE
查詢 DATEFILE 狀態

ALTER DATABASE DATAFILE 'D:\ORACLE\ORADATA\DB_NAME\MONEY_Y.DBF' OFFLINE
將 DATAFILE 離線

在作業系統中將 "MONEY_Y.DBF" 重新命名為 "MONEY.DBF"

ALTER DATABASE RENAME FILE 'D:\ORACLE\ORADATA\DB_NAME\MONEY_Y.DBF' TO 'D:\ORACLE\ORADATA\DB_NAME\MONEY.DBF'
重新設定 DATAFILE 路徑

ALTER DATABASE DATAFILE 'D:\ORACLE\ORADATA\DB_NAME\MONEY.DBF' ONLINE
將 DATAFILE 啟用

如遇到錯誤,則先 RECOVER DATAFILE 再重新啟用即可
SELECT * FROM V$RECOVER_FILE
RECOVER DATAFILE 'D:\ORACLE\ORADATA\DB_NAME\MONEY.DBF'
ALTER DATABASE DATAFILE 'D:\ORACLE\ORADATA\DB_NAME\MONEY_Y.DBF' ONLINE

SELECT FILE, STATUS, NAME FROM V$DATAFILE
確認 DATEFILE 狀態

方法二:

ALTER TABLESPACE MONEY OFFLINE
將 TABLESPACE 離線

SELECT NAME, STATUS FROM V$DATAFILE;
查詢 DATEFILE 狀態

NAME                                     STATUS
---------------------------------------- -------
/ORACLE/HRASMUSS/DATA/DISK1/SYSTEM01.DBF SYSTEM
/ORACLE/HRASMUSS/DATA/DISK2/RBS01.DBF    ONLINE
/ORACLE/HRASMUSS/DATA/DISK3/DATA01.DBF   ONLINE
/ORACLE/HRASMUSS/DATA/DISK2/TEMP01.DBF   ONLINE
/ORACLE/HRASMUSS/DATA/DISK2/INDX01.DBF   ONLINE
/ORACLE/HRASMUSS/DATA/DISK3/OEMREP01.DBF ONLINE
/ORACLE/HRASMUSS/DATA/DISK1/QUERY01.DBF  ONLINE
/ORACLE/HRASMUSS/DATA/DISK4/DATA01.DBF   ONLINE
/ORACLE/HRASMUSS/DATA/DISK5/DATA02.DBF   ONLINE
/ORACLE/HRASMUSS/DATA/DISK3/INDX01.DBF   OFFLINE
10 ROWS SELECTED.

SQL> !MV $HOME/DATA/DISK3/INDX01.DBF $HOME/DATA/DISK6/INDX01.DBF
在作業系統中將 "INDX01.DBF" 重新命名為 "INDEX01.DBF"

ALTER TABLESPACE MONEY RENAME DATAFILE 'D:\ORACLE\ORADATA\DB_NAME\INDX01.DBF' TO 'D:\ORACLE\ORADATA\DB_NAME\MONEY01.DBF'
重新設定 DATAFILE 路徑

ALTER TABLESPACE MONEY ONLINE
將 DATAFILE 啟用

SELECT NAME, STATUS FROM V$DATAFILE;
確認 DATEFILE 狀態

Oracle Simple Replication 筆記

本篇為簡單的 Oracle 資料表同步設定,自己做個紀錄以免日後又忘記,讓資料庫專家們見笑了。目標是將 Source 資料庫中的 ABC 資料表同步到 Destination 資料庫中,並給予一個資料表名稱 TPE_ABC。隨後建立 Trigger 當 TPE_ABC 資料有異動時,將資料寫入另外一個總資料表 ALL_ABC。

DROP SNAPSHOT LOG ON SOURCE.ABC;
丟棄來源資料庫的 SNAPSHOT LOG

DROP MATERIALIZED VIEW DESTINATION.TPE_ABC;
丟棄目的端資料庫的 DROP MATERIALIZED VIEW

CREATE MATERIALIZED VIEW LOG ON SOURCE.ABC
TABLESPACE SOURCE_MLOG
WITH PRIMARY KEY;
在來源資料庫建立 MATERIALIZED VIEW LOG

CREATE MATERIALIZED VIEW DESTINATION.TPE_ABC
TABLESPACE TPE
NOLOGGING
BUILD DEFERRED
USING INDEX TABLESPACE TPE_I
REFRESH FAST
NEXT SYSDATE + 1/2
WITH PRIMARY KEY
AS SELECT
A, B, C, D,
ROWID AS SOURCE_ROWID
FROM SOURCE.ABC@SOURCE_DATABASE;
由來源資料庫建立 MATERIALIZED VIEW

CREATE TRIGGER "DESTINATION"."TR_TPE_ABC"
AFTER INSERT OR UPDATE OR DELETE OF
"A", "B", "C", "D"
ON "DESTINATION"."TPE_ABC"
FOR EACH ROW
BEGIN

IF ( DELETING OR UPDATING ) THEN
DELETE ABC WHERE SOURCE_DB = 'SOURCE_DATABASE'
AND A = :OLD.A;
END IF;

IF INSERTING OR UPDATING THEN
INSERT INTO ALL_ABC
( A, B, C, D, SOURCE_DB, SOURCE_ROWID, REC_SEQ_NO)
VALUES
( :NEW.A, :NEW.B, :NEW.C, :NEW.D, 'SOURCE_DATABASE', :NEW.SOURCE_ROWID, SEQ_SOURCE_DATABASE.NEXTVAL);
END IF;
建立 Trigger 當資料有異動時寫入

Search My Blog