1.先创建表空间
CREATE TABLESPACE tableSpaceName --创建的表空间名称
LOGGING
DATAFILE 'D:\app\Administrator\oradata\orcl\TestData.DBF' --生成的数据库物理文件路径
SIZE 50M
AUTOEXTEND ON
NEXT 50M MAXSIZE 20480M
2.创建临时表空间
CREATE TEMPORARY TABLESPACE tempTableSpaceName --创建的临时表空间名称
TEMPFILE 'D:\app\Administrator\oradata\orcl\TempTestData.DBF' --数据库物理文件路径
SIZE 50M
AUTOEXTEND ON
NEXT 50M MAXSIZE 20480M
3.创建用户并关联表空间
CREATE USER TestUser01 IDENTIFIED BY PassWord01 --创建用户并设置密码
DEFAULT TABLESPACE tableSpaceName --默认表空间
TEMPORARY TABLESPACE tempTableSpaceName --临时表空间
4.给用户授权
grant connect,resource,dba to TestUser01
5.还原数据库
如果dmp文件是用exp命令导出的,那就需要用imp命令导入,如下所示:
imp TestUser01/PassWord01@数据库网络服务名 file=dmp文件全路径 log=日志文件全路径
@符号后既可以写网络服务名,也可以写数据库服务器IP:1521/ORCL。
如果dmp文件是用expdp命令导出的,那就需要先创建逻辑目录,再用impdp命令导入,如下所示:
先创建逻辑目录,该命令不会创建真正的目录,逻辑目对对应的实际物理路径必须是已经存在的。
create directory testDirectory01 as 'd:\dumpDir';
查看目录,如下所示:
select * from dba_directories;
使用impdp命令还原数据库
impdp TestUser01/PassWord01@数据库服务器IP:1521/ORCL directory=testDirectory01 dumpfile=test01.dmp remap_schema=fromuser:TestUser01 remap_tablespace=fromtp01:tableSpaceName logfile=test01.log
@符号后既可以写网络服务名,也可以写数据库服务器IP:1521/ORCL。
impdp命令参数说明:
dumpfile:需要导入的dmp文件名称;
directory:dmp文件所在的目录文件夹;
REMAP_SCHEMA:该选项用于将源方案的所有对象装载到目标方案中(即指定源数据库用户名和目标数据库用户名的对应关系,如果源用户名与目标用户名不一致,则需要使用该参数);
REMAP_TABLESPACE:将源表空间的所有对象导入到目标表空间中(即指定源表空间和目标表空间的对应关系,如果源表空间和目标表空间不一致,则需要使用该参数)。
如果用imp命令导入expdp方式导出的dmp文件,则会报错IMP-00038,如下图所示:
6.导入时报错及原因分析
报错:ORA-02374、ORA-12899、ORA-02372;
报错原因:导入时如果源数据库字符集与目标数据库字符集不一致。
报错:IMP-00038;
报错原因:可能是使用imp命令导入expdp方式导出的dmp文件导致报错,exp方式导出的数据库必须用imp方式还原,expdp方式导出的数据库必须用impdp方式还原。
报错:ORA-00959;
报错原因:目标表空间与源表空间不一致,导入时又没有指定源表空间与目标表空间的映射关系。
报错:ORA-31625;
报错原因:目标用户与源用户不一致,导入时又没有指定源用户与目标用户的映射关系。