Linux下Oracle导入导出dmp文件&新增用户

1.导出dmp文件

导出数据库命令:

---本地120服务器 导出到DATA_PUMP_DIR 
expdp njchecker/password@192.168.0.120/orcl dumpfile=njchecker2021120701_120.dmp DIRECTORY=DATA_PUMP_DIR version=12.2.0.1.0;

---上传到39数据库 DATA_PUMP_DIR 39服务器(12.2.0.1.0)
impdp njchecker/password@39.105.28.72/pdb1 directory=DATA_PUMP_DIR dumpfile=njchecker2021120701_120.dmp remap_tablespace=NJCHECKER_DATA:NJCHECKER_DATA remap_schema=njchecker:njchecker full=y table_exists_action=REPLACE version=12.2.0.1.0 ;

( 解释:expdp 用户名/密码@ip/实例名 dumpfile=dmp文件 DIRECTORY=DATA_PUMP_DIR version=指定导到某个版本的数据库)

查询dba的常用默认目录。
SQL> select * from dba_directories;
#或者 find / -name *.dmp

在这里插入图片描述

2. 新建用户njchecktest2

su - oracle

2.登录sqlplus,使用sysdba登录

sqlplus / as sysdba

4.查询表空间存储位置(/u01/app/oracle/oradata/orcl/)

SQL> select name from v$tempfile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/orcl/qhchecker_temp.dbf
/u01/app/oracle/oradata/orcl/QHCHECKER2019_temp.dbf
/u01/app/oracle/oradata/orcl/njchecker2019_temp.dbf
/u01/app/oracle/oradata/orcl/njchecker2019fk_temp.dbf
/u01/app/oracle/oradata/orcl/kdchecker_temp.dbf

5、在/u01/app/oracle/oradata/orcl/下 创建临时表空间

create temporary tablespace TMP_NJCHECKERTEST2 tempfile '/u01/app/oracle/oradata/orcl/njcheckertest2_temp.dbf' size 2G reuse autoextend on next 20m maxsize unlimited;

6、创建数据表空间

create tablespace DATA_NJCHECKERTEST2 datafile '/u01/app/oracle/oradata/orcl/njcheckertest2_data.dbf' size 100M reuse autoextend on next 40M maxsize unlimited;

7、创建索引表空间

create tablespace IDX_NJCHECKERTEST2 logging datafile '/u01/app/oracle/oradata/orcl/njcheckertest2_index.dbf' size 100m autoextend on next 32m maxsize 2048m extent management local;

8、创建用户:njcheckertest2,密码:password 并分配 表空间:DATA_NJCHECKERTEST2

create user njcheckertest2 identified by password default tablespace DATA_NJCHECKERTEST2 temporary tablespace TMP_NJCHECKERTEST2;

9、赋权dba给用户(重要步骤,否则该用户不能导入dmp)

grant dba to njcheckertest2;

3.导入dmp文件

10、创建临时存放文件的目录
create directory DATA_DIR as ‘/home/oracle/temp’;
11、给用户赋文件目录的读写权限,把导出的数据库文件njchecker20211106.dmp,暂放这个目录
grant read,write on directory DATA_DIR to system;

[oracle@centos ~]$ cd /home/oracle/temp/
[oracle@centos temp]$ ll
total 137380
-rw-r--r-- 1 oracle oinstall     65986 Nov  3 11:38 exdp_njcheckertest2.log
-rw-r----- 1 oracle oinstall 140607488 Nov  3 11:36 njchecker20211106.dmp

普通方式:同名同库同空间的

impdp njchecker/password@orcl directory=DATA_DIR  dumpfile=njchecker20211106.dmp
#directory  不写默认:DATA_PUMP_DIR 

特殊情况①:不同名,不同表空间,不同用户

impdp njcheckertest2/password@192.168.0.120/orcl directory=DATA_DIR dumpfile=njchecker20211106.dmp remap_tablespace=njchecker:njcheckertest2 remap_schema=njchecker:njcheckertest2 logfile=exdp_njcheckertest2.log table_exists_action=REPLACE;

(impdp 用户名/密码@ip/实例名 directory=DATA_PUMP_DIR dumpfile=导出的那个dmp文件 table_exists_action=REPLACE )

(
注释: remap_tablespace=source_tablespace:target_tablespace remap_schema=source_schema:target_schema table_exists_action=REPLACE
table_exists_action选项:{skip 是如果已存在表,则跳过并处理下一个对象;append是为表增加数据;truncate是截断表,然后为其增加新数据;replace是删除已存在表,重新建表并追加数据;
辅助记忆: 从source>>导入>>target

特殊情况② 跨数据库版本导数据 (从高到低版本需要指定版本;低版本向高版本迁移无需指定。)
如: 12C==>11g
在12C中备份出来时,应指定版本信息,例如我要导进11g的库(具体版本为11.2.0.1.0,打开sqlplus就能看到),则version=11.2.0.1.0
导出:expdp njcheckert/password@192.168.0.120/orcl dumpfile=njchecker20211106.dmp remap_tablespace=njchecker:DATA_NJCHECKERTEST2 remap_schema=njchecker:njcheckertest2 DIRECTORY=DATA_PUMP_DIR version=11.2.0.1.0
导入:impdp njcheckertest2/password@192.168.0.120/orcl directory=DATA_PUMP_DIR dumpfile=njchecker20211106.dpdmp full=y table_exists_action=REPLACE version=11.2.0.1.0

4.更新序列

--生成删除序列脚本(NJCHECKER用户下,目标数据库)
SELECT 'drop sequence NJCHECKER.' || SEQUENCE_NAME || ' ;' 
  FROM DBA_SEQUENCES 
WHERE SEQUENCE_OWNER = 'NJCHECKER';

--生成创建序列脚本(NJCHECKER用户下,源数据库)
SELECT 'create sequence NJCHECKER.' || SEQUENCE_NAME || ' minvalue ' || 
       MIN_VALUE || ' maxvalue ' || MAX_VALUE || ' start with ' || 
       LAST_NUMBER || ' increment by ' || INCREMENT_BY || ' cache ' || 
       CACHE_SIZE || ' ;' 
  FROM DBA_SEQUENCES 
WHERE SEQUENCE_OWNER = 'NJCHECKER';

5.常见问题

1. oracle14460,oracle impdp导入数据库报ora-14460错误解决方法:

在impdp命令加transform=segment_attributes:n参数即可

impdp username/password directory=impdp_dir dumpfile=*.dmp transform=segment_attributes:n

以上语句表示在导入时不导入任何表的已有存储属性

说明:transform_name有四个选项:segment attributes,storage,oid,pctspace

--segment attributes:段属性包括物理属性、存储属性、表空间和日志。

--storage:可以使用storage=y(默认)说明只取对象的存储属性作为导入作业的一部分。

--oid:如果指定oid=Y(默认),则在导入过程中将分配一个新的oid给对象表。

--pctspace:通过提供一个正数作为该转换的值,可以增加对象的分配尺寸,并且数据文件尺寸等于pctspace的值(按百分比)

value:transform_name的值,transform_name为segment attributes,storage,oid时值可为Y/N,pctspace为数值

object_type的值可以表、索引、表空间、类型、集群、约束等对象。
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Linux导入Oracledmp文件,可以按照以下步骤操作: 1. 首先,需要创建一个新的数据库实例,可以使用Oracle的dbca工具来创建。 2. 然后,需要将dmp文件复制到Linux服务器上,并确保Oracle用户具有读取该文件的权限。 3. 接下来,使用Oracle的imp工具来导入dmp文件。可以使用以下命令: imp username/password@database file=/path/to/dmpfile.dmp full=y 其中,username和password是Oracle用户用户名和密码,database是要导入数据的数据库实例名,file是dmp文件的路径和文件名,full=y表示导入整个数据库。 4. 导入完成后,可以使用Oracle的sqlplus工具来验证数据是否已成功导入。可以使用以下命令: sqlplus username/password@database 然后,可以执行SQL查询来检查导入的数据。 ### 回答2: 在Linux系统导入Oracle数据库dmp文件,需要进行以下步骤: 1. 确认Oracle环境是否安装完成,并能够正常运行。如果Oracle环境没有安装,需要先安装Oracle数据库软件,并创建一个数据库实例。 2. 将dmp文件上传到Linux服务器中,并解压缩。可以使用以下命令进行解压: $ gzip -d your_dmp_file.dmp.gz 3. 创建一个新的Oracle用户,用于导入数据到数据库中。可以使用以下命令创建新用户: $ sqlplus / as sysdba SQL> CREATE USER your_user IDENTIFIED BY your_password; SQL> GRANT CONNECT, RESOURCE TO your_user; SQL> EXIT; 4. 使用Oracle IMP工具进行导入数据。可以使用以下命令: $ imp your_user/your_password@your_database file=your_dmp_file.dmp 在输入完命令后,会出现导入数据的提示。根据需要对提示进行设置,比如数据表空间等。 5. 等待导入完成。当导入完成后,可以通过查询数据库表中的记录来验证数据是否被成功导入。 需要注意的是,Oracle IMP工具的使用方法是比较复杂的。在导入数据之前需要先了解IMP的相关用法和参数,同时还需要了解Oracle数据库的结构和管理。如果遇到问题,可以通过查询Oracle的文档来获取帮助,或者求助于Oracle社区或技术支持。 ### 回答3: 在Linux系统下,Oracle导入dmp文件的操作步骤如下: 1. 登录数据库 可以使用SQL Plus命令行或者PL/SQL Developer等工具来登录数据库。输入用户名和密码,并指定要连接的数据库的服务名或者SID。 2. 创建用户 如果需要导入dmp文件中包含的用户在目标数据库中不存在,需要先创建该用户,以便在导入时创建相关的表和数据。 可以使用CREATE USER语句创建用户,例如: CREATE USER username IDENTIFIED BY password DEFAULT TABLESPACE tablespace_name QUOTA unlimited ON tablespace_name; 其中,username是要创建的用户的名称,password是该用户的密码,tablespace_name是该用户默认的表空间名字。 3. 创建表空间 如果需要导入dmp文件中包含的表空间在目标数据库中不存在,需要先创建该表空间。 可以使用CREATE TABLESPACE语句创建表空间,例如: CREATE TABLESPACE tablespace_name DATAFILE 'path_to_data_file' SIZE size_in_mb; 其中,tablespace_name是需要创建的表空间的名称,path_to_data_file是表空间的数据文件的路径,size_in_mb是该数据文件的大小。 4. 设置环境变量 在导入dmp文件之前,需要设置ORACLE_SID和ORACLE_HOME两个环境变量。ORACLE_SID表示要连接的数据库实例名称,ORACLE_HOME表示Oracle的安装路径。 可以使用命令行设置环境变量,例如: export ORACLE_SID=db_name export ORACLE_HOME=/opt/oracle/product/11.2.0/dbhome_1 5. 导入dmp文件 在设置好环境变量之后,就可以开始导入dmp文件了。可以使用impdp或者imp命令来导入dmp文件。 使用impdp命令时,可以使用以下语法: impdp username/password@db_name DIRECTORY=data_pump_dir_name DUMPFILE=dmp_file_name LOGFILE=log_file_name REMAP_SCHEMA=old_schema_name:new_schema_name 其中,username和password是要导入用户用户名和密码,db_name是要连接的数据库的实例名称,data_pump_dir_name是dmp文件所在的目录名称,dmp_file_name是要导入dmp文件的名称,log_file_name是输入日志文件的名称,old_schema_name是dmp文件中的原始模式名称,new_schema_name是要在目标数据库中创建的目标模式名称。 使用imp命令时,可以使用以下语法: imp username/password@db_name file=dmp_file_name fromuser=old_schema_name touser=new_schema_name log=log_file_name 其中,username和password是要导入用户用户名和密码,db_name是要连接的数据库的实例名称,dmp_file_name是要导入dmp文件的名称,old_schema_name是dmp文件中的原始模式名称,new_schema_name是要在目标数据库中创建的目标模式名称,log_file_name是输入日志文件的名称。 6. 导入结束后验证 在导入结束后,需要验证是否导入成功。可以登录数据库,查询相关的表和数据,或者使用PL/SQL Developer等工具来验证。 总之,导入dmp文件需要先登录数据库,创建必要的用户和表空间,设置环境变量,执行导入命令,并在导入结束后验证数据的正确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值