Oracle数据库技术培训.ppt
,Oracle数据库技术培训,2008年4月,培训内容,Oracle数据库基础Oracle 数据库结构Oracle 数据库实例*Oracle 数据库访问*Oracle 分布式处理及分布式数据库*Oracle 数据库备份和恢复*,培训内容,数据库基础Oracle 数据库结构Data block,Extent,SegmentTablespace,DatafileData DictionaryOracle 数据库实例Database and Instance Startup and ShutdownMemory StructureProcess StructureOracle 数据库访问Oracle Sql and Pl*sqlOracle Procedure and Package,培训内容,Oracle分布式处理及分布式数据库分布式处理Oracle 客户机服务器的体系结构Net8分布式数据库Oracle分布式数据库体系结构Oracle 数据库的备份和恢复物理备份热备份逻辑备份,数据库基础,关系型数据库,在1970年提出了关系模型的概念.这是关系型数据库管理系统的基础(RDBMS).关系模型包含以下内容:对象和关系的集合关系上的一组操作数据一致性管理,关系型数据库,关系型数据库是关系或二维表的集合.,Oracle Server,IDLAST_NAMEFIRST_NAME10HavelMarta11MageeColin12GiljumHenry14NguyenMai,SALES_IDNAMEPHONEREP_ID201Unisports55-206610112202Simms Atheletics81-2010114203Delhi Sports91-1035114204Womansport1-206-104-010311,Table Name:CUSTOMER,Table Name:EMP,关系型数据库,SALES_IDNAMEPHONEREP_ID201Unisports55-206610112202Simms Atheletics81-2010114203Delhi Sports91-1035114204Womansport1-206-104-010311,Row(Tuple),Column(Attribute),S_CUSTOMER Table(Relation),每个表由行和列组成.通过执行结构化查询语句(SQL)操纵行上的数据.,关系型数据库,主键(PK)-基表中每一行都有的唯一标识符.外键(FK)-多个基表间建立逻辑关系的标识.,IDLAST_NAMEFIRST_NAME10HavelMarta11MageeColin12GiljumHenry14NguyenMai,Table Name:S_CUSTOMER,Table Name:S_EMP,Primary Key,Foreign Key,Primary Key,SALES_IDNAMEPHONEREP_ID201Unisports55-206610112202Simms Atheletics81-2010114203Delhi Sports91-1035114204Womansport1-206-104-010311,关系型数据库特点,通过SQL命令访问或修改数据库中的对象由一系列基表构成支持大量操作便于修改数据独立性,关系型数据库对象,描述数据库的基本存储单位(由行和列组成).一个或多个表中数据的逻辑映像.产生主键的值.提高查询的性能.改变对象的名称过程、函数和包(由SQL、PL/SQL语句组成).,对象基表视图序列号索引同义词程序单元,Oracle 数据库结构,Oracle数据库结构,数据块,区和段的关系数据块(db_block)它是Oracle数据库存储的最小单位,Oracle是以多个Oracle块的大小来请求数据的。数据块的大小是在数据库创建时设定的。并且块大小是操作系统块大小的倍数。块格式:块头,表目录,行目录,行数据,空闲空间,区(Extent),数据库存储空间分配的一个逻辑单元,它是由一些连续的数据块组成。而一个或多个区又够成段(Segment)。初始区(Initial Extent)增量区(Next Extent)数据段区(在创建表时,可指定表的存储参数。若不指定,使用缺省表空间存 储参数)举例:Create table table_name(col1 type,col2 type)Storage(initial 50K next 50k pctincrease 0);索引段区分配给索引段的区,只要索引存在就保留其分配。如果删除索引及相关的表,Oracle将回收这些区给表空间中的其它用户使用。,区(Extent),回退段区Oracle将自动检测数据库中的回退段,是否已经大于最佳大小,若大于最大值,Oracle将自动释放回退段中的一个或多个区。临时段区Oracle在执行完需要临时段的语句时,Oracle将自动删除临时段,并将其已经分配给该段的区返回到相关的表空间中。,段(Segment),段是由一组区组成。它包括表空间中特定逻辑存储结构组成的所有数据。组成数据段表分区表簇索引段临时段在处理查询时,Oracle需要临时工作区,作为语法检查和执行的中间场所。Oracle将自动分配临时工作区,通常临时工作区作为排序工作区。,段(Segment),组成(Cont.)临时段下列语句需要临时工作区Create IndexSelect order bySelect distinct Select group bySelect UnionSelect IntersectSelect Minus若用户在定义时,若没有指定临时段表空间,则缺省的临时段 空间为system表空间。,段(Segment),组成(Cont.)回退段每个数据库都包含一个或多个回退段。回退段记录了由每个事 物处理改变了的原值。它主要用于提供读一致性、回退事物处 理和恢复数据库。在创建回退段时,需要指定该段的区的分配。每个回退段必须 至少分配两个区。事物顺序地写入回退段中。每个事物在任何时候只写入回退段 一个区中。多个活动的事务可以并行地写入单个回退段甚至是 同一个回退段的区中。但是回退段中的每个数据块,只为单个 事物处理保存数据。,回退段(rollback Segment),回退段管理OEM(oracle enterprise manager)来管理 rollback segmentSQL 命令来管理创建回退段:create rollback segment name tablespace ts_namestorage(initial number k or Mnext number k or Moptimal number k or Mminextent numbermaxextent number);,回退段(rollback Segment),查询系统中已有的回退段数通过系统的参数文件来查看系统中可用的rollback segment个数。initsid.ora 文件(私有的)connect sys/managerdesc dba_rollback_segsselect segment_name from dba_rollback_segs;/*查询系统中使用的回退段数*/查询回退段请求数select sum(value)data requestsfrom v$sysstatwhere name in(do block gets,consistent gets);,Oracle数据库结构,表空间及数据文件逻辑上Oracle将数据存储于表空间中,物理上存储于相应表空间关 联的数据文件上。Oracle是由一个或多个表空间组成。每个表空间由一个或多个数据文件组成。数据库的全部数据存储于数据文件中,这些数据文件组成了数据库中的每个表空间。,表空间,系统表空间(system)每个数据库都包含一个system表空间。它是在数据库创建时,由Oracle自动创建的。system表空间始终包含整个数据库的数据字典。临时段表空间(Temporary Tablespace)临时段所属的表空间索引表空间(Index Tablespace)索引段所属的表空间回退段表空间(Rollback Tablespace)回退段所属的表空间,创建表空间,OEM(Oracle Enterprise Manager)Oracle提供图形界面的管理工具来创建、管理表空间。SQL 命令创建tablespaceCreate tablespace test_ts Datafile file_name size 10Mdefault Storage(initial 50k next 50k pctincrease 0 minextents 2);修改tablespaceAlter tablespace test_ts add datafile file_name size 10M;删除tablespacedrop tablespace;,表空间查询,通过执行下面的语句来查询该数据库系统中所包含的表空间及状态 Connect sys/manager;desc dba_tablespacesselect*from dba_tablespaces;/*查询表空间当前状态及存储参数*/select tablespace_name,sum(bytes)from dba_free_space group by tablespace_name;/*查询表空间的剩余状态*/,数据文件,在一个完整的数据库的环境中,需要下列文件:数据文件每个数据文件只能于一个表空间和一个数据库关联。在数据文件被首次创建时,分配的磁盘空间被格式化。使用数据字典,查询数据库对应的数据文件。connect sys/manager;desc dba_data_files;select*from dba_data_files;,重做日志文件(redolog file),数据的每一种改变,都记录到重做日志文件中。当 事故发生时,使用重做日志文件恢复所有的事物。在数据库创建时,只定三个缺省的redolog file.redolog1,redolog2,redolog3在数据库处于非归档方式下,redolog file是循环使用的。在处于归档方式下的数据库,所有的redolog信息被保留。查看系统的redolog file的状态connect sys/manager;desc v$logfile;select*from v$logfile;,控制文件(control file),控制文件用于保存数据库管理系统操作的重要信息。它是在数据 实例(instance)启动时,确定数据文件和重做日志文件在系统中 的位置。控制文件的丢会给数据库的系统管理带来灾难性的后果.建议将控制文件存储于多个磁盘卷。也可以在数据库创建后,建 立一个备份的控制文件。alter database backup controlfile to trace;在系统的trace目录找到控制文件的创建模板。查询control file 位置connect sys/managerdesc v$controlfile;select*from v$controlfile;,参数文件(initsid.ora),参数文件在数据库的位置:$ORACLE_HOME/dbs/init(sid).oraif sid=ora805 then参数文件名为:initora805.ora它定义在系统启动时所定义的信息.定义例程运行环境.通过 对参数文件的调整可以优化系统性能.查询系统运行的参数值svrmgrlsvrmgrconnect internal;svrmgrshow parameters;svrmgrshow parameter db,定义:在数据库启动例程时,所必须读取的包含数据库例程和配置参数列表的文本文件。,参数文件(initsid.ora),初始化参数内容:启动例程的数据库名SGA在内存结构中占有多少内存如何处理装满的联机重做日志文件数据库控制文件的名称及位置数据库私有rollback段的名称及个数见系统参数文件:E:pora804databaseinitorcl.ora,Oracle数据库结构,数据字典数据字典是Oracle数据库的重要组成。它由一组只读表组成。包括:数据库所有对象的定义(表,视图,索引,簇,同义词,序列,过程,函数,程序包,触发器)空间的分配和使用状况列的缺省值完整性约束信息用户名已授予用户的角色和权限审计信息等,数据字典,数据字典结构基表存放相关数据库信息的基础表视图汇总并显示存放数据字典基表中信息的视图,数据字典,数据字典所有者Oracle的sys用户拥有数据字典所有的基表和视图。任何Oracle用户都不能改变数据字典的任何数据。不能更新、插入、删除。数据字典的改变会影响数据库的正常运行。系统管理员需要严格管理系统用户.(sys and system),数据字典,常用的数据字典前缀范围USER用户视图ALL用户可访问的部分DBA数据库管理员视图,常用的数据字典,dba_tablespacesdba_data_filesdba_tablesdba_usersdba_viewsdba_indexesdba_db_linksdba_free_space,dba_ind_columnsdba_jobsdba_objectsdba_rollback_segsdba_segmentsdba_sequencesdba_snappshotsdba_synonymsdba_tab_columnsdba_triggersdba_constraintsdba_cons_columns,Oracle数据库实例,Oracle数据库实例,数据库和实例每个Oracle数据库的运行都于Oracle的例程(Instance)相关。数据库在服务器上启动时,Oracle分配一个SGA(system global area)的内存区。例程是由(SGA和后台进程组成),是Oracle数据库的运行 环境在通常情况下,数据库与例程是一对一的,但是在Oracle Parallel Server的环境下,允许多个例程装载相同的数据库。,数据库的启动和关闭,数据库的启动于关闭必须使用管理员权限.在数据库安装后,建立了一个叫做internal的操作系统用户,其口令是由数据库的口令文件来认证的。它负责数据库的启动与关闭。数据库的启动分为三个步骤:启动例程装载数据库打开数据库,数据库的启动和关闭,数据库正常启动过程:svrmgrl(启动server manager)svrmgrl connect internal;svrmgrlstartup/*启动数据库*/svrmgrlshutdown/*关闭数据库*/Svrmgrl它是数据库的管理工具,关于它的具体的使用,见svrmgrl help,数据库的启动和关闭,在数据库关闭时应注意:若有数据库的客户端没有退出数据库连接,在使用正常的数据库关闭的方式,无法关闭,数据库关闭处于等待状态。使用下面的方式关闭数据库:svrmgrl shutdown;svrmgrl shutdown immediate;/*断开数据库连接,关闭数据库*/svrmgrl shutdown abort;/*在某些特殊情况下,使用这种关闭数据库方式。它将立即结束当前的sql语句,不回退未提交的事物,数据完整性没有保护。在下次启动时,数据库将自动进行恢复,用户最好不使用这种方法。*/,Oracle数据库实例,内存结构SGA(系统全局区)它是一组共享内存结构,由Instance 数据和控制信息组成。包含下面的结构:数据库缓冲区高速缓存(db_block_buffer)重做日志缓冲区(log_buffer)共享池(shared_pool_size)数据字典高速缓存其他PGA(程序全局区)是内存中的区域,包含单个进程的数据和控制信息。每个服务器进程分配一个PGA,PGA由每个服务器进程独占。当用户连接入Oracle数据库并建立会话时,Oracle分配PGA。,Oracle数据库实例,进程结构在Oracle数据库中,有两类进程:服务器进程Oracle通过服务器进程来处理与例程连接的用户请求。后台进程为了将性能提到最高限度以及容纳更多的用户,多进程的Oracle系统使用了一些另外的进程(后台进程)Oracle 中的后台进程包括:DBW0 数据库写入进程,将缓冲区的内容写入数据文件。LGWR将重做日志缓冲区的内容写入磁盘的重做日志文件,Oracle数据库实例,进程结构 Cont后台进程SMON系统监控进程,在例程启动时,负责实现系统的崩溃恢复。PMON用户进程失败时,进程监控程序实现进程恢复。RECO它是解决与分布式事物相关的故障。只有例程允许分布式事物处理并且 Distributed_transactions 0时,RECO进程才会出现。CKPT检查点进程,Oracle数据库实例,进程结构 Cont后台进程ARCn归档程序进程。当数据库设于归挡方式时,当重做日志文件已满或出现 alter system switch logfile命令进行日志切换时,Oracle的ARCn进程将重做日志文件中的内容拷贝到指定的存储设备上。Dnnn调度程序进程(在多线索结构中使用)Snnn共享服务器进程(在多线索结构中使用),Oracle数据库访问,Oracle数据库访问,Oracle SQL,SQL*Plus and PL*SQLSQL是结构化的查询语言Oracle的SQL语言包含对ANSI/ISO标准SQL语言的扩充。Oracle的SQL语言分为以下几类:DML(数据操纵语言)DDL(数据定义语言)事物处理的控制语言会话控制语句系统控制语句SQL*PLUS是Oracle的一个使用程序,它可以运行于客户端,也可以运行服务器端,通过它能够查看数据字典的信息,以及查看用户数据和结构等,运行程序。,Oracle数据库访问,PL*SQL是Oracle的一种过程化的语言。他有自己的程序结构,有各种条件控制和循环控制。通过语言,能够写数据库的存储过程和包。甚至通过PL*SQL语言还可以开发基于Web的应用。,SQL,DMLSelect(从一个或多个表或视图中检索数据)select empno,ename,sal,deptno from empwhere deptno=10;复杂的select 语句:group by 子句select deptno,min(sal),max(sal)from emp group by deptno;having 子句select deptno,min(sal),max(sal)from emp where job=CLERKgroup by deptnohaving min(sal)1000;,SQL,DMLselectcontOrder byselect ename,deptno,sal from emp order by deptno ASC,sal DESC;for upfateselect empno,sal,comm from emp,dept where job=CLERKand emp.deptno=dept.deptno and loc=NEW YORKfor update;select empno,sal,comm from emp,dept where job=CLERKand emp.deptno=dept.deptno and loc=NEW YORKfor update of emp.sal;joinselect empno,ename,dname from emp,dept where emp.deptno=dept.deptno;,SQL,DMLupdate(改变表与视图现有行与列的值)update emp set sal=1000 where empno=7369;Insert(向表与视图中增加新行)insert into emp values(8888,abc,clerk,0000,sysdate,2000,0,10);delete(从表与视图中删除行)delete from emp where deptno=10;,常用的sql函数,number functionabs(n)mod(m,n)power(m,n)round(m,n)sign(n)sort(n)开平方trunc(n,m),常用的sql函数,character functionCONCAT(char1,char2)/*返回char1与char2的连接*/INITCAP(char)/*返回第一个字母大写的string*/LPAD(char1,n,char2)LTRIM(char,set)LOWERREPLACE(char,search_string,replacement_string)SUBSTR(char,m,n)INSTR(char1,char2,n,m)UPPER(char)LENGTH(char).,常用的sql函数,Date functionADD_MONTHS(d,n)LAST_DAY(d)MONTHS_BETWEEN(d1,d2)NEXT_DAY(d,char)SYSDATE.,常用的sql函数,Conversion FunctionsTO_CHAR(d,format)TO_CHAR(n,format)TO_NUMBERTO_DATE其它函数NVL(expr1,expr2)USER.,SQL*Plus,SQLPlus 是Oracle 的一个实用程序.sql*plus的使用:数据库创建后,将安装scott/tiger的demo用户。sqlplus scott/tigersql/*sql*plus的命令行状态*/sql set pause on spool filename spool off,PL*SQL,Pl*SQL是Oracle对SQL的过程化的扩充。Pl*SQL能使用户将SQL语句和过程化的结构结合起来。PL*SQL的程序单元分为匿名块结构:Declare/*变量 定义*/Begin/*程序体*/Exception/*异常处理*/End;,Pl*SQL匿名块(举例),DECLAREacct_balance NUMBER(11,2);acct CONSTANT NUMBER(4):=3;debit_amt CONSTANT NUMBER(5,2):=500.00;BEGINSELECT bal INTO acct_balance FROM accountsWHERE account_id=acctFOR UPDATE OF bal;IF acct_balance=debit_amt THENUPDATE accounts SET bal=bal-debit_amtWHERE account_id=acct;ELSEINSERT INTO temp VALUES(acct,acct_balance,扞nsufficient funds?;-insert account,current balance,and messageEND IF;COMMIT;END;,PL*SQL,存储过程procedure,package and functionprocedure and function 结构,PROCEDURE name(parameter,parameter,.)ISlocal declarations/*变量定义*/BEGINexecutable statements/*过程体*/EXCEPTIONexception handlers/*异常处理*/END name;FUNCTION name(parameter,parameter,.)RETURN datatype ISlocal declarations/*变量定义*/BEGINexecutable statements?/*过程体*/EXCEPTIONexception handlers/*异常处理*/END name;,Pl*SQL过程(举例),PROCEDURE raise_salary(emp_id INTEGER,increase REAL)IScurrent_salary REAL;salary_missing EXCEPTION;BEGINSELECT sal INTO current_salary FROM empWHERE empno=emp_id;IF current_salary IS NULL THENRAISE salary_missing;ELSEUPDATE emp SET sal=sal+increaseWHERE empno=emp_id;END IF;EXCEPTIONWHEN NO_DATA_FOUND THENINSERT INTO emp_audit VALUES(emp_id,No such number);WHEN salary_missing THENINSERT INTO emp_audit VALUES(emp_id,Salary is null);END raise_salary;,Pl*SQL函数(举例),FUNCTION sal_ok(salary REAL,title REAL)RETURN BOOLEAN ISmin_sal REAL;max_sal REAL;BEGINSELECT losal,hisal INTO min_sal,max_salFROM salsWHERE job=title;RETURN(salary=min_sal)AND(salary=max_sal);END sal_ok;,Pl*SQL,包结构:,CREATE PACKAGE name AS-specification(visible part)-public type and item declarations-subprogram specificationsEND name;CREATE PACKAGE BODY name AS-body(hidden part)-private type and item declarations-subprogram bodiesBEGIN-initialization statementsEND name;,Pl*SQL 包定义(举例),CREATE PACKAGE emp_actions AS-specificationTYPE EmpRecTyp IS RECORD(emp_id INTEGER,salary REAL);CURSOR desc_salary RETURN EmpRecTyp;PROCEDURE hire_employee(ename VARCHAR2,job VARCHAR2,mgr NUMBER,sal NUMBER,comm NUMBER,deptno NUMBER);PROCEDURE fire_employee(emp_id NUMBER);END emp_actions;,Pl*SQL包体(举例),CREATE PACKAGE BODY emp_actions AS-bodyCURSOR desc_salary RETURN EmpRecTyp ISSELECT empno,sal FROM emp ORDER BY sal DESC;PROCEDURE hire_employee(ename VARCHAR2,job VARCHAR2,mgr NUMBER,sal NUMBER,comm NUMBER,deptno NUMBER)ISBEGININSERT INTO emp VALUES(empno_seq.NEXTVAL,ename,job,mgr,SYSDATE,sal,comm,deptno);END hire_employee;PROCEDURE fire_employee(emp_id NUMBER)ISBEGINDELETE FROM emp WHERE empno=emp_id;END fire_employee;END emp_actions;,Oracle分布式处理及分布式数据库,分布式处理,Oracle C/S Architechture在Oracle数据库的环境中,数据库应用程序与数据库分为两个部分。前端成为客户机部分,后端成为服务器部分。此即客户机服务器体系结构。在Oracle客户机服务器的体系结构中,Oracle 需要sql*net(net8)来保障客户机与服务器间的通信。,分布式处理,Net8(sql*net)Net8是oracle的网络接口。它允许在客户机服务器上运行。在分布式的环境中,Oracle的应用程序需要运行在Net8之上Net8分为client端和server端两部分。在server端需要运行监听程序保障client 端的请求。Server端的监听程序为:$ORACLE_HOME/network/admin/listener.ora启动net8 server:lsnrctl start 查看net8 server的状态:lsnrctl status停止net8 Server:lsnrctl stop,分布式处理,Net8(sql*net)Net8 client目录:$ORACLE_HOME/net8/admin/tnsnames.ora测试net8 client是否连通:tnsping alisename;sqlplus scott/tigeralisename;,Net8 client配置文件,AliseName.world=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(Host=hostname)(Port=1521)(CONNECT_DATA=(SID=orasid),分布式数据库,Oracle分布式数据库体系结构分布式数据库是指存储在多台计算机上的数据库的集合,一般以单个数据库的形式出现在应用程序面前。应用程序可以同时访问并修改网络上若干数据库的数据。数据库与数据库链接 分布式数据库中的每个数据库都与系统中的其他数据库有所不同。拥有自己的全局数据库名。在分布式数据库系统为了简化程序的请求。Oracle使用了数据库链接的技术。数据库链接定义了从一个Oracle数据库到另外一个数据库单向通讯的路径。,数据库链接,database link它是本地数据库和网上另一数据库之间的链接。通过这个链接,使本地数据库用户访问远端数据库的任务变得简单。对于本地数据库用户对远端数据库的访问是透明的。创建database linkcreate database link dblink_name connect to username identified bypassword using connect string;其中username与password是需要访问的远端数据库的用户和口令connect string是本地访问员端数据库的sql*net连接。,数据库链接(举例),CREATE DATABASE LINK CONNECT TO scott IDENTIFIED BY tigerUSING sale;,创建数据库链接:,使用数据库链接:,SELECT*FROM,INSERT INTO(acc_no,acc_name,balance)VALUES(5001,BOWER?2000);,UPDATE SET balance=balance+500;DELETE FROM WHERE acc_name=BOWER,Oracle 数据库的备份与恢复,备份方式,物理备份就是Oracle的数据文件通过操作系统的工具进行的 备份。热备份数据库启动并以归档方式 online offline冷备份数据库关闭归档方式非归档方式逻辑备份通过Oracle的实用程序进行的备份exp&imp,物理备份,确认需要备份的文件的位置数据文件以Oracle用户的身份进入操作系统sqlplus sys/managerselect name,status from v$datafile;NAMESTATUS-/u02/oradata/test/systest.dbfSYSTEM/u03/oradata/test/rbstest.dbfONLINE/u03/oradata/test/temptest.dbfONLINE/u04/oradata/test/usrtest.dbfONLINE/u04/oradata/test/tooltest.dbfONLINE,物理备份,确认需要备份的文件的位置日志文件以Oracle用户的身份进入操作系统sqlplus sys/managerselect member from v$logfile;MEMBER-/u01/oradata/test/log1test.dbf/u01/oradata/test/log2test.dbf/u01/oradata/test/log3test.dbf,物理备份,确认需要备份的文件的位置控制文件以Oracle用户的身份进入OS。$svrmgrlsvrmgrconnect internal;connectedsvrmgrshow parameter control_file;NAMETYPE VALUE-control_filesstring/u01/oradata/test/ctrl1test.ctlsvrmgr通常情况下,系统会有三个控制文件。,物理备份,确认需要备份的文件的位置 归档文件以Oracle的身份进入操作系统。键入如下命令:$svrmgrlsvrmgrconnect internal;connected.svrmgrshow parameter archive;NAMETYPEVALUE-log_archive_desstring?/dba/archlog_archive_formatstring%t_%s.dbfsvrmgr,物理备份,确认需要备份的文件的位置参数文件以oracle用户的身份进入操作系统,并且知道oracle数据库的sid.假设sid为ora805$cd$ORACLE_HOME/dbs$ls init*.ora init.ora initora805.ora(其中initora805.ora 是系统的参数文件)或者通过下列的命令查询instance 的sid:sqlplus sys/manager;sqlselect instance from v$tread;INSTANCE-test/*test为oracle的sid*/,热备份(物理备份),定义在数据库启动的情况下进行的备份。对数据库所有的物理文件进行拷贝时,Oracle用户仍然处于不间断运行的环境中。热备份可以两种:online与offline的唯一区别是:数据库的tablespace 是否在线。online需要备份的tablespace是在线的。offline需要备份的tablespace是离线的。,数据库热备份的步骤,1.以archive log 方式启动数据库在正常数据shutdown。修改参数文件:init.ora 增加下面两行:log_archive_start=truelog_archive_dest=$ORACLE_HOME/dbs/arch重新启动数据库,这时数据库将以archive log 方式运行.$svrmgrlsvrmgrconnect internal;svrmgrstartup mount;svrmgralter database archivelog;svrmgrarchive log start;svrmgralter database open;,数据库热备份的步骤,2.备份数据库在线的tablespace的备份执行 svrmgrlsvr