oracle下对EAS备份账套进行还原操作的记录
2017-12-08 08:32
246 查看
这两天对eas账套进行了备份还原操作,备份操作基本上没问题,但是在还原时,出现了如下报错,折腾了很久,在网上搜索了一通,发现国内的网站给出的答案都是把出错的语句修改后重新执行,可是我这里有2000多个错误,重新执行不可能。后来在国外的网站看到了问题的原因:oracle数据库版本11.2.0.1是存在这样的问题,需要升级数据库到11.2.0.4。于是又进行oracle升级操作,基本上按网上的步骤升级完成,可是受不了升级后系统里面有两个oracle目录,于是就又把数据库卸载了,按网上的步骤卸载并且删除注册表,好在卸载干净了,于是重新安装了11.2.0.4版本数据库,最后进行eas账套还原,基本上没问题了。两次还原时的报错截图如下:
在数据库11.2.0.1下的还原操作的报错:
在11.2.0.4版本数据库下还原的错误,总共只有2个错误,后来进还原账套操作了一下,发现一切正常。
备份语句如下:
--数据泵导出
sqlplus / as sysdba
CREATE DIRECTORY dump AS 'C:\shuju';
grant read, write on directory dump to eas802;
quit
expdp eas802/eas802 DIRECTORY=dump DUMPFILE=eas1712.dmp logfile=expdp_eas1712.log
还原语句如下:
1、先创建表空间。
但是创建表空间之前要先查询之前备份的账套所使用的表空间个数及名称,后续需要使用到。
--查询表空间使用情况的语句,记得通过pl/sql developer窗口中执行下列语句,在cmd窗口中执行不会返回结果。
declare
userName varchar(20):='skyline'; -----修改skyline为实际导出账套的用户名
tablespace_name varchar(50);
user_name varchar(20);
cursor tablespace_cur(user_name in varchar) is
select a.tablespace_name tablespace_name, b.owner owner
from dba_segments a
inner join dba_objects b on a.segment_name=b.object_name
where b.owner=upper(user_name) and a.owner=upper(user_name)
group by b.OWNER, a.tablespace_name;
begin
open tablespace_cur(userName);
loop
fetch tablespace_cur into tablespace_name,user_name;
exit when tablespace_cur%notfound;
dbms_output.put_line(tablespace_name||' '||user_name);
end loop;
close tablespace_cur;
end;
---查询出的两个表空间名称记录下来,后面的语句要用到。
---创建表空间,上一步查询出来的表空间是2个,还要一个临时表空间,所以下面一共新建三个表空间。后来的语句中需要用到。
create tablespace EAS_D_EAS123_INDEX datafile 'C:\shuju\EAS_D_EAS123_INDEX.dbf' size 10000M autoextend ON next 100M maxsize 32000M;
create tablespace EAS_D_EAS123_STANDARD datafile 'C:\shuju\EAS_D_EAS123_STANDARD.dbf' size 10000M autoextend ON next 100M maxsize 32000M;
create temporary tablespace EAS_T_EAS123_STANDARD tempfile 'C:\shuju\EAS_T_EAS123_STANDARD.dbf' size 1000M autoextend ON next 100M maxsize 10000M;
2、数据泵导入语句:
sqlplus / as sysdba
CREATE USER eas_zl IDENTIFIED BY a DEFAULT TABLESPACE EAS_D_EAS123_STANDARD TEMPORARY TABLESPACE EAS_T_EAS123_STANDARD;
GRANT connect,dba to eas_zl;
CREATE OR REPLACE DIRECTORY dump AS 'C:\shuju';
grant read, write on directory dump to eas_zl;
quit
impdp eas_zl/a@eas802 DIRECTORY=dump logfile=imp.log DUMPFILE=eas1712.dmp REMAP_SCHEMA=eas802:eas_zl remap_tablespace=EAS_D_EAS802_STANDARD:EAS_D_EAS123_STANDARD remap_tablespace=EAS_D_EAS802_INDEX:EAS_D_EAS123_INDEX
---注意上面语句中的REMAP_SCHEMA和remap_tablespace的用法。
在数据库11.2.0.1下的还原操作的报错:
在11.2.0.4版本数据库下还原的错误,总共只有2个错误,后来进还原账套操作了一下,发现一切正常。
备份语句如下:
--数据泵导出
sqlplus / as sysdba
CREATE DIRECTORY dump AS 'C:\shuju';
grant read, write on directory dump to eas802;
quit
expdp eas802/eas802 DIRECTORY=dump DUMPFILE=eas1712.dmp logfile=expdp_eas1712.log
还原语句如下:
1、先创建表空间。
但是创建表空间之前要先查询之前备份的账套所使用的表空间个数及名称,后续需要使用到。
--查询表空间使用情况的语句,记得通过pl/sql developer窗口中执行下列语句,在cmd窗口中执行不会返回结果。
declare
userName varchar(20):='skyline'; -----修改skyline为实际导出账套的用户名
tablespace_name varchar(50);
user_name varchar(20);
cursor tablespace_cur(user_name in varchar) is
select a.tablespace_name tablespace_name, b.owner owner
from dba_segments a
inner join dba_objects b on a.segment_name=b.object_name
where b.owner=upper(user_name) and a.owner=upper(user_name)
group by b.OWNER, a.tablespace_name;
begin
open tablespace_cur(userName);
loop
fetch tablespace_cur into tablespace_name,user_name;
exit when tablespace_cur%notfound;
dbms_output.put_line(tablespace_name||' '||user_name);
end loop;
close tablespace_cur;
end;
---查询出的两个表空间名称记录下来,后面的语句要用到。
---创建表空间,上一步查询出来的表空间是2个,还要一个临时表空间,所以下面一共新建三个表空间。后来的语句中需要用到。
create tablespace EAS_D_EAS123_INDEX datafile 'C:\shuju\EAS_D_EAS123_INDEX.dbf' size 10000M autoextend ON next 100M maxsize 32000M;
create tablespace EAS_D_EAS123_STANDARD datafile 'C:\shuju\EAS_D_EAS123_STANDARD.dbf' size 10000M autoextend ON next 100M maxsize 32000M;
create temporary tablespace EAS_T_EAS123_STANDARD tempfile 'C:\shuju\EAS_T_EAS123_STANDARD.dbf' size 1000M autoextend ON next 100M maxsize 10000M;
2、数据泵导入语句:
sqlplus / as sysdba
CREATE USER eas_zl IDENTIFIED BY a DEFAULT TABLESPACE EAS_D_EAS123_STANDARD TEMPORARY TABLESPACE EAS_T_EAS123_STANDARD;
GRANT connect,dba to eas_zl;
CREATE OR REPLACE DIRECTORY dump AS 'C:\shuju';
grant read, write on directory dump to eas_zl;
quit
impdp eas_zl/a@eas802 DIRECTORY=dump logfile=imp.log DUMPFILE=eas1712.dmp REMAP_SCHEMA=eas802:eas_zl remap_tablespace=EAS_D_EAS802_STANDARD:EAS_D_EAS123_STANDARD remap_tablespace=EAS_D_EAS802_INDEX:EAS_D_EAS123_INDEX
---注意上面语句中的REMAP_SCHEMA和remap_tablespace的用法。
相关文章推荐
- ORACLE备份、还原总结(2====digest【含操作脚本】=====by DQ20110608)
- Oracle 恢复误操作的数据,备份记录一下.
- MySQL使用xtrabackup进行备份还原操作
- Oracle 数据库备份还原(Expdp/impdp)记录
- 在.Net中进行SQL Server数据库备份与还原操作实用类
- 利用SQLDMO进行数据库备份还原操作
- 在.Net中进行SQL Server数据库备份与还原操作实用类
- MySQL使用xtrabackup进行备份还原操作
- java对oracle数据进行备份和还原
- [oracle]数据库备份还原操作详细操作
- 【Oracle】对RID为偶数的记录进行操作
- WPF C#开发中利用SQLDMO进行数据库备份还原操作中的注意点
- ★ 在.Net中进行SQL Server数据库备份与还原操作实用类
- 在.Net中进行SQL Server数据库备份与还原操作实用类
- Analysis Service不能对数据集进行属性、备份、还原、处理等操作
- 在.Net中进行SQL Server数据库备份与还原操作实用类
- Linux下对文件进行加密备份的操作记录
- ORACLE RMAN备份及还原 RMAN能够进行增量备份:数据库,表空间,数据文件
- oracle中em不能进行数据备份等操作
- mongodb 数据库操作--备份 还原 导出 导入