Oracle 概念(Oracle 10.2)
11、Oracle应用程序
这一章描述了Oracle数据库关于数据传输、数据维护和数据库管理的应用程序。
这一章包含下列内容:
u Oracle应用程序介绍
u 数据泵导入导出概述(Data Pubmp Export and Import)
u 数据泵API概述
u 元数据API概述
u SQL *Loader概述
u 外部表概述
u LogMiner概述
u DBVERIFY应用程序概述
u DBNEWID应用程序概述
Oracle数据库应用程序允许你执行下列任务:
u 使用数据泵导入导出在数据库之间高速移动数据和元数据
u 使用元数据API抽取和生成数据库对象的元数据的完全定义
u 使用数据库泵API在数据库之间移动一个站点的数据和元数据的部分或全部
u 使用SQL *Loader从操作系统文件装载数据到Oracle表,或者使用外部表将外部资源装载数据到Oracle表。
u 通过SQL接口和LogMiner查询重做日志文件
u 使用DBVERIFY应用程序对离线(例如备份)数据库或数据文件执行物理数据结构完整性检查。
u 使用DBNEWID应用程序对一个运行时数据库维护内部数据库标识符(DBID)和数据库名称(DBNAME)。
Oracle数据泵技术让数据库之间的数据和元数据可以高速移动。这个技术是Oracle数据移动应用程序:数据泵导出和数据泵导入的基础。
数据泵使得你可以指定一个任务是否只移动数据或元数据的一部分。通过使用导入导出参数来实现数据过滤和元数据过滤。
数据泵导出(下文简称为导出)是一个应用程序,用来将数据和元数据转存到一系列操作系统文件上(叫做转储文件集)。转储文件可以移动到另外一个系统,使用数据泵导入应用程序装载。
转储文件集由一个或多个磁盘文件组成,包含表数据、数据库对象元数据和控制信息。文件格式是私有的、二进制的,只能由数据泵导入程序读取。在一个导入操作中,数据泵导入程序使用转储文件集中的这些文件来定位每个数据库对象。
数据泵导入(下文简称为导入)是一个应用程序,负责将导出的转储文件集装载到目标系统。转储文件集由一个或多个磁盘文件组成,包含表数据、数据库对象元数据和控制信息。文件格式是私有的、二进制的。
导入还可以直接从源数据库而不使用中间文件来装载到目标数据库,这样允许导出和导入工作并行运行,最小化整体消耗时间。这就是常说的网络导入。
导入还可以让你看到导入任务将要运行的所有DDL语句,而不需要实际执行SQL。使用导入参数SQLFILE可以实现这个功能。
数据泵API提供了在数据库之间高速移动一个站点的部分或者全部数据和元数据的方法。数据泵API就是DBMS_DATAPUMP包提供的存储过程。数据泵导入导出程序就是基于数据泵API的。
元数据应用编程接口(API)提供了一个做如下事情的方法:
u 以XML方式获取一个对象的元数据
u 以多种方式转换XML。包括转换为DDL语句
u 提交SQL并根据获取数据来重新创建对象
为使用元素据API,你可以使用DBMS_METADATA包中存储过程。对元数据API的目的来说,数据库中的每个实体都作为所属的对象类型建模。例如,表scott.emp是一个对象,对象类型为TABLE。当你获取一个对象的元数据时,你必须指定对象类型。
SQL *Loader从一个外部文件装载数据到Oracle数据库。它有一个强大的数据解析引擎,只对数据文件的数据格式有一点点限制。你可以使用SQL *Loader完成如下任务:
u 在一个装载会话中从多个数据文件中装载数据
u 在一个装载会话中将数据装载入多个表
u 指定数据的字符集
u 选择性的装载数据(你可以根据记录值装载记录)
u 在数据装载之前使用SQL函数处理数据
u 在指定列生成唯一序列键值
u 使用操作系统文件系统来访问数据文件
u 从磁盘、磁带或命名管道装载数据
u 产生精确的错误报告,对错误处理非常有用
u 装载任意复杂的对象关系数据
u 使用辅助数据文件来装载LOBS或者集合
u 可以使用常规路径或直接路径装载。常规路径装载灵活性较好,直接路径装载提供更高的装载性能。
一个典型的SQL *Loader会话需要一个控制文件(控制SQL *Loader的行为)和一个或多个数据文件。SQL *Loader的输出是一个Oracle数据库(数据转载的目标)、一个日志文件、一个坏数据文件、可能还包括丢弃数据文件。
外部表特性是现有SQL *Loader功能的补充。它使得你可以像数据库中的表一样访问外部资源的数据。外部表可以使用ORACLE_DATAPUMP访问驱动来定义。外部表上不允许DML操作和索引创建。因而,SQL *Loader可能更适合传输表需要额外的索引的数据装载情况。
为使用外部表特性,你必须拥有你的平台的数据文件的文件格式和记录格式的知识。你还必须知道创建外部表和在其上执行查询需要的知识。
Oracle LogMiner让你可以通过SQL接口来查询重做日志文件。所有的用户数据和数据库字典的修改都记录在Oracle重做日志文件中。因而,重做日志文件包含执行恢复操作的所有必须信息。
LogMiner可以通过命令行接口或者图形化的Oracle LogMiner查看器来使用。LogMiner查看器是Oracle企业管理器的一部分。
重做日志文件包含的数据可能有下列用处:
u 数据库发生逻辑错误时的精确定位,比如应用程序级别的错误,可能已经开始了。这让你可以将数据库恢复到发生错误之前的状态。
u 任何时候检测和修正用户错误,用户错误更像一个描述而不是逻辑错误。用户错误包括因为WHERE子句的错误值导致删除错误行,根据错误值更新行,错误的删除索引等等。
u 确定你在事务级别执行精确恢复应该采取的动作,如果你完全理解和考虑现有的依赖,就有可能执行表级别的撤销操作来回滚一系列修改。
u 通过趋势分析执行调优和容量规划。你可以确定那些表是经常增加和更新的。这些信息提供了磁盘访问统计的历史透视图,这些信息可以用来调优。
u 执行事后审计。重做日志文件包含跟踪任何运行在数据库上的DML和DDL语句的所有必要信息,包括它们的运行顺序和谁执行了它们。
DBVERIFY是一个外部命令行工具,可以用来执行物理数据结构完整性检查。它可以用于离线和在线数据库,也可以用于备份文件。在你需要确定备份数据库(或者数据文件)在恢复前是否有效可以使用DBVERIFY,或者当你遇到一个数据中断文件运行DBVERIFY来诊断问题。
因为DBVERIFY可以在离线数据库上运行,完整性检查是非常快的。
DBVERIFY检查不能用于缓存管理块(就是数据块),因为DBVERIFY只能用于数据文件,它在控制文件或者重做日志文件上也不起作用。
DBVERIFY有两个命令行接口。通过第一个接口,你指定单个数据文件的磁盘块来检查。通过第二个接口,你指定一个段来检查。
DBNEWID是一个在运行时数据库上可以修改内部唯一数据库标识符(DBID)和数据据名称(DBNAME)。DBNEWID程序允许你修改任何下列信息:
u 数据库的DBID
u 数据库的DBNAME
u 数据库的DBID和DBNAME
因而,你可以手动创建一个数据库的拷贝,通过重新创建控制文件来赋予新的DBNAME和DBID,而且你可以在同一个RMAN资料库中注册一个种子数据库和手工拷贝数据库。