oracle数据库备份还原脚本详解
- 格式:docx
- 大小:13.14 KB
- 文档页数:4
rac数据库RMAN 备份与恢复一、数据库备份在主库上通过rman 每天对数据库进行备份,并且保留两份备份在主库删除归档和进行rman 备份的脚本:[oracle@rac1 arch]$ pwd/opt/app/arch[oracle@rac1 arch]$ more del_arch.shexport ORACLE_SID=orcl1export ORACLE_BASE=/opt/app/oracleexport ORACLE_TERM=xtermexport ORACLE_HOME=/opt/app/oracle/product/10.2.0/db_1source /opt/app/arch/orcl1/del_arch.listsource /opt/app/arch/orcl2/del_arch.list/opt/app/oracle/product/10.2.0/db_1/bin/rman target / log='/opt/app/arch/rman.log' <<EOFdelete obsolete recovery window of 3 days;crosscheck archivelog all;delete noprompt obsolete;delete noprompt expired archivelog all;crosscheck backup;delete noprompt expired backup;backup format='/opt/app/arch/rman/orcl_full_%U_%T' tag='orcl_full' database;backup current controlfile tag='orcl_ctlfile'format='/opt/app/arch/rman/orcl_ctlfile_%U_%T';backup spfile tag='orcl_spfile'format='/opt/app/arch/rman/orcl_spfile_%U_%T';exitEOF执行时间:[oracle@rac1 arch]$ crontab -l30 02 * * 0 /opt/app/arch/del_arch.sh30 02 * * 1 /opt/app/arch/del_arch.sh30 02 * * 2 /opt/app/arch/del_arch.sh30 02 * * 3 /opt/app/arch/del_arch.sh30 02 * * 4 /opt/app/arch/del_arch.sh30 02 * * 5 /opt/app/arch/del_arch.sh30 02 * * 6 /opt/app/arch/del_arch.sh每天的备份文件放在/opt/app/arch/rman/目录下二、数据库恢复如果数据库出现故障,可以从备份文件中恢复数据库,最早可以恢复到两天前的备份时间点RAC 下的RMAN 讲究的是备份和还原的策略要一致。
GS下Oracle数据库备份恢复
注意:在对数据库做任何备份恢复操作时,请先备份数据库,以免丢失数据
本文将以一个例子来说明GS下oracle数据库帐套的备份恢复
原有数据库:cwbase002
恢复数据库:cwbase003
1.首先备份原有数据库cwbase002,使用如下命令:密码和oracle 服务名请改动
exp LC0029999/password@oradb file=d:\back\1\002.dmp owner=LC0029999 2.备份完成后会得到d:\back\1\002.dmp这个文件。
接下来,如果需要恢复到cwbase003,如果cwbase003已经存在的话,如果cwbase003正在使用,请谨慎处理,在确定cwbase003没用的话,删除cwbase003这个库,执行如下sql:Drop user lc0039999 cascade ;
如果cwbase003不存在,请新建lc0039999用户后再导入。
lc0039999需要有dba、resource角色,和unlimited tables权限,表空间用cwbase3,临时表用temp
3.在建好了lc0039999这个用户后,执行如下sql执行数据库恢复:密码和oracle 服务
名请改动
Imp lc0039999/password@oradb file= d:\back\1\002.dmp fromuser=LC0029999 touser=LC0039999
4.在恢复完数据库后,需要修改lc0039999用户下的syap表和system用户下
appinstmantab表,具体配置请查询数据依据帐套信息进行修改。
ORACLE数据库备份与恢复方案备份方案设计前提:数据库设置为归档模式,不使用恢复目录数据库1、一个月一次在线全库备份2、每天归档日志备份3、每周一次exp导出4、每天一次exp增量导出5、保留最近两次全备和归档日志的备份6、至少保留最近一个月exp文件7、既备份到磁盘也备份到磁带Win2000下oracle8i/9i的备份方案的实现说明:数据库实例:ora9i,备份目录为e:\backup每个月一次全备1、备份命令文件:fullbackup.batrman cmdfile=fullbackup.rcvcopy C:\oracle\oradata\ora9i\CONTROL01.CTL e:\backup\CONTROL01.CTL /y 2、RMAN参数文件:fullbackup.rcvconnect target system/manager@ora9i;run{allocate channel c1 type disk;backup full tag 'dbfull' format 'e:\backup\dbfull%u_%s_%p' database;sql 'alter system archive log current';backup archivelog all delete input format 'e:\backup\arch%u_%s_%p';release channel c1;}3、任务计划增加一个每月1号1点开始执行的任务计划fullbackup每天一次归档日志的备份1、备份命令文件:archbackup.batrman cmdfile=archbackup.rcv2、RMAN参数文件:archbackup.rcvconnect target system/manager@ora9i;run{allocate channel c1 type disk;sql 'alter system archive log current';backup archivelog all delete input format 'e:\backup\arch%u_%s_%p';release channel c1;}3、任务计划增加一个每天2点开始执行的任务计划archbackupUNIX下oracle8i/9i的备份方案的实现基本相同,但计划任务得用crontab来实现恢复方案设计Win2000下oracle8i/9i的恢复方案的实现一、故障描述:磁盘损坏,数据库彻底瘫痪处理方法:1、更换磁盘,重新安装ORACLE(如果数据库安装的磁盘也损坏的话),重新创建实例ora9i,让数据库处于shutdown状态。
Oracle:备份、还原数据库⼀ . 数据的导⼊与导出1. 数据的导出:输⼊exp 指令,没有数据的表不导出。
2. 数据的导⼊:进⼊到备份⽂件所在路径,输⼊imp 指令。
实际⼯作中不使⽤这种⽅式导出。
⼆. 数据库的冷备份:常⽤的说明:冷备份,称为归档备份,指的是数据库要关闭服务,备份如下⽂件: 控制⽂件:控制着oracle 的实例信息 “v$controlfile” 数据字典⽂件 重做⽇志⽂件:“v$logfile”数据⽂件:"v$datafile"核⼼配置⽂件 (pfile) :""1. 使⽤ sys登陆2. select * from v$controlfile ;select * from v$logfile select * from v$datafile show parameter pfile3, 记录好这些⽂件的路径4. 关闭 Oracle 服务。
shutdown immediate5 拷贝所有备份⽂件6 重新启动服务startup这种备份是允许关闭计算机服务。
参考: ——————————————————————————————————————————————————————————————————————————————Oracle数据导⼊导出imp/expOracle数据导⼊导出imp/exp在cmd的dos命令提⽰符下执⾏,⽽不是在sqlplus⾥⾯,但是格式⼀定要类似于:imp/exp ⽤户名/密码@service_name或oracle_sid full=y file=C:\导出⽂件名称.dmp ignore=yimp 命令是在dos提⽰符下执⾏的,直接cmd后执⾏⽽不是在sql下执⾏的数据导出:1 将数据库完全导出,⽤户名wlj ,密码wlj 导出到D:exportoracle.dmp中exp wlj/wlj@IP地址/orcl file=d:exportoracle.dmp full=yexp wlj/wlj@ip地址/orcl file=d:exportoracle.dmp full=yexp wlj/wlj@ip地址/orcl tables=表名 file=d:exportoracle.dmp full=y--expdp导出数据expdp CCENSE/CCENSE@OracleDB directory = "dpdata1" dumpfile ="oracleExpdp.dmp" logfile = oracleExpdp20161103.log注意:如果出现:EXP-00056: 遇到 ORACLE 错误 12154ORA-12154: TNS: ⽆法解析指定的连接标识符EXP-00000: 导出终⽌失败这个很明显是连接不上你的数据库,你可以查看⼀下你的net manager⾥⾯的服务名有没配置好解决⽅法:1、不再服务端的话,在其它机器可能通过service_name或oracle_sid来访问数据库,注意service_name必须写正确,需要查看oracle net manager 中的数据库的tns配置实例名称(上⾯@后⾯的 orcl)是否与需要连接的⼀样,cmd中使⽤ tnsping orcl 可以ping同的话,就说明没有问题。
1. ORACLE数据库
1.1 登录SQL*PLUS
用户名:test
密码: test
主机: 127.0.0.1:1521@ORCL
1.2 ORCLE数据库备份导出
1)远程到安装数据库的服务器
2)进入cmd
3)导出备份文件,执行语句 exp test/test123456@ORCL file=E:/test.dmp 1.3 ORCLE数据库备份导入
1)创建实例
2)创建好实例以后,进行如下步骤:
第一,启动sql*puls
第二,以system/123456登陆
第三,create user 用户名 IDENTIFIED BY 密码(如果已经创建过用户,这步可以省略)
eg:create test identified by test123456
第四,GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW , DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,
DBA,CONNECT,RESOURCE,CREATE SESSION TO 用户名字
第五, 运行-cmd-进入dmp文件所在的目录,
imp userid=system/manager full=y file=*.dmp
或者 imp userid=system/manager full=y file=filename.dmp
执行示例:
imp userid=test/test123456 full=y file=E:/test.dmp;
第 1 页共 1 页。
Oracle数据库-备份整个数据库与还原整个数据库数据这个功能是为了防止数据库中的数据损坏,而拿备份的表去顶替损坏的表这个功能是在DOS窗口实现的,可并非是在Oracle数据库中执行的先说本地的导出与导入:备份(也叫导出):exp 用户名/密码@本地服务名 file=目标地址举例: exp sys/sys@orcl file=C:\Users\Administrator\Desktop注:1、@orcl一般本地库的没动的话都叫这个2、C:\Users\Administrator\Desktop是本地桌面地址3、导出的文件是在硬盘上生成后缀名为dmp的文件还原【导入】:imp 用户名/密码@本地服务名 file=文件的位置 ignore=y举例:imp sys/sys@orcl file=C:\Users\Administrator\Desktop\某.dmp full=y ignore=y注:1、ignore=y的作用是忽视一些不必要的错误如果不加的话有时候会报:ORACLE 这些对象由 XXXX 导出, 而不是当前用户2、有时候会提示IMP-00031:必须指定 FULL=Y 或提供 .....(记不清了)这时候需要 ignore=y 改为 full=y 就可以了(在这里向评论区的那位同志道歉我之前没遇见过这个问题,抱歉)3、(2020年10月26日12:08:26改)full=y是导入全部文件的含义有本地的当然有远程的导出与导入:备份【导出】:exp 用户名/密码@网络服务名 file=目标地址还原【导入】:imp 用户名/密码@网络服务名 file=文件位置 ignore=y注意:如果从A用户导出,然后导入B用户,则需要加上 fromuser=A touser=B举例:imp 用户名/密码@网络服务名 file=文件位置 ignore=y fromuser=A touser=B如果你发现导入数据报错,请往下看oracle 导入DMP文件时IMP-00013: 只有DBA 才能导入由其他 DBA 导出的文件 IMP-00000: 未成功终止导入报这个错误主要是一个DBA用户权限问题,导出数据的用户拥有DBA权限,而我要导入的用户没有这个权限而已,我们需要给要导入的用户加上DBA权限按照网上的其他教程用同一个用户给同一个用户权限.... 对不起我在想,要是他没有权限是怎么给同一用户赋予权限的首先在DOS窗口,执行sqlplus然后会让你输入用户名,你可以输入用system或者sys用户赋予登录密码就是管理口令然后就会碰见如下就如上图一样,挨个执行grant dba to usernam注:2这里直接敲回车grant dba to 用户名;即可-全文完-。
oracle中expimp备份还原工具的使用详解Oracle数据库的exp和imp命令是数据库备份和恢复的常用工具。
本文将详细介绍exp和imp命令的用法和具体步骤。
一、exp命令exp命令用于将Oracle数据库中的数据和对象导出到一个二进制文件中,以进行备份或迁移。
以下是exp命令的详细步骤:1. 登录到Oracle数据库的命令行界面。
2. 输入以下命令启动exp工具:其中,username是要导出数据的用户名,password是对应的密码,connection_string是连接数据库的字符串,包括主机名、端口号和服务名等信息。
3. exp工具启动后,会提示输入导出内容的方式。
可以选择导出全库、特定表或特定用户的数据。
输入相应的选项并按Enter键确定。
4. 接下来,exp工具会要求输入导出的目标文件名。
输入文件名并按Enter键确定。
5. 导出过程将开始执行。
exp工具会逐一导出数据库的数据和对象,并将其存储在目标文件中。
此过程可能需要一些时间,取决于数据库的大小和复杂性。
6. 导出完成后,在命令行中会显示相应的导出信息。
可以根据需要选择是否结束exp工具。
二、imp命令imp命令用于将exp命令导出的二进制文件恢复到Oracle数据库中。
以下是imp命令的详细步骤:1. 登录到Oracle数据库的命令行界面。
2. 输入以下命令启动imp工具:其中,username是要导入数据的用户名,password是对应的密码,connection_string是连接数据库的字符串,包括主机名、端口号和服务名等信息。
3. imp工具启动后,会提示输入导入内容的方式。
可以选择导入全库、特定表或特定用户的数据。
输入相应的选项并按Enter键确定。
4. 接下来,imp工具会要求输入导入的源文件名。
输入文件名并按Enter键确定。
5. 导入过程将开始执行。
imp工具会读取源文件中的数据和对象,并将其恢复到目标数据库中。
Linux_oracle数据库的备份与恢复1 数据库备份和恢复(备份和恢复均已做成脚本自动运行,下列操作供参考,请不要在生产机上做测试) 1)数据库备份:◆将dbexp.parm,dbexp.sh 拷贝至/home/oracle/backup/.以oracle用户登录系统$ cd /home/oracle/backup$ dos2unix *$ chmod 755 dbexp.sh◆手工执行备份,用oracle用户登录:$ cd /home/oracle/backup$ ./dbexp.sh◆自动执行备份,用root用户登录:#crontab -e 00 01 * * * su - oracle -c "/home/oracle/backup/dbexp.sh"2)数据库恢复:以oracle用户登录系统◆删除用户:sqlplus /nolog>connect / as sysdba;>drop user center cascade;>create user center identified by center;>grant connect,resource,dba to center◆恢复数据库$imp center/center full=y grants=y INDEXES=y constraints=y LOG=/tmp/backup.log rows=y ignore=y file=xxx(xxx--为以前备份的数据文件,如checkid_20041123.dat)oracle数据库的备份与恢复原理及方法:导出(备份)exp 用户名/密码@服务名file=d:daochu.dmp (rows=no(导出空结构)) 导入(恢复)imp 用户名/密码@服务名file=d:daochu.dmp fromuser=原用户名touser=新用户名---- 当我们使用一个数据库时,总希望数据库的内容是可靠的、正确的,但由于计算机系统的故障(包括机器故障、介质故障、误操作等),数据库有时也可能遭到破坏,这时如何尽快恢复数据就成为当务之急。
alter system kill session 'sid,serial#';
------查询某个表被什么用户锁死了
SELECT /*+ rule */ ername,
decode(l.type,'TM','TABLE LOCK',
'TX','ROW LOCK',
NULL) LOCK_LEVEL,
o.owner,o.object_name,o.object_type,
s.sid,s.serial#,s.terminal,s.machine,s.program,s.osuser
FROM v$session s,v$lock l,dba_objects o
WHERE l.sid = s.sid
AND l.id1 = o.object_id(+)
AND ername is NOT NULL
---查询表空间的大小
select t.tablespace_name, round(sum(bytes / (1024 * 1024)), 0) ts_size
from dba_tablespaces t, dba_data_files d
where t.tablespace_name = d.tablespace_name
group by t.tablespace_name;
--备份
exp his_user/asd2828@hisgn file=e:\20120629hisgn.dmp CONSISTENT=y full=y exp his_user/asd2828@hisgn file=e:\20120720hisgnuser.dmp CONSISTENT=y owner=his_user buffer=10240000 --建议用此语句
drop user his_testgn cascade; --删除用户
--drop tablespace his_user_data including contents and datafiles cascade constraints; --删除表空间
-----------------创建用户 RESOURCE角色允许用户使用数据库中的存储空间
--CONNECT角色允许用户连接至数据库,并创建数据库对象
grant all privileges to user1 ;--赋予user1所有权限
CREATE USER his_testgn IDENTIFIED BY asd2828;
GRANT CONNECT,RESOURCE,dba TO his_userbj;
GRANT DEBUG ANY PROCEDURE TO his_userbj;
GRANT CREATE SEQUENCE TO MARTIN; --此系统权限允许用户在当前模式中创建序列,此权限包含在CONNECT角色中
--
CREATE USER his_testgn profile default IDENTIFIED BY asd2828 account unlock; GRANT CONNECT,RESOURCE,dba TO his_userbj;
---修改用户密码
alter user his_testgn identified by test11 --将用户his_testgn密码改为test11
alter user scott account unlock identified by tiger;--将用户scott密码改为tiger 并解锁
--select * from v$session
-----锁定用户
alter user his_testgn account lock;
CREATE VIEW VW_SESSION AS SELECT * FROM v$session;
GRANT ALL ON VW_SESSION TO his_userbj; ---一般是把sys下面的视图
VW_SESSION的所有权限给用户his_userbj
--创建表空间
CREATE TABLESPACE HIS_USER_DATA DATAFILE
'E:\ORACLE\HIS_USER_DATA01.DBF' SIZE 1824M
AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED LOGGING
EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ;
CREATE TABLESPACE HIS_USER_INDEX DATAFILE
'E:\ORACLE\HIS_USER_INDEX01.DBF' SIZE 1824M
AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED LOGGING
EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ;
---修改表空间
ALTER USER his_testgn DEFAULT TABLESPACE HIS_TEST_DATA; --将创建的表空间给用户
--添加物理文件当表空间不足时追加表空间
ALTER TABLESPACE HIS_USER_DATA
ADD DATAFILE 'E:\ORACLE\HIS_USER_DATA02.DBF' SIZE 1824M AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED;
ALTER TABLESPACE HIS_USER_INDEX
ADD DATAFILE 'E:\ORACLE\HIS_USER_INDEX02.DBF' SIZE 1824M AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED;
------还原
cmd;
imp his_testgn/asd2828@hisgn file=e:\20120805hisgnuser.dmp fromuser=his_user touser=his_userbj buffer=5400000 ignore=y statistics=none
IMP sys/asd2828@XNJ FROMUSER=HIS_USER TOUSER=HIS_USER FILE =
E:\GuangNIngDB0105.dmp BUFFER = 10240000
exp his_user/asd2828@xnj file = E:\HIS_USER.dmp full=y log=user.log
--select * from dba_tablespaces --查询表空间
---彻底删除表空间以及数据文件
drop tablespace his_user_data including contents and datafiles cascade constraints; --以上都要在数据库完成
imp his_user/asd2828@hisdb file=F:\20120625hisgn.dmp full=y buffer=5400000 ignore=y。