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