oracle执行shell脚本
‘壹’ oracle存储过程中调用一个shell脚本,用于进行一些操作,已经赋权限,但是执行不了
shell的环境变量问题,你在shell内部的变量是获取不到外部执行结果的。
‘贰’ 请教如何在oracle的存储过程中执行一个shell脚本
你可以把执行过程和执行shell脚本写在一个shell里
例如
你的shell逻辑
执行存储过程
继续你的shell逻辑,执行脚本。
‘叁’ 求一份shell脚本,需求是:从Oracle数据库中提取一个表中的数据输出到文件,并且每条记录一行;
应用spool命令,大量数据汇出很方便,脚本内容大致如下:
--============================================
#!/bin/sh
#第一步
sqlplus -s 用户名/密码@服务名<<EOF
spool customers.sql --输出文件路径及名称
set trimspool on
set linesize 8000
set pagesize 50000
set newpage 1
set heading off
set term off
set feedback off
set sqlblankline off
SELECT A || '|+|' || --字段A
B || '|+|' || --字段B
C || '|+|' || --字段C
D || '|+|' || --字段D
E || '|+|' || --字段E
F || '|+|' || --字段F
G || '|+|' || --字段G
TO_CHAR(H,'YYYYMMDD HH:MM:SS') || '|+|' --字段H,可以使用函数
FROM CUSTOMERS;--表名
spool off
exit
EOF
--=======================
其中'|+|'为分隔符,也可以换成你说的逗号,即','。调用该脚本后,在根目录下生成customers.sql文件。
‘肆’ 如何在oracle中执行shell脚本
要在sql下面执行shell语句,用!符号,不过功能有限;有的时候打不到我们想要的效果!先给你两个实例;
要在后台登陆;plsql中测试不行
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Proction
With the Partitioning, Data Mining and Real Application Testing options
SQL> !echo 123;
123
SQL> !/billing/user/xufc/ftp.sh
Local directory now /billing/Balance/SP/REALINCOME/FTRANS
Interactive mode off.
-rw-r--r-- 1 500 500 823038 Feb 17 06:27 .gz
-rw-r--r-- 1 500 500 33 Feb 17 06:27 .md5
其中ftp.sh需要用绝对路径;该脚本里面的内容只是ls一下;就这样了
‘伍’ 达梦数据库怎么写shell脚本,怎么通过shell脚本调用sql脚本
通过shell脚本调用sql脚本:
1、shell脚本调用sql脚本
#首先编辑sql文件
oracle@SZDB:~> more dept.sql
connect scott/tiger
spool /tmp/dept.lst
set linesize 100 pagesize 80
select * from dept;
spool off;
exit;
#编辑shell脚本文件,在shell脚本内调用sql脚本
oracle@SZDB:~> more get_dept.sh
#!/bin/bash
# set environment variable
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
export ORACLE_SID=CNMMBO
sqlplus -S /nolog @/users/oracle/dept.sql #注意此处执行sql脚本的方法 -S 表示以静默方式执行
exit
#授予脚本执行权限
oracle@SZDB:~> chmod 775 get_dept.sh
-->执行shell脚本
oracle@SZDB:~> ./get_dept.sh
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
2、shell脚本调用rman脚本
#首先编辑RMAN脚本
oracle@SZDB:~> more rman.rcv
RUN {
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/users/oracle/bak/%d_%F';
ALLOCATE CHANNEL CH1 TYPE DISK MAXPIECESIZE=4G;
ALLOCATE CHANNEL CH2 TYPE DISK MAXPIECESIZE=4G;
SET LIMIT CHANNEL CH1 READRATE=10240;
SET LIMIT CHANNEL CH1 KBYTES=4096000;
SET LIMIT CHANNEL CH2 READRATE=10240;
SET LIMIT CHANNEL CH2 KBYTES=4096000;
CROSSCHECK ARCHIVELOG ALL;
DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;
BACKUP
DATABASE FORMAT '/users/oracle/bak/%d_FULL__%U';
SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT';
BACKUP ARCHIVELOG ALL FORMAT '/users/oracle/bak/%d_LF_%U' DELETE INPUT;
DELETE NOPROMPT OBSOLETE;
RELEASE CHANNEL CH1;
RELEASE CHANNEL CH2;
}
#编辑shell脚本文件,在shell脚本内调用rman脚本
oracle@SZDB:~> more rman_bak.sh
#!/bin/bash
# set environment variable
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
export ORACLE_SID=CNMMBO
$ORACLE_HOME/bin/rman target / cmdfile=/users/oracle/rman.rcv log=/users/oracle/bak/rman.log
exit
#授予脚本执行权限
oracle@SZDB:~> chmod 775 rman_bak.sh
#执行shell脚本
‘陆’ 怎么样用shell做一个连接oracle数据库的脚本
shell中直接调用sqlplus即可
sqlplus -s 用户名/口令@实例名<<EOF
‘柒’ 如何定制oracle用户下的shell脚本自动运行
多样性应该是Linux最好的特性之一,用户可以不断尝试各种喜欢和新鲜玩法与花样,并从中找出最适合自己的应用
无论你是Linux新人还是老鸟,层出不穷的应用和桌面环境可能都会让我们应接不暇,特别是尝试不同的Linux桌面环境,可以说是一项非常耗时和累人的任务
在此,咱系统极客对目前应用最为广泛的7款Linux桌面环境进行盘点,并对其优缺点进行比较,希望对各位选择或者进行各种折腾有所帮助
声明:我们只是对目前应用最为广泛的7款Linux桌面环境进行盘点小节,排名无分先后
KDEKDE绝非只是一个桌面环境,实际上是各种应用程序与Linux桌面的一个集合,桌面环境本身只作为该套应用环境的一个子集
目前最新的KDE环境名叫Plasma,它又分为PlasmaDesktop和PlasmaNetbook两个版本,KDE可以说是目前定制性最强,最为灵活的Linux桌面环境之一
其它桌面环境可能需要使用额外的工具才能进行自定义或调整,而KDE将这一切都集成进了系统设置当中,用户不需要使用任何第三方工具即可以对桌面进行个性化订制,如下载桌面小工具、壁纸和主题等
KDE还对常用的基本应用程序进行了集成,并对未使用KDE开发平台构建的应用进行兼容,KDE集成的应用非常丰富,完全能够满足普通用户的日常应用,而无需安装其它替代应用
无论你只是想要一个开箱即用的Linux桌面环境还是要对桌面进行全面的个性化订制,KDE都是一个非常不错的选择
目前采用KDE作为默认桌面环境的Linux发行版主要有openSUSE和Kubuntu
KDE优点:功能十分丰富强大高度可定制性和灵活性范围广泛的软件兼容性KDE缺点:稍重的资源占用某些组件使用起来似乎过于复杂MATEMATE桌面环境基于目前无人维护的GNOME2,MATE最初就是为对GNOME3失望的用户而开发
ForkGNOME2的代码进行氏清纳开发并不意味着就使用过时的技术,MATE将继续使用现代技术进行改善
MATE桌面环境采用了现代而又不失传统的桌面体验,它支持面板系统、各种菜单、小程序、指示器和按钮等,并可按用户的需要进行布置
MATE自带的基本应用都从GNOME2复制过来进行集成,它本身对资源的消耗非常小,能够在不十分强劲的硬件平台上稳定工作
UbuntuMATE目前采用MATE作为自己的默认桌面环境
MATE优点:直观和稳定的用户体验简单、轻便高度可定制MATE缺点:接口看起来有些老了GNOMEGNOME是各Linux发行版采用最为广泛、最流行的桌面环境之一,许多Linux发行版都使用GNOME作为默认桌面环境
它也有一些流行的分支,例如Cinnamon、Unity等等
GNOME以易于使用和定制为设计初衷,目前果最新的GNOME3具有非常现代和有吸引力的用户界面,并能为触摸设备提供更好的支持
GNOME几乎包含了所有现代化桌面环境需要的所有功能,GNOME3比GNOME2的精典模式提供了更好的界面,仪表板、全系统搜索和强大的应用程序都能够直接轻松搞定用户使用需求
不过桌面环境的定制调整需要使用gnome-tweak-tool工具来完成,在3
18版本中它还了文件管理器的一些有趣功能,例如对GoogleDrive进行了集成
目前使用GNOME作为默认桌面环境的Linux发行版主要有Debian、Fedora、openSUSE和UbuntuGNOME
GNOME优点:现代和触摸友好的用户界面能够通过Shell扩展延伸功能可定制性强GNOME缺点:扩展管歼没理不尽如人意CINNAMONCinnamon是GNOME3的一个分支,目前正作为LinuxMint的默认桌面环境
它最出名的便是与Windows相似的用户界面,可以帮助Linux入门用户轻松上手并减低不适应度
Cinnamon集成的各种基本应用都源于GNOME3,Cinnamon集成了面板、主题、小应用程序和各种自定义组件扩展,面板位置屏幕底部边缘,配备了主菜单、启用程序、打开窗口列表及系统托盘等
Cinnamon优点:时尚精致的外观熟悉的界面非常漂亮的定制Cinnamon缺点:偶尔出现的BugUNITYUnity也是基于GNOME桌面环境开发而来,配备有最核心的GNOME应用正基程序
Unity主要用于Canonical开发的Ubuntu桌面环境
Unity主攻方向为使用键盘、鼠标、触控板甚至触摸屏的用户提供一致一用户体验,为用户提供了简单的应用程序并集成了触控友好的使用环境,还实现了一些新的想法和技术,如Lens和HUD等
尽管针对Unity桌面环境有大量的争论,但它还是有非常大量的用户,这都归功于它是目前最流行Linux发行版Ubuntu的默认桌面环境
‘捌’ 写个shell脚本连接oracle数据库查询某表数据导出为txt文件,再发送到第三
1、简单的单列
#!/bin/sh
sqlplus 'user001/12345678'<< EOF
set define off
set hea off
spool vip1.txt
select username from ACCOUNT where LEVEL=7;
spool off
quit;
EOF
sed -i 's/[ ]*//g' ~/vip1.txt
sed -i '/^$/d' ~/vip1.txt
sed -i '1d' ~/vip1.txt
sed -i '$d' ~/vip1.txt
scp -P22 ~/vip1.txt [email protected]:/root
2、复杂的多列
#!/bin/sh
cid=$1;
today=`date +%Y-%m-%d-%H.%M`
ym=`date +%Y%m`
ymd=`date -d -1days +%Y%m%d`
last_ym=`date -d last-month +%Y%m`
next_ym=`date -d next-month +%Y%m`
file=chat_recorder_${cid}_20140707-11.xls
if [[ $1 == '' ]];then
echo "Usage: $0 company_id "
exit 0;
fi
sqlplus 'user002/12345678' << EOF
set linesize 200
set term off verify off feedback off pagesize 999
set markup html on entmap ON spool on preformat off
alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS';
spool ${file}
select a.*,b.* from recorder_${ym} a,t_${ym} b where a.company_id='$cid' and a.create_time between TO_DATE('2014-07-07 00:00:00', 'YYYY-MM-DD HH24:MI:SS') and TO_DATE('2014-07-12 00:00:00', 'YYYY-MM-DD HH24:MI:SS') and a.chat_id=b.chat_id order by b.chat_id ;
spool off
quit;
EOF
sed -i '/select/d' $file
zip -r ${file}.zip $file
scp -P22 ${file}.zip [email protected]:/opt