- Ubuntu 一日遊專區 -鉅細靡遺的 Ubuntu 百科
- Ubuntu 常用技巧 - 整理出常用的許多功能
- Ubuntu 使用手冊 - 官方 man page
- Ubuntu 部屬雲端 - 實作教學十分清楚用心
- Ubuntu 增加靜態路由 - 常常有 Ubuntu 完整測試與教學
2010年10月14日
Ubuntu 網頁分享
一些不錯的 Ubuntu 網頁分享給大家:
2010年9月27日
平行連接埠驅動程式服務無法啟動
我真的是有某種程度上的軟體、設定潔癖。目前手邊的主機無論伺服器或一般 PC,多多少少都還存在像是 COM1、COM2、平行連接埠 ( 印表機用 )、MIDI 埠等八百年都不會用到的埠。
我的做法是:直接進主機板的 BIOS 將它們通通 Disable。徹底讓他們斷電、無法執行、不佔用我一絲一毫的資源。然而,這樣的做法,會導致 Windows 系列的機器,開機的過程中出現"一個開機服務無法執行"、"請查看事件檢視器"、"平行連接埠驅動程式服務無法啟動"等類似的訊息。
以下是解決平行連接埠(Parallel Port)誤判的方法:
2 > 自動。這是預設值。
3 > 手冊。
4 > 停用。
參考資料:The Parallel port driver service failed to start
我的做法是:直接進主機板的 BIOS 將它們通通 Disable。徹底讓他們斷電、無法執行、不佔用我一絲一毫的資源。然而,這樣的做法,會導致 Windows 系列的機器,開機的過程中出現"一個開機服務無法執行"、"請查看事件檢視器"、"平行連接埠驅動程式服務無法啟動"等類似的訊息。
以下是解決平行連接埠(Parallel Port)誤判的方法:
- 按一下 > 開始 > 執行 > 輸入 regedit 然後按下確定。
- 找出並點選下列登錄子機碼:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Parport
- < 開始 > 項上按一下滑鼠右鍵,然後再按 [修改 ]。[ 數值資料 ] 方塊中鍵入 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
COLUMN NAME FORMAT A50
SELECT FILE, STATUS, NAME FROM V$DATAFILE
ALTER DATABASE DATAFILE 'D:\ORACLE\ORADATA\DB_NAME\MONEY_Y.DBF' OFFLINE
在作業系統中將 "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'
ALTER DATABASE DATAFILE 'D:\ORACLE\ORADATA\DB_NAME\MONEY.DBF' ONLINE
如遇到錯誤,則先 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
方法二:
ALTER TABLESPACE MONEY OFFLINE
SELECT NAME, STATUS FROM V$DATAFILE;
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
ALTER TABLESPACE MONEY RENAME DATAFILE 'D:\ORACLE\ORADATA\DB_NAME\INDX01.DBF' TO 'D:\ORACLE\ORADATA\DB_NAME\MONEY01.DBF'
ALTER TABLESPACE MONEY ONLINE
SELECT NAME, STATUS FROM V$DATAFILE;
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;
DROP MATERIALIZED VIEW DESTINATION.TPE_ABC;
CREATE MATERIALIZED VIEW LOG ON SOURCE.ABC
TABLESPACE SOURCE_MLOG
WITH PRIMARY KEY;
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;
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;
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 當資料有異動時寫入
訂閱:
文章 (Atom)
