Post Jobs

Plus复制遗留的Oracle数据表,Oracle中安全可靠的复制问题的说明

一个简单的自动发送邮件系统
这里介绍php和mysql结合起来实用。如何从mysql数据库中提取数据。
好,我们已经成功的完成了我们的要求,很多的数据已经存在了数据库中,现在的问题是,如何查询这些数据,得到有用的结果呢?
在下面的程序中,我们将选择apple的用户输出。
——————————————————– ? /*
声明一些必须的变量*/ $hostname = yourhostname; $username =
yourusername; $password = yourpassword; $userstable = information;/*
使用MySQL建立的数据表存取信息*/ $dbName = yourdbname; /*
与数据库连接*/ MYSQL_CONNECT($hostname, $username, $password) OR
DIE(Unable to connect to database); @mysql_select_db( $dbName) or die(
Unable to select database);/* 选择所有“apple”用户*/ $query = SELECT *
FROM $userstable WHERE (preference LIKE ‘Apples’) ; $result =
MYSQL_QUERY($query); /* 统计有多少这样的用户*/ $number =
MYSQL_NUMROWS($result); /* 输出结果*/ $i = 0; IF ($number == 0) :
PRINT CENTERPNobody in the database prefers Apples!/CENTER; ELSEIF
($number 0) : PRINT CENTERPUsers preferring Apples: $numberBRBR; WHILE
($i $number): $name = mysql_result($result,$i,name); $email =
mysql_result($result,$i,email); PRINT Visitor $name likes Apples.BR;
PRINT Email address: $email.; PRINT BRBR; $i++; ENDWHILE; PRINT /CENTER;
ENDIF; ? ——————————————————–
将他存为apples.php3 解释说明:一些新用到的函数: 1、$number =
MYSQL_NUMROWS($result); 语法:int mysql_num_rows(string result);
・result从函数mysql_query中返回的数组记录。 ・返回存在$result中的行数。
2、$name = MYSQL_RESULT($result,$i,name);语法: int mysql_result(int
result, int i, column); 这个函数将分离记录,将每一条赋值给变量。
・$result是指中的数组结果。 ・$i是指数据的行。
・column是指mysql数据表中列的名字。也可以使用变量。
因此使用一个简单的while循环,我们就能很容易的将数据输出给浏览器。

使用现成的Oracle技术来建立分布式系统。

你可能运行的是Oracle 10g Release
2数据库服务器,但是需要支持某些应用程序可能是很早之前写好的。在Oracle
8i之前的版本创建的数据表常用LONG数据类型来存储大型文本。 随着Large
Object数据类型的引入,LONG和LONG
RAW数据类型就被抛弃了。假如你要复制使用了LONG数据类型的数据表,那么使用CREATE
TABLE AS SELECT语法将不能完成任务,这时将会返回错误:ORA-00997: illegal
use of LONG 数据类型。
你可以导出该表然后再导入它,但是这样要做大量的工作。SQL*PLUS中的COPY命令仍然可以使用一条命令来完成对此类数据表的复制。下面是使用COPY命令的格式:
COPY FROM user/pw@dblink TO user/pw@dblink CREATE tablename – USING
select-statement;

复制包括使一个分布式系统中跨多个数据库的一些或所有应用程序数据保持同步。在本栏目中,我将解释为什么你需要使用复制功能,并描述一些可以用来实现复制功能的Oracle技术。

不过在Oracle
8.0版本COPY命令的功能被冻结,因为它只能复制有下列数据类型组成的数据表:CHAR,DATE,LONG,NUMBER和VARCHAR2。在8i版本中增加了新的数据类型而后者不支持,这完全是一个继续的方法。
SQL CREATE TABLE my_views AS 2 SELECT * FROM user_views; SELECT *
FROM user_views * ERROR at line 2: ORA-00997: illegal use of LONG
datatype SQL SET LONG 100000 SQL COPY FROM hr/hr@orcl CREATE my_views –
USING select * from user_views; Array fetch/bind size is 15.
(arraysize is 15)Will commit when done. (copycommit is 0) Maximum long
size is 100000. (long is 100000) Table MY_VIEWS created. 1 rows
selected from hr@orcl. 1 rows inserted into MY_VIEWS. 1 rows committed
into MY_VIEWS at DEFAULT HOST connection. SQL descmy_views; Name
Null? Type ———————- ——————- ——– ——-
——————— VIEW_NAME NOT NULL VARCHAR2(30) TEXT_LENGTH
NUMBER(38) TEXT LONG TYPE_TEXT_LENGTH NUMBER(38) TYPE_TEXT
VARCHAR2(4000) OID_TEXT_LENGTH NUMBER(38) OID_TEXT VARCHAR2(4000)
VIEW_TYPE_OWNER VARCHAR2(30) VIEW_TYPE VARCHAR2(30) SUPERVIEW_NAME
VARCHAR2(30) SQL spool off

你需要设计一个具备复制功能的系统有以下几个原因:

列表A

远程数据访问需要很大的网络带宽;

列表A中演示了使用CREATE TABLE时的错误和成功使用COPY命令的方法。

网络延迟会导致你的应用程序运行得非常慢;

一个单一站点的故障或崩溃会导致令人无法接受的服务失效;

需要对特定数据的本地所有权和控制。

数据和性能

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章

网站地图xml地图