免费注册 查看新帖 |

Chinaunix

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

【求助】echo $ORACLE_HOME [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-01-20 14:55 |只看该作者 |倒序浏览
======================
最近在服务器上安装了suse + oracle11 rac
在root用户下执行:su - oracle -c "echo $ORACLE_HOME"
显示为空行,但是在oracle用户下执行:echo $ORACLE_HOME
显示oracle的家目录:/oracle/app/product/11g/db

======================
有那位大侠知道为何在root用户下执行su - oracle -c "echo $ORACLE_HOME"结果为空的原因

或者是可以的shell语句
【求解】

论坛徽章:
0
2 [报告]
发表于 2010-01-20 15:05 |只看该作者
如果直接su 用户,
shell会去读取此用户home目录下的隐藏文件,如果是bash的话,为 .bashrc
但用命令su - 用户名 -c "commandline"是不会读取此文件的。

论坛徽章:
0
3 [报告]
发表于 2010-01-20 15:07 |只看该作者
su - oracle -c "echo $ORACLE_HOME"

经shell解释后实际执行的是
su - oracle -c "echo "

因为当前用户$ORACLE_HOME为空

解决拌饭就是
su - oracle -c "echo \$ORACLE_HOME"

[ 本帖最后由 ywlscpl 于 2010-1-20 15:08 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2010-01-20 15:14 |只看该作者
试了,没问题

论坛徽章:
0
5 [报告]
发表于 2010-01-20 15:31 |只看该作者

回复 #3 ywlscpl 的帖子

多谢ywlscpl大哥,
还有个问题:
function check ()
{
su - oracle -c "sqlplus sys/oracle as sysdba <<EOF
show parameter;
select open_mode from v$database;
select value from v$nls_parameters where parameter like 'NLS_CHARACTERSET';
EOF"
}


其中只有show parameter;可以得到oracle的信息,但是select open_mode from v$database;却不能获得信息,用\转义后也不行,不知道有没有好办法?

论坛徽章:
0
6 [报告]
发表于 2010-01-20 15:42 |只看该作者
没环境测试,你试试
function my_sq ()
{
   sqlplus sys/oracle as sysdba <<EOF
show parameter;
select open_mode from v$database;
select value from v$nls_parameters where parameter like 'NLS_CHARACTERSET';
EOF
}

function check ()
{
su - oracle -c "my_sq"
}

论坛徽章:
0
7 [报告]
发表于 2010-01-20 15:59 |只看该作者

回复 #6 ywlscpl 的帖子

function my_sq ()
{
   sqlplus sys/oracle as sysdba <<EOF
show parameter;
select open_mode from v$database;
select value from v$nls_parameters where parameter like 'NLS_CHARACTERSET';
EOF
}

function check ()
{
su - oracle -c "my_sq"
}

刚试了,还是不行

论坛徽章:
0
8 [报告]
发表于 2010-01-20 16:07 |只看该作者
原帖由 zwrvvv 于 2010-1-20 15:59 发表
function my_sq ()
{
   sqlplus sys/oracle as sysdba  




function check ()
{
su - oracle -c ' sqlplus sys/oracle as sysdba <<EOF
show parameter;
select open_mode from v$database;
select value from v$nls_parameters where parameter like 'NLS_CHARACTERSET';
EOF '
}

论坛徽章:
0
9 [报告]
发表于 2010-01-20 16:07 |只看该作者

回复 #7 zwrvvv 的帖子

在ORACLE用户下直接执行

sqlplus sys/oracle as sysdba <<EOF
show parameter;
select open_mode from v$database;
select value from v$nls_parameters where parameter like 'NLS_CHARACTERSET';
EOF

是没问题的吧?($database、$nls_parameters 用相应的值代替)

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
10 [报告]
发表于 2010-01-20 16:14 |只看该作者

回复 #9 ywlscpl 的帖子

v$database和v$nls_parameters是动态性能视图啊,不是变量。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP