您的位置:首页 > 运维架构 > Shell

*linux shell 脚本 调用数据库

2011-12-16 17:41 525 查看
最近一直在忙项目,做的过程中遇到一个很纠结的事情。需要用shell脚本轮训数据库,数据执行完毕以后才能调用其他的shell脚本。在这里总结一下,与大家共享。

脚本如下:

shell 脚本如下:

#!/bin/sh

SQL_DIR=/home/tang/tek/sql/tek
SHELL_DIR=/home/tang/tek/sh/tek
LOG_DIR=/home/tang/tek/logs

. /home/tang/.bash_profile

#$SHELL_DIR/runsql.sh /home/tang/tek/sh/tek/test.sql > test.txt

log_check=1

checkCount=0

while [[ $log_check -ne 0 ]]; do
newlog_check=`sqlplus -s/nolog 用户名/密码@Sid<<-EOF
set heading off feedback off pages 0
select count(*)
from tek.admin_user sn
where sn.name is null
exit
EOF`

log_check=$newlog_check

echo "log check value is:" $log_check
let checkCount=$checkCount+1
if [ $checkCount -gt 2 ]; then
sqlplus -s/nolog 用户名/密码@Sid<<-EOF
update tek.user_info bm set bm.name=0 where bm.name='tangpengtao';
commit;
exit
EOF
let checkCount=0
fi
echo $checkCount
#休眠3秒。再轮训

sleep 3
done

. $SHELL_DIR/tpt.sh

linux下安装一个客户端。步骤如下:

1.创建用户
#groupadd dba
#useradd -d /usr/local/oracle -g dba oracle
#passwd oracle

2.解压软件
#gunzip ship_9204_linux_disk1.cpio.gz
#gunzip ship_9204_linux_disk2.cpio.gz
#gunzip ship_9204_linux_disk3.cpio.gz
#cpio -idvm < ship_9204_linux_disk1.cpio
#cpio -idvm < ship_9204_linux_disk2.cpio
#cpio -idvm < ship_9204_linux_disk3.cpio
#cp -rf Disk1 /usr/local/oracle
#cp -rf Disk2 /usr/local/oracle
#cp -rf Disk3 /usr/local/oracle

3.打补丁
#unzip p3006854_9204_LINUX.zip
#cp -rf 3006854 /usr/local/oracle
#sh /usr/local/oracle/3006854/rhel3_pre_install.sh

4.配置oracle用户环境变量

$vi .bash_profile内容如下:

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

#ORACLE

export LD_ASSUME_KERNEL=2.4.1
export ORACLE_BASE=/home/ora/ora9
export ORACLE_HOME=/home/ora/ora9/oracle
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data

#NoUse
export ORACLE_SID=unixdb
export ORACLE_TERM=xterm
export TNS_ADMIN=$ORACLE_HOME/network/admin
export NLS_LANG=AMERICAN_AMERICA.US7ASCII

#LIB,CLASS
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
export LD_LIBRARY_PATH

export PATH=$PATH:$ORACLE_HOME/bin

CLASSPATH=$CLASSPATH:$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib
export CLASSPATH

unset USERNAME

5.安装
#xhost +
#su - oracle
$unset LANG
$Disk1/runInstaller

6.图形化界面时提示操作
#sh orainstRoot.sh
#sh /usr/local/oracle/OraHome1/root.sh

7.编辑配置
#vi /usr/local/oracle/OraHome1/network/admin/sqlnet.ora
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)
#vi /usr/local/oracle/OraHome1/network/admin/tnsnames.ora
ORACLE_192.168.0.6 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.6)(PORT = 1521))
)
(CONNECT_DATA =
(SID = ORACLE)
(SERVER = DEDICATED)
)
)

8.测试连接
$sqlplus /nolog
SQL>connect sys/change_on_install@oracle_192.168.0.6 as sysdba
SQL>connected.//表示连接成功

备注:

1.若要重装oracle,则应该删除以下部分:

/usr/local/oracle/下面除Disk1,2,3外所有内容

/tmp/下面OraInstall文件名所有内容

/etc/oraInst.loc

/etc/oratab

2.若连接不上服务端,可以尝试多个用户名,另外,可以尝试服务端的防火墙关闭或设置例外
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: