1、oracle_备份与恢复-逻辑备份-导出 ORACLE 参数参数 说明USERID 确定执行导出实用程序的用户名和口令BUFFER 确定导出数据时所使用的缓冲区大小,其大小用字节表示FILE 指定导出的二进制文件名称,默认的扩展名是.dmpFULL 指定是否以全部数据库方式导出,只有授权用户才可使用此参数OWNER 要导出的数据库用户列表HELP 指定是否显示帮助消息和参数说明ROWS 确定是否要导出表中的数据TABLES 按表方式导出时,指定需导出的表和分区的名称PARFILE 指定传递给导出实用程序的参数文件名TABLESPACES 按表空间方式导出时,指定要导出的表空间名-导出-全库导出
2、exp system/accpaccp -在后面的参数中选择 E-按用户方式导出exp system/accpnewer file=d:exp.dmp owner=scott,system-按表方式导出exp scott/tigeraccp tables=(emp, dept) file=scott_back_tab-按表分区方式导出exp scott/tigeraccp tables=(emp:p3) file=scott_back_tab-按表空间方式导出exp system/aptechaccp tablespaces=(users) file=tbs_users-按参数文件方式导出,将
3、要导出的命令写在文本文件中exp system/aptech parfile=C:parameters.txt-导入 ORACLE 参数参数 说明USERID 指定执行导入的用户名和密码BUFFER 指定用来读取数据的缓冲区大小,以字节为单位COMMIT 指定是否在每个数组(其大小由 BUFFER 参数设置)插入后进行提交FILE 指定要导入的二进制文件名FROMUSER 指定要从导出转储文件中导入的用户模式TOUSER 指定要将对象导入的用户名。FROMUSER 与 TOUSER 可以不同FULL 指定是否要导入整个导出转储文件TABLES 指定要导入的表的列表ROWS 指定是否要导入表中的
4、行PARFILE 指定传递给导入实用程序的参数文件名,此文件可以包含这里列出的所有参数IGNORE 导入时是否忽略遇到的错误,默认为 NTABLESPACES 按表空间方式导入,列出要导入的表空间名-导入-整个文件导入imp accp/accpaccp file=d:item_back.dmp ignore=y full=y-特定用户的表导入到指定的用户下面imp system/aptechaccp file=d:item_back.dmp fromuser=scott touser=martin tables=(emp,dept)-参数文件方式导入,将要导入的命令文本写在文件中imp sys
5、tem/oracle parfile=C:parameters.txtimp bid_admin/a123456ztbpbdb file=e:exp1.dmp fromuser=bid_admin touser=bid_admin-物理备份冷备份1. connect sys/sysnewer as sysdba2. shutdown immediate3. 复制 oracle 目录中的 oradataoradb 的子目录中的所有文件 到备份的目录中冷恢复1.将数据文件还原回所在位置 ,然后启动数据库2.starup进行热备份必须处于“归档日志模式下”1.启动 sqlplus ,并以 sysdb
6、a 方式链接到数据库系统,输入下列命令看看是否处于归档模式SQL archive log list数据库日志模式 非存档模式自动存档 禁用存档终点 d:oracleora92RDBMS最早的概要日志序列 1当前日志序列 32. 启动归档日志模式SQL shutdown immediate数据库已经关闭。已经卸载数据库。ORACLE 例程已经关闭。SQL startup mountORACLE 例程已经启动。Total System Global Area 143727516 bytesFixed Size 453532 bytesVariable Size 109051904 bytesDat
7、abase Buffers 33554432 bytesRedo Buffers 667648 bytes数据库装载完毕。SQL alter database archivelog;数据库已更改。SQL archive log list数据库日志模式 存档模式自动存档 禁用存档终点 d:oracleora92RDBMS最早的概要日志序列 1下一个存档日志序列 3当前日志序列 33.关闭存档模式, alter data base noarchivelog-查看归档日志方式,在 SQL_PLUS 中,不能在 PL/SQL 中conn sys/accpaccp as sysdba;archive l
8、og list;-查看归档日志信息SELECT DEST_ID,DEST_NAME,STATUS,DESTINATIONFROM V$ARCHIVE_DEST WHERE STATUS=VALID;-查看归档日志的日志SELECT DEST_ID,NAME,ARCHIVED FROM V$ARCHIVED_LOG;-在命令行中操作数据库-登录sqlplus sys/accpnewer as sysdba-关闭数据库shutdown immediate-启动数据库startup restrictstartup mount-修改归档日志模式alter database archivelogARCH
9、IVELOG 模式的优点:有可能进行完全恢复。由于对数据库所做的全部改动就保存在日志文件中,如果因为包括介质失效在内的某种失效而导致数据库文件丢失的话,可以利用物理备份和归档日志完全恢复数据库,不会丢失任何数据。所有已经提交的事务都可以查到。有可能进行联机备份。允许用户在进行数据备份的同时使用数据库。表空间可以立即脱机。如果一个分布式数据库系统的所有节点都运行在 ARCHIVELOG 模式下,可以进行分布式恢复。提供更多的恢复选择。通过使用一个备用数据库,能够提供最大限度的灾难保护手段。ARCHIVELOG 模式的缺点:保存归档日志文件需要更多的磁盘空间。DBA 需要更多的时间来管理数据库。N
10、OARCHIVELOG 模式的特点:由于数据文件的丢失,如果需要恢复,只能恢复到最后一个完全脱机数据库备份。在最后一个完全脱机备份后的数据改动都将丢失。因此,需要进行非常频繁的脱机备份。必须进行完整的数据库备份,不能仅备份部分数据库。不能进行联机备份,脱机备份过程中不能使用数据库。表空间不能立即脱机。DBA 的管理行工作减少 采用 Oracle ArchiveLog 模式和非 ArchiveLog 模式对备份恢复的影响 备份的目的在于,当系统或数据库出现问题时,能够快速将数据库进行恢复。对于 Oracle 数据库,一般有两种备份方式:“物理备份”和“逻辑备份” 。 “物理备份”指的是以 cop
11、y 数据文件方式进行备份;“逻辑备份”指的是用 export 等方式将数据从数据库中抽取出来。物理备份又可以分为冷备份和热备份。以下是各种备份的说明及前提条件。 - Cold Backup(冷备份) 主要指在关闭数据库的状态下进行的数据库完全备份,备份内容包括所有数据文件、控制文件、联机日志文件、ini 文件。 - Hot Backup(热备份) 指在数据库处于运行状态下,对数据文件和控制文件进行备份,要使用热备份必须将数据库运行在(Archive Log)归档方式下。 - Export(逻辑备份)这是最简单的备份方法,可按数据库中某个表、某个用户或整个数据库来导出,并且支持全部、累计、增量三
12、种方式。使用这种方法,数据库必须处于打开状态,而且如果数据库不是在 restrict 状态将不能保证导出数据的一致性。 “物理备份”方式以相当于 copy 数据文件的方式进行备份,恢复时可以快速以相当于 copy 的方式将备份的数据 copy 回来,所以备份速度特别是恢复速度非常快。 如果不采用 Archive Log 模式运行 Oracle 数据库,只有两种可用的备份方法:冷备份或 export 逻辑备份。根据关键业务服务器的特点,停下数据库进行冷备份是根本不可能的,因此如果不采用 Archive Log,只能进行逻辑备份。 如果仅采用“逻辑备份”方式,恢复时会有以下两个主要问题: 1. 无
13、法恢复到最近时间点的数据。只能恢复到上一次 export 时的数据状态,当天的数据将丢失。Archive Log 模式下的物理备份可以用数据文件备份及 Archive Log 备份,将数据库恢复到数据库失败前的时间点,不会丢失数据。 2. 完成恢复可能需要很长时间。恢复只能用 import 方法进行,所以需要的时间包括: a. create database 及所有的 tablespace: 以每 2 分钟初始化一个2G 的数据文件来计算,建立一个 400G 的 Oracle 数据库需要约 6.7个小时。 b. import。时间较难确定,但保守估计应在 10 个小时以上(如果import 过
14、程中出现问题,恢复时间将延长) 3. 恢复时步骤较多,易出现人为故障。 由于 这些原因,一般备份/恢复时都把 export/import 的方式做为辅助备份/恢复方式,对一些重要的表进行二级保护。这种备份方式也称为“逻辑备份”方式,当某些重要的表被意外删除时可进行逻辑 import 恢复。 而对于整个数据库的日常备份/恢复,需要采用“物理备份”方式,即以相当于 copy 数据文件的方式进行备份,恢复时可以快速以相当于 copy 的方式将备份的数据 copy 回来。一般物理备份/恢复都采用Oracle RMAN 工具来进行。 下面是“逻辑备份”与“物理备份”在数据库故障时的恢复比较: 1. Or
15、acle 逻辑错误造成无法启动 逻辑恢复: 重新 create database 及各 tablespace,import。可恢复到上次 export 的数据 物理恢复: 将所有 datafile copy 回来,并利用 archivelog 将数据库 recover 到故障前的状态 2. 某一个 datafile 故障或丢失 逻辑恢复: 重新 create database 及各 tablespace,import。可恢复到上次 export 的数据 物理恢复: 将该 datafile copy 回来 3. 某一个 tablespace 故障 逻辑恢复: 重新 create database
16、 及各 tablespace,import。可恢复到上次 export 的数据 物理恢复: 将该 tablespace copy 回来 4. 意外 drop table 逻辑恢复: Import 该 table 物理恢复: 将备份恢复到另一服务器上,export 该 table,在原数据库中 import 5. 意外 drop user 逻辑恢复: Import 该 user 物理恢复: 将备份恢复到另一服务器上,export 该 user,在原数据库中 import 6. 意外 drop tablespace 逻辑恢复: 情况较复杂,恢复易造成数据库表之间的参照完整性被破坏。在此不做分析 物
17、理恢复: 情况较复杂,恢复易造成数据库表之间的参照完整性被破坏。在此不做分析 在进行数据库的恢复时,一定要了解 Oracle 数据库的原理,分析故障的原因,然后针对故障的情况进行相应的恢复。例如以下情况: - Oracle 程序文件损坏? - control file 损坏? - Online redo log 损坏? - datafile 损坏? - archive log 损坏? - table 或其中数据被意外删除? 不同情况下需要采用的恢复手段都是不尽相同的,需根据损坏的情况进行相应的恢复步骤。 -select * from wz_zbbd t-where zbbdbh = ZBBD-
18、WZ201108133update wz_jhb b set b.bwzmc = (select d.zbbdmc from wz_zbbd d where d.zbbdbh = b.zbbdbh and d.zbxmbh = JSDL-201108-01)-where b.zbbdbh in (select zbbdbh from wz_zbbd where zbxmbh = JSDL-201108-03); -JSDL-201108-01-JSDL-201108-82-JSDL-201108-83select * from wz_jhb b where b.zbbdbh in (selec
19、t zbbdbh from wz_zbbd where zbxmbh = JSDL-201108-03);select * from wz_zbbd where zbxmbh = JSDL-201108-01select * from wz_zbbd where zbxmbh = JSDL-201108-03select * from wz_zbbd where zbxmbh = JSDL-201108-82select * from wz_zbbd where zbxmbh = JSDL-201108-83update wz_jhb b set b.bwzmc = (select d.zbb
20、dmc from wz_zbbd d where d.zbbdbh = b.zbbdbh and d.zbxmbh = JSDL-201108-03)where b.zbbdbh in (select zbbdbh from wz_zbbd where zbxmbh = JSDL-201108-03);-update wz_zbbd set bdzt = 6 where zbxmbh = JSDL-201108-03-JSDL-201108-01-JSDL-201108-03-JSDL-201108-82-JSDL-201108-83exp bid_admin/a123456ztbpbdb f
21、ile=d:exp.dmp owner=bid_adminimp bid_admin/a123456orcl file=d:exp.dmp fromuser=bid_admin touser=bid_admin- Create the user create user BID_ADMINidentified by “default tablespace USERStemporary tablespace TEMPprofile DEFAULT;- Grant/Revoke role privileges grant connect to BID_ADMIN;grant exp_full_database to BID_ADMIN;grant imp_full_database to BID_ADMIN;grant resource to BID_ADMIN;- Grant/Revoke system privileges grant unlimited tablespace to BID_ADMIN;ZBBD-WZ201108137714152149736503444