共计 2535 个字符,预计需要花费 7 分钟才能阅读完成。
这篇文章主要介绍“Linux 下 Oracle 数据库怎么导入或导出单个表”,在日常操作中,相信很多人在 Linux 下 Oracle 数据库怎么导入或导出单个表问题上存在疑惑,丸趣 TV 小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux 下 Oracle 数据库怎么导入或导出单个表”的疑惑有所帮助!接下来,请跟着丸趣 TV 小编一起来学习吧!
事情的原委是这样:用户的库,要在一个表里面进行标签替换,在写 sql 的时候,大意了,没注意字符转义,结果执行完 sql,出事了,将一个内容表里的信息,全部替换成空了~ 还好有备份;
计划是这样,先备份目前的库,之后将前一天晚上的备份恢复进去,把该表里的数据导出,在将现在的备份恢复,用昨天晚上的单表备份,将现在的问题表替换,这样就保证的数据的相对完整,因为出事的时候,已经是快下班 5 点多,白天一天,用户已经完善了好多信息,但该表里的数据,就只能是昨天的了,估计会丢失几条数据,也没办法了~ 开始整;
首先,执行最新数据库备份,使用 exp,将库做备份;
第二步,拿到昨天晚上的备份文件 dmp 文件,(我的项目都做有定时自动备份,这个是很有必要的,每天晚上 2 点半自动备份库,保留最新 5 天备份)这个时候,我的做法是将目前的库直接停掉,重新建库,因为你用 imp 恢复的时候,你现在的库里是有表的,执行 imp 会失败;
做法:停监听,停库,之后将 oracle mv 为 oracle_日期,贴一下代码,
su - oracle // 登录 oracle
lsnrctl stop // 停止监听
sqlplus /as sysdba // 进入数据库
shutdown immediate // 停止数据库
exit // 退出 oracle
cd /oracle // 进入目录
mv oracle oracle_20170119 // 重命名老的 oracle
tar -zxvf oracle11g.tar.gz // 解压包
解压之后,重新登录库,修改配置文件
su - oracle // 登录 oracle
vi .bash_profile // 修改配置文件
以下为文件内容
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
unset USERNAME
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=/opt/oracle/product/11.1.0/db_1
export ORACLE_SID=orcl
export ORACLE_TERM=xterm
export NLS_LANG=AMERICAN
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
export PATH=$ORACLE_HOME/bin:$PATH
保存完后执行 source .bash_profile
lsnrctl start // 启监听
sqlplus /as sysdba // 进入数据库
startup // 启动数据库, 然后执行下面 4 名命令, 创建实例, 一个一个执行
create tablespace oracle datafile /oracle/oracle/oradata/orcl/oracle.dbf size 2048M;
create user oracle identified by oracle default tablespace oracle;
grant connect,resource to oracle;
grant dba to oracle;
上面的 4 行命令,主要是新建表空间,之后建用户,我的账号密码都用的 oracle,数据库也是 oracle
执行完成,exit 退出到 oracle 用户下,因为之前执行的都是 sql,都是在 sql 下进行的;
cp 前一天的备份,到当前目录,之后执行导入;
imp oracle/oracle file=oracle_20170118.dmp fromuser=oracle touser=oracle rows=y
导入之后,可以启动 web 服务看看是否读库正常,正常表示刚才的操作都是成功的;接下来进行最重要的一步,导出单个表;我要导出 cms_gk 这个表
exp oracle/oracle file=/oracle/backup/oracle_20170118_cms_gk.dmp tables=CMS_GK
这里,利用 tables 这个属性,就可以直接导出单个表了;
之后拿到 cms_gk 表,将数据库在恢复到下午出问题的时候,因为除了这个表,其他表里面的数据,都是最新的;继续执行停监听,停库,将刚才的 oracle mv 为 oracle_20170118,将之前的 oracle_日期文件夹 mv 为 oracle,因为之前的库,没有动什么,里面的表什么都是完整的,所以将 oracle 恢复之后,就能直接起库了,起来后,登录数据库,在 sql 里执行导入;
imp oracle/oracle file=oracle_20170118_cms_gk.dmp fromuser=oracle touser=oracle tables=CMS_GK
导入之后,可以用 Navicat 链接数据库查看下,或者启动 we b 服务,看下是否有信息,我操作到此时,已经将信息成功还原进去了;最后问题算是解决了,丢失了一个表里面的部分数据,算是最小损失了吧!
到此,关于“Linux 下 Oracle 数据库怎么导入或导出单个表”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注丸趣 TV 网站,丸趣 TV 小编会继续努力为大家带来更多实用的文章!