A. 達夢資料庫怎麼寫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腳本
B. shell腳本里怎樣調用plsql存儲過程
對於存儲我是不很了解,但是可以通過這種方式來調用oracle的sqlplus。
#catsql.sh
#!/bin/bash
su-oracle-c'
sqlplus-S/assysdba<<EOF
selectstatusfromv$instance;
exit
EOF
'
#bashsql.sh
STATUS
------------------------
OPEN
C. 寫了一個shell腳本連接oracle資料庫,但是有問題,麻煩幫看下。
你前面是EOF開始,後面也要EOF結束,而不是用!結束
D. shell腳本語言如何和oracle結合在一起使用
如果是通過shell腳本運行Oracle的sql語句,可以這樣寫shell腳本:
echo 「Oracle SQL Example"
sqlplus / as sysdba <<EOF
select * from scott.emp;
EOF
也就是把sql語句寫到shell腳本的EOF之間。
E. 如何在shell腳本中嵌入Oracle資料庫操作
如何在shell腳本中嵌入Oracle資料庫操作
sqlplus -S system/system <<EOF
set feedback off
set heading off
set pagesize 0
set linesize 200
set echo off
set termout off
spool txt/fbfjmxb.txt
select * from ORD_PEO_TXNPCL WHERE SUBSTR(TRIM(YJHM),1,1)='9' AND TRUNC(CLDATE,'dd')=TRUNC(SYSDATE,'dd');
spool off
exit;
EOF
F. 你好,我想寫個shell腳本連接oracle伺服器查詢某表數據並且導出到txt文本
使用shell調用sqlplus來執行sql語句,導出到文件可以通過spool命令指定文件,我從自己曾經寫的腳本截取一段給你示例吧,如果你熟悉shell編寫的話,很容易改造成自己需要的
參數1-6分別是表名,oracle用戶名,oracle密碼,oracle伺服器ip地址,oracle伺服器埠,oracle伺服器的服務名(如果不確定聯系DB管理員)
T_NAME=$1
USERID=$2
PASSWD=$3
IP=$4
PORT=$5
SERVICENAME=$6
DB_LINK_STR=$USERID/$PASSWD@$IP:$PORT/$SERVICENAME
sqlplus -S $DB_LINK_STR<<EOF
set HEADING OFF
SET ECHO OFF
SET FEEDBACK OFF
SET TERMOUT OFF
SET LINESIZE 1000
SET TRIMSPOOL ON
spool temp.out
select COLUMN_NAME||' '||DATA_TYPE||' '||DATA_LENGTH||' ',DATA_DEFAULT from user_tab_columns where table_name='$T_NAME' order by column_id;
spool off
exit
EOF
sed -i '/^$/d' temp.out
執行完畢後,就會出現temp.out文件,裡面是指定表的一些信息:列名,數據類型,數據長度和默認值,且以空格分隔
G. 請教Oracle資料庫問題
這個問題你最好是貼出你的oa_backup.sh來看,否則光是報錯信息很難判斷到底問題出在哪。至少我看起來,環境變數、命令、資料庫、shell都貌似有可能有問題。
當然了,貼出shell之前你首先要確認在shell中引用的資料庫連接串、資料庫實例、資料庫用戶以及口令、你執行shell的用戶的相關環境變數等都是正確的(這些可以不貼)。
H. shell中連接oracle資料庫
Please check the content of "unload.bin"
I. shell調用Oracle存儲過程問題
以下為proc.sh文件內容:
sqlplus user/password <<!
exec proc_name;
exit
!
其中proc_name是存儲過程的名字
user/password是存儲過程所在用戶的用戶名和密碼
J. 用shell怎樣連接oracle資料庫
sqlplus / as sysdba@orcl <<EOF
此處是你執行的SQL語句
EOF