导入导出dmp文件、执行sql文件
导出dmp
create directory expDir as '/oracle/oracle_data/expDmp'; Grant read,write on directory expDir to GSDX_GZZSV1;
服务名方式: expdp GSDX_GZZSV1/gzzs@127.0.0.1/orcl12c.us.oracle.com schemas=GSDX_GZZSV1 directory=expDir dumpfile=GSDX_GZZSV1.dmp logfile=GSDX_GZZSV1.log;
SID:
expdp JTDX_HUNT_PD_TESTV1/HUNT_PD_TEST directory=JTDX_DIR dumpfile=JTDX_HUNT_PD_TESTV1.dmp
导入dmp
1.首先 要知道dmp文件的导出方式 是expdp还是exp 然后用对应的方式导入
2.知道表空间CLOUD_AH_IOM
3.知道用户名 cloud_123_gs
4.创建用户,并带有表空间
sqlplus / as sysdba
create tablespace CLOUD_AH_IOM datafile '${ORACLE_HOME}\oradata\cloud_ah_iom.dbf' size 100M reuse autoextend on next 40M maxsize unlimited default storage(initial 128k next 128k minextents 2 maxextents unlimited);
这里指定dbf文件的时候,如果用户目录不同,要将对这个目录的操作权限赋值
chown -R oracle oracle_data/
使用root 用户 将oracle_data/ 目录的操作权限赋值给oracle
创建用户:
create user cloud_123_gs identified by cloud_123_gs default tablespace CLOUD_AH_IOM;
5.赋权
grant connect,resource,dba to cloud_123_gs;
grant unlimited tablespace to cloud_123_gs;
grant create database link to cloud_123_gs;
grant select any sequence,create materialized view to cloud_123_gs;
6.创建目录,并授权
create or replace directory dpump_dir as '/home/oracle/dmp'; --这里是dmp文件所在的文件路径
select * from dba_directories;
grant read,write on directory dpump_dir to cloud_123_gs
7.导入命令
impdb:表空间,用户相同
impdp cloud_123_gs/cloud_123_gs DIRECTORY=dpump_dir DUMPFILE=expdp.dmp SCHEMAS=cloud_123_gs;
impdb:修改表空间和用户
impdp SOC2/SOC2 directory=JILIN_ZHENDUAN_DIR dumpfile=expdp_soc1029.dmp remap_schema=SOC:SOC2 REMAP_TABLESPACE='(SOC_TBS:JILIN_SOC_1_TBS)' logfile=soc2.log
解释:SOC2/SOC2 用户名/密码
directory 第六步中创建的
dumpfile dmp文件路径(在dmp文件所在路径,可以直接用文件名)
remap_schema:SOC:SOC2 从dmp的SOC用户 导入为新的SOC2用户
REMAP_TABLESPACE='(SOC_TBS:JILIN_SOC_1_TBS)' 表空间映射 从SOC_TBS 导入到JILIN_SOC_1_TBS
nohup impdp XJYD_SOCV1/soc DIRECTORY=XJYD_DIR dumpfile=YTH2018.dmp logfile=YTH2018.log exclude=table:"in('AUTHENTICATE_LOG')" remap_schema=ISAP:XJYD_SOCV1 remap_tablespace=TBS_AL:XJYD_SOC_1_TBS,TBS_ALIDX:XJYD_SOC_1_TBS,TBS_DATA:XJYD_SOC_1_TBS,TBS_SOC:XJYD_SOC_1_TBS,TBS_TE:XJYD_SOC_1_TBS,TBS_TEIDX:XJYD_SOC_1_TBS,TBS_WEB:XJYD_SOC_1_TBS,TBS_WEBIDX:XJYD_SOC_1_TBS &
exclude=table:"in('AUTHENTICATE_LOG')" 可以让dmp文件内的AUTHENTICATE_LOG表不导入
nohup impdp HBLT_IOMTESTV1/IOMTEST directory=HBLT_DIR dumpfile=IOMTEST_20190320.dmp remap_schema=IOMTEST:HBLT_IOMTESTV1 TRANSFORM=segment_attributes:n logfile=IOMTEST_20190320_2.log &
segment_attributes:n 可以让remap_tablespace参数无效,把所有的表导入到创建用户时的默认表空间里面
imp 修改表空间(貌似没用)
nohup imp YNDX_ZDV1/YN_ZD_213 file='YN_ZD1011.dmp' tablespaces=YNDX_EOMS_PUBLIC_1_TBS full=y ignore=y log='YNDX_ZDV1.log' &
***如果数据库存在多个实例,如何进行不同数据库的导入?
在命令行执行: export ORACLE_SID=orcl12c export ORACLE_SID=orcl 进行切换不同的数据库实例。切换后,按照正常方法导入即可 --查看当前实例的sql select instance_name from v$instance;
查看dmp字符集---(0345对应的是ZHS16GBK, 0369对应的是AL32UTF8):
cat 'isap_new_test.dmp'|od -x|head -1|awk '{print $2 $3}'|cut -c 3-6
导入sql
1、登录对应的数据库
sqlplus LNDX_ISAPSCBAKV1/isapscbak@192.168.1.175:1521/orcl
2、执行命令
@目录/ISAP_DATA.sql
例子:@/oracle_data/dmp/liaoNing/dx/ISAP_DATA.sql
查看所有表空间
select tablespace_name from dba_tablespaces;
删除表空间
drop tablespace IOMC_IOM_DATA2 including contents and datafiles cascade constraint;
删除用户
drop user isap_new_test2 cascade;
查看用户所属表空间
select default_tablespace from dba_users where username='isap_new_test2';
查看所有用户
select username from dba_users;