收藏
  注册
  登陆
新闻 论坛 软件下载 用户中心
Firebird中文社区 今天是: 2010年9月10日 星期五   您现在位于: 首页 →  论坛 → Firebird基础知识(浏览贴子)
   Firebird基础知识  -  浏览贴子 (回复:16 浏览:4013  Quickesoft henryxu   [ 本版精华 ]  [ 版面管理 ]
 主题:FB 新手入门资料 ....
   
Jimt 
等级: 三流高手
头衔:霸王
贴子:355
积分:368
金币:0
注册:2007-9-12
          11
 
记得这里的下载区有几个例子的,绝对值得参考。
 
彻头彻尾优化fb中……

力保前十??
 本贴发表时间:2010-2-18 16:29:09  
小原 
等级: 三流高手
头衔:小兵
贴子:159
积分:191
金币:0
来自:比火星远的地方
注册:2007-11-23
          12
 
[转帖]
Firebird特性介绍:firebird是一个全功能的,强大高效的,轻量级,免维护的数据库。它很容易让您从单用户,单数据库升级到企业级的应用。
一个firebird数据库服务器能够管理多个独立的数据库,每一个数据库同时可支持多个客户端连结。总之:它是一个开源的,强大在,可以自由使用的数据库(即使是商业上的使用)
关键特性:

[separator]


支持原子性,并发性,隔离性等概念。
MGA:
支持事务的多个版本功能,
存储过程:
使用PSQL(Procedure SQL),你可以创建强大的存储过程来处理服务上的所有数据,你可以使用select Stored Procedure的形式,使用存储过程,以得到一个虚拟的表结构的结果。这样的话,你就可以很容易的在报表中使用它。
事件:
存储过程和触发器可以引发事件,这个事件可以被客户端程序监听到
生成子:
生成子也称为序列,它可以很容易的实现自动增加的字段。它是一个INT64的长度,因此,它可以用在一个事务中,也可以用在其它很多方面。
只读数据库:
我们可以把数据库存放在CD中,形成一个只读数据库。如果我们的应用程序
也在光盘上,再加上嵌入式的FB数据库服务器,便可以得到一个无与伦比的
CDLIVE(即只用光盘就可以运行起来)应用。

全事务控制:
一个客户端可以存在多个并发的事务。并且每一个事务都可以独立的进行控制,两段提交功能可以保证数据库的一致性。锁优化机制也支持多个事务的保存点。
在线备份:
不需要停止数据库即可进行备份,一个备份进程产生一个数据库当前的快照。因此,用户可以在备份期间持续的工作,即实现24x7(每天24小时,每周7天)的操作。
触发器:
每一个表可以有多个并发的行级触发器,可以在插入前,插入后,更新前,更新后,删除前,删除后进行触发。我们可以在触发器中写入PSQL语句,默认值,产生异常,firebird现在支持统一触发器,即可以一个触发器中,一次性管理插入,更新,删除的操作。
扩展函数:
我们可以使用C语言,C++,DELPHI写UDF,使用UDF(用户定义函数库)可以很容易的挂入数据库引擎中以扩展我们需要的功能
字符集:Firebird实现了很多国际标准的字符集,包括Unicode。
SQL标准兼容:Firebird 实现了全部SQL92所要求的功能,实现了SQL99最常用的的要求。包括但不限于"FULL/LEFT/RIGHT [OUTER] JOIN , UNION, DISTINCT , 子查询 (IN, EXISTS),内部函数 (AVG, SUM, MIN, MAX, COALESCE, CASE, ..), 主键,外键,唯一索引以及所有通用的数据类型。
Firebird还实现了域,字段级别的约束,视图,异常,规则和权限管理,更多的详细信息,请参考Firebird发布通知和参考手册。

硬件需求:
Firebird可以工作最常见的硬件环境中,甚至非常差的硬件中,也能很好的工作,当然,硬件的要求依赖于你想做什么,例如 ,你有朋少个并发用户等等。

有效的平台支持:
Firebrid在常见的平台上都可运行,如Linux和Windows(包括Windows终端服务器)其它支持的平台包括(MAC OS(苹果机),Solaris及HP-UX)
把数据库从一个平台转到另一个平台,非常的容易,只要备份数据库,然后,再到另一个平台上恢复即可
可连接性:
Firebird 支持一系列的连接方法,目前,可以通过原生的DELPHI,C++组件连接,也可以通过ODBC,JDBC,PHP,OLEDB,DbExpress进行连接。原生 的联连提供了直接调用Firebird的API函数库(fbclient.dll/.so)进行调用的能力。

物理限制:
Firebird支持非常巨大的数据库,数据库可以分成多个物理文件。每个文件的大小依赖于操作系统的限制。当前一个数据库文件最大的理论限制是64T(即64000G),因此,常见的限制通常是操作系统的限制以及磁盘空间的限制。

服务器引擎版本:
当前有三个服务器版本。
标准服务器:每一个客户连接将引发一个服务器进程(支持多处理器)
超级服务器:一相服务器进程模块管理所有的客户端连接,当前不支持多处理器。
嵌入服务器:整个服务器引擎就是一个动态库,只支持本地通过IO进行调用。
但是,所有的服务器都使用一种数据库格式,因此,你可以很方便的在不同的引擎之间共享数据库文件的数据。
协议:
Firebird协议使用IPL(interbase public license)和IDPL(Initial Developer's Public License),这种协议类似于Mozilla协议。你可以完全的自由使用并且可以自由的布署在你的客户应用上。
你不需要公开你的源代码。当然,如果你修改和数据库引擎,你应该公布源代码。
工具:
有很多的工具支持Firebird.包括自由的,免费的和商业的。
包括开发工具,管理工具,诊断工具等等。

支持和资源:
在Firebird的官方网站上(www.firebirdsql.org),有很多关于这个项目的有用的信息。IPPhonex公司也提供专业的商业支持。在他们网站上,也有很多有用的专业信息及常见问题的解答等。

团队:
Firebird有一系列的用户支持的团队和新闻组,您可以寻求在线支持。您可以
查看项目主页上的全部新闻组列表。
历史:
Firebird基于开源Interbase6.0,它是Borland公司2000年发布的一个开源版本。关于Interbase的最早历史可以追溯到1984年,因此,这个数据库已经有20岁了。

特点:
、Firebird是一个真正的关系数据库,支持存储过程、视图、触发器、事务等大型关系数据库的所有特性;
2、Firebird支持SQL92的绝大部分命令,并且支持大部分SQL99命令,新版Firebird 2.0对SQL99的支持更完整;
3、Firebird源码基于成熟的商业数据库Interbase,有良好的稳定性,与Interbase有良好的兼容性;
4、不用考虑授权费用(免费),不用当心将来有一天你或你的客户因为使用盗版而被数据库开发商告上法庭;
5、发布简易,安装文件只有几M,且高度可定制,客户端的分发也很简单,只需一个DLL文件;
6、Firebird的一嵌入式服务器版本,不用安装,直接运行,基于单机开发首选;
7、Firebird的运行效率非常高;
8、具备高度可移植性,可在Linux,Unix,MacOS,Windows,Solaris系统下运行,而且数据库格式完全一样,不用修改;
9、开发环境支持良好,Delphi,C++Builder不用通过ODBC连接,直接用原生开发接口开发基于Firebird的程序。


 
当你迷茫时,转身走回起点
 本贴发表时间:2010-2-22 22:11:59  
小原 
等级: 三流高手
头衔:小兵
贴子:159
积分:191
金币:0
来自:比火星远的地方
注册:2007-11-23
          13
 
[转帖]
Firebird的备份工具(nbackup)介绍
nbackup介绍
nbackup是Firebird 2.0新带来的备份工具。它提供了gbak—Firebird以前就有的备份工具—所没有的能力—但是并不取代后者。两个程序都有其长处和短处;他们在一定的将来将共存一段时间。

nbackup功能—总体介绍
使用nbackup,你可以进行两类不同的功能操作:
1. 建立和恢复完整的和增量的备份操作。一个增量备份只包括自某一上次备份以后的变化。
2. 锁定主数据库文件,然后你可以根据自己的选择使用复制工具或者备份工具来备份。在这种模式下,nbackup不备份任何东西;它只是创建了一个你自己可以安全地进行备份的条件。这里也有一个恢复的环境。
两个模式都可以在活动数据库上操作,而不影响已经连接的用户。产生的备份总是反应操作开始时数据库的状态。在这些方面,nbackup和gbak并无差别。

nbackup的优势
. 两个模式:高速(达到硬件和操作系统允许的速度),因为nbackup不注意实际的数据。在备份模式里内容是原封不动地写进备份文件。
. 备份/恢复模式:节约了时间及磁盘空间:因为不需要每次都完整地备份。这在数据库文件大小达到G级别上时产生巨大的差异。
. 锁定/解锁模式:可自由选择备份,复制,及/或压缩工具。

nbackup的局限
. nbackup不象gbak那样清扫(sweep)和压缩你的数据库文件。
. 与gbak不一样,你不能在nbackup循环中修改数据库的拥有者。
. nbackup不能建立可移动的备份,即:你可以在不兼容的平台或者另一个服务器版本下恢复的那种备份。
. 在目前状态下,nbackup不应该使用在多文件数据库上。
. nbackup只能备份本地数据库。

我们将在下面的章节中广泛阐述nbackup的各种功能。

建立和恢复备份
首先,nbackup.exe位于你的Firebird文件夹的bin自文件夹里。通常位置如C:\Program Files\Firebird\Firebird_2_0\bin(Windows)或者 /opt/firebird/bin(Linux)。与其他Firebird所有的工具一样,nbackup没有图形界面,你需从命令行启动它(或者从一个批处理文件或者应用程序)。

完整备份
进行完整备份,要进行一个数据库的完整备份,语法如下:
nbackup [-U <user> -P <password>] –B 0 <database> [<backupfiile>]
例如:
C:\Data> nbackup –B 0 inventory.fdb inventory_1-Mar-2006.nbk
说明:
. 参数 –B表示备份(嘿)。备份级别0表示完整备份。备份级别大于0用于增量备份,我们后面再讨论。
. 除了数据库文件名字,你也可以使用别名。
. 除了使用备份文件名字,你也可以使用stdout.这会把备份输出到标准输出,在那里你可以把它重定向到如磁盘机或者压缩工具里。
. –U(user)和-P(password)参数可以省略:
- 如果你以超级用户登陆(root, administrator…)或者已经设置了环境变量ISC_USER和ISC_PASSWORD。
为了清晰和简洁起见,例子中没有使用这些参数。
. 不同的参数(-B, -U和-P)可以任何次序出现。当然每一个参数都应紧跟其响相应的变量。对于-B,有三个:备份级别,数据库文件和备份文件,按这个顺序。
. 如果-B参数最后出现,你可以省略备份文件名。这时nbackup将按照数据库文件名,备份级别和当前日期和时间设置一个文件名。如果同一分钟内两个相同级别的备份命令执行时会导致名称冲突(引起备份失败)。

内部工作的一个说明
注:下面所述内容不是使用nbackup必须的知识。只是一个简单的(不完整的)对nbackup –B执行时内部到底发生了什么的说明
1. 首先,主数据库文件被更改一个内部状态标志后锁定。从这一刻开始,任何及所有对数据库的更改都暂时写到一个临时文件里-差异文件或者增量文件
2. 然后是进行实际的备份操作。这不是一个直接的文件复制;恢复也必须使用nbackup来进行。
3. 在备份操作完成后,增量文件里的内容被集成到主数据库文件里。然后数据库被解锁(标志恢复到“正常”),增量文件被删除。
步骤1和3是由两个新的SQL语句:ALTER DATABASE BEGIN BACKUP和ALTER DATABASE END BACKUP.于字面意思相反,这两个命令根本不进行实际的备份操作;他们只是建立了主数据库文件可以被安全地备份的条件。实际上,你不需要自己执行这两个命令,nbackup会替你在正确的时间执行他们。

恢复一个完整备份
一个完整备份如下方法恢复:
nbackup [-U <user> -P <password>] –R <database> [<backupfile>]
例如:
C:\DATA> nbackup –R inventory.fdb inventory_1-Mar-2006.nbk
注:
. 你不用指定一个备份级别
. 恢复时,-R参数必须最后一个出现,理由后面会清楚。
. 如果指定的数据库已经存在,而且没有任何条件,它将被毫无提示地覆盖!如果有用户连接,备份将失败,你会得到一个错误信息。
. 这里也一样,你可以省略备份文件名。如果你省略了,nbackup会提示你给予一个。但是,目前这个功能是没有(至少在Windows环境下),如果你这样指定备份文件,你会得到一个错误信息,然后备份失败。


增量备份
进行增量备份
要进行一个增量(差异)备份,我们指定一个大于0的备份级别。一个N级的增量备份总是包含自从最近的N-1级的备份以后的变化。
例如:
完整备份(级别0)一天后,你进行一个级别1增量备份:
C:\Data> nbackup –B 1 inventory.fdb inventory_2-Mar-2006.nbk
这个备份只包含最近一天的变化。
一天以后你又进行了一个1级增量备份:
C:\Data> nbackup –B 1 inventrory.fdb inventory_3-Mar-2006.nbk
这个备份包含最近2天的变化,从完整备份开始,而不是从前一个1级备份开始。
几个小时后,我们进行了一个2级备份:
C:\Data> nbackup –B 2 inventory.fdb inventory_3-Mar-2006_2.nbk
这个最新的备份,只包含最近的1级备份后的变化,就是说最近几个小时的变化。

恢复增量备份
当恢复增量备份时,你需要指定整个增量备份文件链,从0级至你希望恢复的那一个。数据库总是从头开始建立的,一步一步的。(就是因为是一步一步增加直到数据库恢复完成,产生了“增量备份”这个名词。)
正规语法如下:
nbackup [-U <user> -P <password>]
-R <database> [<backup0> [<backup1> […]]]
所以从前面的例子上恢复一个2级备份的情况如下:
C:\Data> nbackup –R inventory.fdb inventory_1-Mar-2006.nbk
Inventory_3-Mar-2006.nbk inventory_3-Mar-2006_2.nbk
当然命令行在这里因为排版的原因分行了,实际操作时,需要输入整个语句,到最后才输入enter回车键。

注(在恢复完整备份的说明的基础上):
. 因为事先不知道-R开关后面跟多少个文件名(因为我们恢复时不指定级别),nbackup假设-R后所有的变量都是备份文件的名字。因为这个原因,文件名列对后不能跟其他参数(-U,-P)。
. 备份级别没有一个正式的限制,但是实际操作中,超过3或者4是很少见的。

不相连的链接
如果你不小心漏了一个文件,或者指定了一个不属于同一系列的文件会发生什么情况呢?你可以想象在上面的例子中错误地指定了inventory_2-Mar-2006.nbk而不是inventory_3-Mar-2006.nbk。两个都是1级备份文件,所以两种情况下都获得一个挺好的“0,1,2”级别系列。但是我们的2级文件是基于March 3的1级备份的增量备份,而不是March 2的增量备份。幸运的是这样的错误永远不会导致一个错误的数据库恢复。每一个备份文件都有一个独特的ID。更进一步的是,每一个1级或者更高级的备份文件都包含它所基于的备份的ID。恢复时,nbackup检查这些ID;如果链中某处链接不相连,操作被取消,你会得到一个错误信息。

一个实际运用
一个基于nbackup的增量备份计划可能象这样的:
. 每个月进行一次完整备份(0级别);
. 每个星期一个1级;
. 每天一个2级备份;
. 每小时一个3级备份。

只要所有的备份都保留者,你可以把数据库恢复到过去任意一个小时的状态。对于每个恢复操作,最多使用4个备份文件。当然,你也可以这样规划,在非高峰时间进行更大的,更耗时的备份。这样的话,0级和1级别粉可以在周末进行,而2级的则可以在晚上进行。

如果你不想把所有的东西都永久保存,你还可以增加一个删除计划:
. 3级备份可以在8天后删除;
. 2级备份可以在一个月后删除;
. 1级的可以在6个月后删除;
. 完整备份2年后删除,但每年的第一个仍然保留。

当然这只是一个例子。对个例来说什么管用还要依据应用,数据库的大小,它的活动程度等等。

到此,你已经了解了使用nbackup进行和恢复完整的或者增量的备份所需要的所有知识了。只需要进一步阅读一下,就可以选择你想用的工具操作你的Firebird数据库(见锁定和解锁),或者你希望覆盖变化文件默认的名称或位置(见设置变化文件)

如果你没有了解那些的欲望:祝你在使用nbackup的过程中顺利!


锁定和解锁
如果你希望使用自己的备份工具或者只是想做一份拷贝,nbackup的锁定-解锁模式可以派上用场了。“锁定”意味着主数据库文件暂时冻结了,不是说不能对数据库文件进行任何更改。象在备份模式中一样,变化被指向一个临时的增量文件:解锁后增量文件会别复合到主文件中去。
提醒一下:nbackup.exe文件位于你的Firebird文件夹的bin子目录里。一般的位置是如: C:\Program Files\Firebird\Firebird_2_0\bin(windows)或者 /opt/firebird/bin(Linux)。没有图形界面;你必须从命令行启动(或者从批处理文件或者应用程序中)。

锁定数据库并自己备份
一个你用来进行自己的备份典型的会话是这样的:
1. 使用 –L(锁定)开关锁定数据库:
nbackup [-U <user> -P <password>] –L <database>
2. 现在按照你的想法复制/备份/压缩数据库文件,使用你自己选择的工具。单纯复制一下文件也是可以的。
3. 使用-N(解锁)开关解锁数据库:
nbackup [-U <user> -P <password>] –N <database>
最后一个命令将使所有变化-写在增量文件里- 复合到主文件中去。你建立的备份文件包含了数据库在被锁定的瞬间所有的数据,不管锁定状态持续了多久,也不管你在进行实际备份前等待了多久。

从一个nbackup –L建立的备份中恢复
一个锁定的数据库文件的拷贝本身也是个锁定的数据库,所以你不能只是复制回来然后直接使用它。如果你原来的数据库文件丢了或者损坏了,因而自己做的拷贝需要恢复(或者你需要在另一台机器上安装),按如下方法操作:
1. 使用必要的工具,复制/恢复/解压你自己制作的备份文件
2. 现在使用-F(Fixup修正),而不是-N开关,解锁数据库:
nbackup –F <database>

为什么有两个解锁开关,-N和-F?
. –N首先检查-L锁定后的变化复合到主数据库文件。然后,数据库文件恢复到正常的读写模式,并且临时文件被删除。
. –F 只是改变自己恢复的数据库状态标志到“正常”。
所以,你可以使用:
. –N,在进行你的复制/备份操作后(逆转前面所说的 -L);
. –F,在恢复一个你那样制作的备份文件后。

内幕
注:这一节不包含任何必须的知识,但提供一些额外的信息,可以加深你理解不同的开关。
nbackup –L进行如下操作:
1. 连接到数据库;
2. 启动一个事务;
3. 调用ALTER DATABASE BEGIN BACKUP(这个语句在nbackup –B的额外信息中讨论过);
4. 提交事务;
5. 断开数据库的连接。

nbackup –N遵照同样的步骤,但第三步使用“… END BACKUP”。

nbackup –F 进行如下操作:
1. 恢复的数据库被打开;
2. 在文件里,状态标志被从锁定状态(nbak_state_stalled)修改至正常(nbak_state_normal);
3. 文件又被关闭。

设置增量文件
默认地,增量文件存于数据库文件所在的文件夹里。文件名和数据库文件相同,但后缀是.delta。一般没有什么理由去改变,但需要的时候也可以做到—虽然不是使用nbackup本身。使用任何一个可以允许你输入自己SQL语句的客户连接到数据库,输入以下命令:
alter database add difference file ‘path-and-filename’
定制的增量文件是和数据库文件一体的,他保存在系统表RDB$FILES里。要恢复至默认状态,输入以下语句:
alter database drop difference file

A. 文档历史
确切的文件历史记录在我们的CVS树的manual模块中,详见http://sourceforge.net/cvs/?group_id=9028

修改历史
0.1 21 Oct 2005 PV 第一版
1.0 1 Dec 2006 PV 在版信息中删除了“Beta”记号。修改了使用nbackup –R交互指定备份文件的警告。在文档历史中删除了“(或者将要)”。
将例子中的C:\Database修改为C:\Data,避免语句行跑出PDF的阴影部分。
增加了章节“设置增量文件”,并相应修改了“继续阅读”部分

B. 许可说明
本文件的内容遵照Public document.tion License Version 1.0(“许可”);你只能在遵守“许可”的情况下使用。“许可”的副本可在http://www.firebirdsql.org/pdfmanual/pdl.pdf(PDF)和http://www.firebirdsql.org/manual/pdl.html(html) 得到。
原始文件名为: Firebird之nbackup工具。
原始文件的起草者为:Paul Vinkenoog.
Copyright? 2005,2006. All Rights Reserved. 请联系起草作者:paulvink at users dot sourceforge dot net.
 
当你迷茫时,转身走回起点
 本贴发表时间:2010-2-22 22:13:33  
小原 
等级: 三流高手
头衔:小兵
贴子:159
积分:191
金币:0
来自:比火星远的地方
注册:2007-11-23
          14
 
[转帖]
用IBExpert进行Firebird数据库的跨库操作
问题:想把A库中的T_LX中的数据复制到B库中的T_LX,如何操作?A库中的T_LX和B库中的T_LX结构完全相同!

绿水青山:

最简单的是用IBExpert,在IBExpert中分别打开A库和B库,然后转到A库中,在SQL Editor中执行以下SQL:

insert into [目标数据库在IBExpert中的注册名].T_LX
select * from T_LX

注意:"目标数据库在IBExpert中的注册名"左右有个[]
 
当你迷茫时,转身走回起点
 本贴发表时间:2010-2-22 22:16:19  
waiwaibao 
等级: 籍籍无名
贴子:1
积分:1
金币:0
注册:2010-2-9
          15
 
说的不错
 
 本贴发表时间:2010-3-10 16:04:11  
zh2000 
等级: 籍籍无名
头衔:小兵
贴子:70
积分:87
金币:0
来自:火星
注册:2007-8-3
          16
 
顶一下 
 
《桃花庵歌》
桃花坞里桃花庵,桃花庵下桃花仙;
桃花仙人种桃树,又摘桃花卖酒钱。
酒醒只在花前坐,酒醉换来花下眠;
半醒半醉日复日,花落花开年复年。
但愿老死花酒间,不愿鞠躬车马前;
车尘马足富者趣,酒盏花枝贫者缘。
若将富贵比贫贱,一在平地一在天;
若将贫贱比车马,他得驱驰我得闲。
别人笑我忒疯癫,我笑别人看不穿;
不见五陵豪杰墓,无花无酒锄做田。
 本贴发表时间:2010-3-14 15:58:15  
redalert99 
等级: 籍籍无名
贴子:1
积分:1
金币:0
注册:2010-8-17
          17
 
  顶下
 
 本贴发表时间:2010-8-18 0:04:43  
 分页: [1] [2]
主题贴类型:[ 正常 ] 
您是否还没有 注册 或还没有 登陆 本站?!