冷备份
冷备份数据库是将数据库关闭之后备份所有的关键性文件包括数据文件、控制文件、联机REDO LOG文件,将其拷贝到另外的位置。此外冷备份也可以包含对参数文件和口令文件的备份,但是这两种备份是可以根据需要进行选择的。冷备份实际也是一种物理备份,是一个备份数据库物理文件的过程。因为冷备份要备份除了重做日志以外的所有数据库文件,因此也被成为完全的数据库备份。
过程:
冷备份数据必须是数据库不在open状态下。 以下步骤会给出详细的过程:
◆(1): 关闭DB : shutdown immediate;
◆(2):copy oradata目录下的所有文件, 包括数据文件, 控制文件,redo,等,还需要copy 密码文件 在目录ora92下 的database 中的pwd 文件全部copy到一个安全目录中。在sql 下可以直接加一个 host 然后使用dos命令。如host copy
◆(3):如果是 *** 作系统的重新安装,只要是同样系统,同样数据库版本,是可以做冷备恢复。一下谈的是系统的重新安装后的步骤。
◆(4):正常安装oracle软件,只需要安装软件,可以不用建实例,建实例的时间也比较长,也没有必要。 软件安装好以后,开始准备恢复。
◆(5):数据覆盖过去包括pwd文件,放在原来的目录,如果目录有所改变则需要另外建立控制文件,修改pfile。
◆(6):建立服务:使用oradim 命令 cmd下 oradim -new -sid erp 表示建立一个服务,sid为erp。关于oradim的命令另外给出专门解释。
◆(7):建立监听: net configuration assintant 来建立,或用脚本建立并且开启。
◆(8):打开数据库: 用oem也行,cmd下也行。
set oracle_sid=erp;
sqlplus "/as sysdba";
startup;
select from v$instance;
至此,冷备份恢复成功。即使你现在用oem打开数据库时发现提示找不到sid ,但实际上你已经成功了,此时只需要重启一下的你的服务器就可以了。
-------------------------------------------
热备份
热备份是在数据库运行的情况下,采用archive log mode方式备份数据库的方法。热备份要求数据库处于archive log模式下 *** 作,并需要大量的档案空间。一旦数据库处于archive loh
模式,就可以进行备份了,当执行备份时,只能在数据文件级或表空间进行。
过程:
1准备工作
由于在备份过程中,数据库仍然是打开的,所以要求正在复制的各个数据文件管理的表空间必须处于备份模式。备份完后再脱离备份模式。因此备份前必须将ORACLE 数据库调整为归档模式。查看代码如下
查看当前数据库归档状态:ARCHIVE LOG LIST:以下为非归档
<img src=">
2数据库备份
21查询要备份表空间对应的数据文件的详细信息
select file_name from dba_data_files
where
tablespace_name='USERS';
22将表空间设为备份模式
ALTER TABLESPACE USERS BEGIN BACKUP;
23查看处于备份模式的数据文件:
select from v$backup;
24使用 *** 作系统命令备份表空间的数据文件
HOST COPY f:\BAK\ HOST COPY f:\oracle\oradata\orcl\dbf//将前面ORACLE数据库热备份的文件拷贝到系统目录中
25将表空间设置为正常模式
ALTER TABLESPACE USERS END BACKUP。
1 DIRECTORY
指定转储文件和日志文件所在的目录
DIRECTORY=directory_object
Directory_object用于指定目录对象名称需要注意,目录对象是使用CREATE DIRECTORY语句建立的对象,而不是OS目录Expdp scott/tiger DIRECTORY= DMP DUMPFILE=adumpcreate or replace directory dmp
as 'd:/dmp'
expdp zftang/zftang@zftang directory=dmp dumpfile=testdmp content=metadata_only2 CONTENT
该选项用于指定要导出的内容默认值为ALL
CONTENT={ALL | DATA_ONLY | METADATA_ONLY}
当设置CONTENT为ALL时,将导出对象定义及其所有数据为DATA_ONLY时,只导出对象数据,为METADATA_ONLY时,只导出对象定义expdp zftang/zftang@zftang directory=dmp dumpfile=testdmp content=metadata_only----------只导出对象定义
expdp zftang/zftang@zftang directory=dmp dumpfile=testdmp content=data_only----------导出出所有数据
3 DUMPFILE
用于指定转储文件的名称,默认名称为expdatdmpDUMPFILE=[directory_object:]file_name [,…]
Directory_object用于指定目录对象名,file_name用于指定转储文件名需要注意,如果不指定directory_object,导出工具会自动使用DIRECTORY选项指定的目录对象expdp zftang/zftang@zftang directory=dmp dumpfile=test1dmp数据泵工具导出的步骤:
1、创建DIRECTORY
create directory dir_dp as 'D:/Oracle/dir_dp';2、授权
Grant read,write on directory dir_dp to zftang;--查看目录及权限
SELECT privilege, directory_name, DIRECTORY_PATH FROM user_tab_privs t, all_directories dWHERE ttable_name(+) = ddirectory_name ORDER BY 2, 1;3、执行导出
expdp zftang/zftang@fgisdb schemas=zftang directory=dir_dp dumpfile =expdp_test1dmp logfile=expdp_test1log;连接到: Oracle Database 10g Enterprise Edition Release 10201With the Partitioning, OLAP and Data Mining options启动 "ZFTANG""SYS_EXPORT_SCHEMA_01": zftang/@fgisdb schory=dir_dp dumpfile =expdp_test1dmp logfile=expdp_test1log; /备注:
1、directory=dir_dp必须放在前面,如果将其放置最后,会提示 ORA-39002: *** 作无效ORA-39070: 无法打开日志文件。
ORA-39087: 目录名 DATA_PUMP_DIR; 无效
2、在导出过程中,DATA DUMP 创建并使用了一个名为SYS_EXPORT_SCHEMA_01的对象,此对象就是DATA DUMP导出过程中所用的JOB名字,如果在执行这个命令时如果没有指定导出的JOB名字那么就会产生一个默认的JOB名字,如果在导出过程中指定JOB名字就为以指定名字出现如下改成:
expdp zftang/zftang@fgisdb schemas=zftang directory=dir_dp dumpfile =expdp_test1dmp logfile=expdp_test1log,job_name=my_job1;3、导出语句后面不要有分号,否则如上的导出语句中的job表名为‘my_job1;’,而不是my_job1。因此导致expdp zftang/zftang attach=zftangmy_job1执行该命令时一直提示找不到job表数据泵导出的各种模式:
1、 按表模式导出:
expdp zftang/zftang@fgisdb tables=zftangb$i_exch_info,zftangb$i_manhole_info dumpfile =expdp_test2dmp logfile=expdp_test2log directory=dir_dp job_name=my_job2、按查询条件导出:
expdp zftang/zftang@fgisdb tables=zftangb$i_exch_info dumpfile =expdp_test3dmp logfile=expdp_test3log directory=dir_dp job_name=my_job query='"where rownum<11"'
3、按表空间导出:
Expdp zftang/zftang@fgisdb dumpfile=expdp_tablespacedmp tablespaces=GCOMMDBF logfile=expdp_tablespacelog directory=dir_dp job_name=my_job4、导出方案
Expdp zftang/zftang DIRECTORY=dir_dp DUMPFILE=schemadmp SCHEMAS=zftang,gwm5、导出整个数据库:
expdp zftang/zftang@fgisdb dumpfile =fulldmp full=y logfile=fulllog directory=dir_dp job_name=my_jobimpdp导入模式:
1、按表导入
p_street_areadmp文件中的表,此文件是以gwm用户按schemas=gwm导出的:
impdp gwm/gwm@fgisdb dumpfile =p_street_areadmp logfile=imp_p_street_arealog directory=dir_dp tables=p_street_area job_name=my_job2、按用户导入(可以将用户信息直接导入,即如果用户信息不存在的情况下也可以直接导入)impdp gwm/gwm@fgisdb schemas=gwm dumpfile =expdp_testdmp logfile=expdp_testlog directory=dir_dp job_name=my_job3、不通过expdp的步骤生成dmp文件而直接导入的方法:
--从源数据库中向目标数据库导入表p_street_areaimpdp gwm/gwm directory=dir_dp NETWORK_LINK=igisdb tables=p_street_area logfile=p_street_arealog job_name=my_jobigisdb是目的数据库与源数据的链接名,dir_dp是目的数据库上的目录4、更换表空间
采用remap_tablespace参数
--导出gwm用户下的所有数据
expdp system/orcl directory=data_pump_dir dumpfile=gwmdmp SCHEMAS=gwm注:如果是用sys用户导出的用户数据,包括用户创建、授权部分,用自身用户导出则不含这些内容--以下是将gwm用户下的数据全部导入到表空间gcomm(原来为gmapdata表空间下)下impdp system/orcl directory=data_pump_dir dumpfile=gwmdmp remap_tablespace=gmapdata:gcomm
1、你可以在数据库A做计划任务,用exp或者expdp导出,然后scp或者rsync到服务器B
例如计划任务0 0 /data1/backup/expdp_db_baksh;
expdp_db_baksh内容:
#!/bin/sh
~/bash_profile
dst=/data1/backup/db_bak
today=`date +%F`
bakfile=expdp_db_${today}dmp
logfile=expdp_db_${today}log
expdp 'user01/778899' DIRECTORY=expdp_dir1 parallel=2 \
dumpfile=$bakfile SCHEMAS=user01 logfile=$logfile COMPRESSION=all
scp -P22 $bakfile oracle@1721615:/data1/backup/db_bak
exit 0;
2、也可以在服务器B用exp直接导出数据
exp 'user01/778899@DB01' file=$bakfile FULL=Y log=baklog
3、开启归档模式,在服务器A用rman 做全备或增量备份,然后将备份同步到服务器B
指定路径
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/data1/rman/full_%d_%U';
全备份,默认Format
backup incremental level 0 database;
增量备份
backup incremental level 1 database;
将备份rsync 到服务器B
/usr/bin/rsync -av '-e ssh -p 22' oracle@1721611:/data1/rman /data1
4、开启归档模式,在服务器AB间配置DATAGURAD,同步数据
以上就是关于oracle如何备份单表并在新数据库恢复全部的内容,包括:oracle如何备份单表并在新数据库恢复、oracle 数据泵备份在哪个位置、linux服务器中如何登陆另一台Linux服务器中的Oracle数据库进行全库备份等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)