免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2542 | 回复: 11
打印 上一主题 下一主题

求shell高手 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-06-10 10:11 |只看该作者 |倒序浏览

        sqlplus "/as sysdba"
        startup
        connect $EFPS_DBUSER/$EFPS_DBPASS
        @$EFPS_HOME/init/crt_tbl.sql
        quit
        
主要难点是执行sqlplus后,进入了oracle终端运行命令行
SQL>
然后这时候,我后面的命令startup~~~等都不能执行了。
如何改动,以实现sql>后面的命令也自动执行。求各位达人指点一二!
小弟感激不尽!

论坛徽章:
0
2 [报告]
发表于 2010-06-10 10:13 |只看该作者
here document
  sqlplus  .... <<EOF
....
EOF
红色的写你在sqlplus下执行的命令

论坛徽章:
0
3 [报告]
发表于 2010-06-10 10:15 |只看该作者
你起码应该先连接到Oracle在Startup吧~
顺序应该搞明白吧~找一本Oracle的书看看吧~

论坛徽章:
0
4 [报告]
发表于 2010-06-10 10:16 |只看该作者
回复 2# lkk2003rty


    按你这种方式的时候提示语法错误。

论坛徽章:
0
5 [报告]
发表于 2010-06-10 10:17 |只看该作者
看错了~你为什么连接两回呢?

论坛徽章:
0
6 [报告]
发表于 2010-06-10 10:18 |只看该作者
dbstart
        lsnrctl start

        sqlplus "/as sysdba" <<EOF
        startup
        connect $EFPS_DBUSER/$EFPS_DBPASS
        @$EFPS_HOME/init/crt_tbl.sql
        quit

        EOF

本来是想写一个脚本容易点的。。

论坛徽章:
0
7 [报告]
发表于 2010-06-10 10:22 |只看该作者
回复 5# iori809


    startup的权限不够吧。要先用system把数据库启动起来,然后再连接自己的用户。不过这不是错误的重点吧,改了这里也没作用的。

论坛徽章:
0
8 [报告]
发表于 2010-06-10 10:32 |只看该作者
回复 7# chizhilove


    [oracle@test7: ~]$sqlplus "/ as sysdba"
[uniread] Loaded history (804 lines)

SQL*Plus: Release 11.1.0.6.0 - Production on Thu Jun 10 10:28:42 2010

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

Connected to an idle instance.

idle> startup
ORACLE instance started.

Total System Global Area  839282688 bytes
Fixed Size                  2149040 bytes
Variable Size             603981136 bytes
Database Buffers          226492416 bytes
Redo Buffers                6660096 bytes
Database mounted.
Database opened.

没问题的,只不过由于你一开始Oracle的instance是关闭的,所以你连接上的是一个idle。
sysdba已经是最高权限了

论坛徽章:
0
9 [报告]
发表于 2010-06-10 10:42 |只看该作者
回复 8# iori809


    呃。。。首先感谢您的解答。
不过我是要写一个shell脚本自动执行,如果手动输入命令是没问题的。
然后这里的问题是如果没有<<EOF...EOF时,会进入如你的idle>的SQL>处理行。
然后这时候我脚本里面要执行的命令,startup, connect~~便不能自动执行,处于等待输入状态。
然后手动退出SQL>处理行后,又提示:
./bash_db.sh: line 18: startup: command not found
./bash_db.sh: line 20: connect: command not found
我是想问如何实现这些命令,在SQL> 后执行。而不是退出后才执行。

论坛徽章:
0
10 [报告]
发表于 2010-06-10 10:52 |只看该作者
回复 9# chizhilove


    [oracle@test7: ~]$more sh1.sh

#!/bin/bash
sqlplus "/nolog" <<EOF
conn / as sysdba
startup
select 1+1 from dual;
quit;
EOF
[oracle@test7: ~]$sh sh1.sh

SQL*Plus: Release 11.1.0.6.0 - Production on Thu Jun 10 10:53:55 2010

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

idle> Connected to an idle instance.
idle> ORACLE instance started.

Total System Global Area  839282688 bytes
Fixed Size                  2149040 bytes
Variable Size             603981136 bytes
Database Buffers          226492416 bytes
Redo Buffers                6660096 bytes
Database mounted.
Database opened.
idle>
       1+1
----------
         2

idle> Disconnected from Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@test7: ~]$

这是我写的一个脚本~运行没问题。看看是不是你要的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP