首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 数据库 第二书店 程序员

Tag/ 


共2520个网摘 [ 1  2  3  4  5  6  7  8  9  10  11 ... 84 ]  上一页 | 下一页  |  

数据库的查询优化技术

aini3345365收录,使用标签:数据库,时间:2008-7-28 11:01:46 | 相关网摘我也收藏

部门最为重要的计算机应用之一。从大多数系统的应用实例来看,查询操作在各种数据库操作中所占据的比重最大,而查询操作所基于的SELECT语句在SQL语句中又是代价最大的语句。举例来说,如果数据的量积累到一定的程度,比如一个银行的账户数据库表信息积累到上百万甚至上千万条记录,全表扫描一次往往需要数十分钟,甚至数小时


掌握 Facebook 应用程序开发: 安装设置组件

xuejinyoulan收录,使用标签:数据库,时间:2008-7-28 10:35:41 | 相关网摘我也收藏

来源:developer works 中国
使用 PHP 和 Java™ 编程语言开发一个 Facebook 应用程序。本教程先带您初步了解 Facebook 的概况,然后一步步向您介绍创建一个 Facebook 应用程序所需组件的安装过程。接着,您将会进一步了解 Facebook,尤其是与如何将您的应用程序集成到站点中有关的方面。最后,您将安装设置完成一个空的框架应用程序作为后续工作的开始。在本系列的第 2 部分和第 3 部分中,您将了解如何开发您在第 1 部分中创建的应用程序。

预备知识

本教程面向那些使用 PHP、Java 语言、Javascript、HTML/CSS、以及一种关系数据库进行网站开发,并且具备一定经验的开发人员。他们希望更近一步地了解初露端倪的 Facebook 应用程序的开发。您将学习到 Facebook 本身、它为应用程序所提供的各种不同的结合点、Facebook 社您的应用程序是如何相互沟通的、以及如何使用 Facebook 的应用程序接口开发有用的和交互式的行为。


【原创】1亿动态pv/天的超级数据库缓存解决方案,开源了,还有测试代码。作者KK

nokxxxxx收录,使用标签:数据库,时间:2008-7-25 22:23:09 | 相关网摘我也收藏

1亿动态pv/天的超级数据库缓存解决方案,开源了,还有测试代码。作者KK


在DB2中创建第一个触发器

efan101收录,使用标签:DB2, 数据库, 触发器,时间:2008-7-24 16:17:31 | 相关网摘我也收藏

db2数据库中的触发器创建-----基础篇


使用链接服务器在异构数据库中查询数据

xuejinyoulan收录,使用标签:数据库,时间:2008-7-22 13:14:03 | 相关网摘我也收藏

出处:博客园
SQL Server提供了链接服务器用于分布式查询异构数据库。通过链接服务器可以链接到Oracle、Sybase、DB2、SQL Server等大型关系数据库,也可以连接到Access、Excel等文件数据库,甚至可以连接到目录服务(AD)、索引服务等。要链接到一种数据库需要使用相应的接口。微软为很多数据库提供了驱动接口,所以可以直接使用,但是对于没有提供驱动的数据库比如Sybase,则需要在服务器上安装对应数据库厂商提供的驱动。

  使用SSMS或者使用T-SQL语句配置成功链接服务器后便可通过:

  [服务器名].[数据库名].[架构名].[对象名] 的形式来访问数据库。

例如要访问Oracle数据库中的一个表,则对应的查询语句是:

SELECT *
  FROM ORA..MARY.ORDERS
  WHERE ORDERCODE='20080808008'

  其中ORA是链接服务器名,MARY是用户架构名,ORDERS是表或视图名。运行查询SQL Server将返回查询的结果。

  但是当Oracle中的这个表数据量较大,比如有几十万行或者几百万行时,这个查询将会耗费很长时间。在SQL Server中运行该脚本可能要等上10秒、20秒或者1分钟、5分钟才可能查询出结果。但是如果将脚本在Oracle服务器上直接运行,则1秒钟不到就查询出结果了。造成这种情况的是SQL Server查询链接服务器的机制。

  不同的数据库对应的SQL语言是有所不同的。而对于Oracle数据库,通过链接服务器查询数据时,SQL Server为了保证T-SQL语句能够正常使用,但是Oracle数据库可能不认识这些T-SQL语句,所以SQL Server将会把查询中所用到的Oracle表数据从Oracle数据库读出来,一直到满足查询条件为止。对于代码16.18中的查询,SQL Server会将Oracle数据库中的ORDERS表全部读取到SQL Server数据库中,一边读取一边查找ORDERCODE = '20080808008'的数据,直到全部数据读取完为止。对于上十万百万级的数据表来说,全部读取数据当然会造成系统缓慢。如果将上面的查询修改为如下的方式,则可能速度会快上很多。 

SELECT TOP 1 *
  FROM ORA..MARY.ORDERS
  WHERE ORDERCODE='20080808008'

  这是因为SQL Server从Oracle中顺序的读取ORDERS 表,一边读取一边比较ORDERCODE='20080808008'一旦查找到了结果,由于我们写了TOP 1,所以系统判断满足条件了,就将结果返回,而不需要再继续向Oracle读取剩下的数据。但是这样做按照概率来说也要查一半的数据才能找到结果,仍然很慢。

  SQL Server为了解决这个问题,提供了OPENQUERY函数用于将查询语句直接送到链接服务器中,由链接服务器的数据库引擎负责查询,而不是由SQL Server将全部数据读取到本地来查询。OPENQUERY函数的语法格式为:

OPENQUERY ( linked_server ,'query' )

  其中linked_server表示链接服务器名称的标识符。'query'在链接服务器中执行的查询字符串。该字符串的最大长度为8KB。于是上面的查询我们可以改写为如下的形式:

SELECT *
  FROM OPENQUERY(ORA,
  'SELECT * FROM MARY.ORDERS WHERE ORDERCODE=''20080808008''')

  这样条件查询将会在Oracle数据库中运行,Oracle将查询的结果返回给SQL Server,然后SQL Server再将结果返回给用户。


多种备份方式下的数据库恢复问题

efan101收录,使用标签:DB2, 数据库, 备份, 恢复,时间:2008-7-22 11:27:01 | 相关网摘我也收藏

用联机全备,增量备份,delta增量备份恢复数据库的步骤。


DECIMAL转字符型如何去掉多余的0

efan101收录,使用标签:DB2, 数据库, 类型转换,时间:2008-7-22 11:00:09 | 相关网摘我也收藏

将decimal型转化为字符型时,cast(decimalnum as char(N))可以去掉结果两边多余的0。


微软收购Zoomix公司加强SQL Server数据库

xuejinyoulan收录,使用标签:数据库,时间:2008-7-21 14:43:26 | 相关网摘我也收藏

 来源:PConlin科技动态

前些天,微软证实同意收购Zoomix公司,这家以色列的小公司为微软提供数据质量(data-quality)支持,以促进SQLServer服务器业务。

  尽管从六月份初开始,业界一直流传微软将收购Zoomix公司,但微软一直没有透露收购案的具体内容。据Zoomix公司官方网站提供的信息,Zoomix公司的加速器软件结合语义和语言分析,对机械的知识进行分类、匹配并使复杂的企业数据标准化。公司的主要客户是美国、欧洲和中东地区垂直市场的制造、分发、销售和金融企业。

  微软公共关系公司表示,微软计划把Zoomix的数据质量技术整合进它未来发布的SQLServer数据库中。Zoomix公司的开发团队将加入微软在以色列的SQLServer服务器研究开发中心。

  软件卖主提供的数据库、商务智能和数据管理软件把越来越多的数据质量功能整合进这些提高企业整体数据质量的产品中。数据管理始终是企业客户存在的一个重要问题,尤其存在于大企业中不同系统的多种储存方案中,它们彼此之间可能略微不同。数据质量软件可以确保为数据的登录和储存过程提供帮助,随后向决策者提供。

  IT分析机构 Ptak Noel & Associates分析师RichardPtak表示,目前我们面临的问题之一是更多的数据、获得信息并通过信息获得事件的知识设法进行处理是非常重要的,也是困难的。微软在它的数据库产品中整合自动化数据质量技术,尤其是入门数据工作流程,可以极大的帮助整个数据的质量,减少错误和矛盾,在连续运作的过程中消费者希望对错误和矛盾尽早纠正。

  根据其官方网站报道,Zoomix公司的主要目标市场是美国、欧洲和中东的制造、分发、零售以及财经企业等纵向市场。


在单机上创建物理Oracle数据库9i standby

xuejinyoulan收录,使用标签:数据库,时间:2008-7-21 14:36:34 | 相关网摘我也收藏

来源:赛迪网
说明:Oracle9i 数据库的 Data Guard 特性确保对数据进行完整的保护,是 Oracle 9i 的一个关键特性之一。Data Guard 可以创建物理的 Standby 数据库,也可以创建逻辑的Standby数据库,还可以混合使用,灵活性比较强.如果对Standby机制的了解有更高的期望,或者想得到关于Oracle数据库的data guard 和Standby的更多信息,请参考官方的文档。

现有的数据库实例 (Primary)名字:orcl1

预创建的Standby数据库实例名字:orcl2

数据库版本信息:

SQL> SELECT * FROM v$version;

BANNER

----------------------------------------------------------------

Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production

PL/SQL Release 9.2.0.1.0 - Production

CORE 9.2.0.1.0 Production

TNS for 32-bit Windows: Version 9.2.0.1.0 - Production

NLSRTL Version 9.2.0.1.0 - Production

准备工作:

首先确认Primary数据库是否在归档模式下

SQL> SHOW user

USER is "SYS"

SQL>

SQL> ARCHIVE log list

Database log mode Archive ModeAutomatic archival EnabledArchive destination D:\oracle\arcOldest online log sequence 28Next log sequence to archive 30Current log sequence 30如果不在归档模式下,调整数据库。首先提交命令修改SPfile:

SQL>ALTER SYSTEM SET log_archive_start=TRUE SCOPE=SPFILE;

然后关闭数据库实例

SQL>SHUTDOWN immediate;

备份数据库

SQL>STARTUP MOUNT

SQL>ALTER DATABASE ARCHIVELOG;

SQL>ALTER DATABASE OPEN;

SQL>SHUTDOWN IMMEDIATE

备份

1. Primary Database 需要做的准备工作


1.1 激活 Forced Logging

SQL> ALTER DATABASE FORCE LOGGING;

1.2 设置本地归档目标

SQL> ALTER SYSTEM SET log_archive_dest_1='LOCATION=D:\oracle\arc' SCOPE=BOTH;

此操作直接生效

2.创建物理的Standby数据库


2.1 标记出Primary数据库的数据文件

SQL> SELECT NAME FROM v$datafile;

NAME

-----------------------------------------------------

D:\ORACLE\ORADATA\ORCL1\SYSTEM01.DBFD:\ORACLE\ORADATA\ORCL1\UNDOTBS01.DBFD:\ORACLE\ORADATA\ORCL1\DRSYS01.DBFD:\ORACLE\ORADATA\ORCL1\INDX01.DBFD:\ORACLE\ORADATA\ORCL1\TOOLS01.DBFD:\ORACLE\ORADATA\ORCL1\USERS01.DBFD:\ORACLE\ORADATA\ORCL1\XDB01.DBF

2.2 关闭Instance 拷贝数据文件到既定目的地

SQL> SHUTDOWN IMMEDIATE;

2.3 为Standby 数据库创建控制文件

SQL> ALTER DATABASE CREATE STANDBY CONTROLFILE

AS 'E:\oracle\oradata\orcl2\STANDBY.CTL';

要注意这个控制文件的名字不要和Primary的控制文件名字重复

2.4 为Standby数据库准备初始化参数文件名字

SQL> CREATE PFILE='E:\oracle\admin\orcl2\pfile\initorcl2.ora' FROM SPFILE;

2.5 设定初始化Physical Standby Database参数

*.aq_tm_processes=1

*.background_dump_dest='E:\oracle\admin\orcl2\bdump'

*.compatible='9.2.0.0.0'

*.control_files='E:\oracle\oradata\orcl2\STANDBY.CTL'

*.core_dump_dest='E:\oracle\admin\orcl2\cdump'

*.db_block_size=8192

*.db_cache_size=19922944

*.db_domain=''

*.db_file_multiblock_read_count=32

*.db_name='orcl1'

*.dispatchers='(PROTOCOL=TCP) (SERVICE=DEMOXDB)'

*.fast_start_mttr_target=300

*.hash_area_size=1048576

*.hash_join_enabled=TRUE

*.instance_name='orcl2'

*.java_pool_size=20971520

*.job_queue_processes=10

*.large_pool_size=7340032

*.log_archive_dest_1='location=E:\oracle\arc'

*.log_archive_start=TRUE

*.open_cursors=300

*.optimizer_mode='FIRST_ROWS'

*.pga_aggregate_target=17825792

*.processes=150

*.query_rewrite_enabled='TRUE'

*.remote_login_passwordfile='EXCLUSIVE'

*.shared_pool_size=33554432

*.sort_area_size=1048576

*.star_transformation_enabled='TRUE'

*.timed_statistics=TRUE

*.undo_management='AUTO'

*.undo_retention=10800

*.undo_tablespace='UNDOTBS1'

*.user_dump_dest='E:\oracle\admin\orcl2\udump'

lock_name_space=orcl2

standby_file_management=AUTO

remote_archive_enable=TRUE

standby_archive_dest='E:\oracle\standbyarc'

db_file_name_convert=('D:\oracle\oradata\orcl1', 'E:\oracle\oradata\orcl2')

log_file_name_convert=('D:\oracle\oradata\orcl1', 'E:\oracle\oradata\orcl2')

log_archive_dest_1=('LOCATION=E:\oracle\standbyarc')

整个操作的过程中,容易出现错误的地方几乎都集中在此处。必须认真仔细的对待这个文件。标记为黑色的地方是需要进行修改的。

2.6 创建一个Windows服务

WINNT> oradim -NEW -SID orcl2 -STARTMODE manual

2.7 Create a Server Parameter File for the Standby Database

可参考执行如下操作:

C:\>SET oracle_sid=orcl2

C:\>SQLPLUS /nolog

SQL> CONNECT / as sysdba

SQL> CREATE SPFILE FROM PFILE='E:\oracle\admin\orcl2\pfile\initorcl2.ora';

2.8 启动物理Standby数据库

C:\>set oracle_sid=orcl2

C:\>sqlplus /nolog

SQL> connect / as sysdba

SQL> STARTUP NOMOUNT;

SQL> ALTER DATABASE MOUNT STANDBY DATABASE;

2.9 在Standby数据库上,初始化Log Apply 服务

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

2.10 激活到物理Standby数据库的归档

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=orcl2' SCOPE=BOTH;

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE SCOPE=BOTH;

2.11 启动远程归档

SQL> ALTER SYSTEM ARCHIVE LOG CURRENT; -在primary database上执行.

3.安装完的的验证

3.1 在Primary database上

alter system set standby_archive_dest='E:\oracle\standbyarc' scope=both;


3.2 在database,查询V$ARCHIVED_LOG

(其实也可以直接到相关目录下查看Log是否创建):

SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME

FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;

SEQUENCE# FIRST_TIM NEXT_TIME---------- --------- --------- 30 09-JAN-07 17-JAN-07 31 17-JAN-07 17-JAN-073.3 在Primary数据库上,归档当前的Log

SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;

3.4 验证是否收到

SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME

FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;

SEQUENCE# FIRST_TIM NEXT_TIME---------- --------- --------- 30 09-JAN-07 17-JAN-07 31 17-JAN-07 17-JAN-07 32 17-JAN-07 17-JAN-07

3.5 验证是否新的归档Redo日志已经被应用

SQL> SELECT sequence#, applied FROM v$archived_log ORDER BY sequence#;

SEQUENCE# APP---------- --- 30 YES 31 YES 32 YESOK.表明我们还是成功的.

附加内容:

primary数据库的Pfile内容

*.aq_tm_processes=1

*.background_dump_dest='D:\oracle\admin\orcl1\bdump'

*.compatible='9.2.0.0.0'

*.control_files='D:\oracle\oradata\orcl1\control01.ctl','D:\oracle\oradata\orcl1\control02.ctl','D:\oracle\oradata\orcl1\control03.ctl'

*.core_dump_dest='D:\oracle\admin\orcl1\cdump'

*.db_block_size=8192

*.db_cache_size=25165824

*.db_domain=''

*.db_file_multiblock_read_count=16

*.db_name='orcl1'

*.dispatchers='(PROTOCOL=TCP)'

*.fast_start_mttr_target=300

*.hash_join_enabled=TRUE

*.instance_name='orcl1'

*.java_pool_size=33554432

*.job_queue_processes=10

*.large_pool_size=8388608

*.log_archive_dest_1='LOCATION=D:\oracle\arc'

*.log_archive_start=TRUE

*.open_cursors=300

*.pga_aggregate_target=25165824

*.processes=150

*.query_rewrite_enabled='FALSE'

*.remote_login_passwordfile='EXCLUSIVE'

*.shared_pool_size=50331648

*.sort_area_size=524288

*.star_transformation_enabled='FALSE'

*.timed_statistics=TRUE

*.undo_management='AUTO'

*.undo_retention=10800

*.undo_tablespace='UNDOTBS1'

*.user_dump_dest='D:\oracle\admin\orcl1\udump'

*.standby_archive_dest='E:\oracle\standbyarc'

*.remote_archive_enable=true


Oracle Recyclebin

xuejinyoulan收录,使用标签:数据库,时间:2008-7-21 14:33:39 | 相关网摘我也收藏

出处:blog
使用 Oracle Database 10g中的闪回表特性,可以毫不费力地恢复被意外删除的表。

  以下是一个不该发生却经常发生的情况:用户删除了一个非常重要的表—当然是意外地删除—并需要尽快地恢复。(在某些时候,这个不幸的用户可能就是 DBA!)

  Oracle 9i Database 推出了闪回查询选项的概念,以便检索过去某个时间点的数据,但它不能闪回 DDL 操作,如删除表的操作。唯一的恢复方法是在另一个数据库中使用表空间的时间点恢复,然后使用导出/导入或其他方法,在当前数据库中重新创建表。这一过程需要 DBA 进行大量工作并且耗费宝贵的时间,更不用说还要使用另一个数据库进行克隆。

  请使用 Oracle Database 10g中的闪回表特性,它使得被删除表的恢复过程如同执行几条语句一样简单。让我们来看该特性是如何工作的。

  删除那个表!

  首先,让我们查看当前模式中的表。

SQL> select * from tab;
  TNAME TABTYPE CLUSTERID
  ------------------------ ------- ----------
  RECYCLETEST TABLE


  现在,我们意外地删除了该表:

SQL> drop table recycletest;
  Table dropped.


  现在让我们来查看该表的状态。

SQL> select * from tab;
  TNAME TABTYPE CLUSTERID
  ------------------------------ ------- ----------
  BIN$04LhcpndanfgMAAAAAANPw==$0 TABLE


  表 RECYCLETEST 已不存在,但是请注意出现新表BIN$04LhcpndanfgMAAAAAANPw==$0。这就是所发生的事情:被删除的表 RECYCLETEST 并没有完全消失,而是重命名为一个由系统定义的名称。它存在于同一个表空间中,具有与原始表相同的结构。如果在该表上定义了索引或触发器,则它们也被重命名,使用与表相同的命名规则。任何相关源(如过程)都失效;原始表的触发器和索引被改为放置在重命名的表BIN$04LhcpndanfgMAAAAAANPw==$0上,保持被删除表的完整对象结构。

  表及其相关对象被放置在一个称为“回收站”的逻辑容器中,它类似于您 PC 机中的回收站。但是,对象并没有从它们原先所在的表空间中删除;它们仍然占用那里的空间。回收站只是一个列出被删除对象目录的逻辑结构。在 SQL*Plus 提示符处使用以下命令来查看其内容(您需要使用 SQL*Plus 10.1 来进行此操作):

SQL> show recyclebin
  ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
  ---------------- ------------------------------ ------------ ------------------
  RECYCLETEST BIN$04LhcpndanfgMAAAAAANPw==$0 TABLE 2004-02-16:21:13:31


  结果显示了表的原始名称 RECYCLETEST,并显示了回收站中的新名称,该名称与我们看到的删除后所创建的新表名称相同。(注意:确切的名称可能因平台不同而不同。)为恢复该表,您所需要做的就是使用FLASHBACK TABLE命令:

SQL> FLASHBACK TABLE RECYCLETEST TO BEFORE DROP;
  FLASHBACK COMPLETE.
  SQL> SELECT * FROM TAB;
  TNAME TABTYPE CLUSTERID
  ------------------------------ ------- ----------
  RECYCLETEST TABLE


表毫不费力地恢复了。如果现在查看回收站,它将是空的。

记住,将表放在回收站里并不在原始表空间中释放空间。要释放空间,您需要使用以下命令清空回收站:

PURGE RECYCLEBIN;


  但是如果您希望完全删除该表而不需要使用闪回特性,该怎么办?在这种情况下,可以使用以下命令永久删除该表:

DROP TABLE RECYCLETEST PURGE;


  此命令不会将表重命名为回收站中的名称,而是永久删除该表,就象 10g之前的版本一样。

  管理回收站

  如果在该过程中没有实际删除表—因而没有释放表空间—那么当被删除的对象占用了所有空间时,会发生什么事?

  答案很简单:这种情况根本不会出现。当表空间被回收站数据完全占满,以至于必须扩展数据文件来容纳更多数据时,可以说表空间处于“空间压力”情况下。此时,对象以先进先出的方式从回收站中自动清除。在删除表之前,相关对象(如索引)被删除。

  同样,空间压力可能由特定表空间定义的用户限额而引起。表空间可能有足够的空余空间,但用户可能将其在该表空间中所分配的部分用完了。在这种情况下,Oracle 自动清除该表空间中属于该用户的对象。

  此外,有几种方法可以手动控制回收站。如果在删除名为 TEST 的特定表之后需要从回收站中清除它,可以执行

PURGE TABLE TEST;


  或者使用其回收站中的名称:

PURGE TABLE "BIN$04LhcpndanfgMAAAAAANPw==$0";


  此命令将从回收站中删除表 TEST 及所有相关对象,如索引、约束等,从而节省了空间。但是,如果要从回收站中永久删除索引,则可以使用以下命令来完成工作:

purge index in_test1_01;


  此命令将仅仅删除索引,而将表的拷贝留在回收站中。

  有时在更高级别上进行清除可能会有用。例如,您可能希望清除表空间 USERS 的回收站中的所有对象。可以执行:

PURGE TABLESPACE USERS;


  您也许希望只为该表空间中特定用户清空回收站。在数据仓库类型的环境中,用户创建和删除许多临时表,此时这种方法可能会有用。您可以更改上述命令,限定只清除特定的用户:

PURGE TABLESPACE USERS USER SCOTT;

  诸如 SCOTT 等用户可以使用以下命令来清空自己的回收站

PURGE RECYCLEBIN;

  DBA 可以使用以下命令清除任何表空间中的所有对象

PURGE DBA_RECYCLEBIN;

  可以看到,可以通过多种不同方法来管理回收站,以满足特定的需要。

  表版本和闪回功能

  用户可能会经常多次创建和删除同一个表,如:

CREATE TABLE TEST (COL1 NUMBER);
  INSERT INTO TEST VALUES (1);
  commit;
  DROP TABLE TEST;
  CREATE TABLE TEST (COL1 NUMBER);
  INSERT INTO TEST VALUES (2);
  commit;
  DROP TABLE TEST;
  CREATE TABLE TEST (COL1 NUMBER);
  INSERT INTO TEST VALUES (3);
  commit;
  DROP TABLE TEST;

  此时,如果您要对表 TEST 执行闪回操作,那么列 COL1 的值应该是什么?常规想法可能认为从回收站取回表的第一个版本,列 COL1 的值是 1。实际上,取回的是表的第三个版本,而不是第一个。因此列 COL1 的值为 3,而不是 1。

  此时您还可以取回被删除表的其他版本。但是,表 TEST 的存在不允许出现这种情况。您有两种选择:

  使用重命名选项:

FLASHBACK TABLE TEST TO BEFORE DROP RENAME TO TEST2;
  FLASHBACK TABLE TEST TO BEFORE DROP RENAME TO TEST1;

  这些语句将表的第一个版本恢复到 TEST1,将第二个版本恢复到 TEST2。 TEST1 和 TEST2 中的列 COL1 的值将分别是 1 和 2。或者,

  使用表的特定回收站名称进行恢复。为此,首先要识别表的回收站名称,然后执行:

FLASHBACK TABLE "BIN$04LhcpnoanfgMAAAAAANPw==$0" TO BEFORE DROP RENAME TO TEST2;
  FLASHBACK TABLE "BIN$04LhcpnqanfgMAAAAAANPw==$0" TO BEFORE DROP RENAME TO TEST1;

  这些语句将恢复被删除表的两个版本。

  警告……

  取消删除特性使表恢复其原始名称,但是索引和触发器等相关对象并没有恢复原始名称,它们仍然使用回收站的名称。在表上定义的源(如视图和过程)没有重新编译,仍然保持无效状态。必须手动得到这些原有名称并应用到闪回表。

  信息保留在名为 USER_RECYCLEBIN 的视图中。在对表进行闪回操作前,请使用以下查询来检索原有名称。

SELECT OBJECT_NAME, ORIGINAL_NAME, TYPE
  FROM USER_RECYCLEBIN
  WHERE BASE_OBJECT = (SELECT BASE_OBJECT FROM USER_RECYCLEBIN
  WHERE ORIGINAL_NAME = 'RECYCLETEST')
  AND ORIGINAL_NAME != 'RECYCLETEST';
  OBJECT_NAME ORIGINAL_N TYPE
  ------------------------------ ---------- --------
  BIN$04LhcpnianfgMAAAAAANPw==$0 IN_RT_01 INDEX
  BIN$04LhcpnganfgMAAAAAANPw==$0 TR_RT TRIGGER



  在表进行闪回操作后,表 RECYCLETEST 上的索引和触发器将按照 OBJECT_NAME 列中所示进行命名。根据以上查询,可以使用原始名称重新命名对象,如下所示:

ALTER INDEX "BIN$04LhcpnianfgMAAAAAANPw==$0" RENAME TO IN_RT_01;
  ALTER TRIGGER "BIN$04LhcpnganfgMAAAAAANPw==$0" RENAME TO TR_RT;

  一个值得注意的例外情况是位图索引。当删除位图索引时,它们并不放置在回收站中—因此无法检索它们。约束名称也无法从视图中检索。必须从其他来源对它们进行重命名。

  闪回表的其他用途

  闪回删除表功能不仅限于恢复表的删除操作。与闪回查询类似,您还可以使用它将表恢复到不同的时间点,利用表的“过去”版本来替代整个表。例如,以下语句将表恢复到系统更改号 (SCN) 2202666520。

FLASHBACK TABLE RECYCLETEST TO SCN 2202666520;

  此特性使用 Oracle 数据泵技术来创建不同的表,使用闪回功能将该 SCN 处的数据版本填充到表中,然后用新表替代原始表。为找出能够在何种程度上对表进行闪回操作,可以使用 Oracle Database 10g的版本控制特性。(更多详细信息请参见本系列第 1 周的内容。)在闪回子句中也可以指定时间戳记而不是指定 SCN。


Oracle 11g助力全球企业

xuejinyoulan收录,使用标签:数据库,时间:2008-7-21 14:30:26 | 相关网摘我也收藏

出处:IT专家网
甲骨文公司宣布,包括南越贸易股份银行、Olam International、Servicio Electronico de Pago、Xactly Corporation在内的世界诸多企业都在生产经营中使用Oracle数据库11g运行关键企业应用。

   南越贸易股份银行在全越南有60个分行和业务机构,该银行正在积极扩大分支银行网络并采用新技术,以快速拓展业务。2008年初,南越贸易股份银行升级到Oracle数据库11g,旨在支持核心银行应用和来自独立软件供应商Serenco的银行卡管理应用。另外,该银行还用Oracle主动数据保护(Oracle Active Data Guard)软件从交易系统卸载报告和数据查询任务,以优化用于灾难恢复的系统资源。

   新加坡Olam International是全球领先的农产品和食品原料供应链管理公司,该公司将来自超过56个原产国的货物提交给60个最终市场的4000余客户。为了支持其关键企业报告应用,2008年1月,Olam International从Oracle9i数据库升级到了Oracle数据库11g。在Windows 2003上运行的Oracle数据库11g将Olam International报告系统的性能提高了100%,同时该报告系统现在还可容纳更多的并发用户。

   Servicio Electronico de Pago有限公司(http://www.pagofacil.com.ar),即Pago Facil,是阿根廷领先的电子支付服务提供商。该公司的分支机构网络遍布阿根廷,每个月有800余万人光顾其分支机构,支付各种商品和服务费用,而通过Pago Facil收款的公司超过2000家,涉及公用事业、市政税收、大学、汽车保险等多种行业。2008年3月,Pago Facil在运行Linux的IBM服务器的两个节点上部署了Oracle数据库11g和Oracle实时应用集群,以支撑其网络支付系统。Pago Facil升级到Oracle数据库11g,是为了形成一个安全、高度灵活和可扩展的IT环境,以提高效率并更有效地管理数据。

   Xactly Corporation是100%按需服务型软件(SaaS)销售绩效管理软件的领先供应商,帮助负责销售和财务的高层管理人员提高销售实效和利润率。为了提供高度可用和可靠的服务,Xactly 2008年6月升级到了Oracle数据库11g。另外,该公司还部署了Oracle主动数据保护软件,以通过将资源密集型活动从生产数据库卸载到备用数据库来提高服务质量。Xactly还采用了Oracle商业智能套件加强企业版,以向最终用户提供一个全面和可扩展的智能系统,帮助用户洞察和分析关键的销售绩效管理指标。


Oracle新手经常碰到的六个错误及解决方案

xuejinyoulan收录,使用标签:数据库,时间:2008-7-21 14:27:19 | 相关网摘我也收藏

出处:赛迪网
Oracle新手经常碰到的六个错误及解决方案:

  1、ORA-12541:TNS:没有监听器

  原因:没有启动监听器或者监听器损坏。如果是前者,使用命令net start OracleOraHome81TNSListener(名字可能有出入)即可;如果是后者,则使用“Net8 Configuration Assistant”工具向导之“监听程序配置”增加一个监听器即可(基本不用写任何信息,一路OK。在添加之前可能需要把所有的监听器先删除!)

  2、ORA-12500:TNS:监听程序无法启动专用服务器进程
  或
  ORA-12560:TNS:协议适配器错误

  原因:ORACLE的数据库服务没有启动。使用命令net start ORACLESERVICEORADB(ORADB为数据库名字)即可。如果仍没有解决,请继续向下看。

  3、如果数据库服务启动失败,则很有可能是其注册表项值损坏,最好的做法是以下两步:

  1)ORADIM -DELETE -SID oradb 删除数据库服务项
  2)ORADIM -NEW -SID oradb 新增数据库服务项

  注:这个过程中如果出错,就重启计算机!

  4、ORA-12154:TNS:能解析服务名

  原因:ORACLE的网络服务名没有正确配置。请使用“Net8 Configuration Assistant”工具向导之“本地网络服务名配置”配置TNS即可。如果仍没有解决,请继续向下看。

  5、ORA-1034 :TNS:ORACLE不可用

  原因:ORACLE的数据库服务正确启动,但是数据库没有打开!

  使用命令:

  1)svrmgrl 启动服务管理器
  2)connect internal 以internal身份登陆
  3)startup 打开数据库

  6、ORA-12560:TNS:协议适配器错误(顽固性的)

  原因:未知。

  解决:必杀技--打开“Windows任务管理器”,杀死ORACLE.exe及ORADIM.exe进程,书写自己的ora_startup.bat,执行之!

  总结:

  1、我的ora_startup.bat:

  net start OracleOraHome81TNSListener

  net start ORACLESERVICEORADB

  svrmgrl 一般情况下不用,不过有时少不了它的,具体步骤见第5步。

  2、我的ora_shutdown.bat:

  net stop OracleOraHome81TNSListener

  net stop ORACLESERVICEORADB

  3、ORACLE相关服务名请参见“管理工具”之“服务”中以ORACLE开头的服务名。


讲解Oracle数据库冷备份恢复的具体步骤

xuejinyoulan收录,使用标签:数据库,时间:2008-7-21 14:25:55 | 相关网摘我也收藏

来源:赛迪网
冷备份数据必须是数据库不在open状态下。 以下步骤会给出详细的过程:

1):关闭DB : shutdown immediate;

2):copy oradata目录下的所有文件, 包括数据文件, 控制文件,redo,等,还需要copy 密码文件 在目录ora92下 的database 中的pwd 文件.全部copy到一个安全目录中。在sql 下可以直接加一个 host 然后使用dos命令。如host copy .............

3):如果是操作系统的重新安装,只要是同样系统,同样数据库版本,是可以做冷备恢复。一下谈的是系统的重新安装后的步骤。

4):正常安装oracle软件(之前在pub上一位兄弟说不需要安装oracle就可以搞定,表示怀疑),只需要安装软件,可以不用建实例,建实例的时间也比较长,也没有必要。 软件安装好以后,开始准备恢复。

5):数据覆盖过去包括pwd文件,放在原来的目录,如果目录有所改变则需要另外建立控制文件,修改pfile。

6):建立服务:使用oradim 命令 cmd下 oradim -new -sid erp 表示建立一个服务,sid为erp。关于oradim的命令另外给出专门解释。

7):建立监听: net configuration assintant 来建立,或用脚本建立并且开启。

8):打开数据库: 用oem也行,cmd下也行。

set oracle_sid=erp;sqlplus "/as sysdba";startup;select * from v$instance;

至此,冷备份恢复成功。即使你现在用oem打开数据库时发现提示找不到sid ,但实际上你已经成功了,此时只需要重启一下的你的服务器就可以了。


PHP MYSQL 的OA为什么不值钱?

xuejinyoulan收录,使用标签:数据库,时间:2008-7-21 13:56:49 | 相关网摘我也收藏

来源于互联网

现在市场上的oa基本上可归结为两大阵营,即php阵营和java阵营。但对接触oa不久的用户来说,看到的往往只是它们的表相,只是明显的价格差异,却很难看出它们之间的实际差异。其实, PHP + MYSQL 不值钱不仅仅局限于oa软件,而是整体上PHP + MYSQL开发的软件都不如java开发的软件值钱。为什么PHP + MYSQL 的OA为什么不值钱呢?首先得明白php和java之间的差异才行。

  1、系统的技术架构比较

  分层是将系统进行有效组织的方式,分而治之的思想是计算机领域中非常重要的思想。在好的分层思想引导下,便能实现“高内聚、低耦合”,也能将具体的问题割裂开来,易于控制、易于延展,更易于分配资源。PHP只能实现简单的分布式两层或三层的架构,而JAVA在这方面就十分强大,可以实现多层的网络架构。运用MVC的设计模式,可使oa系统具有更加高效、合理的系统架构。技术架构的落后,使运用php编写的oa软件系统先天不足,而后天又无法补足其先天上的劣势。使得系统在可拓展性、需求应变性上与JAVA编写的oa软件系统的差距越来越大。架构的差距,注定了php做的oa充其量是个小家碧玉,始终无法和java这种大家闺秀同台竞技。

  2、数据库访问比较

  PHP可编译成具有与许多数据库相连接的函数。将自己编写外围的函数去间接存取数据库。通过这样的途径当更换使用的数据库时,可以轻松地修改编码以适应这样的变化。但PHP提供的数据库接口支持彼此不统一,比如对Oracle, MySQL,Sybase的接口,彼此都不一样。由于PHP对于不同的数据库采用不同的数据库访问接口,所以数据库访问代码的通用性不强。

  而Java通过JDBC来访问数据库,通过不同的数据库厂商提供的数据库驱动方便地访问数据库,访问数据库的接口比较统一。如果同样是将开发的web应用从MYSQL数据数转到ORACLE数据,PHP需要做大量的修改工作,而且比较繁琐。但JAVA开发的便只需要很少的更改便能实现。

  数据库访问方式的差异,奠定了php开发出的oa和java开发出来的oa是马车和火车的差距,前者只能亦步亦趋而且额度有限,后者却是工业化的结晶,不仅能够包容万物而且速度上稳步提升。

  3、安全性对比

  在同是开源和跨平台的java面前,php丢掉了很多的优势。在代码的安全性上尤为突出。php的开发程序在别人拿到代码后,可以很容易的进行修改。而java开发的程序由于无法看到完整的源代码,只能看到一些编译好的类文件,所以安全性较高。加之系统架构的优势,在安全性上php和java是相去甚远。

  如果非要将php和java在安全性上做个比较的话,同一个小偷光顾php那是随便拿来随便改,想拿什么拿什么,拿的高兴还能大笔一辉某某到此一游。而光顾java的时候,便会发现警察把守,内设自动报警装置,即便突破重重阻扰后进入居室。那值钱的东西都放在加密后的保险柜中,只能望洋兴叹、铩羽而归。

  4、前瞻性和拓展性

  从整体来说,php适用于中小型系统,而java适用于大型系统。Php能够将单一的事件做好,但却不适合完成集成度较高的多项并发事件。为什么说php适合中小型系统而不适合做大系统呢?

  首先, php缺乏多层结构支持。而对于大型的系统负荷站点,只能采用分布计算。将数据库、应用逻辑层和表示逻辑层彼此分开,并将同层的根据流量分开,组成二维数组。而php恰恰缺乏这种支持。

  其次,PHP提供的数据库接口不统一,要将多个不同的数据库数据统一需要花费很大的力气。而JAVA则没有这种缺陷,可通过SUN Java的Java Class和EJB获得规模支持,通过EJB/CORBA以及众多厂商的Application Server获得结构支持。如IBM的E-business,它的核心是采用JSP/Servlet的Web Sphere,是通过CGI来提供支持的。

  如果将Php比作将才,具备独挡一方的能力。那么java便是帅才,具有较好的前瞻性和拓展性,整体布局和协同能力强。能够指挥千军万马,最后逐鹿中原。

  5、开发成本比较

  既然php在诸多方面都不如java优异,那么php开发出的oa产品何以与java产品竞争呢?在于Php阵营普遍走的是低端路线,而java阵营走的是中高端路线。两者之间交叉的区域较小。

  软件价格的高低很大程度上和自身成本和功能相挂钩。php的入门门槛较低,绝大多数学过c的程序员都很容易转型为php程序员,这使得php程序员的泛滥成灾的同时,低成本的php软件产品也层出不穷。以PHP最经典的组合PHP + MySQL + Apache为例,由于所有软件都是开源免费的,所以投入并不高。

  而java开发需要特定的环境,成长为一个合格的java程序员需要一定的时间,java程序员的成本也是php成本的几倍。Java的web应用服务器免费的有Tomcat、JBoss等,而要想具有很好的商业化服务便必须选用Web Sphere和 Web logic。这其中投入的成本无形中便超是php成本的N倍。所以,java开发oa的成本要远远高于php开发出来的同类软件产品。但也正由于java开发的成本较高,很难实现抄袭和短期内逾越的可能,也使得java用开发出的产品门槛更高。

  不怕不识货,就怕货比货。Php开发出来的产品也能用,但是和java开出的同类产品是没法比较的。正因为php开发的产品整体性能和java开发的相去甚远,所以php运用低成本的低价优势和同类的java产品抗争,以价格落差来平衡购买者的心态。所以,PHP + MYSQL 的OA不值钱也就不足为怪了。



共2520个网摘 [ 1  2  3  4  5  6  7  8  9  10  11 ... 84 ]  上一页 | 下一页

Tag/相关标签



    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved