备份一个ORACLE数据库有三种标准方式: EXPORT(导出)、脱机备份和联机备份。导出方式是数据库的逻辑备份,其他两种备份方式都是物理文件备份。
逻辑备份
ORACLE的EXPORT实用程序exp用来读取数据库(其中包括数据字典)和把输出写入一个叫作导出转储文件(export dump file)的二进制文件中。可以导出整个数据库、指定用户或指定表。在导出期间,可以选择是否导出与表相关的数据字典信息,如权限、索引和与其相关的约束条件。exp所写的文件包括完全重建全部被选对象所需的命令。
备份方法
(1)随便找一台windows机器装上oracle(如果你的oracle是装在windows上,就不必再另外再安装了,这步省下).如果只装oracle的客户端,好象不会自动装上exp这个工具,所以得装上数据库服务器。
(2)创建一个批处理文件供windows的任务计划调度执行(在控制面板-任务计划).
(3)在批处理文件.bat中指定要导出的user及exp的一些参数:
exp admin/admin@ora12 file=F:/Every_week_backup/server12/s12_evryweek.dmp owner=LINMARKDEV816,LINMARKHK,LINMARKINSTALL,LINMARKUTA816,NBDEMO,SAKSDEV,SAKSOWNER1227,SAKSOWNER2.6NP,CSPUAT2 consistent=y log=F:/Every_week_backup/server12/s12_evryweek_exp.log
(4)上例中 owner=后面的就是你要导出的user,你可根据你的需要来输入。admin/amin@ora12是一个具dba权限的用户(你可用system/密码 来取代,以使它能导出多个user。ora12是我要导出的数据库服务器的实例名。这可能是另外一台机器上的服务器,你可先在客户端的$oraclehom/network/admin/tnsnames.ora中设置,使你的客户端能连上oracle,或直接通过oracle的网络配置工具Net Configuration Assistant来配连接) file=就是你的导出文件即dmp文件的存放路径.
(5)编辑好批处理文件后,你可在windows的任务计划中执行这个文件(可设置周期执行,例:如果你要每两天备份一次,时间是在零辰1点,这个你可打开任务计划去设置)。当然你得确保设置了任务计划的电脑在任务执行时不关机。这样,每次启动导出任务时,oracle会重新override那个dmp文件,所以你也得将前次的dmp文件拷出来,另外存放).
利用exp进行导出备份具有三种方式: Full方式、User方式和Table方式。
Export实用程序
逻辑备份的用法
首先打开【开始】菜单,选择【运行】命令,弹出如图1所示的“运行”对话框,在“打开”文本框中输入cmd,单击【确定】按钮。
图2 “运行”对话框
此时会弹出一个DOS窗口,在此窗口下,可以使用EXP/IMP命令进行数据库的逻辑备份和恢复,有三种操作方式:
* 交互式 是在直接输入命令后,根据系统的提示一步一步进行,好像在和系统对话一样。在此不再举例说明。
* 命令行模式 是在命令的后面接一些参数和参数值。举例说明:
图3 命令行模式导出
如果用户对IMP和EXP命令参数比较熟悉,命令行模式是比较方便的一种操作方式。在做逻辑备份时文件名最好使用绝对路径。如果只给出文件名,则备份文件将被保存在当前目录,这样会加大控制和管理的难度。
* 参数模式 是在命令的后面接一个参数文件的名称,这个参数文件中存放了执行过程需要调用的部分参数。参数模式其实就是将命令后面所带的参数写在一个参数文件中,然后再使用命令,使后面带一个调用该文件的参数,这个参数为PARFILE=。我们可以通过普通的文本文件编辑器和创建这个文件,为了明显起见,将该参数文件命名为. PARFILE的后缀。以下就是一个参数文件的内容:
USERID=SCOTT/TIGER@ARJDB
FULL=N
BUFFER=10000
FILE=DEPT.DMP
TABLES=DEPT
执行过程如下:
图4 以参数模式导出
上述提到的几种模式和方法同样适用于IMP命令。
4. 应用实例
下面结合实例具体说明导入和导出使用方法。为了避免由于操作失误造成数据丢失,首先以SCOTT用户登陆系统,创建两个用作逻辑备份的表,分别为emp_dump表和dept_dump表。
图5 创建逻辑备份表
确认表创建成功后,启动DOS命令行窗口,利用导出命令导出刚才创建好的逻辑备份表,如图所示。在做逻辑备份时文件名最好使用绝对路径,这样可以减少控制和管理的难度。
图6 导出逻辑备份表
为了验证之后的导入工作是否正确,我们用DML语句把公司中所有员工都升职为CEO,具体操作如下:
图7 更新表中的数据
可以用select语句验证所做的修改是否成功。如图所示。
图8 更新后的表数据
由显示结果可以看出,公司中的所有员工都已经升职为了CEO,数据更新成功。确认成功后删除掉创建的两个表。
图9 删除逻辑备份表
利用select语句确认两个表已经不存在后,在DOS窗口中输入导入命令,如图所示。
图10 恢复逻辑备份表
返回SCOTT用户,利用select语句验证所做的逻辑恢复是否已经成功。
exp的选项及含义如下:
(1) Userid
执行导出的帐户的用户名/口令,如果这是exp命令后的第一个参数,则关键字userid就不必指定。
(2) Buffer
用于获取数据行的缓冲区尺寸,缺省值随系统而定,通常设为一个高值(大于64000)。
(3) File
导出转储文件的名字。
(4) Filesize
一个导出转储文件的最大尺寸。如果file条目中列出了多个文件,将根据filesize设置值导出这些文件。
(5) Compress
一个Y/N标志,用于指定导出是否应把碎片段压缩成单个区。这个标志影响将存储到导出文件中的storage子句。
(6) Grants
一个Y/N标志,用于指定数据库对象的权限是否导出。
(7) Indexes
一个Y/N标志,用于指示表上的索引是否导出。
(8) Rows
一个Y/N标志,用于指示行是否导出。如果设置为N,在导出文件中将只创建数据库对象的DDL。
(9) Constraints
一个Y/N标志,用于指示表上的约束条件是否导出。
(10) Full
若设为Y,执行FULL数据库导出。
(11) owner
导出数据库帐户的清单,可以执行这些账户的USER导出。
(12)Tables
导出表的清单,可以执行这些表的TABLE导出。
(13) Recordlength
导出转储文件记录的长度,以字节为单位。除非是在不同的操作系统间转换导出文件,否则就使用缺省值。
(14) Inctype
要执行的导出类型(允许值为complete(缺省)、cumulative和incremental )。
(15) Direct
一个Y/N标志,用于指示是否执行DIRECT导出。DIRECT导出在导出期间绕过缓冲区,从而大大提高导出处理的效率。
(16) Record
用于INCREMENTAL导出,这个Y/N标志指示一个记录是否存储在记录导出的数据字典表中。
(17) Parfile
传递给EXPORT的一个参数文件名,这个文件可以包含exp所需的全部参数条目。
(18) Statistics
这个参数指示导出对象的ANALYZE命令是否应写到导出转储文件上。其有效值是COMPUTE、ESTIMATE ((缺省)和N。在较早的ORACLE版本中,这个参数叫作ANALYZE。
(19) consistent
一个Y/N标志,用于指示是否应保留全部导出对象的读一致版本。在EXPORT处理期间,当相关的表被用户修改时需要这个标志。
(20) Log
一个要写导出日志的文件名。
(21) Feedback
表导出时显示进度的行数。缺省值是0,所以在一个表全部导出前没有反馈显示。
(22) point_in_time_recover
一个Y/N标志,用于向ORACLE指示,是否正在导出用于表空间时间点恢复的元数据。
(23) recover_tablespaces
在表空间时间点恢复期间,其元数据应被导出的表空间。
(24) Query
导出时用于每个表的where子句。
(25) tablespaces
移动一个表空间时应导出其元数据的表空间。
ORACLE8i中exp参数的缺省值如表8.1-1所示。
使用exp help=Y可以显示exp命令的参数。
1. Compress参数
对于包含多个区的数据段,COMPRESS = Y选项可修改s t o r a g e子句的initial参数。因此,该段的总分配空间应压缩到一个区。使用该参数要注意两点: