--逻辑备份
--导出ORACLE参数
参数 说明
USERID 确定执行导出实用程序的用户名和口令
BUFFER 确定导出数据时所使用的缓冲区大小,其大小用字节表示
FILE 指定导出的二进制文件名称,默认的扩展名是.dmp
FULL 指定是否以全部数据库方式导出,只有授权用户才可使用此参数
OWNER 要导出的数据库用户列表
HELP 指定是否显示帮助消息和参数说明
ROWS 确定是否要导出表中的数据
TABLES 按表方式导出时,指定需导出的表和分区的名称
PARFILE 指定传递给导出实用程序的参数文件名
TABLESPACES 按表空间方式导出时,指定要导出的表空间名
--导出
--全库导出
exp system/accp@accp --在后面的参数中选择E
--按用户方式导出
exp system/accp@newer file=d:\exp.dmp owner=scott,system
--按表方式导出
exp scott/tiger@accp tables=(emp, dept) file=scott_back_tab
--按表分区方式导出
exp scott/tiger@accp tables=(emp:p3) file=scott_back_tab
--按表空间方式导出
exp system/aptech@accp tablespaces=(users) file=tbs_users
--按参数文件方式导出,将要导出的命令写在文本文件中
exp system/aptech parfile='C:\parameters.txt'
--导入ORACLE参数
参数 说明
USERID 指定执行导入的用户名和密码
BUFFER 指定用来读取数据的缓冲区大小,以字节为单位
COMMIT 指定是否在每个数组(其大小由BUFFER参数设置)插入后进行提交
FILE 指定要导入的二进制文件名
FROMUSER 指定要从导出转储文件中导入的用户模式
TOUSER 指定要将对象导入的用户名。FROMUSER与TOUSER可以不同
FULL 指定是否要导入整个导出转储文件
TABLES 指定要导入的表的列表
ROWS 指定是否要导入表中的行
PARFILE 指定传递给导入实用程序的参数文件名,此文件可以包含这里列出的所有参数
IGNORE 导入时是否忽略遇到的错误,默认为N
TABLESPACES 按表空间方式导入,列出要导入的表空间名
--导入
--整个文件导入
imp accp/accp@accp file=d:\item_back.dmp ignore=y full=y
--特定用户的表导入到指定的用户下面
imp system/aptech@accp file=d:\item_back.dmp fromuser=scott touser=martin tables=(emp,dept)
--参数文件方式导入,将要导入的命令文本写在文件中
imp system/oracle parfile='C:\parameters.txt'
--物理备份
冷备份
1. connect sys/sys@newer as sysdba
2. shutdown immediate
3. 复制 oracle目录中的oradata\oradb的子目录中的所有文件 到备份的目录中
冷恢复
1.将数据文件还原回所在位置 ,然后启动数据库
2.starup
进行热备份必须处于“归档日志模式下”
1.启动sqlplus ,并以sysdba方式链接到数据库系统,输入下列命令看看是否处于归档模式
SQL> archive log list
数据库日志模式 非存档模式
自动存档 禁用
存档终点 d:\oracle\ora92\RDBMS
最早的概要日志序列 1
当前日志序列 3
2. 启动归档日志模式
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area 143727516 bytes
Fixed Size 453532 bytes
Variable Size 109051904 bytes
Database Buffers 33554432 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
SQL> alter database archivelog;
数据库已更改。
SQL> archive log list
数据库日志模式 存档模式
自动存档 禁用
存档终点 d:\oracle\ora92\RDBMS
最早的概要日志序列 1
下一个存档日志序列 3
当前日志序列 3
3.关闭存档模式, alter data base noarchivelog
--查看归档日志方式,在SQL_PLUS中,不能在PL/SQL中
conn sys/accp@accp as sysdba;
archive log list;
--查看归档日志信息
SELECT DEST_ID,DEST_NAME,STATUS,DESTINATION
FROM V$ARCHIVE_DEST WHERE STATUS='VALID';
--查看归档日志的日志
SELECT DEST_ID,NAME,ARCHIVED
FROM V$ARCHIVED_LOG;
--在命令行中操作数据库
--登录
sqlplus sys/accp@newer as sysdba
--关闭数据库
shutdown immediate
--启动数据库
startup restrict
startup mount
--修改归档日志模式
alter database archivelog
ARCHIVELOG模式的优点:
·有可能进行完全恢复。由于对数据库所做的全部改动就保存在日志文件中,如果因为包括介质失效在内的某种失效而导致数据库文件丢失的话,可以利用物理备份和归档日志完全恢复数据库,不会丢失任何数据。所有已经提交的事务都可以查到。
·有可能进行联机备份。允许用户在进行数据备份的同时使用数据库。
·表空间可以立即脱机。
·如果一个分布式数据库系统的所有节点都运行在ARCHIVELOG模式下,可以进行分布式恢复。
·提供更多的恢复选择。
·通过使用一个备用数据库,能够提供最大限度的灾难保护手段。
ARCHIVELOG模式的缺点:
·保存归档日志文件需要更多的磁盘空间。
·DBA需要更多的时间来管理数据库。
NOARCHIVELOG模式的特点:
·由于数据文件的丢失,如果需要恢复,只能恢复到最后一个完全脱机数据库备份。在最后一个完全脱机备份后的数据改动都将丢失。因此,需要进行非常频繁的脱机备份。
·必须进行完整的数据库备份,不能仅备份部分数据库。
·不能进行联机备份,脱机备份过程中不能使用数据库。
·表空间不能立即脱机。
·DBA的管理的工作减少
采用Oracle ArchiveLog模式和非ArchiveLog模式对备份恢复的影响
备份的目的在于,当系统或数据库出现问题时,能够快速将数据库进行恢复。对于Oracle数据库,一般有两种备份方式:“物理备份”和“逻辑备份”。“物理备份”指的是以copy数据文件方式进行备份;“逻辑备份”指的是用export等方式将数据从数据库中抽取出来。物理备份又可以分为冷备份和热备份。以下是各种备份的说明及前提条件。
- Cold Backup(冷备份) 主要指在关闭数据库的状态下进行的数据库完全备份,备份内容包括所有数据文件、控制文件、联机日志文件、ini文件。
- Hot Backup(热备份) 指在数据库处于运行状态下,对数据文件和控制文件进行备份,要使用热备份必须将数据库运行在(Archive Log)归档方式下。
- Export(逻辑备份)这是最简单的备份方法,可按数据库中某个表、某个用户或整个数据库来导出,并且支持全部、累计、增量三种方式。使用这种方法,数据库必须处于打开状态,而且如果数据库不是在restrict状态将不能保证导出数据的一致性。
“物理备份”方式以相当于copy数据文件的方式进行备份,恢复时可以快速以相当于copy的方式将备份的数据copy回来,所以备份速度特别是恢复速度非常快。
如果不采用Archive Log模式运行Oracle数据库,只有两种可用的备份方法:冷备份或export逻辑备份。根据关键业务服务器的特点,停下数据库进行冷备份是根本不可能的,因此如果不采用Archive Log,只能进行逻辑备份。
如果仅采用“逻辑备份”方式,恢复时会有以下两个主要问题:
1. 无法恢复到最近时间点的数据。只能恢复到上一次export时的数据状态,当天的数据将丢失。Archive Log模式下的物理备份可以用数据文件备份及Archive Log备份,将数据库恢复到数据库失败前的时间点,不会丢失数据。
2. 完成恢复可能需要很长时间。恢复只能用import方法进行,所以需要的时间包括:
a. create database及所有的tablespace: 以每2分钟初始化一个2G的数据文件来计算,建立一个400G的Oracle数据库需要约6.7个小时。
b. import。时间较难确定,但保守估计应在10个小时以上(如果import过程中出现问题,恢复时间将延长)
3. 恢复时步骤较多,易出现人为故障。
由于 这些原因,一般备份/恢复时都把export/import的方式做为辅助备份/恢复方式,对一些重要的表进行二级保护。这种备份方式也称为“逻辑备份”方式,当某些重要的表被意外删除时可进行逻辑import恢复。
而对于整个数据库的日常备份/恢复,需要采用“物理备份”方式,即以相当于copy数据文件的方式进行备份,恢复时可以快速以相当于copy的方式将备份的数据copy回来。一般物理备份/恢复都采用Oracle RMAN工具来进行。
下面是“逻辑备份”与“物理备份”在数据库故障时的恢复比较:
1. Oracle逻辑错误造成无法启动
逻辑恢复: 重新create database及各tablespace,import。可恢复到上次export的数据
物理恢复: 将所有datafile copy回来,并利用archivelog将数据库recover到故障前的状态
2. 某一个datafile故障或丢失
逻辑恢复: 重新create database及各tablespace,import。可恢复到上次export的数据
物理恢复: 将该datafile copy回来
3. 某一个tablespace故障
逻辑恢复: 重新create database及各tablespace,import。可恢复到上次export的数据
物理恢复: 将该tablespace copy回来
4. 意外drop table
逻辑恢复: Import 该table
物理恢复: 将备份恢复到另一服务器上,export该table,在原数据库中import
5. 意外drop user
逻辑恢复: Import 该user
物理恢复: 将备份恢复到另一服务器上,export该user,在原数据库中import
6. 意外drop tablespace
逻辑恢复: 情况较复杂,恢复易造成数据库表之间的参照完整性被破坏。在此不做分析
物理恢复: 情况较复杂,恢复易造成数据库表之间的参照完整性被破坏。在此不做分析
在进行数据库的恢复时,一定要了解Oracle数据库的原理,分析故障的原因,然后针对故障的情况进行相应的恢复。例如以下情况:
- Oracle程序文件损坏?
- control file损坏?
- Online redo log损坏?
- datafile损坏?
- archive log损坏?
- table或其中数据被意外删除?
不同情况下需要采用的恢复手段都是不尽相同的,需根据损坏的情况进行相应的恢复步骤。
温馨提示:内容为网友见解,仅供参考
使用pl\/sql 怎么导出dmp文件
1、首先打开PL\/SQLDeveloper,输入用户名、密码登录oracle数据库。2、【导出 - 1】点击顶部菜单【Tools】->【Export Tables】。3、然后选择要导出的用户(默认是当前登录的用户),点击【Output file】后面的文件夹图标,选择数据库导出文件存放位置与导出文件的名字。4、在【在导出表界面】选中表名,可...
如何使用PL\/SQL工具批量导出表、存储过程、序列
首先登录到数据库中,通过PLSQL工具等到到数据库,然后点击右上角有个工具栏,然后点击工具栏上的tools。工具栏上的tools(工具)选择导出用户对象,点击tools工具之后,向下查找Export User Objects功能,通过这个功能导出数据。选择需要导出的表或者序列或者存储过程等。在Type列中展示的是对象属性,表、序列...
PLSQL怎样导出oracle表结构
1、首先我们打开需要编辑的oracle数据库,点击打开“tools”。2、然后我们在弹出来的窗口中点击打开“export user objects”。3、然后我们在弹出来的窗口中设置用户、导出对象、导出路径等参数,之后单击导出(Export)即可。
PLSQL怎样导出oracle表结构和数据
任务列表
PLSQL怎样导出oracle表结构和数据
1.完整的导出整个数据库表结构即dmp文件方法:Tools-->Export Tables ,选择Oracle Export 默认选项即可,在Output file选择一个输出目标 点击Export,即可导出表结构 2.导出表中数据:Tools-->Export Tables :选择SQL Inserts 遇到大字段(clob,blob)会出问题导不出来,在此可以 选择需要导出的表,在Output...
PLSQL怎样导出oracle表结构和数据
方式2.tools->export tables 是导出表结构还有数据用pl\/sql developer导出表的数据时有三种方式:Oracle Export,Sql Insert,pl\/sql developer用中间的sql inserts页面,选中create tables选项,where clause 里写入 where rownum<1。如果表包含有CLOB类型字段的话,sql是无法导出的。这时候可以改用PL\/SQL...
怎样通过plsql导出oracle数据库所有对象
在还原之前,我要建设表空间、用户;这个时候就有些用户见不全; 在imp恢复数据库的时候,就有些东西恢复不全,不知道是不这个原因,导致某些用户的procedure等都没有恢复了,所以现在想把所有的数据对象,导出。 新建database的时候,再全部导怎样通过plsql导出oracle数据库所有对象 ...
如何在oracle数据库中导出表,确切的说是在 PLSQL Developer工具中导出...
下面有3种选项,分别是:Oracle导出;SQL插入;PL\/SQL Developer。它们的区别就是导出的文件格式不一样,你要导出哪个表在上面选中,要选张表就按住CTRL多选就OK,不过要记住了,高等级的Oracle客服端去导出低等级的数据库会出问题,笔者试过我数据库是10.1G的,安装10.2的客服端用这个导出都报错。
oracle 怎么导出数据库中的表
oracle数据库 PLSQL 方法\/步骤 首先在电脑上安装并打开PLSQL软件,如图所示:输入数据库名、用户和密码后,点击“确定”,登录数据库,如图所示:登录成功后,左边“对象”中找到“table",并点击展开目录,如图所示:在“table”下找到需要导出的表,在表上点击右键,打开右键菜单,如图所示:在右键菜单...
请问pl\/sql连接远程oracle,怎么把数据和表一起导出来呢?希望写得详细点...
(ADDRESS = (PROTOCOL = TCP)(HOST = 填IP地址)(PORT = 1521)))(CONNECT_DATA = (SERVICE_NAME = 实例名)))打开远程数据库的监听要开打(这个命令:lsnrctl start)之后就可以通过本地连接到远程数据库 命令:sqlplus user\/passwd@上面填的服务名 连上去后就可以用EXP进行表的导出操作了 导出...