您正在使用 IPV4 [44.211.24.175] 访问本站,您本次已经查看了 1 页
用户名: 密 码: 验证码:     用QQ登录本站
首页 软件 编程 笑话 知识 公告 台风 日历 计算器
[公益]保护绿色环境,构建和谐社会      

【腾讯云】2核2G云服务器新老同享 99元/年,续费同价,云服务器3年机/5年机限时抢购,低至 2.5折      
[公益] 地球是我家,绿化靠大家      
2024年 冬至节 048
2025年 高 考 216
2025年 元 旦 059
2025年 春 节 087
 
您现在的位置:首页 >> 数据库 >> 内容
本类新增
本类热门
Oracle数据库数据迁移完整解决步骤
内容摘要: oracle数据库的所有表结构、数据、索引等需要需从测试库迁移到正式库。解决步骤:oracle数据库迁移,主要通过expdp从测试库所在的源服务器将指定的数据表或数据源导出为一个或多个数据文件(.dmp文件),导出的数据可以在正式库中通过impdp数据导入工具进行导入。前提:服务器为linux系统。1、源服务器操作(1)创建目录在源服务器上创建一个目录对象,......
oracle数据库的所有表结构、数据、索引等需要需从测试库迁移到正式库。

解决步骤:

oracle数据库迁移,主要通过expdp从测试库所在的源服务器将指定的数据表或数据源导出为一个或多个数据文件(.dmp文件),导出的数据可以在正式库中通过impdp数据导入工具进行导入。

前提:服务器为linux系统。

1、源服务器操作

(1)创建目录

在源服务器上创建一个目录对象,用于指定导入数据文件的路径。可以使用以下命令创建目录对象:

#su-oracle

#sqlplus/assysdba

SQL>createorreplacedirectorytmpDiras'/tempFile'

tmpDir是目录对象的名称,/tempFile是导入数据文件的路径。

(2)使用expdp导出数据表

#su-oracle

#expdpusername/password@Ip:port/databaseschemas=dbTestdirectory=tmpDirdumpfile=export.dmplogfile=export.log

username/password@Ip:port/database:指定要导出的数据库用户及其密码、数据库ip、端口、数据库名称;如果执行命令的服务器就是该数据库的服务器,则ip地址和数据库默认端口可以省略。

schemas=dbTest:指定要导出的数据库用户名称;

directory=tmpDir:指定导出的数据文件路径,这里的tmpDir是预先定义的一个目录对象;

dumpfile=export.dmp:指定导出的数据文件名称,这里的export.dmp是数据导出时生成的数据文件;

logfile=export.log:指定导出日志文件名称。

扩展:

导出单个表的语句:

#expdpusername/password@Ip:port/databasedirectory=tmpDirdumpfile=export.dmptables=student,school,teacher

其中,tables是要导入的数据表名称,多个数据表之间使用逗号分隔

(3)复制dmp文件到目标服务器

#scp-P2222/tempFile/[email protected]:/home/tempFile

输入目标服务器密码,按回车,文件就会自动传输到目标服务器中指定的文件夹中。

其中,[email protected]中name为目标服务器登陆账号,xxx.xxx.xxx.xxx为目标服务器ip地址。2222是目标服务器的端口号。

如果目标服务器部署22端口或者目标服务器与源服务器端口不一致,则需要用【-P端口】指定目标服务器端口。

2、目标服务器操作

(1)创建目录

在目标服务器上创建一个目录对象,用于指定导入数据文件的路径。可以使用以下命令创建目录对象:

#su-oracle

#sqlplus/assysdba

SQL>createorreplacedirectorytmpDiras'/tempFile'

tmpDir是目录对象的名称,/tempFile是导入数据文件的路径。

(2)使用impdp导入数据表

#su-oracle

#impdpusername/password@Ip:port/databaseschemas=dbTestdirectory=tmpDirdumpfile=export.dmpjob_name=myjob

username/password@Ip:port/database:指定要导入的数据库用户及其密码、数据库ip、端口、数据库名称;

schemas=dbTest:指定要导入的数据库用户名称;

directory=tmpDir:指定导入的数据文件路径,这里的tmpDir是预先定义的一个目录对象;

dumpfile=export.dmp:指定导入的数据文件名称,这里的export.dmp是数据导出时生成的数据文件;

job_name=myjob:指定导入任务的名称,这里的myjob是自定义的任务名称。

如果源表对象和目标表对象不一致则需要用remap_schema,重新对应迁移原表对象和目标表对象。

#impdpusername/password@Ip:port/databaseremap_schema=dbTest:oprectiondirectory=tmpDirdumpfile=export.dmpjob_name=myjob

注意:

remap_schema=dbTest:oprection中格式为dmp文件所在的schema:目标服务器数据库的schema。

扩展

(1)单表导入:

#impdpusername/password@Ip:port/databasedirectory=tmpDirdumpfile=export.dmptables=student,school,teacher

需要注意的是,在导入数据表时,如果目标数据库中已经存在同名的数据表,需要使用REMAP_TABLE选项将数据表重新映射到新的表名或者新的表空间中,例如:

#impdpusername/password@database_schematables=table1,table2directory=tmpDirdumpfile=export.dmplogfile=import.logREMAP_TABLE=table1:new_table1,table2:new_table2

替换已存在的表需加上:table_exists_action=replace

报错处理:

1、权限问题

导入的dmp文件需要设置下权限,然后重新进行导入操作。

#chmod777/home/tempFile/export.dmp

2、expdp命令导出报错UDE-00010:multiplejobmodesrequested,schemaandtables

当使用expdp命令导出单个数据表时,需要指定TABLES选项来指定要导出的表名,同时也需要指定SCHEMAS选项来指定要导出的数据库用户。如果同时指定了TABLES和SCHEMAS选项,可能会出现UDE-00010错误,提示“multiplejobmodesrequested,schemaandtables”。

解决这个问题,可以在导出命令中只指定TABLES选项,不指定SCHEMAS选项。例如:

#expdpusername/password@database_schematables=table_namedirectory=data_pump_dirdumpfile=export.dmp

如果需要导出多个表,可以在TABLES选项中使用逗号分隔多个表名

3、主键插入失败

导出测试库的时候数据在更新,导致了dmp文件中设备主键的值有重复的,需要删除数据后,手动新建主键。

版权声明:本内容来源于网络,如有侵犯您的版权,请联系站长,本站收到您的信息后将及时处理。
上一篇:MySQL数据表字段内容的批量修改、清空、复制等更新命令

 

下一篇:Mysql字符串字段判断是否包含某个字符串的2种方法

发布日期:2024/2/26
手机扫二维码直达本页
发布时间:13:20:40
点  击:10
录  入:壹家怡园
相关文章
Baidu
YiJiaCMS 7.5.3 build240901(MSSQL) 闽ICP备05000814号-1
本空间由腾讯云(轻量应用服务器)提供,Cloudflare提供加速防护
运行时间载入中.....