Oracle备份、还原数据库
备份数据库#
创建备份目录(用sys账号),若已创建备份目录,此步可忽略#
create directory db_bak as 'D:\ ECIMS_DB'
--查看创建的目录 select * from dba_directories --删除已创建的目录 drop directory DB_BAK 格式: drop directory 目录名
备份(导出)数据库(cmd状态下)#
expdp XXX/XXX@XXX schemas=XXX dumpfile=XXX_20181130.dump logfile=XXX_20181130.LOG DIRECTORY=DB_BAK 语法: expdp 用户名/密码@实例名 schemas=用户名 dumpfile=导出dump文件名.dump logfile=导出日志文件名.LOG DIRECTORY=DB_BAK
导入数据库#
步骤一、导入前,先删除账号(plsql状态下)#
drop user XXX cascade; 格式: drop user 用户名 cascade;
注:若删除不掉,需先删除所有会话!!!
select username, sid, serial# from v$session where username='XXX' --找到用户SESSION 格式: select username, sid, serial# from v$session where username='用户名' --找到用户SESSION 注:若有多条会话,需批量删除 alter system kill session '249,57377' --杀掉用户SESSION 'sid,serial#' alter system kill session '250,57376' --杀掉用户SESSION 'sid,serial#' alter system kill session '251,57375' --杀掉用户SESSION 'sid,serial#' 格式: alter system kill session 'sid,serial'
步骤二、创建账号,赋予权限(plsql状态下)#
create user XXX identified by XXX default tablespace USERS temporary tablespace TEMP profile DEFAULT; -- Grant/Revoke role privileges grant connect to XXX; grant dba to XXX; grant resource to XXX; -- Grant/Revoke system privileges grant alter any sequence to XXX; grant alter any table to XXX; grant alter any trigger to XXX; grant change notification to XXX; grant create any procedure to XXX; grant create any sequence to XXX; grant create any table to XXX; grant create any type to XXX; grant create any view to XXX; grant unlimited tablespace to XXX; -------------------------------------------------------------- 格式: create user 用户名 identified by 密码 default tablespace USERS temporary tablespace TEMP profile DEFAULT; -- Grant/Revoke role privileges grant connect to 用户名; grant dba to 用户名; grant resource to 用户名; -- Grant/Revoke system privileges grant alter any sequence to 用户名; grant alter any table to 用户名; grant alter any trigger to 用户名; grant change notification to 用户名; grant create any procedure to 用户名; grant create any sequence to 用户名; grant create any table to 用户名; grant create any type to 用户名; grant create any view to 用户名; grant unlimited tablespace to 用户名;
步骤三、导入数据(cmd状态下)#
impdp XXX/XXX DIRECTORY=db_bak DUMPFILE=XXX.dump logfile=XXX.log REMAP_SCHEMA=XXX:XXX remap_tablespace=XXX:XXX 格式 impdp 用户名/密码 DIRECTORY=db_bak DUMPFILE=备份文件名.dump logfile=备份日志文件名.log REMAP_SCHEMA=导出用户名:导入用户名 remap_tablespace=导出表空间:导入表空间
方式二备份及导入(推荐)#
--备份数据库 expdp YZJ_TEST/YZJ_TEST@ECIMS schemas=YZJ_TEST dumpfile=YZJ_TEST_20181130.dump logfile=YZJ_TEST_20181130.LOG DIRECTORY=DB_BAK --删除帐号 drop user YZJ_TEST cascade; --查看账号连接数量 select username, sid, serial# from v$session where username='YZJ_TEST' --找到用户SESSION alter system kill session '249,57377' --杀掉用户SESSION 'sid,serial#' /*第1步:创建临时表空间 */ create temporary tablespace DMIS_STD_TEMP tempfile 'F:\app\Administrator\oradata\ECIMS\DMIS_STD_TEMP.dbf' size 50m autoextend on next 50m maxsize 20480m extent management local; /*第2步:创建数据表空间 */ create tablespace DMIS_STD_DATA logging datafile 'F:\app\Administrator\oradata\ECIMS\DMIS_STD_DATA.dbf' size 50m autoextend on next 50m maxsize 20480m extent management local; /*第3步:创建用户并指定表空间 */ create user DMIS_STD identified by DMIS_STD default tablespace DMIS_STD_DATA temporary tablespace DMIS_STD_TEMP; 3、导入语句按下面的方式 impdp system/eMarine123 DIRECTORY=db_bak DUMPFILE=ERIM_PROD.dump logfile=ERIM_PROD_imp.log REMAP_SCHEMA=ERIM_PROD:<新用户名> remap_tablespace=ERIM_PROD:<新表空间名>
注意事项!!#
注:若是新数据库,需要执行第2、3步骤,旧数据库无需执行!!!!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了