如何用php实现两个Oracle数据库同步功能?
发布网友
发布时间:2022-04-08 04:06
我来回答
共3个回答
懂视网
时间:2022-04-08 08:27
function Query($sql,$prms){
$db = " (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = XXX)(PORT = 1521)) (CONNECT_DATA = (SID=orcl) (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) )";
$db_uname = "xxx";
$db_upass = "XXXXXX";
$conn = oci_connect($db_uname, $db_upass, $db);
$stmt = oci_parse($conn, $sql);
if(is_array($prms)){
foreach ($prms as $key => $val){
oci_bind_by_name($stmt, $key, $val);
}
}
oci_execute($stmt, OCI_DEFAULT);
$rownum = oci_fetch_all($stmt, $result);
oci_free_statement($stmt);
oci_close($conn);
return $result;
}
function BeginTran(){
$db = " (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = XXX)(PORT = 1521)) (CONNECT_DATA = (SID=orcl) (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) )";
$db_uname = "xxx";
$db_upass = "xxx";
$conn = oci_connect($db_uname, $db_upass, $db);
return $conn;
}
function CloseConn($conn){
oci_close($conn);
}
function Commit($conn){
oci_commit($conn);
CloseConn($conn);
}
function RollBack($conn){
oci_rollback($conn);
CloseConn($conn);
}
?>
<?php
require ‘db.php‘;
// $res = Query("select * from customerinfo where rownum < 100", null);
// for($i = 0;$i< 99;$i++){
// foreach ($res as $data){
// echo $data[$i];
// }
// }
$sql = "insert into hostparam (paramtype,paramvalue) values (:ptype,:pval)";
$conn = BeginTran();
$num = 0;
try {
$stmt = oci_parse($conn, $sql);
$ptype = "1";
$pval = "2";
oci_bind_by_name($stmt, ":ptype", $ptype);
oci_bind_by_name($stmt, ":pval", $pval);
oci_execute($stmt,OCI_DEFAULT);
$num = oci_num_rows($stmt);
Commit($conn);
} catch (Exception $e) {
RollBack($conn);
}
echo $num;
?>
php实现oracle操作
标签:
热心网友
时间:2022-04-08 05:35
你是希望用PHP代码实现同时写两个数据库还是希望只是两个数据库的数据一致?如果仅是希望数据库数据数据一至,oracle自带的机制就能实现。如果是想自己编程实现同时两个数据库的操作,也方便,PHP在链接不同数据库实例时,会得到不同的链接句柄,在后面具体操作时,同时对这两个链接句柄操作就行了,但这样存在数据不完全一致的风险,必须校验,这样又拖慢了速度。
演示代码如下:
echo "<br /><b>演示多数据库克隆操作(多数据库同时写操作)</b><br />";
$this->loadModel('student.php',1);
//如果两个不同数据库服务器的表对象结构完全一致,则不必重复载入表对象定义文件,只需要在实例化时指定服务器id就行了。
//$this->loadModel('student.php',2);
$this->loadModel('student2.php',2);
$student1=new Tstudent(1);
$student2=new Tstudent2(2);
$student3=new Tstudent(2);
$student2->cloneFrom($student1);
$student3->cloneFrom($student1);
$student1->uuid='999';
$student1->id='999';
$student1->name='测试克隆人';
//如果进行了主对象的克隆操作,则在完成主对象数据持久化后,所有的子对象将会同步插入数据。
$student1->insert();
热心网友
时间:2022-04-08 06:53
同步的数据多吗?是按日同步还是由操作员手动时间同步?
自动同步方式:
两个Oracle实例间的数据同步,如果网络通的话,可以使用DBLink来实现,添加一个Oracle Job,设定多长时间进行同步一次,写个存储过程就可以。
手动同步方式:
可以在表中添加一个状态值,未同步时,设定为0,用户手动同步时(比如点击同步按钮),将此状态改为1,由Job间隔多长时间去读取这个值,如果为1的话,进行同步,同步完毕后,改为2即可。
如果数据量比较小的话就无所谓了,使用JDBC方式同步和DBLink方式没什么区别了追问是要实现自动同步,数据量也比较大。能不能给出一个更具体一些的方案,或者网上有没有类似的案例啊?
追答
如果数据量比较大的话,就不能使用JDBC方式了。首先要保证两个DB机器间进行可以进行通信
紧耦合的方式
在同步的数据库实例中创建 DBLink (用法可以百度一下),这样两个数据库间的表就可以互相访问了,至于同步的方式,就是 select 或者 update 什么的,写个存储过程就OK了。
松耦合的方式
这样可以会比较麻烦点(适用于两个机器间不能正常通信的情况下),将源表中的数据导出到文件,然后将文件中传到目标机器上,使用sqlloader进行导入即可。
有不清楚的可以留下你的联系方式,再沟通
php可以同时连接mysql和oracle两个数据库吗
可以的,你在配置文件上分别赋值,conn1 conn2,然后执行sql语句的时候,想要调用哪个数据库你就选择哪个
PHP如何连接oracle数据库
首先你要在php.ini文件中找到 extension=php_oci8.dll 前面的注释符号“;”去掉,使php能够加载支持oracle的模块;下面的代码是调试通过的,可直接使用的: <?php dbconn=OCILogon("root","pass","(DESCRIPTION=(ADDRESS=(PROTOCOL =TCP)(HOST=远程IP)(PORT = 1521))(CONNECT_DATA =(SID=GZXNCW...
php,pdo怎么连接oracle数据库
php有强大的功能不但可以支持mysql,mssql,mysqli之个我们还可以与oracle数据连接,要让php支持oracle非常的简单我们只要把php.ini中的;extention = php_oci8.dll分号去掉即可.请先安装oracle的客户端,能够用客户端访问oracle。php支持oracle连接函数 php.ini文件中的配置,去掉 ;extention = php_oci8.dll,...
如何用帆软连接远程的oracle数据库
有两种方式:新建数据库,选择JDBC方式连接,然后选择数据库类型,选择驱动器,修改URL 下载第三方jar包,需要使用连接access数据库的第三方jdbc驱动;新建数据库,选择JDBC方式连接,选择数据库类型,选择驱动器,修改URL;连接池属性;点击连接池属性可设置该JDBC数据连接的连接池配置,详细请查看JDBC连接池属...
我安装了一个Oracle配置了一个数据库.现在需要再配置一个数据库,需要再...
Oracle软件只需要安装一次就可以了,如果再配置一个数据库的话 只需要dbca创建数据库就ok了
php连接oracle数据库oci_connect函数问题
resource oci_connect ( string $username , string $password [, string $db [, string$charset [, int $session_mode ]]] )其中第三个参数 $db 在Oracle中叫:本地Net服务名,是存储在 tnsnames.ora中的,典型的如下:SALES = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP...
php中连接oracle的代码怎么写
oci_connect("cxuser","caixun","caixun"); 最后一个参数是数据库名,如果你不是远程的,就不用写,直接用""就可以了
pdo是什么
1. 跨数据库支持:PDO支持多种数据库系统,如MySQL、Oracle、SQLite等。开发者可以根据项目需求选择合适的数据库系统,而无需担心代码兼容性问题。2. 抽象化层:PDO提供了一个抽象的数据访问层,使得开发者可以使用标准的SQL语法来操作数据库。这使得代码更加简洁、易于维护。3. 预处理语句:PDO支持预...
php中怎么配置支持oracle 11g数据库
1、安装oracle 11g client或instantclient 11 2、编译php支持oracle --with-oci8[=DIR]--with-pdo-oci[=DIR]3、配置php.ini支持oracle 11g windows:extension=php_oci8_11g.dll linux:参考 http://www.oracle.com/technetwork/articles/technote-php-instant-084410.html 4、ora.php实例 <?php con...
用PHP操纵Oracle的LOB类型的数据
php //建立Oracle数据库连接 $conn = OCILogon($user $password $SID); //提交SQL语句给Oracle //在这里要注意的两点 一是用EMPTY_BLOB()函数 这是Oracle的内部函数 返回一个LOB的定位符 在插入LOB时 只能用这个办法先生成一个空的LOB定位符 然后对这个定位符进行操作 EMPTY_BLOB()函数是针对BLOB...