Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

96

积分

0

好友

4

主题
1#
发表于 2012-8-1 16:20:49 | 查看: 6241| 回复: 2
db:10.2.0.4
os:linux x64

shell+sqlplus不能使用变量

[oracle@user u01]$ ./test
Enter value for file_id:
User requested Interrupt or EOF detected.
[oracle@user u01]$
[oracle@user u01]$
[oracle@user u01]$ cat test
sqlplus -s / as sysdba <<EOF
SELECT /*+ RULE*/ owner, segment_name, segment_type
  FROM dba_extents
WHERE file_id = &file_id
   AND &block_id BETWEEN block_id AND block_id + blocks - 1;
EOF
[oracle@user u01]$

我想在执行test时,系统会让我输入file_id 和block_id 。按照我输入的变量执行sql。不知道这个shell怎么写
3#
发表于 2012-8-1 21:36:19

回复 2# 的帖子

已成功,谢谢!!
[oracle@duqi ~]$ ./ora test
input the file_id  ====>  1
input the block_id ====>  3

OWNER                SEGMENT_NAME                                       SEGMENT_TYPE
-------------------- -------------------------------------------------- ------------------
SYS                  SYSTEM                                             ROLLBACK3

回复 只看该作者 道具 举报

2#
发表于 2012-8-1 20:35:17
#!/bin/bash
read -p "input the file_id  ====>  "  file_id
read -p "input the block_id ====>  "  block_id
if [ "$file_id" == "" ] || [ "$block_id" == ""  ] ; then
echo "must input file_id and block_id!!"; exit 1
fi
sqlplus -s / as sysdba <<EOF
SELECT /*+ RULE*/ owner, segment_name, segment_type
FROM dba_extents
WHERE file_id = $file_id
AND $block_id BETWEEN block_id AND block_id + blocks - 1;
EOF

然后调用。
但还是习惯用@这种方式的

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-11-16 03:50 , Processed in 0.049978 second(s), 22 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569