zoukankan      html  css  js  c++  java
  • 使用exp/imp 在oracle数据库间导数据

    最近工作需要将oracle数据库的表数据导出到另一个oracle数据库表,找到了oracle 自带的命令行,并记录下导数据过程。

    导数据过程分以下几步:

    假设源数据库为A,目标数据库为B

    1.在B上通过ssh 远程执行本地脚本,实现在A上通过exp命令导出dmp文件,并通过scp命令将文件传送至本地(A、B之间通过生成秘钥登陆)。

    2.在B上通过imp命令导入数据表。

    ssh远程执行本地脚本的方式可以通过类似方式实现:

    sshpass -p PASS_WORD ssh USER_NAME@xxx.xx.xx.xx < ssh_and_exp.sh

    sshpass 可以通过命令行带密码的方式 执行ssh,而本地脚本ssh_and_exp.sh 如下:

    #!/bin/bash

    #cd到oracle安装目录
    cd /oracle/app/oracle/product/11.2.0/dbhome_1/bin
    path="/tmp/bg_store.dmp"
    to="/tmp/scp_bg_store.dmp"
    echo "=======================export has started==================================="

    # 执行导出命令

    ./exp pg_sfa/pg_sfa@itek file=${path} tables=bj_store_info_02
    echo "=======================export has finished=================================="
    chmod 755 ${path}

    通过scp命令传递A到B

    scp -o StrictHostKeyChecking=no -i /home/id_rsa root@xx.xx.xx.xx:${path} ${to}

    再通过imp命令导入数据表:

    ./imp pg_sfa2/pg_sfa2@itek file=${to} full=y ignore=y

    即可实现整个过程。

    另外,执行命令的oracle用户需要配置ORACLE_HOME, 并且在PATH里添加ORACLE_HOME/bin

    export ORACLE_HOME=/oracle/xxxx

    export PATH=$ORACLE_HOME/bin:$PATH

    附上填坑过程:

    1. 登录源数据linux服务器, 切换至oracle用户 或 将root用户添加至oracle组中,用来执行exp命令

    遇到

    2.网上搜索使用


    SQL> show parameter background_dump_dest

    来找告警日志。于是打开plsql 的 CMD window,输入,找到了日志地址

    3.查看日志没有发现报错。 再次搜索 错误信息,找到 这篇博客 http://blog.itpub.net/12272958/viewspace-716020

    按照提示去做,删除了lk开头的文件,强行关闭相关进程 ora_lgwr_**** ,再次启动,数据库 提示启动成功

  • 相关阅读:
    unity对于导入动画不可编辑的添加事件函数方式
    unity创建Animation动画文件
    unity之3dmax建模(人物模型)注意细节
    unity导入fbx文件并播放模型动画
    Java网络编程:QQ邮件发送客户端程序设计
    Java进阶:基于TCP通信的网络实时聊天室
    如何开发HTML编辑器
    分布式redislock使用注意事项
    《MySQL慢查询优化》之数据库表结构优化
    《MySQL慢查询优化》之慢SQL日志获取与分析
  • 原文地址:https://www.cnblogs.com/andrew-chen/p/12049618.html
Copyright © 2011-2022 走看看