1、Oracle 的冷备份和逻辑备份Oracle 的备份和存档模式在做硬件升级前必须要将数据库做一次全备份,以便在出现不可预料的情况下进行恢复,全备份的方法有多种,以下列举两种简单高效的逻辑备份和冷备份,在数据库可以宕机的条件下,推荐使用冷备份,备份和恢复都较为简单和安全。升级完成再将数据库更改为存档模式。一、逻辑备份(导出、导入)1、导出工具 EXP它是操作系统下一个可执行的文件存放目录/ORACLE_HOME/bin。exp 导出工具将数据库中数据备份压缩成一个二进制系统文件。可以在不同 OS 间迁移。它有三种模式:a. 用户模式:导出用户所有对象以及对象中的数据;b. 表模式: 导出用户所有
2、表或者指定的表;c. 整个数据库:导出数据库中所有对象需要 DBA 赋予该角色full_exp_database 权限2. exp 交互式命令行方式导出在一台能连接公安网并且已安装 oracle 客户端的机器上连接目标数据库C:Documents and Settingsyuexp scott/tigerzhouyu以有权限用户连接目标数据库Export: Release 8.1.7.0.0 - Production on 星期五 1 月 5 14:36:16 2007(c) Copyright 2000 Oracle Corporation. All rights reserved.连接到:
3、 Oracle9i Enterprise Edition Release 9.2.0.1.0 - ProductionWith the Partitioning, OLAP and Oracle Data Mining optionsJServer Release 9.2.0.1.0 - Production输入数组提取缓冲区大小: 4096 回车或者选择较为合适的缓冲区大小导出文件: EXPDAT.DMP e:test.dmp 指定要导出的文件在本机存放地址(1)E(完整的数据库),(2)U(用户) 或 (3)T(表): (2)U E 指定导出的模式导出权限(yes/no):yes指定是否导
4、出权限,回车默认导出导出表数据(yes/no):yes指定是否导出表数据,回车默认导出压缩区(yes/no):yes指定是否压缩区,回车默认压缩3exp 非交互式命令行方式在一台能连接公安网并且已安装 oracle 客户端的机器上连接目标数据库$exp parfile=username.par file=/directory1/username_1.dmp,/directory1/username_2.dmp filesize=2000M log=/directory2/username_exp.log参数文件 username.par 内容userid=username/userpasswo
5、rdbuffer=8192000compress=ngrants=y说明:username.par 为导出工具 exp 用的参数文件,里面具体参数可以根据需要去修改,具体的参数可以在查看操作系统帮助,例如 windows 中 cmd 命令行输入命令 exp -help4.导入工具 IMP1. 它是操作系统下一个可执行的文件 存放目录/ORACLE_HOME/binimp 导入工具将 EXP 形成的二进制系统文件导入到数据库中. 它有三种模式:a. 用户模式:导出用户所有对象以及对象中的数据;b. 表模式: 导出用户所有表或者指定的表;c. 整个数据库: 导出数据库中所有对象。 只有拥有 IMP
6、_FULL_DATABASE 和 DBA 权限的用户才能做整个数据库导入5. imp 交互式命令行方式导入在一台能连接公安网并且已安装 oracle 客户端的机器上连接目标数据库C:Documents and Settingsyuimp scott/tigerzhouyuImport: Release 8.1.7.0.0 - Production on 星期五 1 月 5 14:52:45 2007(c) Copyright 2000 Oracle Corporation. All rights reserved.连接到: Oracle9i Enterprise Edition Release
7、 9.2.0.1.0 - ProductionWith the Partitioning, OLAP and Oracle Data Mining optionsJServer Release 9.2.0.1.0 Production导入文件: EXPDAT.DMPetest.dmp输入插入缓冲区大小(最小为 8192 ) 30720经由常规路径导出由 EXPORT:V08.01.06 创建的文件警告: 此对象由 TEST 导出, 而不是当前用户已经完成 ZHS16GBK 字符集和 ZHS16GBK NCHAR 字符集中的导入只列出导入文件的内容(yes/no):no由于对象已存在, 忽略创建
8、错误(yes/no):no yes导入权限(yes/no):yes导入表数据(yes/no):yes导入整个导出文件(yes/no):no yes成功终止导入,但出现警告。6. imp 非交互式命令行方式导入在一台能连接公安网并且已安装 oracle 客户端的机器上连接目标数据库$ imp system/manager parfile=params.dat参数文件 params.dat 内容file=dba.dmp show=n ignore=n grants=y fromuser=scott tables=(dept,emp)说明: params.dat 为导出工具 imp 用的参数文件,里
9、面具体参数可以根据需要去修改,具体的参数可以在查看操作系统帮助,例如 windows 中 cmd 命令行输入命令 imp help。需要注意的问题imp 和 exp 使用的字符集不同,如果字符集不同, 导入会失败, 可以改变 unix 环境变量或者 NT 注册表里 NLS_LANG 相关信息.导入完成后再改回来。imp 和 exp 版本不能往上兼容,imp 可以成功导入低版本 exp 生成的文件, 不能导入高版本exp 生成的文件。imp 全库导入需要该用户有 IMP_FULL_DATABASE 权限或本身为 DBA 用户。二、冷备份冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给
10、我们一个完整的数据库。冷备份是将关键性文件拷贝到另外位置的一种说法。对于备份 Oracle 信息而言,冷备份是最快和最安全的方法。冷备份的优点是:1是非常快速的备份方法(只需拷贝文件)2容易归档(简单拷贝即可)3容易恢复到某个时间点上(只需将文件再拷贝回去)4能与归档方法相结合,作数据库“最新状态”的恢复。5低度维护,高度安全。但冷备份也有如下不足:1单独使用时,只能提供到“某一时间点上”的恢复。2在实施备份的全过程中,数据库必须要作备份而不能作其它工作。也就是说,在冷备份过程中,数据库必须是关闭状态。3若磁盘空间有限,只能拷贝到磁带等其它外部存储设备上,速度会比较慢。4不能按表或按用户恢复。
11、如果可能的话(主要看效率),应将信息备份到磁盘上,然后启动数据库(使用户可以工作)并将所备份的信息拷贝到磁带上(拷贝的同时,数据库也可以工作)。冷备份中必须拷贝的文件包括:1所有数据文件2所有控制文件3所有联机 REDO LOG 文件4Init.ora 文件(可选)。值得注意的是冷备份必须在数据库关闭的情况下进行,当数据库处于打开状态时,执行数据库文件系统备份是无效的1以 system 用户登陆到数据库,执行查询,并保存查询结果。数据文件的位置:select name from v$datafile;控制文件的位置:select name from v$controlfile;日志文件的位置:
12、select member from v$logfile;初始化参数文件 initsid.ora。2关闭数据库SQLconn sys/change_on_installorcl as sysdbaSQLshutdown normal;3按照第一步查询结果,使用操作系统命令,拷贝文件至要备份路径或磁盘。完成备份4重启 oracle 数据库SQLconn sys/change_on_installorcl as sysdbaSQL startup;三、更改 oracle 为归档模式在默认情况下,在创建数据库的时候,它处于 NOARCHIVE 模式,也就是非归档模式,非归档模式不必考虑存储复制的文件
13、所需要的额外存储空间,也不需要存档管理任务,但是,从备份和恢复的角度来看,最大的缺点就是在出现硬件故障的时候,在最后一次数据库备份之后的任何更改都将丢失。这对于总队数据库来说是不可以接受的。所以需要在硬件升级的同时,将数据库更改为归档模式,以便在出现故障时对数据库进行恢复。1.确定存档模式在更改数据库存档模式之前,首先需要做的就是确定当前的模式。通过 SQL*PLUS 来确认连接目标数据库SQL conn ntiis/ntiisadminwork60已连接。SQL select log_mode from v$database;LOG_MODE-NOARCHIVELOG 确认为非归档模式2.更
14、改数据库参数文件修改数据库参数文件/ORACLE_HOME/admin/pfile/init.ora取消以下语句的#注释log_archive_start = truelog_archive_dest_1 = “location=/ORACLE_HOME/oradata/oradb/archive“log_archive_format = %ORACLE_SID%T%TS%S.ARC关闭数据库,重新启动3.连接至总队数据库,确认更改生效Oracle8i Enterprise Edition Release 8.1.7.0.0 - ProductionWith the Partitioning
15、optionJServer Release 8.1.7.0.0 - ProductionSQL connect internal连接成功。SQL startup已启动 ORACLE 实例。系统全局区域合计有 57124108 个字节Fixed Size 70924 个字节Variable Size 40198144 个字节Database Buffers 16777216 个字节Redo Buffers 77824 个字节已装入数据库。数据库已打开。SQL alter system switch logfile; -强制系统进行日志切换,可马上观察到归档日志的产生语句已处理。查看 C:Oracleoradataoradbarchive 目录下,可以看到类似 ORADBT001S01201.ARC 的文件,说明归档成功4.解释 init.ora 参数文件中关于归档重做日志参数项的含义归档模式是自动还是手工,true 为自动,false 为手工log_archive_start = true归档日志文件所保存的路径log_archive_dest_1 = “location=C:Oracleoradataoradbarchive“归档日志文件的命名方法log_archive_format = %ORACLE_SID%T%TS%S.ARC