oracle 备份恢复语句整理(最全)
- 格式:docx
- 大小:50.25 KB
- 文档页数:10
Oracle数据库备份与还原命令Oracle数据库备份与还原命令数据导出:1 将数据库TEST完全导出,用户名system 密码manager导出到D:\daochu.dmp中exp system/manager@TEST file=d:\daochu.dmp full=y2将数据库中system用户与sys用户的表导出exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)3 将数据库中的表table1 、table2 导出exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2)4将数据库中的表table1中的字段filed1 以"00"打头的数据导出exp system/manager@TEST file=d:\daochu.dmp tables=(table1)query=\" where filed1 like '00%'\"上面是常用的导出,对于压缩我不太在意,用winzip把dmp文件可以很好的压缩。
不过在上面命令后面加上compress=y就可以了数据的导入1将D:\daochu.dmp中的数据导入TEST数据库中。
imp system/manager@TEST file=d:\daochu.dmp上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。
在后面加上ignore=y 就可以了2 将d:\daochu.dmp 中的表tablel 导入imp system/manager@TEST file=d:\daochu.dmp tables=(table1)基本上上面的导入导出够用了。
不少情况我是将表彻底删除,然后导入。
一、/ A注息:你要有足够的权限,权限不够它会提示你。
RMAN 备份与恢复实例收藏1. 检查数据库模式:sqlplus /nologconn /as sysdbaarchive log list (查看数据库是否处于归档模式中)若为非归档,则修改数据库归档模式。
startup mountalter database archivelogalter database open2.连接到target数据库命令:connect target / (connect target system/oracle@ora10g,如果数据库没有起来,也可要直接在rman命令下用startup进行启动数据库)可以连接到target database.(rman 一边连接到target数据库,另外一边连接到control file(nocatalog mode),control file 中存储rman 的备份信息)3.用list backupset 命令查看有没有备份的东西4. 常用备份命令:备份全库:RMAN> backup database plus archivelog delete input; (备份全库及控制文件、服务器参数文件与所有归档的重做日志,并删除旧的归档日志)备份表空间:RMAN> backup tablespace system plus archivelog delete input; (备份指定表空间及归档的重做日志,并删除旧的归档日志)_备份归档日志:RMAN> backup archivelog all delete input;======================对整个数据库进行备份==================1.对整个数据库进行全备份(full backup)。
只要输入命令: backup database;2.list backupset 查看备份的具体信息List of Backup Sets===================BS Key Type LV Size Device Type Elapsed Time Completion Time------- ---- -- ---------- ----------- ------------ ---------------1 Full 6.80M DISK 00:00:02 06-DEC-08BP Key: 1 Status: A V AILABLE Compressed: NO Tag: TAG20081206T201041Piece Name: /home/oracle/flash_recovery_area/ORA10G/backupset/2008_12_06/o1_mf_ncsnf_TAG20081206 T201041_4mntz78s_.bkpControl File Included: Ckp SCN: 782019 Ckp time: 06-DEC-08SPFILE Included: Modification time: 06-DEC-08BS(backupset), piece是一个文件,一个BS包含多个piece.3.rman中缺省的参数,可以通过show all ;来进行查看(RMAN configuration parameters),我们在使用backup database命令中,可以把这些default value 用固定的值来进行替代.4.我们可以把备份的文件才备份的目录中拷贝到磁带上,然后删除备份目录下面的备份文件,如果下次需要恢复的话,只要把文件重新拷回到用来的备份目录就可以了5.查看control file 文件中的备份信息(因为我们做的备份是在nocatalog模式下),control file 在/u01/oracle/oradata/ora10g目录下,由于control file 是个二进制文件,要查看control file 文件中的内容,用strings control03.ctl,发现control03.ctl中有rman备份的信息了====================0级增量备份===============概念:全备份和0级增量备份。
orcle数据库备份语句Oracle数据库备份是一项非常重要的任务,可以保障数据的安全性和完整性。
在进行数据库备份时,我们可以使用不同的语句和方法来完成备份操作。
以下是一些常用的Oracle数据库备份语句:1. 使用RMAN备份整个数据库:RMAN是Oracle推荐的备份工具,可以使用以下语句备份整个数据库:```RMAN> BACKUP DATABASE;```2. 使用RMAN备份指定表空间:如果只需要备份数据库中的特定表空间,可以使用以下语句:```RMAN> BACKUP TABLESPACE tablespace_name;```3. 使用RMAN备份指定数据文件:如果只需要备份数据库中的特定数据文件,可以使用以下语句:```RMAN> BACKUP DATAFILE 'datafile_path';4. 使用RMAN备份指定控制文件:控制文件是数据库的关键组成部分,可以使用以下语句备份控制文件:```RMAN> BACKUP CURRENT CONTROLFILE;```5. 使用RMAN备份归档日志:归档日志包含了数据库的所有更改记录,可以使用以下语句备份归档日志:```RMAN> BACKUP ARCHIVELOG ALL;```6. 使用EXPDP备份数据库:EXPDP是Oracle提供的数据泵工具,可以使用以下语句备份整个数据库:```expdp username/password directory=directory_name dumpfile=dumpfile_name.dmp full=yes;7. 使用EXPDP备份指定表:如果只需要备份数据库中的特定表,可以使用以下语句:```expdp username/password directory=directory_name dumpfile=dumpfile_name.dmp tables=table_name;```8. 使用EXPDP备份指定表空间:如果只需要备份数据库中的特定表空间,可以使用以下语句:```expdp username/password directory=directory_name dumpfile=dumpfile_name.dmp tablespaces=tablespace_name;```9. 使用EXPDP备份指定用户:如果只需要备份数据库中的特定用户,可以使用以下语句:```expdp username/password directory=directory_name dumpfile=dumpfile_name.dmp schemas=user_name;```10. 使用EXPDP备份指定数据文件:如果只需要备份数据库中的特定数据文件,可以使用以下语句:```expdp username/password directory=directory_name dumpfile=dumpfile_name.dmp filesperset=1 include=datafile:'datafile_path';```总结:以上是一些常用的Oracle数据库备份语句,通过使用不同的备份语句可以实现对整个数据库、指定表空间、指定数据文件、归档日志等的备份。
orcal数据备份语句Oracle数据库备份语句是数据库管理员经常使用的重要工具,它可以保护数据库的数据安全,防止数据丢失或损坏。
以下是一些常用的Oracle数据库备份语句:1. 全备份语句:RMAN> BACKUP DATABASE;这个语句将对整个数据库进行备份,包括数据文件、控制文件和日志文件。
2. 表空间备份语句:RMAN> BACKUP TABLESPACE example;这个语句将备份指定的表空间,可以用于恢复该表空间的数据。
3. 数据文件备份语句:RMAN> BACKUP DATAFILE 1 FORMAT '/backup/datafile1.bak';这个语句将备份指定的数据文件,可以用于恢复该数据文件的数据。
4. 控制文件备份语句:RMAN> BACKUP CURRENT CONTROLFILE FORMAT '/backup/controlfile.bak';这个语句将备份当前的控制文件,以便在需要时进行恢复。
5. 归档日志备份语句:RMAN> BACKUP ARCHIVELOG ALL FORMAT '/backup/archivelog.bak';这个语句将备份所有归档日志文件,用于保留数据库变更的历史记录。
6. 增量备份语句:RMAN> BACKUP INCREMENTAL LEVEL 1 DATABASE;这个语句将备份已更改的数据块,可以用于快速备份大型数据库。
7. 压缩备份语句:RMAN> BACKUP AS COMPRESSED BACKUPSET DATABASE;这个语句将备份数据库并使用压缩备份集来减小备份文件的大小。
8. 备份到远程服务器语句:RMAN> BACKUP DATABASE FORMAT '/backup/%d_%T_%U' TAG 'PROD_BACKUP'2> REMOTE 'ssh user@remotehost "/backup"' SECTION SIZE 10M;这个语句将备份数据库并将备份文件传输到远程服务器上的指定路径。
Oracle数据库imp/exp导入导出命令(备份与恢复)Toad 一个很好的oralce数据库操作与管理工具,使用它可以很方便地导入导出数据表,用户以及整个数据库。
今天在这里主要讲一下用命令行来操作oracle数据导入和导出:备份数据1、获取帮助:exp help=y2. 导出一个完整数据库exp user/pwd@instance file=path full=y示例:exp system/system@xc file = c:/hehe full =yimp tax/test@tax file=d:/dbbak.dmp full=y3 、导出一个或一组指定用户所属的全部表、索引和其他对象exp system/manager file=seapark log=seapark owner=seaparkexp system/manager file=seapark log=seapark owner=(seapark,amy,amyc,harold)示例:exp system/system@xc file=c:/hehe owner=uep4、导出一个或多个指定表exp system/manager file=tank log=tank tables=(seapark.tank,amy.artist)示例:exp system/system@xc file=c:/heh tables=(ueppm.ne_table)恢复数据1. 获取帮助imp help=y2. 导入一个完整数据库imp system/manager file=bible_db log=dible_db full=y ignore=y3. 导入一个或一组指定用户所属的全部表、索引和其他对象imp system/manager file=seapark log=seapark fromuser=seaparkimp system/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold)4. 将一个用户所属的数据导入另一个用户imp system/manager file=tank log=tank fromuser=seapark touser=seapark_copyimp system/manager file=tank log=tank fromuser=(seapark,amy) touser=(seapark1, amy1)5. 导入一个表imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b)****************************************************利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回Oracle 数据库中去。
RMAN(备份与恢复管理器)基本知识RMAN是 ORACLE提供的一个备份与恢复的工具,可以用来备份和还原数据库文件、归档日志和控制文件。
它也可以用来执行完全或不完全的数据库恢复。
RMAN可以由命令行接口或者 OEM的 Backup Manager GUI 来控制。
4.1 基本知识4.1.1 RMAN的组件、概念1. RMAN 主要包括以下组件:Target Database: (目标数据库)就是需要 RMAN 对其进行备份与恢复的数据库,RMAN 可以备份数据文件,控制文件,归档日志,spfile。
(注意:RMAN不能用于备份联机日志、初始化参数文件和口令文件)Server Session: (服务器会话)RMAN启动数据库上的 Oracle服务器进程,将建立一个与目标数据库的会话。
由目标数据库上的服务器进程进行备份、还原、恢复的实际操作。
服务器进程RMAN 的服务进程是一个后台进程,用于与 RMAN工具与数据库之间的通信,也用于 RMAN 工具与磁盘/磁带等 I/O 设置之间的通信,服务进程负责备份与恢复的所有工作,在如下情况将产生一个服务进程:当连接到目标数据库分配一个新的通道Channel: (通道)一个通道是 RMAN和目标数据库之间的一个连接,"allocate channel"命令在目标数据库启动一个服务器进程,同时必须定义服务器进程执行备份或者恢复操作使用的 I/O类型。
通道控制命令可以用来:? 控制 RMAN使用的 O/S资源,影响并行度? 指定 I/O带宽的限制值(设置 limit read rate 参数)? 定义备份片大小的限制(设置 limit kbytes)? 指定当前打开文件的限制值(设置 limit maxopenfiles)recovery catalog: (恢复目录)用来保存备份与恢复信息的一个数据库,不建议创建在目标数据库上。
RMAN 利用恢复目录记载的信息去判断如何执行需要的备份恢复操作。
.ORACLE 最简单有效的备份恢复方案ORACLE备份分两种, 1.逻辑备份;2.物理备份;逻辑备份又分两种:传统的 exp 备份; 10g 开始支持的expdp数据泵备份;物理备份主要就是 RMAN 备份;最基本的原则是:这些逻辑或物理备份和数据库文件必须放在不同的硬盘上;否者一损俱损;备份就没多大意义了;如果数据库不是很大,比如在50G 以下,那么我们就考虑一些傻话化的全备方案我现在的备份方案是:两个逻辑备份和RMAN 备份全部用上;1.传统 dmp 逻辑备份和恢复1.1 传统 dmp 逻辑备份,这个是最简单的备份方法;现在我提供一个简单的脚本:1.1.1 首先建立一个bat 文件,名字叫:exp_backup.bat内容是:set oracle_username=%1set oracle_password=%2set local_tnsname=%3set url=%oracle_username%/%oracle_password%if not %local_tnsname% == "" set url=%url%@%local_tnsname%if exist %oracle_username%_old.dmp del %oracle_username%_old.dmp ifexist %oracle_username%_old.log del %oracle_username%_old.logif exist %oracle_username%.dmp ren %oracle_username%.dmp %oracle_username%_old.dmp ifexist %oracle_username%.log ren %oracle_username%.log %oracle_username%_old.logexp %url% file=%oracle_username%.DMP log=%oracle_username%.LOG该脚本是一个通用的最简单的exp 脚本;意思就是:备份之间,把以前的备份文件修改名字,后面加上_old ,如果本来就有old 文件,就删除之;之后,.就开始份;份的文件目和脚本一致(做最 );所以是会出一新一旧两个文件;当然只要最新的就行了,所以理上只要一份文件;但是考有可能份的候突然,old 文件在,将就着使用,否者新的是坏的,旧的也没了;有的人做一周7 天循份,我得没有必要,要那么多旧的份文件何用,浪空;1.1.2 然后再做一个bat 文件,比如是my_exp.bat内容是 :call exp_backup.bat USER PASSWORD ""如果是在服器自身上份,就不需要写入数据服名;如果有多个用数据需要份;那么就在my_exp.bat 添加:call exp_backup.bat USER1 PASSWORD1 ""⋯.My_EXP.BAT可以做成windows 的行划,每天不忙的候行一次;1.2 exp 份的恢复下面就是恢复的最方法:1.2.1.把上当前用底除,用命令,就可以把象底清除;DROP USER XXX CASCADE1.2.2 .再建用CREATE USER xxxxIDENTIFIED BY xxxxDEFAULT TABLESPACE xxxxTEMPORARY TABLESPACE TEMP并予限:GRANT DBA TO xxxx WITH ADMIN OPTION1.2.3 用 IMP 恢复C:\>imp xxxx/xxxx FILE=xxxx.DMP LOG=xxxx.LOG FULL=Y2.10G 后的数据 expdp 份和恢复2.1 expdp 份据个比exp 有很多点,个我就不了,大家可以自己参考料;不我下来,如果数据量小expdp 是不如 exp 的;但是是建是使用expdp ,因数据会慢慢大的,用expdp 更好些;我最看重的是: expdp 份的文件涵盖的西更多;所以恢复的候方便;除用后,可以不用再建用恢复;不,它的目不像 EXP那么直接,需要使用 oracle 的目象;所以2.1.1 第一步先建一个目象,比如:SQL>create or replace directory LOGIC_BUCKUP份 ';2.1.2 建立一个通用脚本,比如叫EXPDP_BACKUP.BAT内容是:set oracle_username=%1set oracle_password=%2set local_tnsname=%3set url=%oracle_username%/%oracle_password%if not %local_tnsname% == "" set url=%url%@%local_tnsname%if exist %oracle_username%_old_dump.dmp del %oracle_username%_old_dump.dmp ifexist %oracle_username%_old_dump.log del %oracle_username%_old_dump.logif exist %oracle_username%_dump.dmp ren %oracle_username%_dump.dmp%oracle_username%_old_dump.dmpif exist %oracle_username%_dump.log ren %oracle_username%_dump.log%oracle_username%_old_dump.logEXPDP%url%DIRECTORY=LOGIC_BACKUP DUMPFILE=%oracle_username%_DUMP.DMP LOGFILE=%oracle_username%_DUMP.LOG PARALLEL=2方法与上面的dmp 份似;2.1.3 然后再做一个bat 文件,比如是my_expdp.bat内容是 :call expdp_backup.bat USER PASSWORD ""如果是在服器自身上份,就不需要写入数据服名;如果有多个用数据需要份;那么就在my_exp.bat 添加:call expdp_backup.bat USER1 PASSWORD1 ""⋯⋯同 dmp 份一, My_EXPdp.BAT也可以做成windows 的行划,每天不忙的候行一次;2.2 expdp 份的恢复2.2.1.把电脑上当前用户彻底删除,用命令,这样就可以把对象彻底清除;DROP USER XXXX CASCADE2.2.2.用另外一个权限较高的用户(最好不是sys,比如是 YYYY) 导入:C:\>IMPDP yyyy/yyyy DUMPFILE=xxxx_DUMP.DMP LOGFILE=xxxx_DUMP.LOG DIRECTORY=LOGIC_BUCKUP PARALLEL=2(这里的LOGIC_BUCKUP是 oracle 的对象目录,要和xxxx_dump.dup 存放的目录一致)这样就 OK 了,也即是说用户不需要创建,数据泵文件含有了用户以及它原来的权限;从这点来讲,是不是比 IMP 导入更为方便;好了,两种逻辑备份讲完了,下面重点说一下RMAN 备份;因为在生产系统中,逻辑备份作用不大的,因为它不能实时的备份数据,所以逻辑备份更多的时候是给开发人员互相导入数据和存储过程之类用的;RMAN 备份的原理还是有点复杂的,很多细节的我也不是很清楚,不过没关系,我们可以整理出一套最简单的备份方案:3.RMAN 备份和恢复3.1. RMAN 备份3.1.1 首先把数据库参数关注一下,关注下面两个参数第一个参数:db_recovery_file_dest_size, 上图中的大小是默认的4G,也就是归档模式下,archivelog 的所有归档日志文件大小总和,如果超过这个数,就会导致数据库出问题;所以要非常小心,因而建议修改大一些,比如修改成20G;当然最本质的方法,是要按时清理无用的归档日志;第二个参数:db_recovery_file_dest,这个参数非常重要,是11G 里,存放rman 备份集和归档日志的地方;默认是放在flash_recovery_area 目录下的,因为我的系统的flash_recovery_area 和数据库文件在同一个硬盘,所以修改了;3.1.2.关注 redo 日志文件,每组里要有两个成员, 1 个在数据库文件的硬盘下, 1 个在备份文件的硬盘下,因为日志文件写入最频繁,RMAN 无法对它备份,或者说任何备份工具都无法对redo 日志备份;不过redo 它自己可以做冗余,两个文件只要有一个在,即可;比如:3.1.3 做一个最简单的rman 备份脚本;3.1.3.1 首先做一个txt ,比如是: autorman.txt内容是:sql 'alter system archive log current';backup database;delete noprompt obsolete;这三句话的作用分别是: 1.对当前 redo 日志进行归档; 2.备份数据库 3.删除无效的archive 日志和 rman 备份集3.1.3.2 做一个 bat 调用上面的autorman.txt ,比如是: autorman.bat内容是:rman target / @autorman.txt然后就在 winddows 下做一个执行计划,每天或没隔几天,自动执行一下这个autorman.bat当然备份之前,要用rman>show all看一下参数设置,有没有自动备份控制文件,如果没有,要加上;3.2 rman 恢复Rman 恢复非常简单;下面说一下步骤:3.2.1 假如最新一次全备是 3 天前的,先随便建立一个新表,比如是test_rman ,随便插几条数据;用来测试还.现在用 sqlplus 登陆, shutdown 数据库,然后把 oracle 的数据库文件全部删除 (控制文件, redo 日志文件,数据库文件 );3.2.2 用 sql> startup nomount启动数据库的参数文件,参数文件和数据库文件不在同一个硬盘,所以没丢;这时候如果执行sql>alter database mount会报错,因为mount 会加载控制文件,而控制文件已经丢了;3.3.3.把以前控制文件所在的目录建立好,否者rman 找不到控制文件恢复路径;然后执行RMAN>restore controlfile from autobackup;这样控制文件就回复了,有了控制文件就好办了;3.2.4. 以为有了控制文件,所以在sqlplus 里,可以装载数据库Sql>alter database mount3.2.5 数据库被装载后,说明控制文件生效了,这时候,所有的数据库信息都出来了;所以可以用rman 还原数据库了:RMAN> RESTORE database;3.2.6恢复数据库:RMAN> recover database;2.2.7 数据库现在已经全部回复好,可以重新启动了:SQL> alter database open resetlogs;数据库已更改。
Oracle备份、恢复1. 引言备份和恢复是Oracle数据库管理中至关重要的一部分。
通过定期备份Oracle数据库,可以保证数据在发生故障或灾难时的安全性和可恢复性。
本文将介绍Oracle数据库的备份和恢复方法,以及一些常见的备份和恢复策略。
2. 备份方法Oracle数据库提供了多种备份方法,包括物理备份和逻辑备份。
2.1 物理备份物理备份是将数据库的物理文件(数据文件、控制文件和日志文件)备份到外部存储介质中。
物理备份可以使用Oracle提供的工具如RMAN(Recovery Manager),也可以使用操作系统级别的工具如tar或cp命令进行备份。
2.2 逻辑备份逻辑备份是通过导出数据库中的数据、表和对象定义来备份数据库。
逻辑备份可以使用Oracle提供的工具如expdp(数据泵导出)和exp (传统导出),也可以使用第三方工具如DataPump Export和TOAD进行备份。
3. 备份策略在制定备份策略时,需要考虑以下几个因素:3.1 定期备份备份应该定期进行,频率根据业务需求和数据库的变更频率而定。
通常,每天进行一次完整备份,并结合增量备份来减少备份时间和存储空间的占用。
3.2 备份保留时间备份需要保留一定的时间,以防止数据恢复时出现问题。
通常,完整备份可以保留一周,而增量备份可以保留一到两天。
3.3 备份验证备份完成后,需要进行备份验证以确保备份文件的完整性和可用性。
可以使用RMAN的VALIDATE命令来验证备份文件。
3.4 离线备份除了定期备份,还应该定期进行离线备份,将备份文件存储在不同的位置,以防止发生物理灾难。
4. 恢复方法当数据库发生故障或数据丢失时,需要使用备份文件进行恢复。
以下是一些常见的Oracle数据库恢复方法:4.1 物理恢复物理恢复是通过使用RMAN来还原备份文件和应用归档日志来恢复数据库。
物理恢复可以是完全恢复或部分恢复,具体取决于数据库的损坏程度和备份策略。
oracle数据库备份与恢复方法
Oracle数据库备份与恢复是确保数据安全和可靠性的重要方面。
备份是指将数据库中的数据复制到另一个位置,以便在数据丢失或
损坏时进行恢复。
恢复则是指在发生故障或数据丢失时,通过备份
数据来恢复数据库到之前的状态。
一、备份方法:
1. 物理备份,物理备份是通过操作系统级别的工具(如RMAN)将数据库文件直接复制到备份位置。
可以使用RMAN命令行或图形界
面工具来执行物理备份。
2. 逻辑备份,逻辑备份是通过导出数据到逻辑文件(如SQL脚
本或数据泵文件)来进行备份。
可以使用expdp和impdp命令来执
行逻辑备份和恢复。
二、恢复方法:
1. 完全恢复,在数据库严重损坏或丢失时,可以使用完全备份
进行完全恢复。
这涉及将数据库恢复到备份时的状态,并应用任何
后续的归档日志以实现完整的恢复。
2. 不完全恢复,在某些情况下,可能只需恢复部分数据文件或表空间。
这可以通过RMAN进行部分恢复来实现。
除了上述备份和恢复方法外,还有一些其他注意事项和最佳实践:
定期备份,建立合理的备份策略,包括完整备份、增量备份和归档日志备份,以确保数据的及时备份和恢复。
测试恢复,定期测试备份和恢复过程,以确保备份数据的完整性和可用性。
数据库保护,使用冗余服务器、存储冗余和灾难恢复计划来保护数据库免受硬件故障、自然灾害和人为错误的影响。
综上所述,Oracle数据库备份与恢复是确保数据安全和可靠性的重要措施,通过合理的备份策略和恢复方法,可以最大程度地保护数据库免受数据丢失和损坏的影响。
oracle数据库备份、还原命令及常见问题(待补充)1、oracle数据库的备份:先查空表——将结果全选复制为insert语句——将语句执⾏后导出先select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;把空表查出来,再执⾏备份命令(在cmd中运⾏):EXP ⽤户名1/密码@实例名 OWNER=⽤户名1file=D:/orcldata/xxxx.dmp 导出命令不要带分号2、oracle数据库的还原:1.打开cmd2.执⾏语句,执⾏语句后,下⾯的3、4、5、6步骤在sqlplus中执⾏sqlplus sys/zfsqa as sysdba;或sqlplus / as sysdba;3.如果有表空间了删除以前的数据表空间DROP TABLESPACE 表空间名 INCLUDING CONTENTS AND DATAFILES;如果没有就创建表空间create tablespace 表空间名 datafile 'E:\orcldata\表空间.dbf' size 2000m;4.创建新的数据表空间⽤户create user ⽤户2 identified by 密码 default tablespace 表空间名;如果⽤户已存在:DROP USER C##WEB_CHENZHOU CASCADE;DROP USER web_xm_new CASCADE;5. 授权⽤户grant connect,resource,dba to ⽤户2;6.退出数据库连接exit;7.还原数据库(在cmd中运⾏)imp ⽤户2/密码@实例名 file="E:\orcldata\xxxxx.dmp" fromuser=⽤户1 touser=⽤户2 ignore=y DESTROY=Y ----从现场数据库的⽤户到我这边数据库的⽤户还原数据库后要修改配置⽂件中的⽤户名ximeng_pt1和密码123456说明:⼯作中在还原12c的数据库时遇到过⼀个问题:报错IMP-00002: ⽆法打开E:\app\ORsystem\product\12.2.0\dbhome_1D:\oracldata\ONE_WINDOW_ACCEPTED_V1.dmp 进⾏读取导⼊⽂件: EXPDAT.DMP>解决办法是把file路径的引号去掉就可以了补充:----sqlplus 中查找所有的⽤户名称select * from all_users;----查看所有⽤户(当创建表空间下的⽤户时,提⽰重复或冲突,查看所有⽤户的命令)select username,default_tablespace from dba_users;-----查看所有⽤户及⽤户所属表空间select username from dba_users;select instance_name from v$instance;查找实例名称3、查看oracle数据库的连接数:select count(*) from v$session; ----查看当前连接数select value from v$parameter where name = 'sessions'; --取得会话数的上限。
Oracle备份恢复场景总结一、数据文件、表空间恢复1、数据库文件恢复1>场景一:问题描述:test.dbf丢失,有RMAN备份。
重启报错:Startup;ORA-01157: cannot identify/lock data file 5 - see DBWR trace file ORA-01110: data file 5: '/oracle/app/oracle/oradata/orcl/test01.dbf'run{startup mount;allocate channel ch00 type 'SBT_TAPE';restore datafile 5;recoverdatafile 5;alter database open;release channel ch00;}2>场景二问题描述:模拟test表空间损坏,删除数据文件(恢复到新目录)旧目录:/oracle/app/oracle/oradata新目录: /home/oraclerun{allocate channel ch00 type 'SBT_TAPE';sql 'alter database datafile 5 offline';setnewname for datafile 5 to '/home/oracle/test01.dbf';restoredatafile 5;switchdatafile 5;recoverdatafile 5;sql 'alter database datafile 4 online';release channel ch00;}说明:set newname for 告诉RMAN 还原数据文件的新位置在哪里。
这个命令在restore 前出现。
switch datafile更新controlfile,记录这个新位置。
这个命令要在recover 前出现2、表空间恢复恢复误删除表空间(已备份),RMAN 必须通过备份的控制文件(与之配套的老控制文件)进行恢复。
run{startupnomount;allocate channel d1 type sbt;restorecontrolfile from '/bk_43_1_920726015';sql 'alter database mount';set until time '2016-08-24 13:17:16';restore database;recover database;alter database open read only;release channel d1;}确保没问题在:shutdown abort;startup mount;alter database open resetlogs;二、控制文件恢复1、场景一:控制文件自动备份的恢复startupnomountset dbidxxxx需指定DBIDrestorecontrolfilefrom autobackup;alter database mount;recover database;alter database open resetlogs;如何寻找DBID?1.既然是默认路径,那么就去默认路径寻找,一般在$ORACLE_HOME/dbs目录下,例如c-361654012-20150312-04,其中361654012就是DBID2.在数据文件的头部含有DBID2、场景一:控制文件从非默认地方恢复这里控制文件从nbu备份的磁带上恢复备份路径startupnomount#从本地恢复restore controlfile from ‘/u01/c-361654012-20150312-04’;在此之前无需指定DBID 或者#从SBT_TAPE恢复restorecontrolfile from '/cntrl_23_1_920645270';run{allocate channel d1 type sbt;restorecontrolfile from '/cntrl_23_1_920645270';sql 'alter database mount';recover database;sql 'alter database open resetlogs';release channel d1;}注释:1>、restore controlfile必须写在run块了,否则报错:RMAN-06172: no AUTOBACKUP found or specified handle is not a valid copy or piece2>sbt的磁带号-/cntrl_23_1_920645270可以从已备份成功的任务里查看。
三、Redo 文件恢复联机重做日志的3种状态:current 当前inactive 非活动active 活动观察数据恢复是否需要联机重做日志来恢复。
1.inactive日志丢失的恢复—实例恢复不需要2.active日志丢失的恢复:日志组对应的脏块还没有从data buffer 写入到data file,不能被覆盖(但已写入到归档里)—实例恢复需要3.current日志丢失的恢复—实例恢复需要1、场景一:inactive日志丢失的恢复1>正常关闭数据库后(redo的丢失就属于inactive日志丢失的恢复)shutdown immediaterm redo*startup mountalter database clear logfile '/u01/app/oracle/oradata/ortest/redo01.log';## alter database clear logfile group n;也行alter database clear logfile '/u01/app/oracle/oradata/ortest/redo03.log';alter database clear unarchivedlogfile '/u01/app/oracle/oradata/ortest/redo02.log';alter database open;此情况不会丢失数据。
起来后多切几遍日志,看是否正常:alter system switch logfile;注意事项:必须clear 完非current log之后,才能clear unarchived current log(当你不带参数unarchived而clear当前日志的时候会提示你日志需要归档)。
2>非关闭数据库后(inactive日志丢失)shutdown abortrm redo01.logstartup mountalter database clear logfile '/u01/app/oracle/oradata/ortest/redo01.log';alter database open;此种情况不会丢失数据2、场景二:active日志丢失非正常关闭数据库,active日志丢失shutdown abortrm redo01.logstartup mountrecover database until cancel;alter database open resetlogs;此种情况不会丢失数据。
(active的日志已写入归档)3、场景三:current日志丢失此种情况会丢失数据:shutdown abortrm redo01.logstartup mountalter system set "_allow_resetlogs_corruption"=true scope=spfile;添加隐藏参数recover database until cancel;alter database open resetlogs;四、不完全恢复RMAN不完全恢复:三个标准模式:基于time、基于scn和基于sequence还有一种是基于cancel的恢复(注意是在SQL下执行)在不完全恢复时,有时为了保险往往一步把数据库open read only,确保没问题再open resetlogs:alter database open read only;启动到mount下执行:run {allocate channel c1 type disk;allocate channel c2 type disk;set until time '2016-06-06 11:54:05';restore database;recover database;alter database open resetlogs;}//基于scn的方法与基于time 相似,语法是set until scn 6689163;//基于日志的方法类似手工恢复的例子,语法是set until sequence 3;//有时报错格式不对恢复前执行://linux操作系统:export NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'五、database恢复1、原机器恢复1>恢复spfile文件-到nomount状态:可以从数据库模板里随便找个pfile起到mount下,再恢复spfile。
因为分配channel 必须得在nomount下面:rman>run{allocate channel c1 type sbt;restorespfile from '/al_63_1_920727874'; release channel c1;}2>恢复控制文件-到mount状态run{allocate channel c1 type sbt; restorecontrolfile from '/cntrl_64_1_920727890'; sql 'alter database mount';release channel c1;}3>恢复数据文件-以read only打开run{allocate channel c1 type sbt;allocate channel c2 type sbt;allocate channel c3 type sbt;allocate channel c4 type sbt;set until time '2016-08-24 13:40:00';restore database;recover database;sql 'alter database open read only';release channel c1;release channel c2;release channel c3;release channel c4;}注释:查看恢复用到的截止时间戳:用list backup;查看备份的归档最后的时间:4>打开数据库确定无误后,已resetlogs打开数据库:shutdown abort;startup mount;alter database open resetlogs;2、异机恢复:参考原机器恢复,主要的就是,再每个run里面写着一条:run{….SEND 'NB_ORA_CLIENT=rac1;…}rac1是nbu上原机器的client名字。