当前位置:文档之家› Oracle数据库10g备份与恢复(技术白皮书)

Oracle数据库10g备份与恢复(技术白皮书)

Oracle数据库10g备份与恢复(技术白皮书)
Oracle数据库10g备份与恢复(技术白皮书)

Oracle数据库10g备份和恢复:RMAN和闪回技术

Oracle 白皮书

2004 年 6 月

发展和革命 (3)

恢复管理器 (3)

快速恢复区 (4)

自动存储管理 (6)

更改跟踪文件 (6)

增量更新备份 (7)

Oracle 建议的策略 (7)

备份管理 (9)

跨平台的传输 (10)

革命还未结束 (11)

RMAN 比对用户管理的恢复 (11)

网格集群 (13)

人为错误的挑战 (13)

人为错误纠正—闪回技术 (13)

人为错误的传统恢复 (14)

恢复时间目标 (14)

何时使用闪回与传统恢复的对比 (14)

闪回数据库 (15)

闪回表 (17)

闪回删除 (18)

什么是回收站? (18)

闪回查询 (18)

闪回版本查询 (20)

闪回事务查询 (20)

实例 (21)

结论 (22)

发展和革命

数据库备份可能是防止 Oracle 数据库发生介质故障的唯一方式。使用提供给 DBA 的大量工具和方法来恢复关键数据的重要性是毋庸置疑的。保护 Oracle 数据的成本和复杂性包括,从简单的每周备份到磁带,到记录更加繁复的文件快照或备用数据库。Oracle Data Guard1.的体系结构有助于企业恢复对 Oracle 数据库造成不利影响的灾难、人为错误和损坏。每个工具和选项都有其自己的持续可用性优势,并且可以快速备份和/或恢复 Oracle 数据库。

为了保护和恢复数据所采纳的方法或工具应该具有:

可靠性。所有需要恢复的文件都进行了备份,且通过恢复操作能够方便地恢复文件。

灵活性。Oracle 数据库可以在数据库、表空间、数据文件和块级上备份或恢复。

可管理性组织和管理备份文件以便用于恢复操作。

可用性。备份操作不应该干扰数据库事务处理过程同时恢复操作应该快速、有效。

Oracle 恢复管理器通过新的版本和 Oracle 数据库 10g 包含的革命性技

术进步继续得以完善,并提供您一直期待的简单、可靠和自动的恢复工具。此白皮书列出了 Oracle 数据库 10g 用于备份和恢复文件管理的新功能,增强的增量备份和异构平台上相同表空间数据的共享。让革命开始吧!

恢复管理器

恢复管理器 (RMAN) 是管理备份和更重要的数据库恢复的 Oracle 公用程序。提供数据库高级的性能和可用性的同时消除了操作的复杂性。从 Oracle8 开始,恢复管理器为 DBA 提供了集成的备份和恢复解决方案。

1有关 Data Guard 的详细信息,请访问

https://www.doczj.com/doc/4f16385775.html,/deploy/availability/htdocs/odg_overview.html。

恢复管理器确定了执行请求的备份、存储或恢复操作,然后与 Oracle 数据库服务器合作执行这些操作最为有效的方式。恢复管理器和服务器会自动识别出数据库结构的改动,并且动态地调整所需的操作以便适应更改。

Oracle 数据库 10g 恢复管理器功能集灵活变革了关键 Oracle 数据的恢复。不用花费成本或附加安装,RMAN 即可管理 Oracle 数据库文件的备份和恢复。因为 RMAN 与 Oracle 内核紧密集成,它提供了有效恢复 Oracle 数据库的能力。

快速恢复区

和 5 年以前甚至 1 年以前相比,今天花费相同数量的钱,却能够买到更多的磁盘空间。可能只需要几 G 的磁盘空间就能满足当前的存储需要,磁盘容量的直线上升只是带来了闲置存储空间的浪费。您是否经常彻夜不眠,尽力设想该怎样使用这些闲置的磁盘空间吗?使数据库备份在磁盘上如何?在磁盘上制作备份要更快,因为消除了磁带写入的瓶颈。但更重要的是,如果需要数据库介质恢复,则立刻就可以使用数据文件备份。因为不需要查找磁带和空闲磁带设备来存储所需的数据文件和存档日志,所以减少了存储和恢复操作时间。

但是等一下。备份至磁盘并不是一个新概念。多年来 DBA 一直在执行此类型的备份和恢复策略。RMAN 始终都能够从磁盘位置备份和恢复数据库。什么是快速恢复区,是什么让它成为 DBA 的无价之宝?

快速恢复区是一个统一的磁盘存储位置,用于 Oracle 数据库内的所有恢复相关的文件和活动。通过定义一个 init.ora 参数,所有 RMAN 备份、存档日志、控制文件自动备份和数据文件副本会自动写入指定的文件系统或 ASM 磁盘组。

DB_RECOVERY_FILE_DEST = /oracle/flash_recovery_area

给快速恢复区分配足够的空间可确保 Oracle 数据库更快速、更方便地自动恢复。现在,恢复时间目标取决于能够分配的空闲空间大小,此空间用来恢复相关文件。有关研究表示 95% 的恢复操作只需要 3 天的备份量。所以,如果拥有维持 3 天数据库备份和存档日志的磁盘空间,就可以在本地进行所需的备份。系统管理员将不需要检索磁带或清空磁带设备,即可还原需要的备份文件。

好,现在 Oracle 数据库 10g 提供了一个参数可以将与恢复相关的文件组织到磁盘上的一个位置现在您可能会说,这又如何呢?它怎么能帮助我呢?我已经可以自己的磁盘上执行备份并且配置所有我需要的存档日志目标。我很高兴您问及这个问题。

快速恢复区管理磁盘上的文件通过配置 RMAN 保留策略,快速恢复区将自动删除该配置不再需要的陈旧备份和存档日志。如果您将某一恢复窗口的保持策略设置为 7 天,RMAN 将所有恢复数据库需要的备份文件保存 7 天。如果为所有的恢复文件设置了足够的磁盘空间偏离,那么只需要备份到磁带,以便满足离线灾难恢复和长期的存档要求。

从介质故障中完全恢复数据库所需的所有文件是快速恢复区的一部分。这些与恢复相关的文件包括:

控制文件:数据库创建过程中,在快速恢复区位置创建的副本。

存档日志文件:配置快速恢复区时,存档程序后台进程随后在快速恢复区以及其他 LOG_ARCHIVE_DEST_n 配置位置中创建存档

文件。

闪回日志:快速恢复区会自动管理闪回数据库日志。

控制文件自动备份:控制文件的默认位置。

数据文件副本:RMAN 创建的数据文件副本的默认位置是存储在快速恢复区。

RMAN 备份:在备份、复制操作过程中,RMAN 创建文件的默认位置。如果恢复任务过程中需要磁带的话,这也是从磁带上恢复

存档日志的默认位置

企业管理器提供界面来定义快速恢复区。

快速恢复区提供:

相关恢复文件的统一存储位置

为恢复文件分配的磁盘空间管理

简化的数据库管理任务

更快的备份

更快的恢复

因磁盘的内在可靠性而更加可靠

自动存储管理

谈到备份和恢复时,不能不同时谈到文件存储。它们是息息相关的。Oracle10g 为存储资源提供了 DBA 简化的管理界面。自动存储管理 (ASM) 免除了手动性能调节的需要。它将物理存储集中到一组虚拟磁盘,它提供启用高级保护的冗余选项。ASM 推动了非侵入存储分配并提供自动平衡。它将数据库文件扩展到所有可用的存储上,这样优化了性能和资源利用。通过自动化手工任务,它节省了 DBA 时间并提高了管理较大数据库的能力,从而提高了数据库的效率。

可以使用 ASM 配置快速恢复区。备份会自动得到保护,因为 ASM 设计上具有容错功能,而且它在磁盘或磁盘阵列出现故障时会自动重新镜像。此外,ASM 可以防止非 Oracle 进程覆盖或损坏用于恢复的文件。有关 ASM 的详细信息,请参见 OracleWorld 技术白皮书 40140 – Oracle 数据库 10g:利用自动存储管理简化您的工作。

更改跟踪文件

在 Oracle8.0 中首次发布的增量备份一直是 RMAN 的一部分,它能够只备份自上一次备份以后改变的程序块。Oracle 数据库 10g 通过实施变化跟踪文件特性加快了增量备份速度。

启用程序程序块变化跟踪时,Oracle 就会跟踪所有数据库变化的物理位置。RMAN 自动使用变化跟踪文件来确定在增量备份期间需要读取的程序块,然后直接访问该程序块以对其进行备份。不启用程序块变化跟踪时,在每个增量备份过程中会读取整个数据文件以查找并备份更改了的程序块,即使自上次备份以来只有非常少量的文件发生了更改。使用以下命令来启用程序块变化跟踪。

ALTER DATABASE ENABLE BLOCK CHANGE TRACKING;

通过进行增量备份并且使变化跟踪文件成为您备份策略的一部分,您将能够:

减少日常备份所需的时间。

跨网络备份时可以节省网络带宽

恢复 UNLOGGED 更改到数据库。例如,利用直接加载使用“NOLOGGING”选项时,插入并不会创建重做日志条目而且它们

的更改无法通过介质恢复进行应用。增量备份会捕获更改的程序

块图像,而且它可以用于恢复。

减少备份文件存储。根据更新的程序块数量和备份的频率,增量备份将小于整个数据库备份而且占用更少的存储空间。

启用已更改程序块的快速备份。

增量更新备份

Oracle’s 数据库 10g 增量更新备份功能可以使数据文件的图像副本与RMAN 增量备份合并。产生的图像副本将使用增量备份捕捉的程序块更改进行更新。使用 RMAN RECOVER 命令可以启动图像副本和增量备份的合并。这在后台运行而且不需要数据库实例。

收缩备份窗口不再是问题。可以利用最新的增量备份连续更新数据文件图像副本,Oracle 已不再要求通过此方法制作整个数据库备份。基于增量更新备份的备份策略有助于将数据库介质恢复所需时间减到最少。RMAN 恢复数据库的增量更新图像副本,且只需要应用上次备份以来生成的存档日志。介质恢复所需的时间是创建增量备份并应用到图像副本的频率的函数。

将增量备份应用到数据文件图像副本

取消了执行整个数据库备份的需要。

由于使用最新的程序块更改更新图像副本,减少了介质恢复所需的时间。

Oracle 建议的策略

备份解决方案利用快速恢复区、增量备份和增量更新备份,为 Oracle 数据库提供了简单而快速的恢复。企业管理器备份向导提供了配置和计划数据库备份的机制。

备份向导提示您

配置快速恢复区,这样所有的 RMAN 备份和存档日志将写入指定的目录。

确定备份应该在主机上运行的最佳时间。通常在用户操作最少的时候会运行预定的备份。

复查并确认备份时间。企业管理器将提交备份作业以便每晚的同一时间运行。

对于每个数据文件,Oracle 建议策略调用的备份操作如下:

1. 策略中第 1 天的开始(第一次计划任务实际运行的时间),备

份增量级为 0 的数据文件副本。在第 1 天的开始它包含数据文

件目录。在存储和恢复方案中,第 1 天中的重做日志可以用来

恢复到第 1 天中的任何一点。

2. 在第 2 天的开始,将创建增量级为 1 的备份,它包含第 1 天

中更改的程序块。在存储和恢复方案中,此增量级 1 可快速恢

复前滚级 0 备份到第 2 天的开始,使用重做日志可以恢复到第

2 天的任何一点。

3. 第 3 天及其后的第 n 天开始,从第 n-1 天开始的级 1 备份应

用于级 0 的备份。在第 n-1 天的开始,这将恢复数据文件副本

到第 n-1 天开始的状态。随后创建新级 1,它包含第 n-1 天中

更改的程序块。在存储和恢复方案中,此增量级 1 可快速恢复

存储的备份到第 n 天的开始,使用重做日志可以把数据库恢复

到第 n 天的任何一点。

此策略可能听起来很复杂,却完全是企业管理器自动完成的。您还可以自己执行建议的策略,只要在各个备份窗口中运行以下两个 RMAN 命令即可:

RECOVER COPY OF DATABASE WITH TAG

oracle_strategy;

BACKUP INCREMENTAL LEVEL 0 DATABASE FOR

RECOVER OF COPY WITH TAG oracle_strategy;

备份管理

企业管理器 10g 提供列出和修改 RMAN 备份的能力。您可以查看 RMAN 备份、存档日志、控制文件备份和图像副本。如果选择 RMAN 备份上的链接,将显示位于此备份中的所有文件。

跨平台的传输

Oracle 可传输的表空间功能允许用户跨越 Oracle 数据库快速移动表空间。它是在数据库间转移批量数据最为有效的方式。

使用可传输的表空间转移数据,要比导出/导入或是卸载/加载同样的数据快得多。这是因为传输表空间仅要求复制数据文件、集成表空间的结构信息。您也可以使用可传输的表空间来转移索引数据,因此,在导入或加载表格数据时就避免了通常需要执行的索引重建。

Oracle 数据库 10g 还提供了跨平台传输表空间的能力。此功能可用于: 向内容供应商提供一种更方便、有效的方式来发布已经结构化的数据,并发布给在不同平台上运行 Oracle 的客户。

简化数据从仓库环境到数据市场的分销,这些数据市场常常运行较为小型的平台之上。

实现表空间跨异种集群的只读共享。

允许数据库从一个平台向另一个平台移植。

有许多的平台,但不是所有的平台都支持跨平台表空间传输。您可以查询

V$TRANSPORTABLE_PLATFORM以便查看支持的平台,并确定它们的平台 ID 和它们的终结格式(字节顺序)。

源平台和目标平台有着不同的终结,所以要在源平台或目标平台执行额外的转换步骤,以便转换正在传输至目标格式的表空间。如果它们有相同的终结类型,则没有必要进行转换,同时可以传输表空间就像它们处于同一平台上一样。

表空间传输至不同的平台之前,兼容性设置为 10.0.0 或更高的情况下,表空间至少要在 Oracle 10g 数据库中读/写一次。这是因为操作使表空间平台内部的数据文件知道识别平台的每个文件归属。

革命还未结束

前面几页中我强调了几项 Oracle 数据库 10g 恢复功能,还有更多的功能将要发布。

RMAN 备份压缩。如果有额外的磁盘空间,则通过压缩磁盘上的 RMAN 备份您还可以继续减少恢复数据库的时间。不需要未压缩

的备份文件,因为恢复操作可以使用压缩的备份文件。

恢复允许使用缺损的备份。RMAN 的目标是使用所有已知的备份恢复数据库。最好使用最后一次备份完全恢复数据库。如果没有

最后一次备份,RMAN 将自动确定可以用于恢复的下一个有效备

份。

通过时间恢复中先前的点自动恢复。有时必须及时地将数据库恢复到先前的点,然后再使用 RESETLOGS 选项打开它。Oracle 10g

以前的版本中,如果在重置日志后以及进行另外的完全备份之前

数据库损坏,则需要使用重置日志之前保存的最后一次备份进行

恢复,恢复过程会很复杂而且容易出错。在 10g 中,如果有些数

据文件是从打开 RESETLOGS 之前执行的备份中恢复的,Oracle

恢复会直接处理此类情况。

完全自动表空间时间点恢复。RMAN 只提供了一条命令,用于将表空间恢复到过去的某个时间点。此操作是完全自动的,而且在

恢复结束时就可以使用表空间。

在备份或恢复期间进行自动通道切换。有多少次几乎要完成备份或恢复操作时,因为发生错误导致通道中断而无法完成最后的文

件恢复?RMAN 将结束其他已分配通道的工作,然后自动继续完

成操作。

表空间重命名。某些情况中,表空间分享同一个表空间名称,特别是如果它们被克隆后。具备跨平台可传输的表空间能力的情况

下,可以很方便地在表空间级别移动数据。重新命名表空间的能

力使表空间变得更加轻便。

删除数据库。如果定期创建的数据库是用于测试和授权的,应该在此临时数据库完成使命后将属于数据库的文件删除。否则,磁

盘将装满孤儿数据文件。新的 RMAN DROP DATABASE 命令提供了

从操作系统中删除所有数据库文件的进程。

RMAN 比对用户管理的恢复

恢复管理器提供了 Oracle 数据库有效的恢复方法。但是有许多 DBA 继续使用其自编的脚本完成备份和恢复操作。下表对 RMAN 和用户管理的通用恢复操作进行了比较。

操作 恢复管理器步骤 用户管理步骤

丢失数据文件 1. 脱机数据文件和/或表

空间。1. 查找备份,特别是最新的

备份。

2. RMAN 恢复数据文件备份。

3. RMAN 自动恢复任何所需的存档日志时会恢复数据文件。

4. 联机数据文件和/或表空间。 2. 如果备份在磁带上,要求

有要恢复的文件。

3. 脱机数据文件和/或表空

4. 发出恢复数据文件命令。

5. 如果需要存档日志,则恢

复它们。

6. 使用恢复命令所需的存档

日志

7. 联机数据文件和/或表空

修补损坏的程序块 1. 程序块恢复

block_number

1. 导出数据

2. 损坏程序块中的数据丢

失,除非可以从备用数据

库或先前备份中抽取它。

同时即使只有一个程序块

损坏也很难抽取损环程序

块以外的表数据。

3. 导入表数据

表空间时间点恢复 1. 恢复表空间用户、工具,

直到 2003 年 7 月7

日;

1. 为临时数据库创建

init.ora 文件

2. 为系统恢复备份、撤销、

用户、工具。

3. 恢复要求有恢复所需的存

档日志

4. 安装临时数据库并恢复到

2003 年 7 月 7 日。

5. 使用数据泵设备,提取数

据也就是字典数据,这样

用户和工具表空间可以插

入到数据库中。

6. 将用户和工具表空间插入

到生产数据库。

7. 删除临时数据库文件,它

们是用于恢复 TSPITR 操

作的。

所有联机控制文件丢失 1. 恢复控制文件 1. 创建控制文件脚本,它包

含所有数据库文件和联机

日志。

2. 运行脚本以创建控制文

件。

注意:所有的 RMAN 备份和存

档日志信息都丢失了。

验证备份 1. 恢复数据库验证;因为没有可用的工具,无

法执行。

网格集群

这是场可看作是演化的革命。网格计算很可能掀起一场计算方式的革命。同时也将是快速发展的一种方式。一次可以方便地移动至网格一步。每一步都受益颇大

企业可以购买满足企业所有需求的资源,并按照需要或策略提供给他们个别的应用程序。这导致更加有效地使用企业资源,同时极大地降低了开发、部署和管理成本。它可以让您决定部署组织计算资源的方式,而且在组织需求改变时可快速更改部署

无论数据在何处,RMAN 知道什么数据需要备份,并且提供利用跨平台的可传输表空间功能从任何平台插入数据的能力。有关 GRID 的详细信息,请参见 OracleWorld 技术白皮书 40123 – Oracle 和网格。

人为错误的挑战

多项研究表明,40% 的应用程序损耗都是由操作员或用户的错误造成的。人非圣贤,孰能无过?这些错误很难避免,而且在没有事先规划和使用正确技术的前提下尤其难以恢复。这样的错误会导致“逻辑”数据损坏,或者导致 IT 基础架构的一个或多个组件停止运行。纠正个别组件的错误相对来说简单,而检测并纠正逻辑数据的损坏,例如意外删除了有价值的数据时,它耗费的操作将导致业务产出的巨大损失。典型的用户错误可能包括意外删除了有价值的数据,删除了错误数据和删除了错误表格。

人为错误纠正—闪回技术

Oracle 数据库 10g 体系结构使用了独一无二的技术革新,此技术用于人为失误造成的数据库恢复领域。闪回技术提供了一组新功能,可及时查看数据并前后倒数据。使用闪回功能,可以查询模式对象的以前版本、查询历史数据、执行变化分析,或执行自助修复,以便在数据库联机时恢复逻辑损坏。利用 Oracle 数据库 10g 闪回技术,您完全可以取消过去的操作!

Oracle9i引入了闪回查询从而提供简单、强大和完整的非破坏机制,并从人为错误中恢复。它允许用户查看过去某点的数据状态,而不需要更改任何的数据库结构。Oracle 数据库 10g扩展了闪回技术,以便提供数据库、表格、行和事务处理级别快速、方便的恢复。

闪回技术使恢复过程实现了革命性变化,您只需对更改的数据进行操作。现在,错误恢复所需的时间就相当于错误发生的时间。闪回 10g 技术包括闪回数据库、闪回表、闪回删除、闪回版本查询以及闪回事务查询。

人为错误的传统恢复

传统备份和恢复方式可靠而且容易执行备份了数据库后如果出现错误,则恢复文件并使用存档日志。瞧!几个小时后,您已经修复了故障。从人为错误恢复基本上有四种方式可供使用。

手工重新输入丢失的数据。成本高,耗时并暴露出额外的人为错误。

从最后一次冷备份恢复。自最后一次备份以来事务处理的丢失。

数据库时间点恢复。发生错误后事务处理的丢失。

表空间时间点恢复。丢失的事务只独立于表空间集。

四种方式中的任何一种都是有效的恢复策略。只有一次落下 —— 从磁带恢复备份并执行恢复操作所花费的时间。

恢复时间目标

如果发生无法预料的事件例如自然灾害、技术故障或人为错误时,您的公司可以承受的可接受停机时间是多少?一个小时?两个小时?四个小时?一整天?公司不同数值也会有所不同。为这些无法预料的事件作规划将减轻损失。恢复时间目标,或者 RTO 是恢复数据所需的小时数或天数。RTO 应该成为恢复计划的一部分,而且根据各个公司对于数据可用性需求的不同而有所不同。据 Gartner 统计,当前组织要求的主要系统停机平均恢复时间为 2 至 24 小时。

为什么要花费数小时来纠正数分钟造成的故障呢?为什么要执行冗长的备份恢复来恢复您的数据库呢?很好,只要有了 Oracle 数据库 10g就免去了一切麻烦,这要感谢“闪回技术”。此白皮书的剩余部分将讨论如何使用闪回功能来达到并超越恢复时间目标。Oracle 数据库 10g是自动管理、自动纠错实体,它让您来控制数据时间(纠错)旅行的能量。时间旅行是存在的。

何时使用闪回与传统恢复的对比

Oracle 数据库中发生逻辑故障(人为错误)时,应该使用闪回技术,而且需要快速而方便的恢复。如果发生人为错误,则很难确定错误事务影响的对象和行。闪回有助于分析诊断错误是如何被引入到数据库中的,这样您就可以修补损失并且防止此类错误再次发生。Oracle 数据库 10g允许 DBA 快速审核数据库事务并顺利地进入它们提交的第二项。下表显示了闪回技术的典型应用。

目标级别 方案 闪回技术 传统恢复

数据库 删除用户 闪回数据库 时间点恢复

截断表 闪回数据库 时间点恢复

出现批量任

务错误,导致大量表格只部分更新。 闪回数据库 数据库时间点恢复。 表格

删除表格 闪回删除 时间点恢复

不带专门的‘where’ 从句的更新 闪回表 时间点恢复 恢复删除的数据

或撤销错误的更

改,甚至是在更改

提交以后 闪回查询或者 闪回表 表空间时间点恢复

对照过去某个时

间的数据比较当

前数据

闪回查询 空间故意保持空白.. 事务

批处理任务运行两次,但无法真正肯定受到影响的

对象

闪回版本查询 & 闪回事务查询

数据库时间点恢复 闪回技术使恢复过程实现了革命性变化,您只需对更改的数据进行操作。现在,错误恢复所需的时间就相当于错误发生的时间。

闪回数据库

闪回数据库可快速地将某个 Oracle 数据库倒回至以前的时间,以便纠正由逻辑数据损坏或用户错误造成的任何问题。闪回数据库就像数据库的“倒退按钮”。

它提供数据库的时间恢复点,而无需首先恢复数据库备份。当您不再浪费时间从磁带恢复数据库备份时,数据库时间点恢复是快速的 通过使用闪回

数据库命令可以从 RMAN 和 SQL*Plus 访问闪回数据库的性能,其效果类似于常规的时间恢复点。它允许您将数据库返回到其近期的状态。

若要启用闪回数据库功能,用 DBA 配置闪回恢复区。快速恢复区在 Oracle 数据库 10g中是一项新功能,它为 Oracle 数据库中所有与恢复相关的文件和操作提供了统一的存储位置。除了闪回数据库日志以外,恢复区还包含重做存档日志和 RMAN 备份。有关闪回恢复区的详细信息,请参考 Oracle 备份和恢复文档。

Oracle 在闪回恢复区内部自动创建和管理闪回日志。因为闪回恢复区配置了空间定额,闪回日志从属于这些磁盘空间限制。闪回日志的大小区别很大,这取决于在给定的闪回日志间隔期间数据库更改的读/写速度。程序块更改的副本被写入到闪回日志中。如果在一天之内,更新了 10% 的数据库程序块,则 24 小时闪回日志的大小为您的数据库大小的 1/10th。如果将数据库恢复到过去较早时期可能要求更多的磁盘空间,则 DBA 可能会动态地更改此磁盘定额。

Data Guard 提供了几种易于使用的方式来避免用户错误。闪回数据库即可用在主数据库上又可用在备份数据库上,以便快速地将数据库恢复到较早的时间点,这样就避免了用户错误。同时,如果管理员决定切换到备用数据库,但那些用户错误已被应用于备用数据库(也就是说,由于启用了实时应用特性),管理员将只需简单地将备用数据库闪回到某一安全的时间点。最后,管理员还有额外的选择,可以不在一个或多个备用数据库上使用实时应用特性,相反使重做数据在那些备用数据库上的应用延迟一段可配置的时间,这提供了一个防止这种用户错误或损坏的保护窗口。

启用闪回数据库的性能费用少于 2%。您可能不希望牺牲任何产品数据库的性能费用,而是实现一种平衡。如果能在数分钟而不是数小时内恢复数据库,则可以避免公司上百万美元的收益损失,您愿意将 2% 的资源用在闪回数据库上吗?

启用闪回数据库功能有以下几方面获益:

免去了恢复备份的时间。因为遇到了灾难性故障数据库无法运行时,导致业务受阻从而造成上百万美元的收益流失。

消除了备用数据库重做应用延迟闪回数据库无缝地与 Data Guard 集成。备用数据库现在能够快速而方便地闪回到过去的任

意时间点,这样在应用重做过程中就不需要延迟。

意外错误纠正。闪回数据库提供了 Oracle 数据库的连续快照。

数据库可以回退到 SCN 或时间戳。

闪回表

当发生人为错误或应用程序错误时,可能想将一个或更多个表格状态恢复至故障发生以前的时间点。闪回表使 DBA 能够将一个或一组表快速轻松并联机恢复到指定时间点。闪回表可在恢复表的同时自动保留其相关属性,如当前索引、触发器和限制,而无需 DBA 查找和恢复应用程序特有的属性。闪回表缓解执行更为复杂的时间点恢复操作的需求。以下命令将 ORDERS 和 ORDER_ITEMS 表闪回到 7 月 7 日下午 2:33。

FLASHBACK TABLE orders, order_items TO TIMESTAMP

(JUL-07-2003, 02:33:00);

就像闪回查询,闪回表也依靠撤销数据恢复表。因此撤销数据必须可用,这样闪回表才能成功。自动撤销管理功能允许您指定利用

UNDO_RETENTION 初始化参数保留撤销数据的时间。通过使用此参数并适当地规定撤销表空间大小,DBA 能够控制使用闪回表的情况下可修复表的回退时间长短。

DBA 可以使用闪回表功能快速地从人为错误中恢复,它还可以用作自助服务的修复工具以便从意外修改或删除中恢复。应用程序开发人员可以将闪回表功能合并到他们定制的应用程序中。根据基于时间点对象的恢复可用性、快速恢复和使用方便,介质恢复时使用此工具将获益颇多。

闪回表

联机执行恢复操作。

将指定表中的所有数据恢复到时间戳或 SCN 说明的先前时间点。

自动恢复所有的表属性,例如索引、触发器以及应用程序所必需的内容,这些程序利用闪回的表才能发挥作用。

在分布式环境中维持远程状态。例如,所有应用程序要求的表修改都被闪回。

按照约束规定维持数据的完整性。Oracle 保留了所有从属对象和参考的完整性。

即使在闪回操作以后,仍然提供将其恢复到最初状态的能力。

闪回删除

对于用户和 DBA 来说意外删除对象始终都是一个问题。用户很快认识到了他们所犯的错误,但恢复这些删除的表、索引、约束和触发器等已经为时已晚,而且从以往来看也并非易事。在 Oracle 数据库 10g中删除对象时闪回删除提供了一个安全网。用户删除表时,Oracle 会自动将其放入“回收站”。

什么是回收站?

回收站是一个虚拟容器,所有被删除的对象都驻留在这里。在封面的下面,这些对象占据与当创建它们时所占据相同的空间。如果在 USERS 表空间中创建表 EMP,那么删除的表 EMP 保留在 USERS 表空间中。并不移动删除的表和任一相关对象(如索引、约束、嵌套表和其他相关对象),仅对它们进行重命名,使其前缀为 BIN$$。可以继续访问删除表中的数据,甚至可以依据删除表使用闪回查询。

在删除回收站对象前,每个用户对回收站对象都拥有相同的权利和权限。可以通过查询新回收站视图来查看删除表。回收站中的对象将保留在数据库中,直到删除对象的所有者决定使用新清除命令永久性删除这些对象。按用户的定额计数回收站对象。但闪回删除是一种非破坏性功能。将通过空间恢复过程自动清除回收站中的对象,如果

用户创建新表或添加导致其超出定额的数据。

表空间需要扩展其文件大小,以适应创建/插入操作。

是否删除错误表?当然。使用闪回删除将其快速取回。

闪回查询

随 Oracle9i 一起引入的 Flashback Query 提供了查看存在以前状态数据的

能力。默认情况下,数据库上的操作使用最近提交的可用数据。如果希望查

询过去某时状态中的数据库,那么,可以使用闪回查询功能进行此项操作。此功能可以指定时间或系统更改编号 (SCN) ,并使用提交的数据从相关时间中进行查询。

当使用自动撤消管理时,闪回查询机制最有效。Oracle 数据库将撤消操作当作第一等级的数据库对象。撤消操作具有持续性,可以使数据库系统继续有效,也可以崩溃或关闭数据库系统。为获取更佳性能,它还与其他数据库对象分享数据库缓冲存储器。Oracle 数据库使用超出事务处理提交范围的撤消操作,提供长期运行查询的读取一致性,并从逻辑损坏中恢复。

Oracle 数据库提供了直接指定为保留而进行的撤消数量的方法。此系统自动回收过期的撤消操作,以为新事务处理生成撤消提供空间。撤消保持值的选择依赖于长期运行查询的长度以及逻辑损坏的恢复需求。然而,用户可以不选择指定的撤消保持,以及允许系统为指定的撤消空间提供最佳保持。此最佳保持考虑到长期运行查询以及从逻辑损坏中恢复的最佳可能范围。并不保证默认的撤消保持。如果用尽用于现行事务处理的过期撤消,那么,系统可以使用最早的未过期撤消操作。

如果将 UNDO_RETENTION 设置为大于 5 天,那么,Oracle Database10g 中一项新功能是可以查询过去 5 天以前的数据。只要为作废的表空间数据文件分配足够的磁盘空间,那么,Oracle 将维护一段时间内的撤消操作。

以下描述了确保数据库可以使用依赖于撤消操作的闪回查询和其他闪回功能所需要的步骤。这包括

1. 确保数据库使用作废的表空间。将 UNDO_MANAGEMENT 初始

化参数设置为自动指定。

2. 为 UNDO_RETENTION 初始化参数设置数值,此数值可使撤消操

作保持一段时间,以允许最长的查询及时返回,或从人为错误中恢

复。

3. 为保证不覆盖未到期的撤消操作,请为作废的表空间设置

RETENTION GUARANTEE 子句。

闪回查询的唯一功能是可以查看处于过去状态的数据,然后正确选择如何处理此信息,可能要进行一项分析,撤消此更改或捕获更改的数据,以备以后处理。闪回查询机制非常灵活,可以用于很多场合。可以

查询存在于过去状态中的数据。

将当前数据比作过去的数据。可以比较单独行或进行更复杂的比较,如查找交集或合并。

恢复已删除或更改的数据。

使用日期或时间标记值及时指定某点,或记录系统更改编号。

闪回版本查询

闪回版本查询提供了审核表行并检索有关更改行事务处理信息的方法。它检索所有提交的行版本,这些行位于或曾经位于发布查询的时间和过去某一时间点之间。它通过利用自动撤消管理完成此项操作。

闪回版本查询是 SQL 的扩展,可用于在指定表中检索不同行的版本,此表存在于特定时间段内。对于任一指定的表,每次执行 COMMIT 语句时,都会创建一个新行版本。闪回版本查询返回存在于指定时间段内的每个行版本的行。

使用框中上述实例表示的 SELECT 语句的 VERSIONS BETWEEN 从句调用闪回版本查询功能。它看上去像除新附加列以外的任一其他 SQL 查询。有四种新的伪列,它们提供了关于行数据事务处理的详细信息,此行数据允许 DBA 查明 Oracle 数据库中数据更改的时间和方式。

VERSIONS_XID – 此行版本创建的事务处理标识

VERSIONS_OPERATION – 创建此行版本的操作,如删除、插入和更新。

VERSIONS_STARTSCN – The SCN 此行版本首先在基中发生。

VERSIONS_STARTSCN – The SCN 此行版本首先在基中更改。

闪回版本查询是 DBA 运行分析和回答问题(如何发生这些情况是?)的强大工具。DBA 不仅可以运行手动分析,而且闪回版本查询还是应用程序开发人员的强大工具。可以创建用于审核目的的自定义应用程序。并不是每个人都能够真正解释他/她的操作。

闪回事务查询

您可能会发现表中的数据不知何故被不正确地更改了。为了研究该更改,可使用多个闪回查询来及时查看指定点的行数据。更为有效的方式是使用闪回版本查询功能来查看一定时期内对行进行的所有更改。该功能允许将VERSIONS BETWEEM 子句附加至 SELECT 语句,后者指定 SCN 或希望查看的行值更改之间的时间戳范围。

oracle数据库基本命令

oracle数据库基本命令 oracle安装后 sys:超级管理员(dba),默认密码为:change_on_install system:系统管理员(dbaoper),默认密码为:manager; sys与system的不同在于sys能够create datebase而system则不能。scott:普通用户,默认密码:tiger 1.切换用户:conn 用户名/密码; SQL> conn system/manager; Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 Connected as system SQL> conn sys/change_on_install as sysdba; Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 Connected as SYS 注意:sys与其他用户在命令窗口切换时的不同。 2.修改密码:passw username;(普通用户可以修改自己密码,管理员可以修改其他人的密码) 3.显示当前用户。show user; 4.断开数据库同时推出:exit; 文件操作 5.运行sql脚本,start d:\a.sql; 6.编辑指定的sql脚本。Edit d:\a.sql; 7.将屏幕上指定的内容输出到指定文本中去。spool e:\b.sql;执行语句;spool off;

8.显示设置环境变量; 可以用来控制输出的各种格式,如果希望永久保存可以修改glogin.sql脚本。 Linesize(行宽): show linesize;显示行宽 set linesize 90;设置行宽为90个字符。 Pagesize(页面大小): Show pagesize;显示页面大小 Set pagesize 180;设置页面的小。 (做报表时可以用。一页设定几行。)

Oracle常用函数及使用案例(珍藏版)

Oracle常用函数及使用案例(珍藏版) 一:sql函数: lower(char):将字符串转化为小写的格式。 upper(char):将字符串转化为大写的格式。 length(char):返回字符串的长度。 substr(char,m,n):取字符串的字串。 案例1.将所有员工的名字按小写的方式显示 select lower(ename),sal from emp; 案例2.将所有员工的名字按大写的方式显示。 select upper(ename),sal from emp; 案例3.显示正好为五个字符的的员工的姓名。 select * from emp where length(ename)=5; 案例4.显示所有员工姓名的前三个字符。 select substr(ename,1,3) from emp;//从名字的第一个字符开始取,向后取三个字符。 案例5.以首字母为大写的方式显示所有员工的姓名。 (1)首字母大写:select upper(substr(ename,1,1)) from emp; (2)完成后面字母小写。select lower(substr(ename,2,length(ename)-1)) from emp; (3)合并select upper(substr(ename,1,1))||lower(substr(ename,2,length(ename)-1)) from emp; 案例6.以首字母为小写的方式显示所有员工的姓名。(需要有较高的灵活度,细心分析和清晰思路) (1)首字母小写:select upper(substr(ename,1,1)) from emp; (2)完成后面字母大写。select lower(substr(ename,2,length(ename)-1)) from emp; (3)合并select lower(substr(ename,1,1))||upper(substr(ename,2,length(ename)-1)) from emp; 案例7.函数(替换):replace(char1,search_string,replace_string); 显示所有员工的姓名,用“我要替换A”替代所有“A”。 select replace(ename,'A','我是老鼠')from emp; 案例8.以首字母为小写的方式显示所有员工的姓名。 select replace(ename,substr(ename,1,1),lower(substr(ename,1,1)))from emp; 案例9.以首字母为大写的方式显示所有员工的姓名。 Select replace(ename,substr(ename,2,length(ename)-1),lower(substr(ename,2,length(ename) -1)))from emp; 二:数学函数:(在财务中用的比较多) ronud(sal)用于四舍五默认取整; ronud(sal,1)用于四舍五留一位小数。 trunc(sal)取整,忽略小数。截去小数部分。 trunc(sal,1)截取;小数点留一位,之后的右边的省去。 trunc(sal,-1)截取;只留整数,个位数取零。 floor(sal)向下最接近取整;比如1.1值为1.

ORACLE数据库学习心得

ORACLE数据库结课论文 一个好的程序,必然联系着一个庞大的数据库网路... 今年我们学习了oracle数据库这门课程,起初的我,对这个字眼是要多陌生有多陌生,后来上课的时候听一会老师讲课,偶尔再跟上上机课,渐渐的学会了不少东西,但我感觉,我学到的仍是一些皮毛而已,怀着疑惑和求知的心态,我在网上搜索了关于oracle数据库的一些知识。 1.ORACLE的特点: 可移植性ORACLE采用C语言开发而成,故产品与硬件和操作系统具有很强的独立性。从大型机到微机上都可运行ORACLE的产品。可在UNIX、DOS、Windows等操作系统上运行。可兼容性由于采用了国际标准的数据查询语言SQL,与IBM的SQL/DS、DB2等均兼容。并提供读取其它数据库文件的间接方法。 可联结性对于不同通信协议,不同机型及不同操作系统组成的网络也可以运行ORAˉCLE数据库产品。 2.ORACLE的总体结构 (1)ORACLE的文件结构一个ORACLE数据库系统包括以下5类文件:ORACLE RDBMS的代码文件。 数据文件一个数据库可有一个或多个数据文件,每个数据文件可以存有一个或多个表、视图、索引等信息。 日志文件须有两个或两个以上,用来记录所有数据库的变化,

用于数据库的恢复。控制文件可以有备份,采用多个备份控制文件是为了防止控制文件的损坏。参数文件含有数据库例程起时所需的配置参数。 (2)ORACLE的内存结构一个ORACLE例程拥有一个系统全程区(SGA)和一组程序全程区(PGA)。 SGA(System Global Area)包括数据库缓冲区、日志缓冲区及共享区域。 PGA(Program Global Area)是每一个Server进程有一个。一个Server进程起动时,就为其分配一个PGA区,以存放数据及控制信息。 (3)ORACLE的进程结构ORACLE包括三类进程: ①用户进程用来执行用户应用程序的。 ②服务进程处理与之相连的一组用户进程的请求。 ③后台进程ORACLE为每一个数据库例程创建一组后台进程,它为所有的用户进程服务,其中包括: DBWR(Database Writer)进程,负责把已修改的数据块从数据库缓冲区写到数据库中。LGWR(Log Writer)进程,负责把日志从SGA中的缓冲区中写到日志文件中。 SMON(System Moniter)进程,该进程有规律地扫描SAG进程信息,注销失败的数据库例程,回收不再使用的内存空间。PMON (Process Moniter)进程,当一用户进程异常结束时,该进程负责恢复未完成的事务,注销失败的用户进程,释放用户进程占用的资源。

oracle数据库操作手册

操作手册 目录 一.表空间 (4) 1.创建表空间 (4) 2.增加表空间 (4) 3.删除表空间 (5) 4.查询表空间状态 (5) 5.查询数据文件路径 (5) 6.移动表空间中数据文件的路径 (5) 7.移动表和索引到其他表空间 (6) 8.查看表空间的使用率 (7) 二.用户和权限 (9) 1.创建用户 (9) 2.修改用户的密码 (9) 3.给用户授权 (9) 4. 查询数据库系统上有多少用户,文件名和创建时间 (10) 三.归档和非归档模式 (10) 1.查看数据库的归档模式 (10) 2.修改数据库的归档模式 (10) 四.日志文件 (11) 1.查询日志文件信息 (11) 2.增加日志文件配置信息 (12) 3.增加日志成员 (12) 4.删除一组日志 (12) 五.密码文件 (13) 1.创建密码文件 (13) 六.参数文件(SPFILE PFILE) (13) 1.查看数据库使用参数文件(SPFILE 还是PFILE) (13) 2.创建SPFILE (13) 3.通过PFILE 启动数据库 (13) 七.STATSPACK (14) 1.安装STATSPACK (14) 2.数据采集 (14) 3.设置自动快照 (14) 4.设置数据采集的时间 (14) 八.ORACLE信息查询 (15) 1.查询ORACLE数据库的名字,创建日期 (15) 2. 查询ORACLE所在操作系统的主机名,实例名,版本 (15) 3.查询ORACLE数据库系统版本详细信息 (15) 九.控制文件 (16) 1.查询控制文件 (16) 2.备份控制文件 (16)

十.索引 (16) 1.创建普通索引 (16) 2.创建位图索引 (16) 3.查询索引所在的表,表空间,索引类型 (16) 4.查询索引所在的列 (17) 十一.主键 (17) 1.定义主键 (17) 2.查询主键索引 (18) 3.查询约束信息 (18) 4.禁止约束 (18) 5.开启主键 (19) 十二.手工建库脚本 (19) 十三..PROFILE文件内容 (19) 十四.做定时JOB (20) 1.创建存储过程,为此存储过程作定时JOB (20) 2.定时JOB 的参数说明 (21) 十五.查询出SQL语句 (22) 1.通过SID 找出HASH VALUE 值 (22) 2.通过HASH VALUE 值查询出SQL 语句 (22) 3.根据HASH VALUE 值查询出对应的 SESSLIN SID (22) 4.根据HASH VALUE 找出对应的机器名称 (22) 5.通过HASH VALUE 查询出该语句的执行计划 (23) 6.查询存储过程 (23) 7.查询对象属于哪个用户 (23) 8.查询表的分析时间 (23) 9.查询对象(表)的类型 (23) 十六.查询脚本 (24) 1.查询等待事件 (24) 2.查询大表已经索引超过2G 的对象 (24) 3.查看锁 (25) 十七.基本的SQL语句 (25) 1.对表的操作 (25) 2.常用的函数 (26) 十八.安装手册 (27) 十九.错误总结 (27) 1. ORA-00257: 归档程序错误 (27) 二十.故障处理 (29) 1.日志挖掘 (29) 2.行链接行迁移 (30) 3.逻辑备份(exp/imp) (35) 4.关闭和启动数据库的步骤 (36) 二十一.METALINK操作 (37) 1.开二级别SR (37) 2.OPATCH 下载地址 (37)

Oracle数据库基础题库【含答案】

1、判断题,正确请写写"T",错误请写写"F", 1、oracle数据库系统中,启动数据库的第一步是启动一个数据库实例。( T ) 2、Oracle服务器端的监听程序是驻留在服务器上的单独进程,专门负责响应客户机的连接请求。( F) 3、oracle数据库中实例和数据库是一一对应的(非ORACLE并行服务,非集群)。( T) 4、系统全局区SGA 是针对某一服务器进程而保留的内存区域,它是不可以共享的。( F ) 5、数据库字典视图ALL_***视图只包含当前用户拥有的数据库对象信息。( F ) 8、数据字典中的内容都被保存在SYSTEM表空间中。( T ) 9、HAVING后面的条件中可以有聚集函数,比如SUM(),AVG()等, WHERE 后面的条件中也可以有聚集函数。( F ) 10、"上海西北京" 可以通过like ‘%上海_’查出来。( F ) 11、表空间是oracle 最大的逻辑组成部分。Oracle数据库由一个或多个表空间组成。一个表空间由一个或多个数据文件组成,但一个数据文件只能属于一个表空间。( T ) 12、表空间分为永久表空间和临时表空间两种类型。( T ) 13、truncate是DDL操作,不能 rollback。( T ) 14、如果需要向表中插入一批已经存在的数据,可以在INSERT语句中使用WHERE语句。( F ) 15、Oracle数据库中字符串和日期必须使用双引号标识。( F ) 16、Oracle数据库中字符串数据是区分大小写的。( T ) 17、Oracle数据库中可以对约束进行禁用,禁用约束可以在执行一些特殊操作时候保证操作能正常进行。( F ) 18、为了节省存储空间,定义表时应该将可能包含NULL值的字段放在字段列表的末尾。( T ) 20、在连接操作中,如果左表和右表中不满足连接条件的数据都出现在结果中,那么这种连接是全外连接。( T ) 21、自然连接是根据两个表中同名的列而进行连接的,当列不同名时,自然连接将失去意义。( T ) 23、PL/SQL代码块声明区可有可无。( T ) 24、隐式游标与显式游标的不同在于显式游标仅仅访问一行,隐式的可以访问多行。( F )

oracle常用命令大全和环境变量路径

Oracle 命令大全 底部为环境变量配置路径。 1 运行SQLPLUS工具 sqlplus 2 以OS的默认身份连接 / as sysdba 3 显示当前用户名 show user 4 直接进入SQLPLUS命令提示符 sqlplus /nolog 5 在命令提示符以OS身份连接 connect / as sysdba 6 以SYSTEM的身份连接 connect system/xxxxxxx@服务名 7 显示当然用户有哪些表 select * from tab; 8 显示有用户名和帐户的状态 select username,account_status from dba_users; 9 将SCOTT帐号解锁(加锁) alter user scott account unlock(lock); 10 以SCOTT的身份连接并且查看所属表 connect scott/tiger select * from tab; 11 查看EMP的表结构及记录内容 desc emp select empno,ename from emp; 12 以OS的身份登看SGA,共享池,CACHE的信息 connect / as sysdba show sga select name,value/1024/1024 from v$sga; show parameter shared_pool_size select value/1024/1024 from v$parameter where name ='shared_pool_size';

show parameter db_cache_size select value/1024/1024 from v$parameter where name ='db_cache_size'; 13 查看所有含有SIZE的信息 show parameter size bitmap_merge_area_size integer 1048576 create_bitmap_area_size integer 8388608 db_16k_cache_size big integer 0 db_2k_cache_size big integer 0 db_32k_cache_size big integer 0 db_4k_cache_size big integer 0 db_8k_cache_size big integer 0 db_block_size integer 4096 db_cache_size big integer 33554432 db_keep_cache_size big integer 0 db_recycle_cache_size big integer 0 NAME TYPE V ALUE ------------------------------------ ----------- ------------- global_context_pool_size string hash_area_size integer 1048576 java_max_sessionspace_size integer 0 java_pool_size big integer 33554432 large_pool_size big integer 8388608 max_dump_file_size string UNLIMITED object_cache_max_size_percent integer 10 object_cache_optimal_size integer 102400 olap_page_pool_size integer 33554432 oracle_trace_collection_size integer 5242880 parallel_execution_message_size integer 2148 NAME TYPE V ALUE ------------------------------------ ----------- ------------- sga_max_size big integer 143727516 shared_pool_reserved_size big integer 2516582 shared_pool_size big integer 50331648 sort_area_retained_size integer 0 sort_area_size integer 524288 workarea_size_policy string AUTO 14 显示SGA的信息 select * from v$sgastat; POOL NAME BYTES

Oracle数据库技术课程学习大纲详细

《现代数据库技术》教学大纲 课程名称:《现代数据库技术》 课程编号:学时数:56 学分数:3.5 适应专业:计算机与信息学院所有专业 一、本课程的地位、任务和作用 现代数据库技术是计算机在数据处理应用领域中的主要内容和坚实基础;也是今后若干年内研究和应用的最活跃的分支之一。因此,信息管理、软件开发、计算机等专业的学生,特别是以应用为目标的学生都必须学习和具备数据库原理与应用的知识。本课程通过介绍Oracle数据库基本操作、体系结构与数据库基本管理使学生初步掌握大型数据库的基本原理,了解大型数据库的管理方法。了解大型数据库的管理方法,使学生熟练掌握Oracle数据库系统下的SQL语言运用及PL/SQL程序设计。 本课程是一门理论和实践相结合的课程,要求学生在完成本课程的学习以后,能够结合自己所熟悉的某一门高级语言和Oracle,开发出一个小型的数据库应用系统。 二、本课程的相关课程 本课程的先修课程为《计算机组成原理》,《离散数学》,《数据结构》,《计算机网络》及《数据库原理》等课程。 三、本课程的基本内容及要求 教学内容: 第一章数据库概述(2学时) 1、教学内容: 1.1数据库基础知识 1.2关系数据库系统 1.3 Oracle基础知识 (1)Oracle的发展历史 (2)Oracle的特点 第二章O racle体系结构(6学时) 1、教学内容: 2.1 Oracle 体系结构概述 2.2Oracle的存储结构 (1)物理存储结构 (2)逻辑存储结构 2.3Oracle的实例 (1)Oracle内存结构

(2)Oracle进程 2.4数据字典 2、教学重点:Oracle的物理结构、oracle实例、Oracle的逻辑结构 3、教学难点:数据库实例与进程 第三章O racle11g的安装(2学时) 1、教学内容: 3.1 Oracle 11g环境介绍 3.2Oracle 11g for Windows的安装 (1)安装Oracle 11g服务器 (2)Oracle 11g与Windows (3)安装Oracle 11g客户端 3.3 Oracle 11g 的卸载 2、教学重点:学会Oracle的安装 第四章O RACLE数据库管理工具及网络配置(2学时) 1、教学内容: 4.1 SQL*Plus命令 (1)设置SQL*Plus 运行环境 (2)常用SQL*Plus命令 (3)格式化查询结果 4.2 Oracle企业管理器 4.3 数据库配置助手 4.4 启动与关闭oracle实例 2、教学重点:学会使用SQL*Plus 第五章S QL语言基础(5学时) 1、教学内容: 5.1SQL简介 5.2SQL的基本语法 5.3数据查询语言 5.4数据操纵语言 5.5数据定义语言 5.6数据控制语言 5.7常用函数 5.8 事务处理 2、教学重点:数据查询语言、数据操纵语言、数据定义语言、数据控 制语言 3、教学难点:SQL的基本语法 第六章P L/SQL编程(8学时)(课本第6,7章) 1、教学内容: 6.1PL/SQL基础 (1)变量及声明 (2)数据类型 (3)表达式 (4)PL/SQL程序块结构 6.2PL/SQL控制结构

Oracle查询语句基本命令一

oracle查询语句大全--基本命令大全一 1.create user username identified by password;//建用户名和密码oracle ,oracle 2.grant connect,resource,dba to username;//授权grant connect,resource,dba,sysdba to username; 3.connect username/password//进入。 4.select table_name,column_name from user_tab_columns where table_name='mview_log';//查询表中的表名,字段名等等。 5. 如何执行脚本SQL文件? SQL>@PATH/filename.sql; 6.Oracle oledb 提供者在command中执行多条SQL语句与SQL SERVER有少许差别,SQL Server只需使用";"分割多条SQL语句,而Oracle需要遵守ORACLE调用规范,即除分号分割外,还需以begin /end;包围语句体. 使用C#描述应如下所示: https://www.doczj.com/doc/4f16385775.html,mandText = "begin INSERT INTO GROUP_INFO (GROUP_ID, GROUP_NAME) V ALUES (1, \'2\'); INSERT INTO GROUP_INFO(GROUP_ID, GROUP_NAME) V ALUES (2, \'2\'); end;"; 7.查询用户下的表的信息select distinct table_name from user_tab_columns; 8.如何搜索出前N条记录?Select a.*,rownum from (select * from cardkind order by cardkind ) a where rownum show user 3、查看系统拥有哪些用户SQL> select * from all_users; 4、新建用户并授权 SQL> create user a identified by a;(默认建在SYSTEM表空间下) SQL> grant connect,resource to a; 5、连接到新用户SQL> conn a/a

Oracle常用数据字典的查询使用方法

查看当前用户的缺省表空间 1. SQL>select username,default_tablespace from user_users; 查看当前用户的角色 1. SQL>select * from user_role_privs; 查看当前用户的系统权限和表级权限 1. SQL>select * from user_sys_privs; 2. SQL>select * from user_tab_privs; 查看用户下所有的表 1. SQL>select * from user_tables; 显示用户信息(所属表空间) 1. select default_tablespace,temporary_tablespace 2. from dba_users where username='GAME'; 1、用户 查看当前用户的缺省表空间 1. SQL>select username,default_tablespace from user_users; 查看当前用户的角色 1. SQL>select * from user_role_privs; 查看当前用户的系统权限和表级权限 1. SQL>select * from user_sys_privs;

2. SQL>select * from user_tab_privs; 显示当前会话所具有的权限 1. SQL>select * from session_privs; 显示指定用户所具有的系统权限 1. SQL>select * from dba_sys_privs where grantee='GAME'; 显示特权用户 1. select * from v$pwfile_users; 显示用户信息(所属表空间) 1. select default_tablespace,temporary_tablespace 2. from dba_users where username='GAME'; 显示用户的PROFILE 1. select profile from dba_users where username='GAME'; 2、表 查看用户下所有的表 1. SQL>select * from user_tables; 查看名称包含log字符的表 1. SQL>select object_name,object_id from user_objects

登录oracle数据库时常用的操作命令整理

oracle系统默认的用户和密码是 创建数据库是创建的用户 scott 密码是 tiger sys 密码是 change_on_install system 密码是 manager sysman 密码是 oem_temp 也可以 sqlplus / as sysdba 不用密码登录!! 登录oracle数据库时常用的操作命令整理 1、su – oracle 不是必需,适合于没有DBA密码时使用,可以不用密码来进入sqlplus界面。 2、sqlplus /nolog 或sqlplus system/manager 或./sqlplus system/manager@ora9i; 3、SQL>connect / as sysdba ;(as sysoper)或 connect internal/oracle AS SYSDBA ;(scott/tiger) conn sys/change_on_install as sysdba; 4、SQL>startup; 启动数据库实例 5、查看当前的所有数据库: select * from v$database; select name from v$database; desc v$databases; 查看数据库结构字段 7、怎样查看哪些用户拥有SYSDBA、SYSOPER权限: SQL>select * from V_$PWFILE_USERS; Show user;查看当前数据库连接用户 8、进入test数据库:database test; 9、查看所有的数据库实例:select * from v$instance; 如:ora9i 10、查看当前库的所有数据表: SQL> select TABLE_NAME from all_tables;

oracle9i常用操作

ORACLE9I日常操作 获取数据库日期 select sysdate from dual; 一、ORACLE的启动和关闭 1、在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a、启动ORACLE系统 oracle>svrmgrl SVRMGR>connect internal SVRMGR>startup SVRMGR>quit b、关闭ORACLE系统 oracle>svrmgrl SVRMGR>connect internal SVRMGR>shutdown SVRMGR>quit 启动oracle9i数据库命令: $ sqlplus /nolog SQL*Plus: Release 9.2.0.1.0 - Production on Fri Oct 31 13:53:53 2003 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. SQL> connect / as sysdba Connected to an idle instance. SQL> startup^C SQL> startup ORACLE instance started. 2、在双机环境下 要想启动或关闭ORACLE系统必须首先切换到root用户,如下 su -root a、启动ORACLE系统 hareg -y oracle b、关闭ORACLE系统 hareg -n oracle Oracle数据库有哪几种启动方式 说明: 有以下几种启动方式: 1、startup nomount 非安装启动,这种方式启动下可执行:重建控制文件、重建数据库 读取init.ora文件,启动instance,即启动SGA和后台进程,这种启动只需要init.ora文件。

Oracle数据库的日常使用命令(SAG_考核)

Oracle数据库的日常使用命令 1.基本知识 (2) 2.启动和关闭数据库 (3) 3.控制监听 (3) 4.数据库用户管理 (3) 5.Oracle的权限管理 (4) 6.更改字符集为中文 (5) 7.查询语句 (5) 8.表空间管理 (6) 9.数据文件被误删后的处理 (7) 10.查询当前系统的配置参数 (7) 11.显示当前用户 (8) 12.Oracle排错处理 (8) 13.查看表结构 (8) 14.查看数据库文件 (8) 15.将select查询出的结果保存至一个文件 (9) 16.存储过程 (9) 17.数据库的备份与恢复 (10) Export 转入程序 (10) Import 恢复程序 (12) 增量卸出/装入 (14)

18.如何查看各个表空间占用磁盘情况? (15) 19.如何知道数据裤中某个表所在的tablespace? (15) 20.内核参数的应用 (15) 21.如何单独备份一个或多个表? (16) 22.如何单独备份一个或多个用户? (16) 23.如何显示当前连接用户? (16) 24.如何外连接? (16) 25.如何执行脚本SQL文件? (17) 26.如何搜索出前N条记录? (18) 27.为表创建序列 (18) 28.查看本用户下的各种对象的SQL脚本 (18) 29.SQL*Plus系统环境变量有哪些?如何修改? (20) 30.如何在PL/SQL中读写文件? (20) 31.某个数据文件损坏,如何打开数据库? (21) 1. 基本知识 一个表空间只能属于一个数据库 每个数据库最少有一个控制文件(建议3个,分别放在不同的磁盘上) 每个数据库最少有一个表空间(SYSTEM表空间) 建立SYSTEM表空间的目的是尽量将目的相同的表存放在一起,以提高使用效率,只应存放数据字典 每个数据库最少有两个联机日志组,每组最少一个联机日志文件 一个数据文件只能属于一个表空间 一个数据文件一旦被加入到一个表空间中,就不能再从这个表空间中移走,也不能再加入到其他表空间中 建立新的表空间需要建立新的数据文件

Oracle数据库基本数据类型

oracle基本数据类型

oracle 数据库中讨论char ,varchar ,varchar2 数据类型! 这3种字符串数据类型是我们使用最多的,我们在数据库设计时到底该怎么使用了? 首先我们先来分析3个数据类型的说明: 1。char CHAR的长度是固定的,最长2000个字符。 2。varchar 和 varchar2 可以肯定的是oracle中目前是可以使用varchar数据类型的,但他们的区别我查了不少资料也没有找到一个准确的答案最常见的说话是说oracle中的varchar只是varchar2的别名也就是同义词。 其次也有人认为varchar是最大长度为2000的可变字符串(和sql server中的varchar一致),而varchar2最大长度为4000。 知道了他们的特点我们就来讨论下使用区别 1.char和varchar、varchar2 由于varchar和varchar2用途类似,我们先来讨论char和他们的使用区别: varchar和varchar2比char节省空间,在效率上比char会稍微差一些,即要想获得效率,就必须牺牲一定的空间,这也就是我们在数据库设计上常说的

‘以空间换效率’。 varchar和varchar2虽然比char节省空间,但是如果一个varchar和varchar2列经常被修改,而且每次被修改的数据的长度不同,这会引起‘行迁移’(Row Migration)现象,而这造成多余的I/O,是数据库设计和调整中要尽力避免的,在这种情况下用char代替varchar和varchar2会更好一些。 当然还有一种情况就是象身份证这种长度几乎不变的字段可以考虑使用char,以获得更高的效率。 2。varchar和varchar2 这里就进入重点了,前面的区别我们在sql server中我们已经基本了解了,大家可能都知道,最多也就是复习下,但oracle增加了一个varchar2类型,是大家以前所没有用到过的。 因为oracle保证在任何版本中该数据类型向上和向下兼容,但不保证varchar,还有其他数据中一般都有varchar这个数据类型。 所以我得出了以下结论: 如果想在oracle新版本的数据库兼容就不要用varchar,如果想和oracle 之外其他数据库兼容就不要用varchar2。 ORACLE中的数据类型分类 ORACLE中的数据类型不可谓不多,下面把我这两天来的学习体会写一下吧! 1、字符数据类型:包括我CHAR,VARCHAR2,LONG。 CHAR型可以存储字母数字值,这种数据类型的 列长度可以是1到2000个字节。如果未指明,则默认其占用一个字节,如果用户输入的值小于指定的长度,数据库则用空格填充至固定长度。 VARCHAR2型其实就是VARCHAR,只不过后面多了一个数字2,VARCHAR2就是VARCHAR的同义词,也称别名。数据类型大小在1至4000个字节,但是和CHAR不同的一点是:当你定义了VARCHAR2长度为30,但是你只输入了10个字符,这时VARCHAR2不会像CHAR一样填充,在数据库中只有10具字节。

oracle基本操作语句(适合初学者)

1. select * from table_name where rownum>begin and rownum< end 2.sql = "select * from table" con.prepareCall("SELECT * FROM(SELECT A.*, rownum r FROM("+sql+") A WHERE rownum <= "+intPage*intPageSize+") B WHERE r > "+(intPage-1) *intPageSize); 今天想查询一下Oracle数据库下所有的表名或某个用户下的所有表,半天没想起来.还是在网上找到了答案. select table_name from all_tables;//所有的表明 select table_name from user_all_tables;//用户的所有的表 一下是转贴的sql语句的帖子. select * from user_objects; //查询所有的表 select * from dba_tables; //查询所有的表 select * from all_tables; //查询所有的表 select * from user_users //查出一个用户 select * from all_users //查询所有用户 select * from dba_users //查询所有用户 select name,dbid from v$database; //查询数据库名和它的ID select * from https://www.doczj.com/doc/4f16385775.html,er_tab_columns; //查询表名,并显示列名 describe 表名//查询表结构 select * from https://www.doczj.com/doc/4f16385775.html,er_tab_columns where table_name=表名//查询指定表名的字段 2: 查询数据库参数 show parameter db;

ORACLE数据库操作手册

ORACLE 数据库操作手册4.1 中国通信集团公司安徽有限公司 信息系统部 2010年7月

修改记录

目录 第一章数据库使用注意事项 (5) 第一章数据库使用注意事项 (5) 一、营业前台使用统一地址,后台业务严格区别业务区,不可随意访问 (5) 二、不涉及当天业务的查询和统计在BCV库中操作 (5) 三、前台营业时间禁止在生产环境进行大数据量的查询和统计操作 (5) 四、关联表均很大的查询和统计尽量用BCV库 (5) 五、按照业务规则进行DML操作,DML不要忘记执行COMMIT或ROLLBACK.. 6 六、大批量更新数据的事务分次提交 (6) 七、数据库DDL操作由数据库管理员根据业务规则进行 (6) 八、数据库使用结束及时断开连接,但也不要频繁的连接和断开 (6) 九、客户端配置与客户端第三方工具使用 (6) 十、不要使用工具进行可视化数据修改操作 (6) 十一、合理使用帐号,妥善保管密码 (6) 十二、严禁在生产库进行业务开发、调试工作 (7) 十三、单条SQL语句的长度最好不要超过1000字节 (7) 十四、数据导出导入使用expdp/impdp,不要使用exp/imp (7) 十五、PL/SQL程序应尽量符合第二章要求,注意事务的提交、回滚及异常情况处理 7十六、一定不能在循环体内部创建数据库的连接,包括通过JDBC连接数据库。 (7) 十七、SQL语句在执行前需要对语句逻辑进行检查,避免形成隐式笛卡尔积,占用大量临时表空间和降低语句效率。 (7) 第二章SQL编写注意事项 (8) 一、查看表字段名或随机少量数据时,不要使用SELECT * FROM TABLENAME (8) 二、SELECT 子句中避免使用* (8) 三、查询总记录数时,尽量不要用COUNT(*),而要指定一个有索引的字段。 (8) 四、对分区表进行查询时,尽量把分区键作为查询条件的第一个条件 (8) 五、无条件删除表中数据时,用TRUNCATE代替DELETE (8) 六、查询语句中尽量使用表的索引字段,避免做大表的全表扫描 (8) 七、带通配符(%)的LIKE语句 (9) 八、用EXISTS替代IN (9) 九、用NOT EXISTS替代NOT IN (9) 十、尽可能用UNION ALL替换UNION (10) 十一、ORDER BY语句建议 (10) 十二、避免使用NOT (10) 十三、使用DECODE函数减少处理时间 (11) 十四、删除重复记录 (11) 十五、如果可以使用WHERE条件,尽量不要在HA VING中限制数据 (11) 十六、尽量不要使数据排序 (11) 十七、避免改变索引列类型 (12) 十八、避免在索引列上使用计算 (12) 十九、避免在索引列上使用IS NULL和IS NOT NULL (12) 二十、子查询改写成表连接 (12) 二十一、使用索引的第一个列 (13)

史上最全Oracle数据库基本操作练习题(含答案)

Oracle基本操作练习题 使用表: 员工表(emp): (empno NUMBER (4)notnull,--员工编号,表示唯一 ename VARCHAR2 (10),--员工姓名 job VARCHAR2 (9),--员工工作职位 mgr NUMBER (4),--员工上级领导编号 hiredate DATE,--员工入职日期 salNUMBER (7,2),--员工薪水 comm NUMBER (7,2),--员工奖金 dept no NUMBER (2)—员工部门编号 ) 部门表(dept): (deptno NUMBER (2)notnull,--部门编号 dname VARCHAR2 (14),--部门名称 locVARCHAR2 (13)—部门地址 ) 说明:增删改较简单,这些练习都是针对数据查询,查询主要用到函数、运算符、模糊查询、排序、分组、多变关联、子查询、分页查询等。

建表脚本(根据需要使用): 建表脚本.tx t 练习题: 1. 找出奖金高于薪水60%的员工信息。 SELECT * FROM emp WHERE comm>sal*0.6; 2. 找出部门10中所有经理(MANAGER )和部门20中所有办事员(CLERK)的详细资料。 SELECT * FROM emp WHERE (JOB二'MANAGER' AND DEPTNO=10) OR (JOB二'CLERK' AND DEPTNO=20); 3. 统计各部门的薪水总和。 SELECT dept no,SUM(sal) FROM emp GROUP BY dept no; 4. 找出部门10中所有理(MANAGER ),部门20中所有办事员(CLERK)以及既不是经理又不是办事员但其薪水大于或等 2000的所有员工的详细资料。 SELECT * FROM emp WHERE (JOB二'MANAGER' AND DEPTNO=10) OR (JOB 二'CLERK' AND DEPTNO=20) OR (JOB NOT IN('MANAGER','CLERK') AND

相关主题
文本预览
相关文档 最新文档