备份oracle数据库

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34951913/article/details/80915014

后缀名的dmp 大写的就是数据泵导出,小写的就是普通exp导出,一般80%是这种情况
 1、一般的恢复到本地数据库:
CREATE USER cg65 IDENTIFIED BY 1 account unlock DEFAULT TABLESPACE NNC_DATA05 TEMPORARY TABLESPACE temp;
grant dba to cg65;
IMP cg65/1 BUFFER=64000 FILE=E:\bak\65cjbak\cjnew\cj.dmp FULL=Y 
 
 2、数据泵恢复数据库数据:数据泵导出的是expdp 只要是Expdp导出的必须用impdp导入
CREATE TABLESPACE NNC_DATA200 DATAFILE 'E:\database\data\sj65\nnc_data200.dbf' SIZE 2048M AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K ;     


CREATE TABLESPACE NNC_DATA201 DATAFILE 'E:\database\data\sj65\nnc_data201.dbf' SIZE 300M AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K ;  


CREATE TABLESPACE NNC_DATA202 DATAFILE 'E:\database\data\sj65\nnc_data202.dbf' SIZE 300M AUTOEXTEND ON NEXT 100M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 512K ;


CREATE TABLESPACE NNC_INDEX200 DATAFILE 'E:\database\data\sj65\nnc_index200.dbf' SIZE 1024M AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K ;     


CREATE TABLESPACE NNC_INDEX201 DATAFILE 'E:\database\data\sj65\nnc_index201.dbf' SIZE 200M AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K ;  


CREATE TABLESPACE NNC_INDEX202 DATAFILE 'E:\database\data\sj65\nnc_index202.dbf' SIZE 200M AUTOEXTEND ON NEXT 100M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K ;


//输入create user 新数据库名identified by "新数据库密码" default tablespace nnc_data04 temporary tablespace temp;创建数据库。  
CREATE USER sj65 IDENTIFIED BY 1 DEFAULT TABLESPACE NNC_DATA200 TEMPORARY TABLESPACE temp;


//输入grant connect,dba to新数据库名;授权新的数据库。
GRANT connect,dba to sj65


//输入create directory 目录名 as‘目录所在路径’;创建目录。
create directory sj65 as 'E:\database\bak\sj65\';


//输入grant read,write on directory 目录名 to 需要导出的数据库名;给要导出的数据库授权。
grant read,write on directory sj65 to sj65;


//输入impdp 新恢复数据库名/数据密码 dumpfile= 备份文件名.DMP logfile= 日志文件.log directory=目录名 parallel=2 remap_schema=源数据库名(导出数据库名):目标数据库名(新建的需要恢复的数据库名)恢复数据库。
impdp sj65/1 dumpfile=EXPDP_NC65_DBDEMO.DMP logfile=expdp_nc65_dbdemo.log directory=sj65 parallel=2 remap_schema=NC65_DBDEMO:sj65(不能有空格)


alter database datafile 'D:\database\data\NNC_DATA08.DBF'  autoextend on next 100m maxsize 10000m


步骤一:  删除user
drop user 65ys cascade
说明: 删除了user,只是删除了该user下的schema objects,是不会删除相应的tablespace的。
步骤二: 删除tablespace
DROP TABLESPACE NNC_DATA01 INCLUDING CONTENTS AND DATAFILES;


select sid,serial# from v$session where username='DB636_825';
alter system kill session '63,62';


(备份)导出数据库:
1、
sqlplus sys as sysdba/1
创建目录
create directory test2 as‘D:\’;
给要导出的数据库授权。
grant read,write on directory test2 to nc63_2y;
expdp nc63_2y/1 dumpfile= nc63.dmp logfile= nc63.log directory=test2 parallel=2   指定版本version=11.1.0.6.0
2、
exp 用户名/密码@数据库实例名 file=路径:\文件名.dmp log=路径:\日志名.log owner=所属用户
exp sj65/1@bd file=d:\sj65_20180605.dmp log= sj65_20180605.log owner=sj65


情况:导入数据时总是有两个用户,一个带分号,一个不带分号,表总是在带分号的用户下,且都是空表;
原因:cmd中不能带分号(impdp后面不能带分号)
 expdp nc57/nc57 directory=nc57 dumpfile=zyct20180509.dmp logfile=zyct20180509.log




注意:导入有色数据库时,显示导入成功,可是看不到表,只有一个表,第二次重导的时候提示表已存在跳过,查询oracle所有对象,发现了带分号的用户如(ys65;),删除不掉,很困惑,困扰了两天,
最终解决办法如下:
1、查询oracle所有用户(select * from dba_users);
select * from USER$
2、把用户id是91的修改用户名为ys65,去掉了分号;
UPDATE USER$ SET NAME='YS65' WHERE USER#=91;
3、解锁用户;
 ALTER USER ys65 ACCOUNT UNLOCK;
4、修改用户密码;
alter user YS65 identified by "1";
5、提交
COMMIT;
ALTER SYSTEM CHECKPOINT;
ALTER SYSTEM FLUSH SHARED_POOL;

猜你喜欢

转载自blog.csdn.net/qq_34951913/article/details/80915014