`

Oracle数据的导入和导出

阅读更多
ORACLE是一种适用于大型、中型和微型计算机的关系数据库管理系统,它使用SQL(Structured guery language)作为它的数据库语言。

  SQL主要包括数据定义、数据操纵(包括查询)和数据控制等三方面功能。SQL是一种非过程化程度很高的语言,用户只需说明"干什么"而无需具体说明"怎么干"语言简洁、使用方便功能强大,集联机交互与嵌入于一体,能适应广泛的使用环境。ORACLE数据库由三种类型文件组成:数据库文件、日志文件和控制文件。

  数据字典是由ORACLE自动建立并更新的一组表,这些表中记录用户的姓名、描述表和视图以及有关用户权限等的信息。数据字典是只读的,只允许查询。也就是说数据字典是一种数据库资源,每个用户都可以访问数据字典,DBA可通过数据字典来监视ORACLE RDBMS的使用,并帮助用户完成其应用。ORACLE RDBMS本身也要利用数据库字典来管理和控制整个数据库。

  提起数据库,第一个想到的公司,一般都会是Oracle。该公司成立于1977年,最初是一家专门开发数据库的公司。

      Oracle在数据库领域一直处于领先地位。1984年,首先将关系数据库转到了桌面计算机上。然后,Oracle的下一个版本,版本5,率先推出了分布式数据库、客户/服务器结构等崭新的概念。Oracle的版本6首创行锁定模式以及对称多处理计算机的支持……最新的Oracle8主要增加了对象技术,成为关系-对象数据库系统。目前,ORACLE产品覆盖了大、中、小型机等几十种机型,Oracle数据库成为世界上使用最广泛的关系数据系统之一。


Oracl入门基本知识

      1.一个表空间只能属于一个数据库。

  2.每个数据库最少有一个控制文件(建议3个,分别放在不同的磁盘上)。

  3.每个数据库最少有一个表空间(SYSTEM表空间)。

  4.建立SYSTEM表空间的目的是尽量将目的相同的表存放在一起,以提高使用效率,只应存放数据字典。

  5.每个数据库最少有两个联机日志组,每组最少一个联机日志文件。

  6.一个数据文件只能属于一个表空间。

  7.一个数据文件一旦被加入到一个表空间中,就不能再从这个表空间中移走,也不能再加入到其他表空间中。

  8.建立新的表空间需要建立新的数据文件。

  9.数据文件被ORACLE格式化为ORACLE块,Oracle9i以前版本中,ORACLE块的大小是在第一次创建数据库时设定的。

  10.并且以后不能改变,要想改变,只能重建数据库。

  11.一个段segment只能属于一个表空间,但可以属于多个数据文件。

12.一个区extent只能属于一个数据文件,即区间(extent)不能跨越数据文件。

  13.PCTFREE和PCTUSED总和不能大于等于100。

  14.单独一个事务不能跨越多个回滚段。

  15.索引表不含ROWID值。

  16.拥有不同大小的回滚段没有任何益处。

  17.COMMIT后,数据不一定立即写盘(数据文件)。

  18.一个事务即使不被提交,也会被写入到重做日志中。

  19.Oracle 8.0.4中,在初始安装时建立的缺省数据库,实例名为ORCL 。

  20.一个块的最大长度为16KB(有2K、4K、8K、16K)。
   每个数据库最大文件数(按块大小)
   2K块        20000个文件
   4K块        40000个文件
   8K块或以上     65536个文件


  21.oracle server可以同时启动多个数据库 。

  22.一套操作系统上可以安装多个版本的ORACLE数据库系统(UNIX可以,NT不可以)。

  23.一套ORACLE数据库系统中可以有多个ORACLE数据库及其相对应的实例 。

  24.每个ORACLE数据库拥有一个数据库实例(INSTANCE)(OPS除外)。

  25.所以,一套操作系统上同时可以有多个oracle数据库实例启动。

Oracle数据库产品具有的优良特性

(1) 兼容性

  Oracle产品采用标准SQL,并经过美国国家标准技术所(NIST)测试。与IBM SQL/DS,DB2,INGRES,IDMS/R等兼容。

(2) 可移植性

  Oracle的产品可运行于很宽范围的硬件与操作系统平台上。可以安装在70种以上不同的大、中、小型机上;可在VMS、
DOS、UNIX、WINDOWS等多种操作系统下工作。

(3) 可联结性

  能与多种通讯网络相连,支持各种协议(TCP/IP、DECnet、LU6.2等)。

(4) 高生产率

  提供了多种开发工具,能极大的方便用户进行进一步的开发。

(5) 开放性

  Oracle良好的兼容性、可移植性、可连接性和高生产率是Oracle RDBMS具有良好的开放性。

  ORACLE产品主要包括数据库服务器、开发工具和连接产品三

数据库服务器

  最新版本是8,但广泛应用的是7。版本7具有以下特色:

(1)多进程、多线索的体系结构

  多进程、多线索的体系结构。Oracle7包括一个到多个线索进程、多个服务器进程和多个后台进程。线索进程负责监听用户请求,将用户请求链入内存的请求队列中,并将应答队列中的执行结果返给相应用户。服务器进程负责处理请求队列中的用户请求,并把结果链入应答队列。线程和线索的数目都可以根据当前工作负荷动态调整。Oracle7的进程结构能充分利用并行机上多处理机的能力,但由于其线索是用进程模拟的,由操作系统调度,这在一定程度上消弱了线索开销低的优越性。

(2)为提高性能改进核心技术

  Oracle7改进了其核心技术。其并发控制机制更加精致,包括了无限制行级封锁、无竞争查询、线索的顺序号产生机制。在共享内存缓冲区中增加了共享的SQL Cache,提高了运行效率。

(3)高可用性

  Oracle7提供了联机备份、联机恢复、镜像等多种机制保障系统具有高可用性和容错功能。

(4)SQL实现

  Oracle7的SQL符合ANSI/ISO SQL 89标准。完整性约束符合ANSI/ISO标准的实体完整性和参照完整性约束。提供基于角色的安全性。

  角色是一组权限的集合。有了角色的概念,安全管理机制可翼把表或其他数据库对象上的一些权限进行组合,将它们赋予一个角色。需要时只需将该角色授予一个用户或一组用户,这样可以降低安全机制的负担和成本。

  针对集群和MPP并行计算机平台,Oracle7提供了并行服务器选件实现存盘共享。同时,Oracle7还为SMP、集群和MPP平台提供了并行查询选件,以实现并行查询、并行数据装载等操作。

  Oracle7通过分布式选件提供分布式数据库功能。其分布式选件提供了多场地的分布式查询和多场地更新功能,具有位置透明性和场地自治性,提供全局数据库名,支持远程过程调用

开发工具

  Oracle提供的开发工具包是Developer/2000、Designer/2000、Discover/2000、Oracle Office等,它涵盖了从建模、分析、设计到具体实现的各个环节。

Developer/2000包括:

  Oracle Forms用于快速生成基于屏幕的复杂应用,具有GUI界面和多媒体功能,主要用于操纵数据和查询。

  Oracle Reports是快速生成报表的工具。能生成各种复杂的报表,同样能处理多媒体信息。

  Oracle Graphics用于生成各种图形应用。

  Oracle Books用于生成联机文档。

Designer/2000:

  这是Oracle提供的CASE工具。该工具能够帮助用户对复杂系统进行建模、分析和设计。还可以帮助用户绘制ER图、功能分层图、数据流图和方阵图。

Discover/2000:

  这是一个OLAP工具,主要用于支持数据仓库应用。它可以对历史数据进行挖掘,以找到发展趋势,对不同层次的概况数据进行分析,以便发现有关业务的详细信息。

  Oracle Office适用于办公自动化的,能完成企业范围内的消息接收与发送、日程安排、日历管理、目录管理以及拼写检查。

oracle数据库的建模与设计

      要开发一个基于数据库的应用系统,其中最关键的一步就是整个系统所依据的数据库的建模设计,从逻辑的到物理的,一个环节疏于设计,整个的应用系统便似建立在危房之上,随着开发过程的不断深入,它要随时面临着各种难以预料的风险,开发者要为修改或重新设计没有设计好的数据库系统而付出难以预料的代价。所以,一个良好的数据库设计是高效率的系统所必须的。

一、逻辑建模

      数据库设计的方法因具体数据库而异,但是建模阶段的相同的,所以可以用一些通用的工具来进行,如Rational rose,PowerDesigner等,这一阶段主要是依据系统的需求,获取与分析要实现的应用系统信息,进行数据内部以及外在关系的分析,从而有效地建立整个系统的数据结构(在关系数据库中通常称为表结构),在此基础上对数据库的数据量、数据流量、及响应速度的估算分析,这样数据模型就产生了。具体的操作准则是数据库的几个范式、用户的具体需求和分析者的经验,从数据库的性能、安全、方便管理、易于开发等方面出发,具体方法因分析员的喜好和习惯而异,可以不用工具,最好使用工具,能让分析过程简便,最主要是能生成一些图,如E-R图,让分析过程一目了然。

二、物理设计

      此步设计和系统将具体使用的数据库有关,也和数据库所运行的硬、软件平台有关,目的是尽量合理地给数据库分配物理空间,这一步在数据库设计中很重要,关系到数据库数据的安全和数据库的性能,具体的来说,这一步包括相应表空间的数据文件在磁盘上的分配,还要根据数据量的大小确定redolog文件、rollback段的大小,然后进行分配,这些文件的分配要遵循一些原则,本着利于备份,利于性能优化的原则,原则如下(以ORACLE数据库为例):

1、为表和索引建立不同的表空间,禁止在系统表空间中放入非核心oracle系统成分的对象,确保数据表空间和索引表空间位于不同的磁盘磁盘驱动器上。

2、了解终端用户怎样访问数据,如果可能,将经常同时查询和频繁查询的对象放在不同的物理磁盘上。

3、当数据库包含允许用户并行访问不同数据元素的大对象时,将对象分割存放在多个磁盘上是有好处的。可以采用分区。在某个操作系统平台上定义拥有数百万行的表时,则更需小心,因为数据库文件的大小受到限止,这种限制是由操作系统而不是由oracle引起的。

4、在独立的各盘上至少创建两个用户定义的rollback表空间,以存放用户自己的rollback段。在初始化文件中安排rollback段的次序,使它们在多个磁盘之间进行切换。

5、将redo log文件放在一个读写较少的盘上。对于每个oracle 实例要建立两个以上的redo log 组,同组的两个成员放在不同的设备上。

6、确立表和索引的大小,这决定了保存它们所需的表空间的尺寸,也决定了哪些表空间物理地装在哪些盘上和哪些表空间可以结合在一起。具体的估算方法可以按照oracle 一些公式,这里还要按照各个表的具体特性,用途,定义它的存贮参数如(pctfree,pctused)。

三、关于数据库参数的设计

      每个数据库在建立时,都有缺省的参数设置,但是对于具体的应用要求参数设置可能不同,缺省的参数设置往往需要根据应用系统的特点而需要改动,如每个数据库的操作系统平台、instance 数目、各种内存大小的设置、采取的线程方式、备份方式等不同,具体的参数就一定要进行最为恰当的修改,这个步骤对数据库性能很重要,也是保证应用系统所要求的数据库功能得以实现重要一步。

四、与开发软件的接口问题

      数据库设计最后要考虑的是与要选择的开发软件之间的接口问题,要准备好接口程序,有些是第三方软件已经备好的,有些是数据库本身要具备的,如jdbc,bde,ado,等与数据库的接口,主要是考虑接口的可用性、效率问题。这一步主要从经验出发,因为这种产品不断出台,而且都是经过各商家的吹捧,要在实践中决定哪个是最适合。

      以上是数据库建模设计的几个重要步骤的大致分析,整个设计过程是不断地改进的,是数据库管理员、设计人员、开发人员共同完成的,只是各有侧重点不同,数据库管理员侧重于是2、3步的设计,设计人员侧重于1步的设计,而开发人员侧重于4步的设计,由于有些应用系统的编程环境和实际应用环境不同,所以要做两套设计,并注意两套设计的兼容性可移植性。

       下面结合一个实际开发的劳资管理系统中的数据库设计,对以上几个步骤做进一步解释。

      该系统应用于大型企业集团,包括几十个分厂,基本数据均来源于各分厂,各分厂有一套access数据库,存贮着自己的人才档案信息,由各厂自己维护,定期传到总的数据库里,供劳资处各室查询、统计用,。这是一个分部式的数据库。

一、逻辑建模

      首先是对数据库的数据量、数据流量、及响应速度的估算分析,这一步对物理设计也是必须的,劳资系统的主要数据是人员档案,大概有100兆左右,还有人员配备等信息加上工种序列、工资等级、厂矿车间等各种编码,总的数据量大约在某些方面300兆左右。数据的输入、维护大部分在各厂矿进行,然后到处里集中,所以数据流量很大,对响应速度要求一般。

在逻辑建模上的工具上,采用Rantional rose 2000,根据用户的需求,设计各种use case view, 在 logic view中生成数据库的实体,及实体之间的E-R图,然后生成Data modeler,确定以后,用Schema generation在建好的数据库中的对应的用户下生成表。

详细的图很繁琐,在这里就不展示了。

二、物理设计

1、因为职工档案信息库很大,还有照片,所以把它分成两个表,把照片单独地放在一个表中,并且采用分区技术,在档案表、照片表上建立分区,不同的分区分别放在不同的表空间。

2、因为职工档案信息库里有许多编码,查询的时候要和编码库一起进行read操作,所以不把职工档案信息表和编码库放在一个表空间。

3、建立二个rollback 表空间,十个rollback段,分区放在二个表空间里,建立一个比较大的rollback段,因为职工档案信息表经常会有批量的修改与添加。

4、将redo log文件放在一个读写较少的盘上。建立三个redo log 组,同组的两个成员放在两个盘上。因为选用的是ARCHIVELOG的备份方式。

5、根据每个表的性质,确定其存贮的参数,如职工档案信息表的修改、删除、插入都比较多,所以把它的Pctfree 10,Pctused 80定大小,估算出它大致需要的block数,算出存放这些表的表空间的数据文件的大小。

6、根据用户的需求,建立一套数据库的安全体系。也就是总结出几种权限级别的用户,建立这些用户,并给这些用户赋上相应的仅限,供开发人员编程时使用。

三、参数的设置

缺省的初始化参数文件中,选择large。因为用户数很多,100个左右。

SHARED_POOL_SIZE, 与数据库大小有关,也与应用软件有关。这里设成缺省值的1.5倍。

DB_BLOCK_BUFFERS 根据所用服务器的内存与交易数的大小,设为25兆。

SORT_AREA_SIZE 根据所用服务器的内存,设为10兆

LOG_BUFFER 用缺省值的1.5倍。

DBWR_IO_SLAVES 设为1

ROLLBACK_SEGMENTS 根据交易量的大小,定为10个。分别放在两个磁盘上。

PROCESS 80

MTS_SERVERS 3

MTS_DISPATCHERS tcp,3

ARCHIVE_LOG_START TRUE 采用ARCHIVE方式备份。

这些参数的确定是暂时的,没有一个系统可以运行之前把参数确定得正好,需要在应用程序运行之后进行调整。

四、与开发软件的接口问题

     因为我们这个系统的开发软件用的是Borland c++builder 5,所以采用的是比较成熟的BDE的接口,它是Borland公司提供的,性能比较好。

以上是根据多年数据库管理、开发的实践总结而出的数据库建模与设计的大致思路,希望能对大家有所帮助。

Oracle数据库的备份与恢复

---- 当我们使用一个数据库时,总希望数据库的内容是可靠的、正确的,但由于计算机系统的故障(包括机器故障、介质故障、误操作等),数据库有时也可能遭到破坏,这时如何尽快恢复数据就成为当务之急。如果平时对数据库做了备份,那么此时恢复数据就显得很容易。由此可见,做好数据库的备份是多么的重要,下面笔者就以ORACLE7为例,来讲述一下数据库的备份和恢复。ORACLE 数据库有三种标准的备份方法,它们分别为导出/导入(EXPORT/IMPORT)、冷备份、热备份。导出备份是一种逻辑备份,冷备份和热备份是物理备份。

---- 一、 导出/导入(Export/Import)

---- 利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回Oracle数据库中去。

---- 1. 简单导出数据(Export)和导入数据(Import)

---- Oracle支持三种类型的输出:

---- (1)表方式(T方式),将指定表的数据导出。

---- (2)用户方式(U方式),将指定用户的所有对象及数据导出。

---- (3)全库方式(Full方式),将数据库中的所有对象导出。

---- 数据导出(Import)的过程是数据导入(Export)的逆过程,它们的数据流向不同。

---- 2. 增量导出/导入

---- 增量导出是一种常用的数据备份方法,它只能对整个数据库来实施,并且必须作为SYSTEM来导出。在进行此种导出时,系统不要求回答任何问题。导出文件名缺省为export.dmp,如果不希望自己的输出文件定名为export.dmp,必须在命令行中指出要用的文件名。

---- 增量导出包括三个类型:

---- (1)“完全”增量导出(Complete)

---- 即备份整个数据库,比如:

---- $exp system/manager inctype=complete file=990702.dmp

---- (2) “增量型”增量导出

---- 备份上一次备份后改变的数据。比如:

---- $exp system/manager inctype=incremental file=990702.dmp

---- (3) “累计型”增量导出(Cumulative)

---- 累计型导出方式只是导出自上次“完全” 导出之后数据库中变化了的信息。比如:

---- $exp system/manager inctype=cumulative file=990702.dmp

---- 数据库管理员可以排定一个备份日程表,用数据导出的三个不同方式合理高效地完成。

---- 比如数据库的备份任务可作如下安排:

---- 星期一:完全导出(A)

---- 星期二:增量导出(B)

---- 星期三:增量导出(C)

---- 星期四:增量导出(D)

---- 星期五:累计导出(E)

---- 星期六:增量导出(F)

---- 星期日:增量导出(G)

---- 如果在星期日,数据库遭到意外破坏,数据库管理员可按以下步骤来恢复数据库:

---- 第一步:用命令CREATE DATABASE重新生成数据库结构;

---- 第二步:创建一个足够大的附加回段。

---- 第三步:完全增量导入A:

---- $imp system./manager inctype= RECTORE FULL=Y FILE=A

---- 第四步:累计增量导入E:

---- $imp system/manager inctype= RECTORE FULL=Y FILE =E

---- 第五步:最近增量导入F:

---- $imp system/manager inctype=RESTORE FULL=Y FILE=F

---- 二、 冷备份

---- 冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。冷备份是将关键性文件拷贝到另外位置的一种说法。对于备份Oracle信息而言,冷备份是最快和最安全的方法。冷备份的优点是:

---- 1.是非常快速的备份方法(只需拷贝文件)

---- 2.容易归档(简单拷贝即可)

---- 3.容易恢复到某个时间点上(只需将文件再拷贝回去)

---- 4.能与归档方法相结合,作数据库“最新状态”的恢复。

---- 5.低度维护,高度安全。

---- 但冷备份也有如下不足:

---- 1.单独使用时,只能提供到“某一时间点上”的恢复。

---- 2.在实施备份的全过程中,数据库必须要作备份而不能作其它工作。也就是说,在冷备份过程中,数据库必须是关闭状态。

---- 3.若磁盘空间有限,只能拷贝到磁带等其它外部存储设备上,速度会很慢。

---- 4.不能按表或按用户恢复。

---- 如果可能的话(主要看效率),应将信息备份到磁盘上,然后启动数据库(使用户可以工作)并将所备份的信息拷贝到磁带上(拷贝的同时,数据库也可以工作)。冷备份中必须拷贝的文件包括:

---- 1.所有数据文件

---- 2.所有控制文件

---- 3.所有联机REDO LOG文件

---- 4.Init.ora文件(可选)。

---- 值得注意的是冷备份必须在数据库关闭的情况下进行,当数据库处于打开状态时,执行数据库文件系统备份是无效的

---- 下面是做冷备份的完整例子:

---- (1) 关闭数据库$sqldba lmode=y

---- SQLDBA >connect internal;

---- SQLDBA >shutdown normal;

---- (2) 用拷贝命令备份全部的时间文件、重做日志文件、控制文件、初始化参数文件

---- SQLDBA >! cp < file > < backup directory >

---- (3) 重启Oracle数据库

---- $sqldba lmode=y

---- SQLDBA >connect internal;

---- SQLDBA >startup;

---- 三、 热备份

---- 热备份是在数据库运行的情况下,采用archivelog mode方式备份数据的方法。所以,如果你有昨天夜里的一个冷备份而且又有今天的热备份文件,在发生问题时,就可以利用这些资料恢复更多的信息。热备份要求数据库在Archivelog方式下操作,并需要大量的档案空间。一旦数据库运行在archivelog状态下,就可以做备份了。热备份的命令文件由三部分组成:

---- 1.数据文件一个表空间一个表空间地备份。

---- (1)设置表空间为备份状态

---- (2)备份表空间的数据文件

---- (3)恢复表空间为正常状态

---- 2.备份归档log文件。

---- (1)临时停止归档进程

---- (2)log下那些在archive redo log目标目录中的文件

---- (3)重新启动archive进程

---- (4)备份归档的redo log 文件

---- 3.用alter database backup controlfile命令来备份拷贝文件

---- 热备份的优点是:

---- 1.可在表空间或数据文件级备份,备份时间短。

---- 2.备份时数据库仍可使用。

---- 3.可达到秒级恢复(恢复到某一时间点上)。

---- 4.可对几乎所有数据库实体作恢复。

---- 5.恢复是快速的,在大多数情况下在数据库仍工作时恢复。

---- 热备份的不足是:

---- 1.不能出错,否则后果严重。

---- 2.若热备份不成功,所得结果不可用于时间点的恢复。

---- 3.因难于维护,所以要特别仔细小心,不允许“以失败而告终”。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics