oracle后台执行脚本,后台执行oracle sql脚本

一、简单后台执行。

nohup sqlplusoracle/oracle@orcl@sql.sql &

--这样的写法会报错(Error 45 initializing SQL*Plus Internal error)

今天打算写个后台执行清理单张表和备份sql脚本。发现一直报错,网上也没有具体的修改方法。

后来到别的博客去看看,有别的办法可以解决:

二、编写shell脚本和数据库sql脚本

1、table_clear_data.sql和clear_data.sh上传到oracle用户,目录为/opt/oracle/

2、clear_data.sh 脚本内容:

#!/bin/sh

sqlplus myname/pass <

@/opt/oracle/tabel_clear_data.sql;

EOF

如果是ksh,可以参考

#!/bin/ksh -f

#. /home/oracle/.profile

3、table_clear_data.sql数据库脚本内容:

--备份表

create table mytabel_all_201401

NOLOGGING

as (select * from mytabel);

--1、删除不要的数据

delete from mytabel t where t.start_time < to_date('2012-01-01 00:00:00','yyyy-mm-dd hh24:mi:ss') ;

commit;

--备份清理后的数据

create table mytabel _201401

NOLOGGING

as (select * from mytabel  );

--清空mytabel ,释放空间--超过1千万的表,需要truncate才能释放表空间,提高查询更新等效率。delete没用,没有释放全部空间。

truncate table mytabel ;

--导入刚刚备份的数据到mytabel

insert into mytabel  select * from mytabel _201401;

commit;

三、上传文件并执行脚本

1、table_clear_data.sql和clear_data.sh上传到oracle用户主目录下的/opt/oracle/目录);

目录必须正确,因为clear_data.sh脚本指定了该目录。

2、赋予权限和转码

chmod 744 clear_data.sh    table_clear_data.sql

dos2unix  clear_data.sh    table_clear_data.sql

3、用oracle用户登录,执行脚本命令

su - oracle

cd/opt/oracle/

nohup./clear_data.sh &        --必须加&符号,数据量大的话后台执行。

4、可以用tail -f nohup.out 查看当前执行的情况。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值