通过shell脚本调用sql脚本:
1、shell脚本调用sql脚本
#首先编辑sql文件
oracle@SZDB:~> more deptsql
connect scott/tiger
spool /tmp/deptlst
set linesize 100 pagesize 80
select from dept;
spool off;
exit;
#编辑shell脚本文件,在shell脚本内调用sql脚本
oracle@SZDB:~> more get_deptsh
#!/bin/bash
# set environment variable
if [ -f ~/bashrc ]; then
~/bashrc
fi
export ORACLE_SID=CNMMBO
sqlplus -S /nolog @/users/oracle/deptsql #注意此处执行sql脚本的方法 -S 表示以静默方式执行
exit
#授予脚本执行权限
oracle@SZDB:~> chmod 775 get_deptsh
-->执行shell脚本
oracle@SZDB:~> /get_deptsh
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
2、shell脚本调用rman脚本
#首先编辑RMAN脚本
oracle@SZDB:~> more rmanrcv
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_baksh
#!/bin/bash
# set environment variable
if [ -f ~/bashrc ]; then
~/bashrc
fi
export ORACLE_SID=CNMMBO
$ORACLE_HOME/bin/rman target / cmdfile=/users/oracle/rmanrcv log=/users/oracle/bak/rmanlog
exit
#授予脚本执行权限
oracle@SZDB:~> chmod 775 rman_baksh
#执行shell脚本
这个问题你可能通过查询oracle的系统表,例如all_all_tables,用这些对象的列表生成一批数据库删除对象的语句,然后将这些语句存到文件,用sqlplus的文件参数执行这一批语句。
1、用sqlplus执行
spool empxls
select from emp;
spool off即可
2、实例
#!/bin/sh
#!/bin/bash
today=`date +%Y%m%d`
file=emp_${today}xls
sqlplus 'scott/tigger' << EOF
set linesize 200
set head off
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 from emp;
spool off
quit;
EOF
#处理一下文件头
sed -i '/select/d' $file
sed -i '/spool/d' $file
empno=100不存在的,改成有的数据了。
#!/bin/bash
result=$(sqlplus -s 'scott/tiger@dbname'<<EOF
spool testtxt
set pages 0
set feed off
set heading off;
set feedback off;
set verify off;
set linesize 1000;
SELECT FROM scottemp where empno=7369;
spool off
EOF
)
echo $result
~
~
~
~
~
~
~
~
~
"testsh" 14L, 256C written
oracle@:~> /testsh
7369 SMITH CLERK 7902 17-DEC-80 224006 20
oracle@:~> more testtxt
7369 SMITH CLERK 7902 17-DEC-80 224006
20
通过代码来连接。
oracle19c安装好之后导入scottsql脚本(可以在oracle的安装目录的查找)之后在通过代码连接scott就可以登陆了。
Oracle19c也就是12203,是OracleDatabase12c和18c系列产品的最终版本,因此也是“长期支持”版本(以前称为“终端版本”)。
以上就是关于达梦数据库怎么写shell脚本,怎么通过shell脚本调用sql脚本全部的内容,包括:达梦数据库怎么写shell脚本,怎么通过shell脚本调用sql脚本、怎么样用shell做一个连接oracle数据库的脚本、求给个linux下oracle数据库导出的shell脚本等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)