2011-08-24 142 views
1

我們有一個應用程序,它收集來自各種網絡設備的日誌並將其保存在MySQL數據庫中。這每10分鐘發生一次。 MySQL數據庫保存了一週的日誌。將數據轉發到Oracle數據庫

是否有可能使MySQL將這些日誌轉發到Oracle數據庫如果任何日誌消息符合某些標準?例如,如果行以「ABC」開頭,則MySQL應該轉發所有日誌。

可以這樣做嗎?

+2

「前進」究竟如何? ...我想說這需要一個位於數據庫之間的應用程序,並進行數據傳輸 –

回答

1

MySQL不會爲你做。但是,您可以使用腳本來自動執行此過程。

您可以使用mysqldump實用程序獲取符合您的條件以便導出到Oracle的記錄。像這樣的東西(代替你的數據庫用戶,數據庫密碼,「ABC」列名,數據庫名和表名):

mysqldump --user=DBUSER --password=DBPASS --compatible=oracle 
    --no-create-db --no-create-info 
    --where="log_line LIKE 'ABC%'" 
    --result-file=sql_for_oracle.sql 
    DATABASE_NAME TABLE_NANE 

然後你可以使用sqlplus在Oracle導入sql_for_oracle.sql到Oracle。

2

這裏是做的一種方式(我的工作主要是與甲骨文,所以編程上的Oracle側):

  1. 創建從Oracle DB連接到MySQL。使用DB鏈接Oracle 可以讀取mySQL數據庫中的表。這需要Heterogeneous Services
  2. 設置一個Oracle作業,該作業讀取MySQL表並在Oracle 表中插入記錄。該作業執行SQL看起來類似於此:

    INSERT INTO oracle_log_table (field1, field2, field3)
    SELECT field1, field2, field3
    FROM mySQL_link.mysql_log_table
    WHERE mySQL_link.mysql_log_table.line LIKE "ABC%"
    AND _expression to check that the line is new_;