IMPDP 全库导入的时候,如果更改数据文件的路径

sefieross 2023-06-08 22:49:09

因为是做数据库的转移,新服务器盘符与旧服务器不一致,现在采用FULL=Y的全库导入的时候,需要将表空间的数据文件路径进行修改,指令应该如何编写呢。

...全文
222 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
幻灰龙 2023-06-09
  • 打赏
  • 举报
回复

@CSDN-Ada助手 IMPDP 全库导入的时候,如何更改数据文件的路径?请给出指令。

CSDN-Ada助手 2023-06-09
  • 举报
回复
@幻灰龙 可以在导入时使用REMAP_DATAFILE参数来修改数据文件的路径。具体指令如下: ``` impdp user/password@dbname directory=dir_name dumpfile=dump_file_name full=y remap_datafile='old_path:new_path' ``` 其中,dir_name是导出文件所在的目录名,dump_file_name是导出文件的文件名,old_path是原数据文件路径,new_path是新的数据文件路径。需要根据实际情况进行替换。
在CMD中 登录oracle(sqlplus方法) sqlplus /nolog conn sys/sa@localhost/orcl as sysdba 删除用户 drop user cw cascade; drop user nc66 cascade; 创建表空间(SQLPLUS方法,PLSQL不适用 ) --定义表空间 define newtablespace=yonyou2015; --定义表空间文件路径 此处请务必保证正确 文件名可以自行修改 define newpath='d:\\oracle\\product\\10.2.0\\oradata\\orcl\\yonyou2015.dbf'; -----需要配置的部分end-------- --建表空间 CREATE TABLESPACE jyzx DATAFILE 'jyzx' SIZE 500M AUTOEXTEND ON NEXT 50M MAXSIZE unlimited LOGGING ONLINE PERMANENT EXTENT MANAGEMENT LOCAL AUTOALLOCATE BLOCKSIZE 8K SEGMENT SPACE MANAGEMENT AUTO FLASHBACK ON; --定义表空间 define newtablespace=NNC_INDEX01; --定义表空间文件路径 此处请务必保证正确 文件名可以自行修改 define newpath='d:\\oracle\\jyzx.dbf'; /*创建用户并分配权限 在有系统用户登录的情况下 才能进行*/ create user jyzx identified by "1" default tablespace jyzx temporary tablespace TEMP; grant connect to jyzx; grant dba to jyzx; grant select any table to jyzx; grant delete any table to jyzx; grant update any table to jyzx; grant insert any table to jyzx; 数据泵方式: 数据库导出: expdp lwzx/1@ORCL version=10.2.0.1.0 expdp 用户名/密码 version=10.2.0.1.0 数据库导入Impdp lwzx/1@orcl dumpfile=EXPDAT.DMP REMAP_SCHEMA=old_schema_name:new_schema_name Impdp 用户名/密码 数据库导出路径为oracle数据库备份/导入设置路径:E:\app\Hejiah\admin\orcl\dpdump exp username/password@sid file=d:\exp.dmp full=y imp wenhb/1@orcl file=D:\app\Hejiah\admin\orcl\dpdump\wenhb.dmp full=y imp lwzx/1@orcl file=D:\数据库文件夹\LWZX\lwzx_周四.dmp fromuser=lwzx
---创建表空间 CREATE SMALLFILE TABLESPACE "NNC_DATA01" DATAFILE 'f:\database\DATA\NNC_DATA01' SIZE 256K AUTOEXTEND ON NEXT 512K MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO; CREATE SMALLFILE TABLESPACE "NNC_DATA02" DATAFILE 'f:\database\DATA\NNC_DATA02' SIZE 256K AUTOEXTEND ON NEXT 512K MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO; CREATE SMALLFILE TABLESPACE "NNC_DATA03" DATAFILE 'f:\database\DATA\NNC_DATA03' SIZE 512K AUTOEXTEND ON NEXT 1024K MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO; CREATE SMALLFILE TABLESPACE "NNC_INDEX01" DATAFILE 'f:\database\INDEX\NNC_INDEX01' SIZE 128K AUTOEXTEND ON NEXT 256K MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO; CREATE SMALLFILE TABLESPACE "NNC_INDEX02" DATAFILE 'f:\database\INDEX\NNC_INDEX02' SIZE 128K AUTOEXTEND ON NEXT 256K MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO; CREATE SMALLFILE TABLESPACE "NNC_INDEX03" DATAFILE 'f:\database\INDEX\NNC_INDEX03' SIZE 256K AUTOEXTEND ON NEXT 512K MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO; ---创建表空间 ---创建用户及授权 create user nc56 identified by nc56; grant dba to nc56; ---创建用户及授权 ---登录ORACLE sqlplus /nolog conn / as sysdba create user user_name identified by password 创建用户 alter user system identified by manager;修改用户密码 grant dba to user_name 用户授权 drop user user_name cascade 清空指定用户的所有数据,但表空间已占用的空间不会释放 create or replace directory expdir as 'c:\bak' grant read,write on directory expdir to nc55 expdp nc55/nc55@ncxh directory=expdir dumpfile=ncxh0412.dmp schemas=nc55 job_name=nc55job impdp nc55/nc55@nctest directory=expdir dumpfile=ncxh0412.dmp remap_schema=nc55:nc55 logfile=impnc0412.log job_name=impnc55job exp nc55/nc55@ncxh file=D:\*.DMP FULL=Y ---指定用户:owner=(用户1,用户n),指定表:tables=(表1,表2) ,表的字段:tables=(table1) query=\" where filed1 like '00%'\",压缩:compress=y imp NC55/NC55@NCXH FULL =Y FILE=D:\*.DMP IGnORE=Y exit expdp nc5011/hanc5059 DIRECTORY=expdir dumpfile=nc0621.dmp schemas=nc5011 parallel=2 job_name=nc5011job; impdp nc5011/hanc5059 DIRECTORY=expdir dumpfile=nc0621.dmp remap_schema=nc5011:nc5011 logfile=impnc0621.log job_name=imp_nc0621 parallel=2 & expdp nc30/nc30 DIRECTORY=expdir dumpfile=nc300.dmp schemas=nc30 parallel=3; expdp iufo/iufo DIRECTORY=expdir dumpfile=iufo300.dmp schemas=iufo parallel=3 job_name=aa 看用户方法: smit 选“Security & Users” 选“users” 选“list all users” F3退出 nc_uap 客户化(客户化,基础数据,web开发框架,外部交换平台,二次开发工具,查询引擎,web服务,业务依赖数据) nc_am 资产管理与固定资产 nc_fi 总账,固定资产,会计平台,财务公共,现金管理,应收、应付,借款报销,web报销 nc_tpb 计划预算(预算基础,全面预算,费用预算) nc_tm 资金管理 oracle 导入导出 来源: ChinaUnix博客  日期: 2006.06.04 17:41 (共有0条评论) 我要评论 Oracle数据导入导出imp/exp命令 --如何在oracle中导入dmp数据库文件? 2006/2/16 zhanghua first create Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中。 利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用。 执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行, DOS中可以执行时由于 在oracle 8i 中 安装目录\ora81\BIN被设置为全局路径, 该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出。 oracle用java编写,SQLPLUS.EXE、EXP.EXE、IMP.EXE这两个文件有可能是被包装后的类文件。 SQLPLUS.EXE调用EXP.EXE、IMP.EXE所包裹的类,完成导入导出功能。 下面介绍的是导入导出的实例。 数据导出: 1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中 exp system/manager@TEST file=d:\daochu.dmp full=y 2 将数据库中system用户与sys用户的表导出 exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys) 3 将数据库中的表inner_notify、notify_staff_relat导出 exp aichannel/aichannel@TESTDB2 file= d:\data\newsmgnt.dmp tables=(inner_notify,notify_staff_relat) 4 将数据库中的表table1中的字段filed1以"00"打头的数据导出 exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\" 上面是常用的导出,对于压缩,既用winzip把dmp文件可以很好的压缩。 也可以在上面命令后面 加上 compress=y 来实现。 数据的导入 1 将D:\daochu.dmp 中的数据导入 TEST数据库中。 imp system/manager@TEST file=d:\daochu.dmp imp aichannel/aichannel@HUST full=y file=file= d:\data\newsmgnt.dmp ignore=y 上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。 在后面加上 ignore=y 就可以了。 2 将d:\daochu.dmp中的表table1 导入 imp system/manager@TEST file=d:\daochu.dmp tables=(table1) 基本上上面的导入导出够用了。不少情况要先是将表彻底删除,然后导入。 注意: 1、在进行导入恢复时,如果是全部导入的话,就需要将原有的用户删除,这样此用户所拥有的数据就可以直接被删除了,否则在进导入时会下面的错误提示( ORACLE error 2291 encountered )那是因为与原有一些表,或主键出现冲突所致,所以再重新建立此用户,再导入数据就可以了。 2、在从导出文件中只导入某个表时,一定要使用该用户导入,比如只将ghb用户的user_id表导入,imp [email=ghb/123@test.sid.com]ghb/123@test.sid.com[/email] file=/tmp/ghb_2006.dmp tables=(user_id) 注意: 操作者要有足够的权限,权限不够它会提示。 数据库时可以连上的。可以用tnsping TEST 来获得数据库TEST能否连上。 附录一: 给用户增加导入数据权限的操作 第一,启动sql*puls 第二,以system/manager登陆 第三,create user 用户名 IDENTIFIED BY 密码 (如果已经创建过用户,这步可以省略) 第四,GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW , DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE, DBA,CONNECT,RESOURCE,CREATE SESSION TO 用户名字 第五, 运行-cmd-进入dmp文件所在的目录, imp userid=system/manager full=y file=*.dmp 或者 imp userid=system/manager full=y file=filename.dmp 执行示例: F:\Work\Oracle_Data\backup>imp userid=test/test full=y file=inner_notify.dmp 屏幕显示 Import: Release 8.1.7.0.0 - Production on 星期四 2月 16 16:50:05 2006 (c) Copyright 2000 Oracle Corporation. All rights reserved. 连接到: Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production With the Partitioning option JServer Release 8.1.7.0.0 - Production 经由常规路径导出由EXPORT:V08.01.07创建的文件 已经完成ZHS16GBK字符集和ZHS16GBK NCHAR 字符集中的导入 导出服务器使用UTF8 NCHAR 字符集 (可能的ncharset转换) . 正在将AICHANNEL的对象导入到 AICHANNEL . . 正在导入表 "INNER_NOTIFY" 4行被导入 准备启用约束条件... 成功终止导入,但出现警告。 附录二: Oracle 不允许直接改变表的拥有者, 利用Export/Import可以达到这一目的. 先建立import9.par, 然后,使用时命令如下:imp parfile=/filepath/import9.par 例 import9.par 内容如下: FROMUSER=TGPMS TOUSER=TGPMS2 (注:把表的拥有者由FROMUSER改为TOUSER,FROMUSER和TOUSER的用户可以不同) ROWS=Y INDEXES=Y GRANTS=Y CONSTRAINTS=Y BUFFER=409600 file==/backup/ctgpc_20030623.dmp log==/backup/import_20030623.log
软件环境的一般要求 RHEL 5.x系统、RHEL 6.x系统 图形桌面环境 + 开发工具 + 中文Java支持 —— 在RHEL 6.x中安装时,ksh需改用5.x的软件包 准备工作: yum install yum* yum groupinstall “X 窗口系统” “桌面” “桌面平台” “中文支持” “开发工具” [root@dbserver ~]# yum -y install java-* [root@dbserver ~]# cd /usr/lib/jvm/jre-1.6.0/lib [root@dbserver lib]# mv fontconfig.bfc fontconfig.bfc.origin [root@dbserver lib]# cp fontconfig.RedHat.6.bfc fontconfig.bfc [root@dbserver ~]# rpm -e ksh 因为默认没有装 [root@dbserver ~]# rpm -ivh .../ksh-5.2.14-36.el5.i386.rpm 用户环境要求 创建组账号oinstall、dba,用户账号oracle 创建Oracle基本目录 为用户oracle设置环境变量,并允许使用X终端 [root@dbserver ~]# groupadd oinstall //安装组 [root@dbserver ~]# groupadd dba //管理组 [root@dbserver ~]# useradd -g oinstall -G dba oracle [root@dbserver ~]# passwd oracle   [root@dbserver ~]# mkdir /opt/oracle [root@dbserver ~]# chown -R oracle:oinstall /opt/oracle/ [root@dbserver ~]# chmod -R 775 /opt/oracle/ [root@dbserver ~]# vi /home/oralce/.bash_profile …… umask 022 export ORACLE_BASE=/opt/oracle export ORACLE_SID=orcl export DISPLAY=:0.0 export LANG=zh_CN.UTF-8 export ORACLE_HOME=/opt/oracle/product/11.2.0/dbhome_2 [root@dbserver ~]# xhost + //须在图形环境执行 access control disabled, clients can connect from any host 内核及会话要求 修改内存调度参数、端口范围、I/O请求…… 增大用户oracle的进程数、文件数限制 [root@dbserver ~]# vi /etc/sysctl.conf …… fs.aio-max-nr = 1048576 限制并发未完成的请求,应该设置避免I/O子系统故障 fs.file-max = 6815744 文件句柄设置代表linux系统中可以打开的文件的数量。 kernel.shmmni = 4096 共享内存的总页数 kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048586 [root@dbserver ~]# sysctl –p kernel.sem: 以kernel.sem = 250 32000 100 128为例:        250是参数semmsl的值,表示一个信号量集合中能够包含的信号量最大数目。        32000是参数semmns的值,表示系统内可允许的信号量最大数目。        100是参数semopm的值,表示单个semopm()调用在一个信号量集合上可以执行的操作数量。        128是参数semmni的值,表示系统信号量集合总数 net.core.rmem_default: 表示套接字接收缓冲区大小的缺省值。 net.core.rmem_max: 表示套接字接收缓冲区大小的最大值。 net.core.wmem_default: 表示套接字发送缓冲区大小的缺省值。 net.core.wmem_max: 表示套接字发送缓冲区大小的最大值 [root@dbserver ~]# vi /etc/pam.d/login …… session required pam_limits.so [root@dbserver ~]# vi /etc/security/limits.conf …… oracle soft nproc 8192 oracle hard nproc 16384 oracle soft nofile 32768 oracle hard nofile 65536 运行runInstaller安装程序 将下载的两个zip包解压到同一位置 进入database目录,由用户oracle执行安装 通过 -jreLoc 参数指定中文Java环境的路径 [root@dbserver ~]# su - oracle [oracle@dbserver ~]$ cd /var/ftp/pub/database/ [oracle@dbserver database]$ ./runInstaller -jreLoc /usr/lib/jvm/jre-1.6.0 正在启动 Oracle Universal Installer... 检查临时空间: 必须大于 80 MB。 实际为 64829 MB 通过 检查交换空间: 必须大于 150 MB。 实际为 2047 MB 通过 检查监视器: 监视器配置至少必须显示 256 种颜色。 实际为 16777216 通过 准备从以下地址启动 Oracle Universal Installer /tmp/OraInstall2011-10-12_08-07-32PM. 请稍候... SHAPE \* MERGEFORMAT 典型的安装设置 单实例数据库、企业版、管理口令 基本目录:/opt/oracle/ 软件位置:/opt/oracle/product/11.2.0/dbhome_1/ 数据库位置:/opt/oracle/oradata/ 产品清单:/opt/oracle/oraInventory/ SHAPE \* MERGEFORMAT SHAPE \* MERGEFORMAT 验证安装结果 从命令行使用sqlplus工具访问数据库 从浏览器访问 https://dbserver:1158/em/ 用户名sys、管理口令、连接身份SYSDBA [root@dbserver ~]# cd /opt/oracle/product/11.2.0/dbhome_1/bin/ [root@dbserver bin]# ./sqlplus sys AS SYSDBA …… Enter password: //输入管理密码 Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> SHOW USER; //查看当前用户 USER is "SYS“ SQL> HELP INDEX; //查看指令列表 …… COMPUTE LIST SET XQUERY CONNECT PASSWORD SHOW SHAPE \* MERGEFORMAT 优化执行环境 全局配置/etc/profile,添加基目录、执行路径…… 修改/etc/oratab,使orcl实例随数据库软件启动 [root@dbserver ~]# vi /etc/profile …… export ORACLE_BASE=/opt/oracle export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1 export ORACLE_OWNER=oracle export ORACLE_SID=orcl export ORACLE_TERM=xterm export PATH=\$PATH:\$ORACLE_HOME/bin [root@dbserver ~]# vi /etc/oratab orcl:/opt/oracle/product/11.2.0/dbhome_1:Y Oracle的服务组件 监听器lsnrctl:提供数据库访问,默认端口1521 启动器dbstart、dushut:启动、停止数据库实例 控制器emctl:开启、关闭OEM平台,默认端口1158 [oracle@dbserver ~]$ lsnrctl status [oracle@dbserver ~]$ emctl stop dbconsole [oracle@dbserver ~]$ dbshut $ORACLE_HOME [oracle@dbserver ~]$ dbstart $ORACLE_HOME [oracle@dbserver ~]$ emctl stop dbconsole 使用系统服务脚本 编写/etc/init.d/oracle控制脚本 使用chkconfig工具添加为系统服务 使用service工具来启动、停止、重启oracle服务 SHAPE \* MERGEFORMAT 逻辑备份与恢复 配置Oracle备份目录 创建本地目录(如 /opt/mydbbackup),并调整属性 在SQL>环境中指定备份位置,并授权备份用户 [root@dbserver ~]# mkdir /opt/mydbbackup [root@dbserver ~]# chown oracle:oinstall /opt/mydbbackup/ [root@dbserver ~]# sqlplus sys AS SYSDBA Enter password: SQL> CREATE DIRECTORY dmpdir AS '/opt/mydbbackup'; Directory created. SQL> GRANT read,write ON DIRECTORY dmpdir TO sysman; Grant succeeded. SQL> GRANT all ON DIRECTORY dmpdir TO system; Grant succeeded. 逻辑备份与恢复 执行逻辑备份 使用expdp工具导出数据库 [root@dbserver ~]# expdp lisi/123456 DIRECTORY=dmpdir DUMPFILE=lisi-20111014.dmp #导出用户lisi的数据库 ……. [root@dbserver ~]# expdp system/123456 DIRECTORY=dmpdir DUMPFILE=orcl-full-20111014.dmp FULL=Y #导出整个数据库 …… 执行逻辑恢复 使用impdp工具导入数据库 [root@dbserver ~]# impdp lisi/123456 DIRECTORY=dmpdir DUMPFILE=lisi-20111014.dmp REUSE_DATAFILES=Y TABLE_EXISTS_ACTION=REPLACE #恢复用户lisi的数据库 [root@dbserver ~]# impdp system/123456 DIRECTORY=dmpdir DUMPFILE=orcl-full-20111014.dmp REUSE_DATAFILES=Y TABLE_EXISTS_ACTION=REPLACE FULL=Y #恢复整个数据库 注意: 
glibc-32bit-8.1-9 
glibc-devel-32bit-8.1-9
compat-libstdc++-33-3.2.3-47.3.x86_64.rpm 
libaio-0.3.105-2.x86_64.rpm

3,490

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧