Used *every day* to replicate the records contained in Oracle database. Then use the data for local procedures. Triggered by Windows Task Scheduler 
ofc the destination table fields equal with source table
ofc the destination table fields equal with source table
JavaScript:
//import.php
<?php
ini_set('SMTP', 'your.customer.smtp.com');
ini_set('smtp_port', 25);
//set infinite for timeout
set_time_limit(0);
require_once "general.php";
//hold the start time
$time_start = microtime(true);
//connect to source dbase
$oracle = new dbase();
$oracle->connect_oracle();
//connect to destination dbase
$mysql = new dbase();
$mysql->connect_mysql();
//construct today for Oracle
$today = date("d-M-Y");
$three_months_back = date('d-M-Y', strtotime("-90 days"));
$q ="select * from owner.table where 1=1 and ((close_date between TO_DATE('{$three_months_back}','dd-MON-yy')
and TO_DATE('{$today}','dd-MON-yy')) or (update_date between
TO_DATE('{$three_months_back}','dd-MON-yy') and TO_DATE('{$today}','dd-MON-yy'))";
//get the recordset by source dbase
$src_rows = $oracle->getSet($q, null);
//delete the old rows from destination dbase
$mysql->executeSQL("TRUNCATE oReplica", null);
////////////////////CONSTRUCT *INSERT INTO* STATEMENT [START]
//get source *column names* from first row
$insert_cols="";
$insert_vals="";
$src_cols = array();
foreach ($src_rows[0] AS $key => $value)
{
$insert_cols.="{$key}, ";
$insert_vals.=":{$key}, ";
//used to line 73
$src_cols[] = $key;
}
//remove ", "
$insert_cols = substr($insert_cols, 0, strlen($insert_cols)-2);
$insert_vals = substr($insert_vals, 0, strlen($insert_vals)-2);
//construct the SQL
$insert_sql = "INSERT INTO oReplica ({$insert_cols}) VALUES ({$insert_vals})";
////////////////////CONSTRUCT *INSERT INTO* STATEMENT [END]
//prepare the SQL to destination connection
if ($stmt = $mysql->getConnection()->prepare($insert_sql)){
//for each source row
foreach($src_rows as $row) {
//for each field in the row
foreach($src_cols as $fieldname)
$stmt->bindValue(":{$fieldname}" , (string) $row["{$fieldname}"]);
//execute the prepared statement
$stmt->execute();
if($stmt->errorCode() != "00000"){
echo $stmt->errorCode();
exit;
}
}
}
//hold end time
$time_end = microtime(true);
//dividing with 60 will give the execution time in minutes other wise seconds
$execution_time = ($time_end - $time_start)/60;
//execution time of the script
$mail_body = '[B]Total Execution Time:</b> '.$execution_time.' mins</br></br>';
//send mail
sendMail("your.mail@x.com", "Oracle Replica Report", $mail_body);
function sendMail($recipient_mail, $subject, $body)
{
$headers = "From: x@x.com\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=utf-8\r\n";
$message = '<html><body>';
$message .= $body;
$message .= '</body></html>';
//enable UTF8 on mail subject - http://www.xpertdeveloper.com/2013/05/set-unicode-character-in-email-subject-php/
$updated_subject = "=?UTF-8?B?" . base64_encode($subject) . "?=";
if (mail($recipient_mail, $updated_subject, $message, $headers)) {
return true;
} else {
return false;
}
}
JavaScript:
//general.php
<?php
class dbase{
private $db;
function connect_mysql() {
$mysql_hostname = "localhost";
$mysql_user = "root";
$mysql_password = "";
$mysql_database = "";
$this->db = new PDO("mysql:host=$mysql_hostname;dbname=$mysql_database", $mysql_user, $mysql_password,
array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC));
}
function connect_oracle() {
$server = "server";
$db_username = "x";
$db_password = "x";
$sid = "x";
$port = 0;
$dbtns = "(DESCRIPTION=(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = {$server})(PORT = {$port})))(CONNECT_DATA=(SID={$sid})))";
$this->db = new PDO("oci:dbname=" . $dbtns . ";charset=utf8", $db_username, $db_password, array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC));
}
function connect_sqlite() {
//if doesnt exist, will created.
$this->db = new PDO('sqlite:dbase.db');
//check if table has records, if not create table
$d = getScalar("select count(*) from users",null);
if ($d==0)
{
executeSQL("CREATE TABLE [users] (user_id INTEGER PRIMARY KEY, user_mail TEXT, user_password TEXT, user_level INTEGER)", null);
executeSQL("your other tables here?",null);
//read&write only server (user cant download the dbase)
chmod("dbase.db", 0600);
}
}
function getConnection(){
return $this->db;
}
function getScalar($sql, $params) {
if ($stmt = $this->db -> prepare($sql)) {
$stmt->execute($params);
return $stmt->fetchColumn();
} else
return 0;
}
function getRow($sql, $params) {
if ($stmt = $this->db -> prepare($sql)) {
$stmt->execute($params);
return $stmt->fetch();
} else
return 0;
}
function getSet($sql, $params) {
if ($stmt = $this->db -> prepare($sql)) {
$stmt->execute($params);
return $stmt->fetchAll();
} else
return 0;
}
function executeSQL($sql, $params) {
if ($stmt = $this->db -> prepare($sql)) {
$stmt->execute($params);
return $stmt->rowCount();
} else
return false;
}
}