Oracle RMAN快速入门指南

正在看的ORACLE教程是:Oracle RMAN快速入门指南。

前言:

  这篇文章主要介绍RMAN的常用方法,其中包含了作者一些自己的经验,里面的实验也基本全在WIN 2K和ORACLE 8.1.6环境下测试成功(因为这个环境比较容易实现)。

  本文借鉴了网上一些高手的相关文章,希望大侠们不要见怪,此处一并谢过。

  这篇文章主要是在北京出差期间写的,回到家后整理修改了一下,时间比较仓促,同时因为篇幅有限,一些技术细节不能一一覆盖了,只希望能够帮助新手入门的作用,想真正熟练掌握RMAN,必须经过较长时间的实践磨练才可以,尤其需要在工程中获得宝贵的故障解决经验。
  
  1.什么是RMAN?

  RMAN可以用来备份和还原数据库文件、归档日志和控制文件。它也可以用来执行完全或不完全的数据库恢复。

  注意:RMAN不能用于备份初始化参数文件和口令文件。

  RMAN启动数据库上的Oracle服务器进程来进行备份或还原。备份、还原、恢复是由这些进程驱动的。

  RMAN可以由OEM的Backup Manager GUI来控制,但在本文章里不作重点讨论。

  2. Terminology 专业词汇解释

  2.1. Backup sets 备份集合

  备份集合有下面的特性:

   包括一个或多个数据文件或归档日志

   以oracle专有的格式保存

   有一个完全的所有的备份片集合构成

   构成一个完全备份或增量备份

  2.2. Backup pieces 备份片

  一个备份集由若干个备份片组成。每个备份片是一个单独的输出文件。一个备份片的大小是有限制的;如果没有大小的限制, 备份集就只由一个备份片构成。备份片的大小不能大于使用的文件系统所支持的文件长度的最大值。

  2.3. Image copies 镜像备份

  镜像备份是独立文件(数据文件、归档日志、控制文件)的备份。它很类似操作系统级的文件备份。它不是备份集或 备份片,也没有被压缩。

  2.4. Full backup sets 全备份集合

  全备份是一个或多个数据文件中使用过的数据块的的备份。没有使用过的数据块是不被备份的,也就是说,oracle 进行备份集合的压缩。

  2.5. Incremental backup sets 增量备份集合

  增量备份是指备份一个或多个数据文件的自从上一次同一级别的或更低级别的备份以来被修改过的数据块。 与完全备份相同,增量备份也进行压缩。

  2.6. File multiplexing

  不同的多个数据文件的数据块可以混合备份在一个备份集中。

  2.7. Recovery catalog resyncing 恢复目录同步

  使用恢复管理器执行backup、copy、restore或者switch命令时,恢复目录自动进行更新,但是有关日志与归档日志信息没有自动记入恢复目录。需要进行目录同步。使用resync catalog命令进行同步。

RMAN>resync catalog; 
RMAN-03022:正在编译命令:resync
RMAN-03023:正在执行命令:resync
RMAN-08002:正在启动全部恢复目录的 resync
RMAN-08004:完成全部 resync

[NextPage] 3. 恢复目录

  3.1.恢复目录的概念

  恢复目录是由RMAN使用、维护的用来放置备份信息的仓库。RMAN利用恢复目录记载的信息去判断如何执行需要的备份恢复操作。

  恢复目录可以存在于ORACLE数据库的计划中。

  虽然恢复目录可以用来备份多个数据库,建议为恢复目录数据库创建一个单独的数据库。

  恢复目录数据库不能使用恢复目录备份自身。

  3.2.建立恢复目录

  第一步,在目录数据库中创建恢复目录所用表空间:

SQL> create tablespace rman_ts datafile 'd:\oracle\oradata\rman\rman_ts.dbf' size 20M;

  表空间已创建。

  第二步,在目录数据库中创建RMAN 用户并授权:

SQL> create user rman identified by rman default tablespace rman_ts temporary tablespace temp quota unlimited on rman_ts;

  用户已创建。

SQL> grant recovery_catalog_owner to rman ;

  授权成功。
SQL> grant connect, resource to rman ;

  授权成功。

  第三步,在目录数据库中创建恢复目录

C:\>rman catalog rman/rman

  恢复管理器:版本8.1.6.0.0 - Production

RMAN-06008:连接到恢复目录数据库
RMAN-06428:未安装恢复目录
RMAN>create catalog tablespace rman_ts;
RMAN-06431:恢复目录已创建

  注意:虽然使用RMAN不一定必需恢复目录,但是推荐使用。因为恢复目录记载的信息大部分可以通过控制文件来记载,RMAN在恢复数据库时使用这些信息。不使用恢复目录将会对备份恢复操作有限制。

  3.3.使用恢复目录的优势

   可以存储脚本;

   记载较长时间的备份恢复操作;

  4. 启动RMAN

  RMAN为交互式命令行处理界面,也可以从企业管理器中运行。

  为了使用下面的实例,先检查环境符合:

   the target database is called "his" and has the same TNS alias

   user rman has been granted "recovery_catalog_owner "privileges

   目标数据库的连接用户为internal帐号,或者以其他SYSDBA类型帐号连接  

   the recovery catalog database is called "rman" and has the same TNS alias

   the schema containing the recovery catalog is "rman" (same password)

  在使用RMAN前,设置NLS_DATE_FORMAT 和NLS_LANG环境变量,很多RMAN LIST命令的输出结果是与日期时间相关的,这点在用户希望执行以时间为基准的恢复工作也很重要。

[1] [2] [3] [4] [5] [6] 下一页

正在看的ORACLE教程是:Oracle RMAN快速入门指南。  下例是环境变量的示范:

NLS_LANG= SIMPLIFIED CHINESE_CHINA.ZHS16GBK
NLS_DATE_FORMAT=DD-MON-YYYY HH24:MI:SS

  为了保证RMAN使用时能连接恢复目录,恢复目录数据库必须打开,目标数据库至少要STARTED(unmount),否则RMAN会返回一个错误,目标数据库必须置于归档模式下。

  4.1.使用不带恢复目录的RMAN

  设置目标数据库的 ORACLE_SID ,执行:

% rman nocatalog
RMAN> connect target 
RMAN> connect target internal/<password>@his

  4.2.使用带恢复目录的RMAN

% rman rman_ts rman/rman@rman
RMAN> connect target
% rman rman_ts rman/rman@rman target internal/<password>@his

  4.3.使用RMAN

  一旦连接到目标数据库,可以通过交互界面或者事先存储的脚本执行指定RMAN命令, 下面是一个使用RMAN交互界面的实例:

RMAN> resync catalog;
RMAN-03022:正在编译命令:resync
RMAN-03023:正在执行命令:resync
RMAN-08002:正在启动全部恢复目录的 resync
RMAN-08004:完成全部 resync

  使用脚本的实例:

RMAN> execute script alloc_1_disk;

  创建或者替代存储的脚本:

RMAN> replace script alloc_1_disk { 
2> allocate channel d1 type disk;
3> }

  5.注册或者注销目标数据库

  5.1.注册目标数据库

  数据库状态:

    恢复目录状态:打开

    目标数据库:加载或者打开

  目标数据库在第一次使用RMAN之前必须在恢复目录中注册:

  第一步,启动恢复管理器,并且连接目标数据库:

C:\>rman target internal/oracle@his catalog rman/rman@rman

  恢复管理器:版本8.1.6.0.0 - Production

RMAN-06005:连接到目标数据库:HIS (DBID=3021445076)
RMAN-06008:连接到恢复目录数据库

  第二步,注册数据库:

RMAN> register database;
RMAN-03022:正在编译命令:register
RMAN-03023:正在执行命令:register
RMAN-08006:注册在恢复目录中的数据库
RMAN-03023:正在执行命令:full resync
RMAN-08002:正在启动全部恢复目录的resync
RMAN-08004:完成全部resync
 
  5.2.注销目标数据库

  RMAN提供了一个注销工具,叫DBMS_RCVCAT工具包,请注意一旦注销了该目标数据库,就不可以使用恢复目录中含有的备份集来恢复数据库了。

  为了能注销数据库,需要获得数据库的标识码(DB_ID)和数据库键值(DB_KEY)。其中连接目标数据库时将会获得DB_ID。

C:\>rman target internal/oracle@his catalog rman/rman@rman

  恢复管理器:版本8.1.6.0.0 - Production

RMAN-06005:连接到目标数据库:HIS (DBID=3021445076)
RMAN-06008:连接到恢复目录数据库

  其中DBID=3021445076,利用DBID=3021445076查询数据库键值码:

   连接到目标数据库,查询db表:

SQL> select * from db;

DB_KEY DB_ID CURR_DBINC_KEY
---------- ---------- --------------
1 3021445076 2

  获得DB_KEY=1,这样,该目标数据库DB_KEY=1,DBID=3021445076,利用两个值使用DBMS_RCVCAT工具包就可以注销数据库:

SQL> execute dbms_rcvcat.unregisterdatabase(1,3021445076);
PL/SQL 过程已成功完成。

  至此,注销数据库操作完成。

[NextPage] 6.操作已有的备份

  6.1.加入目录数据库

  数据库状态:

   恢复目录:打开

   目标数据库:加载或者打开

  如果存在8.x版本以前创建的备份数据想注册到目标数据库,可以采用如下手工方式加入到恢复目录中,
RMAN> catalog datafilecopy '/oracle/ .... /system01.dbf';

  使用如下命令显示恢复目录中包含的文件

RMAN> list copy of database;

  6.2.从目录数据库中删除

  第一步:查看备份信息:

RMAN>list backup;

RMAN-03022:正在编译命令:list

  备份集列表

关键字 Recid 标记 LV 集合标记 集合计数 完成时间
------- ---------- ---------- -- ---------- ---------- ----------------------
1104 2 501364455 0 501364446 2 06-8月 -03

  备份段列表

关键字 Pc# Cp# 状态 完成时间 段名
------- --- --- ----------- ---------------------- ------------------------
1106 1 1 AVAILABLE 06-8月 -03 D:\ORACLE\ORA81\DATABASE\
02EU4DMU_1_1

  数据文件包括列表

文件 名称 LV 类型 检查点SCN 检查点时间
---- ------------------------------------- -- ---- ----------&

上一页  [1] [2] [3] [4] [5] [6] 下一页

正在看的ORACLE教程是:Oracle RMAN快速入门指南。nbsp;-------------
3 D:\ORACLE\ORADATA\HIS\USERS01.DBF 0 Full 160052 06-8月 -03

  备份集的关键字为1104。

  第二步:定义delete通道:

RMAN>allocate channel for delete type disk;

RMAN-03022:正在编译命令:allocate
RMAN-03023:正在执行命令:allocate
RMAN-08030:分配的通道:delete
RMAN-08500:通道 delete:sid=19 devtype=DISK

  第三步:删除backupset备份集

RMAN>change backupset 1104 delete;

RMAN-03022:正在编译命令:change
RMAN-08073:已删除备份段
RMAN-08517:备份段 handle=D:\ORACLE\ORA81\DATABASE\02EU4DMU_1_1 recid=2 stamp=50
1364447
RMAN-03023:正在执行命令:partial resync
RMAN-08003:启动部分恢复目录的 resync
RMAN-08005:完成部分 resync

  注意:部分执行删除备份集、备份片或者维护恢复目录的命令,需要先指定通道,如:

RMAN>allocate channel for delete type disk;
或者RMAN>allocate channel for maintenance type disk;

  7.在非归档模式下备份

  数据库状态:

   恢复目录: 打开

   目标数据库:例程启动或者数据库加载

  恢复目录数据库需要打开,目标数据库必须启动(或者加载)。因为目标数据库不在归档模式下,所以当进行备份恢复操作的时候数据库无法打开。不可以将表空间置于热备份模式上进行等同于文件系统级的拷贝,如果在非归档模式,数据库打开的状态下不能进行数据文件的备份。

  7.1.数据库完全备份

RMAN> run {
2> # backup the complete database to disk
3> allocate channel dev1 type disk;
4> backup
5> full
6> tag full_db_backup
7> format '/oracle/backups/db_t%t_s%s_p%p'
8> (database);
9> release channel dev1;
10> }
行#

  2: 表明该行为注释行(#是注释符)

3&9: See section 15 - Channels通道定义
5: Full backup (default if full or incremental not specified)完全备份模式(缺省模式)
6: Meaningful string (<=30 chars)(备份集标识,<=30个字符)
7: Filename to use for backup pieces, including substitution variables. 备份片使用的文件名,可以包含代替变量。
8: Indicates all files including controlfiles are to be backed up表明备份所有数据文件包括控制文件

  通过下面的命令显示恢复目录中记载的备份集信息:

RMAN> list backupset of database;

  7.2.备份表空间

RMAN> run {
2> allocate channel dev1 type disk;
3> backup
4> tag tbs_users_read_only
5> format '/oracle/backups/tbs_users_t%t_s%s'
6> (tablespace users)
7> }

  使用下列命令来显示恢复目录中该表的备份信息:

RMAN> list backupset of tablespace users;

  假设USERS表空间在备份后被置为READ ONLY表空间,以后的全库备份就可以不用备份该表空间,为了达到这个目的,可以在以后的备份中指定'skip readonly'。

  注意,目标数据库不需要一定打开,只要加载就可以,因为表空间的信息存储在控制文件中。

  7.3.备份单独数据文件

RMAN> run {
2> allocate channel dev1 type 'SBT_TAPE';
3> backup
4> format '%d_%u'
5> (datafile '/oracle/dbs/sysbigdb.dbf');
6> release channel dev1;
7> }
行#

  2: 使用MML(media manager layer)分配磁带驱动器,必须指定类型为SBT_TAPE;

  注意因为没有指定标识,所以标识为空;

  使用下面的命令显示恢复目录中备份的表空间:

RMAN> list backupset of datafile 1;

  7.4.备份数据文件

RMAN> run {
2> allocate channel dev1 type 'SBT_TAPE';
3> copy datafile '/oracle/dbs/temp.dbf' to '/oracle/backups/temp.dbf';
4> release channel dev1;
5> }

  使用下面的命令显示恢复目录中的文件拷贝:

RMAN> list copy of datafile '/oracle/dbs/temp.dbf';

  拷贝数据文件和备份数据文件是不一样的,数据文件拷贝是一个该文件的镜像。文件的备份产生一个备份集。

  7.5.备份控制文件

RMAN> run { 
2>

上一页  [1] [2] [3] [4] [5] [6] 下一页

正在看的ORACLE教程是:Oracle RMAN快速入门指南。allocate channel dev1 type 'SBT_TAPE';
3> backup
4> format 'cf_t%t_s%s_p%p'
5> tag cf_monday_night
6> (current controlfile);
7> release channel dev1;
8> }

  注意:数据库完全备份将自动备份控制文件。

[NextPage] 8.归档模式下的备份

  数据库状态:

   恢复目录:打开

   目标数据库:例程启动,数据库加载或者打开

  备份操作使用的命令与非归档模式下基本一样。

  8.1. Backing up archived logs 备份归档日志

  下面的脚本备份归档日志:

RMAN> run {
2> allocate channel dev1 type disk;
3> backup
4> format '/oracle/backups/log_t%t_s%s_p%p'
5> (archivelog all);
6> release channel dev1;
7> }

  下面的脚本归档日志从# 90 to 100:

RMAN> run {
2> allocate channel dev1 type disk;
3> backup
4> format '/oracle/backups/log_t%t_s%s_p%p'
5> (archivelog from logseq=90 until logseq=100 thread 1);
6> release channel dev1;
7> }

  下面的脚本备份在24小时内产生的归档日志,在备份完成后会自动删除归档日志。如果备份失败,归档日志不会被删除。

RMAN> run {
2> allocate channel dev1 type disk;
3> backup
4> format '/oracle/backups/log_t%t_s%s_p%p'
5> (archivelog from time 'sysdate-1' all delete input);
6> release channel dev1;
7> }

  使用下面的命令显示恢复目录中的归档日志:

RMAN> list backupset of archivelog all;

  注意:RMAN找到归档日志后会备份指定日志,如果无法找到日志,它也不会返回错误信息。

  8.2. Backing up the online logs 备份联机日志

  联机日志不能用RMAN来备份,必须先将其归档。

  为了实现这点,必须在RMAN中执行如下SQL语句:

RMAN> run {
2> allocate channel dev1 type disk;
3> sql "alter system archive log current";
4> backup
5> format '/oracle/backups/log_t%t_s%s_p%p'
6> (archivelog from time 'sysdate-1' all delete input);
7> release channel dev1;
8> }

  上面的脚本可以在执行完一个完整的联机数据库备份后执行,确保所有的重做日志可以将数据库恢复到一个一致性的状态。

  注意:不可以标识归档日志备份集。

  9. 增量备份

  N级别增量备份备份从最近的N级别或者更小级别以来的所有更改过的数据块内容。增量备份分为两种,一种是累积增量备份,一种是非累积增量备份。

   累积增量备份包括自最后一次在更低级别进行备份以来所有改动过的数据块。

   非累积增量备份包括自前一次在同级或者更低级别进行备份以来改动过的数据块。

  9.1. Level 0--增量备份策略的基础

Level 0 是增量备份策略的基础--the basis of the incremental backup strategy
RMAN> run {
2> allocate channel dev1 type disk;
3> backup
4> incremental level 0
5> filesperset 4
6> format '/oracle/backups/sunday_level0_%t'
7> (database);
8> release channel dev1;
9> }
Line#
4: 0级备份
5: 定义每个backupset 的最大文件数

  使用LIST语句查看,数据库备份集的列表显示中, 'type' 将显示 'Incremental','LV'列将显示'0' 。

  9.2. 使用增量备份的案例

  一个典型的增量备份案例如下:

   星期天晚上 - level 0 backup performed

   星期一晚上 - level 2 backup performed

   星期二晚上 - level 2 backup performed

   星期三晚上 - level 1 backup performed

   星期四晚上 - level 2 backup performed

   星期五晚上 - level 2 backup performed

   星期六晚上 - level 2 backup performed

   星期天晚上 - l

上一页  [1] [2] [3] [4] [5] [6] 下一页

正在看的ORACLE教程是:Oracle RMAN快速入门指南。evel 0 backup performed

  10. 恢复

  恢复案例如下:

  10.1. Database open,datafile deleted 数据库打开时,文件被删除

  数据文件在数据库打开时被删除。有两种方法可以对打开的数据库进行恢复:还原数据文件或者表空间。下面两个实例显示了该方法:

  (a) Datafile recovery 数据文件恢复

RMAN> run {
2> allocate channel dev1 type disk;
3> sql "alter tablespace users offline immediate";
4> restore datafile 4;
5> recover datafile 4;
6> sql "alter tablespace users online";
7> release channel dev1;
8> }

  (b) Tablespace recovery 表空间恢复

RMAN> run {
2> allocate channel dev1 type disk;
3> sql "alter tablespace users offline immediate";
4> restore tablespace users;
5> recover tablespace users;
6> sql "alter tablespace users online";
7> release channel dev1;
8> }

  注意:如果还原系统表空间文件,数据库必须关闭,因为系统表空间不可以脱机。

  10.2. Complete restore (lost online redo) and rollforward - database closed 完全还原(丢失联机日志)并且前滚 - 数据库关闭

RMAN> run {
2> allocate channel dev1 type disk;
3> set until logseq=105 thread=1;
4> restore controlfile to '/oracle/dbs/ctrltargdb.ctl';
5> replicate controlfile from '/oracle/dbs/ctrltargdb.ctl';
6> restore database;
7> sql "alter database mount";
8> recover database;
9> sql "alter database open resetlogs";
10> release channel dev1;
11> }

  Notes:

  'set until' 命令指明恢复到指定的日志文件。这一点在数据文件恢复时很重要,否则RMAN将试图恢复最近的数据文件,该数据文件可能在指定的日志以前。

  'replicate controlfile' 复制还原的控制文件到INIT.ORA指定的控制文件。

  如果数据库使用WITH RESETLOGS打开,则需要使用RESET DATABASE命令注册改变后的数据库。在使用RESETLOGS命令打开数据库后强烈建议做一个完全的数据库备份。

  10.3. 还原数据文件的子集,完全恢复

RMAN> run {
2> allocate channel dev1 type disk;
3> sql "alter database mount";
4> restore datafile 2;
5> restore datafile 3;
6> restore archivelog all;
7> recover database;
8> sql "alter database open";
9> release channel dev1;
10> }

5

[NextPage] 11. 脚本

  创建或者取代脚本:

RMAN> create script alloc_disk {
2> # Allocates one disk
3> allocate channel dev1 type disk;
4> setlimit channel dev1 kbytes 2097150 maxopenfiles 32 readrate 200;
5> }

RMAN> replace script rel_disk {
2> # releases disk
3> release channel dev1;
5> }

RMAN> replace script backup_db_full {
2> # Performs a complete backup 
3> execute script alloc_disk;
4> backup
5> .....<backup commands here>
6> execute script rel_disk;
7> }

  前两个脚本分别用来分配和回收通道。

  alloc_disk 脚本还额外指定了备份片的最大兆字节数,备份时可以同时打开的输入文件的最大数目,以及每秒钟读每个输入文件的数据缓冲区的最大数目。

  第三个脚本调用先前存储的两个脚本进行数据库备份。

  运行存储脚本的示范:

RMAN> run {
2> execute scri

上一页  [1] [2] [3] [4] [5] [6] 下一页

正在看的ORACLE教程是:Oracle RMAN快速入门指南。pt backup_db_full;
3> }

  注意:存储的脚本必须在{ .... execute <script>; ....}命令中调用。

  12. Corruption detection

  RMAN可以备份包含损坏数据块的数据文件,查询视图V$BACK_CORRUPTION和V$COPY_CORRUPTION可以获得有关坏数据的信息。

  通过设置 set maxcorrupt 可以跳过指定个数的坏块来避免备份失败。

RMAN> replace script backup_db_full {
2> # Performs a complete backup
3> execute script alloc_disk;
4> set maxcorrupt for datafile 1 to 0;
5> backup
6> .....<backup commands here>
7> execute script rel_disk;
8> }

  上面的脚本maxcorrupt for datafile 1 to 0设置为0,所以如果有错误数据块在数据文件1中发现,上面的脚本执行就会失败。

  13. 通道

  一个通道是RMAN和目标数据库之间的一个连接,'allocate channel'命令在目标数据库启动一个服务器进程,同时必须定义服务器进程执行备份或者恢复操作使用的I/O类型

  通道控制命令可以用来:

   控制RMAN使用的O/S资源

   影响并行度

   指定I/O带宽的限制值(设置limit read rate参数)

   定义备份片大小的限制(设置limit kbytes)

   指定当前打开文件的限制值(设置limit maxopenfiles)

  14. Report & list commands

  14.1. List

  list命令查询恢复目录并且产生格式化的查询内容:

RMAN> list backupset of datafile 1;

Key File Type LV Completion_time Ckp SCN Ckp Time
------- ---- ------------ -- --------------- ---------- --------
165 1  Full Oct 03 11:24 32022 Oct 03 11:24
208 1  Full Oct 24 14:27 52059 Oct 24 14:26
219 1  Full Oct 24 14:31 52061 Oct 24 14:31
<< other entries here >>

RMAN> list backupset of archivelog all;

Key Thrd Seq Completion time
------- ---- ------- ---------------
179 1 94 Oct 03 11:26
179 1 95 Oct 03 11:26
<< other entries here >>

  14.2. Report

  REPORT命令同样可以查询恢复目录,但是REPORT命令语法可以构建获得更为有用的信息的指令,REPORT命令输出可以保存到消息日志文件中,但是必须在连接恢复目录时指定MSGLOG或者LOG选项。

  可以列出所有数据库中不能恢复的文件列表:

RMAN> report unrecoverable database;

  显示全部数据文件:

RMAN>report schema;

RMAN-03022:正在编译命令:report

  数据库模式报表

  15. 小提示

   经常同步恢复目录

   确认删除不需要的归档日志

   备份策略简单原则

上一页       

上一页  [1] [2] [3] [4] [5] [6] 

(0)

相关推荐

  • Oracle PL/SQL语言入门基础

    正在看的ORACLE教程是:Oracle PL/SQL语言入门基础.PL/SQL是ORACLE对标准数据库语言的扩展,ORACLE公司已经将PL/SQL整合到ORACLE 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用PL/SQL,本文将讲述PL/SQL基础语法,结构和组件.以及如何设计并执行一个PL/SQL程序. PL/SQL的优点 从版本6开始PL/SQL就被可靠的整合到ORACLE中了,一旦掌握PL/SQL的优点以及其独有的数据管理的便利性,那么你很难想象ORACLE缺了PL

  • oracle复习笔记之PL/SQL程序所要了解的知识点

    复习内容: PL/SQL的基本语法.记录类型.流程控制.游标的使用. 异常处理机制.存储函数/存储过程.触发器. 为方便大家跟着我的笔记练习,为此提供数据库表文件给大家下载:点我下载 为了要有输出的结果,在写PL/SQL程序前都在先运行这一句: set serveroutput on 结构: declare --声明变量.类型.游标 begin --程序的执行部分(类似于java里的main()方法) exception --针对begin块中出现的异常,提供处理的机制 --when...the

  • Oracle 数组的学习 小知识也要积累,养成好的学习态度

    提叻一个代码段,要人帮助解释一下. 代码段如下: 复制代码 代码如下: declare type t_indexby is table of number index by binary_integer; type t_nesteed is table of number; type t_varray is varray(10) of number; v_indexby t_indexby; v_nested t_nested; v_varray t_varray; begin v_indexb

  • oracle 合并查询 事务 sql函数小知识学习

    表查询: 合并查询:使用union关键字,可将满足条件的重复行去掉. 复制代码 代码如下: select ename,sal,job from emp where sal > 2500 union select ename,sal,job from emp where job = 'MANAGER'; 而union all用法和union相似,但是不会取消重复行. intersect 用来取两个结果的交集. minus用来取两个结果的差集. 使员工scott的岗位,工资,补助与SMITH员工一样

  • Oracle PL/SQL入门慨述

    正在看的ORACLE教程是:Oracle PL/SQL入门慨述.一.PL/SQL出现的目的 结构化查询语言(Structured Query Language,简称SQL)是用来访问关系型数据库一种通用语言,它属于第四代语言(4GL),其执行特点是非过程化,即不用指明执行的具体方法和途径,而是简单的调用相应语句来直接取得结果即可.显然,这种不关注任何实现细节的语言对于开发者来说有着极大的便利. 然而,对于有些复杂的业务流程又要求相应的程序来描述,那么4GL就有些无能为力了.PL/SQL的出现正是

  • 基于Oracle的面向对象技术入门基础简析开发者网络Oracle

    正在看的ORACLE教程是:基于Oracle的面向对象技术入门基础简析开发者网络Oracle.一.概述 对象是Oracle8i以上版本中的一个新的特性,对象实际是对一组数据和操作的封装,对象的抽象就是类.在面向对象技术中,对象涉及到以下几个重要的特性:  封装性 通过对数据和操作的封装,将用户关心的数据和操作暴露出来作为接口,其他数据和操作则隐藏到对象内部,这样便于用户使用和维护.  继承性 对象具有继承性,通过这一特性可以增强程序的可扩展性,适合大型项目的开发.  多态性 同一操作在运行时刻有

  • Oracle存储过程入门学习基本语法

    1.基本结构 create OR REPLACE PROCEDURE存储过程名字 ( 参数1 IN NUMBER, 参数2 IN NUMBER ) IS 变量1 INTEGER :=0; 变量2 DATE; BEGIN END 存储过程名字 2.select INTO STATEMENT 将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条记录,否则抛出异常(如果没有记录抛出NO_DATA_FOUND) 例子: BEGIN select col1,col2 into

  • Oracle知识整理笔记

    小编整理的一篇关于Oracle知识的学习笔记,希望对大家有帮助. 1.简单对比一下SQL Server 和Oracle   先给大家看一张我画得图: 安装完Sql Server后,我们打开.连接数据库引擎后可以看到很多的数据库有系统数据库也有用户数据库.而Oracle安装后,一个数据库都对应一个服务,我们在使用前需要在计算机服务中开启相应的服务,如图中所示,服务开启,用户登录后看到的是一个数据库,一个数据库中可以有表.视图.存储过程等数据对象.一个Oracle数据库可以有多个用户,用户的权限不同

  • 比较SQL Server与Oracle、DB2数据库的一些知识

    开放性 SQL Server 只能在Windows 上运行,没有丝毫的开放性,操作系统的系统的稳定对数据库是十分重要的.Windows9X系列产品是偏重于桌面应用,NT server只适合中小型企业.而且Windows平台的可靠性,安全性和伸缩性是非常有限的.它不象Unix那样久经考验,尤其是在处理大数据量的关键业务时. Oracle 能在所有主流平台上运行(包括 Windows).完全支持所有的工业标准.采用完全开放策略.可以使客户选择最适合的解决方案.对开发商全力支持. DB2 能在所有主流

  • Oracle PL/SQL入门案例实践

    正在看的ORACLE教程是:Oracle PL/SQL入门案例实践. 前面已经了解了关于PL/SQL编程的基础,本文将结合一个案例来加深对这些知识点的理解. 一. 案例介绍 某数据库有两张表,是关于某公司员工资料.薪水和部门信息的,它们分别是emp表和dept表,两张表的结构如下: 要求如下: 1.按照上表结构建立相应的表,并每张表写入5组合法数据. 2.操纵相关表,使得"技术部"的员工的薪水上涨20%. 3.建立日志,追踪薪水变动情况. 4.建立测试包. 二. 案例的分析与实现 从前

随机推荐