zoukankan      html  css  js  c++  java
  • linux 后台执行oracle sql脚本

    一、简单后台执行。

    nohup  sqlplus   Oracle/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 <<EOF
    @/opt/oracle/tabel_clear_data.sql;
    EOF


    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 777 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 查看当前执行的情况。



    在网上参考的.sh脚本有别的写法,有时间再试试。

    http://blog.csdn.net/hj402555749/article/details/7328508

    http://blog.sina.com.cn/s/blog_a97aa69e01015wwb.html


    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    Hive 优化汇总
    PostgreSQL (简称gp)小集
    yarn 日志查看
    Python: 对CSV文件读写 和 Md5加密
    Linux查找命令find、locate、whereis、which、type
    EChars文档
    php中定时计划任务的实现原理
    如何启动、关闭和设置ubuntu防火墙
    MySQL中的insert ignore into, replace into等的一些用法总结
    Linux三剑客之老二-------sed命令详解
  • 原文地址:https://www.cnblogs.com/cuker919/p/4878516.html
Copyright © 2011-2022 走看看