在Linux使用imp导入库(Oracle)

133 阅读1分钟

假如需要新建库,参考文章

DBCA命令行建库 - chchcharlie、 - 博客园

一些常用命令

lsnrctl start #启动racle监听

lsnrctl status #命令查看Oracle监听器运行状况

startup,shutdown 启动关闭

建表空间以及用户

先进入Oracle用户

su - oracle;

再以sysdba身份打开,sqlplus

sqlplus / as sysdba

然后建表空间以及用户

-- 创建表空间
CREATE TABLESPACE REPCZ LOGGING DATAFILE '/DATA/ORADATA/ORCL/USER_SPACE/REPCZ/REPCZ.DBF' SIZE 2048M AUTOEXTEND ON NEXT 1024M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL;

--创建临时表空间
CREATE TEMPORARY TABLESPACE TEMP_REPCZ TEMPFILE '/DATA/ORADATA/ORCL/USER_SPACE/REPCZ/TEMP_REPCZ.DBF' SIZE 1024M AUTOEXTEND ON NEXT 1024M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL;

--删除表空间  创建出错的话
DROP TABLESPACE REPCZ INCLUDING CONTENTS AND DATAFILES;

--创建用户
CREATE USER ${你的用户名} IDENTIFIED BY ${你的密码}
DEFAULT TABLESPACE ${指定的表空间}
TEMPORARY TABLESPACE ${指定的临时表空间}
PROFILE DEFAULT;

--假如出错先删除用户再删除表空间即可
DROP USER ${你的用户名} CASCADE

完成后,对用户进行授权

--imp导入所需权限
GRANT CONNECT, RESOURCE, DBA TO ${要授权的用户};
GRANT IMP_FULL_DATABASE TO ${要授权的用户};
GRANT CREATE SESSION TO ${要授权的用户};
GRANT EXECUTE ANY PROCEDURE TO ${要授权的用户};

进行imp导入

会导入到该用户的表空间。buff是缓冲区的大小,可以适当设置,full是覆盖导入,也就是该用户的表空间里原有的数据会被删除。ignore是忽略错误。
imp ${要导入的用户名}/${要导入的用户的密码}@${库名} file='/data/oradata/orcl/user_space/repcz/repcz1217.dmp' buffer=1000000 full=y ignore=y;

等待导入完成。

ORA-12899字符超出,有可能是因为dmp字符编码和库的不一样
alter database character set internal_use ${对应编码};
出错了删除用户再删除表空间,然后重新创建即可。

有不对的地方多多指正。