isqlplusctl启动发现的oracle所属文件的权限问题
网上http://ningoo.itpub.net/post/2149/200372关于isqlplus的配置已经有很多成功案例了。
这次出现的问题主要是由于安装时的文件权限设置有问题,至于为什么会这样,怎么会有些文件的属性会自动转化成root.root而不是oracle.oinstall呢?
[症状]
[oracle@zhang db_1] isqlplusctl start
Starting iSQL*Plus ...
iSQL*Plus started.
[oracle@zhang db_1] isqlplusctl start
Starting iSQL*Plus ...
iSQL*Plus started.
多次启动,都不会报错--iSQL*Plus instance on port 5560 is already running ...
[oracle@zhang db_1] isqlplusctl stop
iSQL*Plus instance on port 5560 is not running ...
此时我怀疑isqlplusctl命令有问题,既然没有启动成功,还瞎报iSQL*Plus started.
[oracle@zhang db_1] cd bin
[oracle@zhang bin] view isqlplusctl
# Execute the isqlplusctl.pl
$PERL_BIN/perl $ORACLE_HOME/bin/isqlplusctl.pl $*
-----前面的一些参数的设置一般不会出错,先假设如此,如果有问题再返回查。显然这里调用了isqlplusctl.pl
[oracle@zhang bin] view isqlplusctl.pl
#perl即使不会,也不会影响读改这些脚本,跟shell差不多
sub startiplus()
{
my $httpPortNo = gethttpport();
print " httpPortNO=$httpPortNo/n";
my $port_status = checkPortInUse($httpPortNo);
print " port_status=$port_status/n";
if ($port_status eq "false")
{
print “iplus_Hostname =$iplus_Hostname/n”;
if ($iplus_Hostname)
{
print "Starting iSQL*Plus on node isqlplus$iplus_Hostname .../n";
}
else
{
print "Starting iSQL*Plus .../n";
}
chdir("$IPLUS_OC4J_HOME/j2ee/home");
system("$JAVA_HOME/bin/java " .
"-Djava.awt.headless=true " .
"-Doracle.oc4j.localhome=$FORMFACTOR_BASE " .
"-Djava.security.properties=$ORACLE_HOME/oc4j/j2ee/home/config/jazn.security.props -
jar $IPLUS_OC4J_HOME/j2ee/home/oc4j.jar -config
$IPLUS_OC4J_HOME/j2ee/isqlplus".$iplus_Hostname."/config/server.xml
> /dev/null 2> /dev/null &");
sleep(20);
print "iSQL*Plus started./n";
exit 0;
}
else
{
print "iSQL*Plus instance on port $httpPortNo is already running .../n";
}
}
分析system就可以清楚知道,后台运行,且不在终端输出任何信息,还有出错信息。可能设计者认为这一般是不可能出问题,可一旦出问题呢?
system("$JAVA_HOME/bin/java " .
"-Djava.awt.headless=true " .
"-Doracle.oc4j.localhome=$FORMFACTOR_BASE " .
"-Djava.security.properties=$ORACLE_HOME/oc4j/j2ee/home/config/jazn.security.props -
jar $IPLUS_OC4J_HOME/j2ee/home/oc4j.jar -config
$IPLUS_OC4J_HOME/j2ee/isqlplus".$iplus_Hostname."/config/server.xml
> /dev/null 2> /dev/null &");
将> /dev/null 2> /dev/null &去掉,并添加相应的辅助信息[关键信息应该能尽可能提示]
iSQL*Plus 10.2.0.1.0
Copyright (c) 2003, 2005, Oracle. All rights reserved.
is_rac = false
httpPortNO=5560
port_status=false
Starting iSQL*Plus ...
07/07/12 14:11:21 Error instantiating application at file:/u01/app/oracle/product/10.2.0/db_1/oc4j/j2ee/oc4j_applications/applications/isqlplus.ear: Error initializing logger for application.log: /u01/app/oracle/product/10.2.0/db_1/oc4j/j2ee/isqlplus/application-deployments/isqlplus/application.log (
Permission denied)
07/07/12 14:11:21 Error instantiating application at file:/u01/app/oracle/product/10.2.0/db_1/oc4j/j2ee/oc4j_applications/applications/isqlplushelp.ear: Error initializing logger for application.log: /u01/app/oracle/product/10.2.0/db_1/oc4j/j2ee/isqlplus/application-deployments/isqlplushelp/application.log (
Permission denied)
07/07/12 14:11:23 Error initializing site OC4J Java HTTP Web Site: No application named 'isqlplus' found in the server
07/07/12 14:11:23 Error initializing site OC4J Java HTTP Web Site: No application named 'isqlplushelp' found in the server
07/07/12 14:11:23 Oracle Application Server Containers for J2EE 10g (9.0.4.1.0) initialized
分析可知,是文件权限问题
/u01/app/oracle/product/10.2.0/db_1/oc4j/j2ee/isqlplus/application-deployments/isqlplus/application.log
/u01/app/oracle/product/10.2.0/db_1/oc4j/j2ee/isqlplus/application-deployments/isqlplushelp/application.log
为防止其他类似问题将$ORACLE_HOME下的所有文件属性都刷新为oracle.oinstall
[
root@zhang db_1] chown –R oracle.oinstall *
[root@zhang db_1]# ./root.sh
----恢复root.sh中的相关设置,如果没有把握,还是发现问题时再对相应文件修改权限,这种方法太冒险
----恢复root.sh中的相关设置,如果没有把握,还是发现问题时再对相应文件修改权限,这种方法太冒险
[oracle@zhang db_1] isqlplusctl stop && isqlplusctl start
iSQL*Plus 10.2.0.1.0
Copyright (c) 2003, 2005, Oracle. All rights reserved.
is_rac = false
Stopping iSQL*Plus ...
iSQL*Plus stopped.
iSQL*Plus 10.2.0.1.0
Copyright (c) 2003, 2005, Oracle. All rights reserved.
is_rac = false
httpPortNO=5560
port_status=false
Starting iSQL*Plus ...
iSQL*Plus started.
为了能在管理界面通过Related Links进入isqlplus需做如下修改
[oracle@zhang u01]$ cd $ORACLE_HOME
./inventory/Components21/oracle.sysman.console.db/10.2.0.1.0/context.xml
./inventory/Components21/oracle.sqlplus.isqlplus/10.2.0.1.0/installIP2Log.xml
./inventory/Components21/oracle.sqlplus.isqlplus/10.2.0.1.0/context.xml
./inventory/ContentsXML/ConfigXML/oracle.sqlplus.isqlplus.10_2_0_1_0.CFM.2.inst.xml
./zhang.sirius.com_MyData/sysman/config/emoms.properties
./oc4j/j2ee/deploy_db.ini
./sqlplus/bin/isqlplus.ini
./sysman/config/emoms.properties.emca
以上将
http://0:0:0:0:0:0:0:1:5561/isqlplus/dynamic
改成 http://zhang.sirius.com:5560/isqlplus
将 http://0:0:0:0:0:0:0:1:5561/isqlplus/dba/dynamic
改成 http://zhang.sirius.com:5560/isqlplusdba
另外注意所有5561端口改成5560端口
然后重启服务。
./inventory/Components21/oracle.sysman.console.db/10.2.0.1.0/context.xml
./inventory/Components21/oracle.sqlplus.isqlplus/10.2.0.1.0/installIP2Log.xml
./inventory/Components21/oracle.sqlplus.isqlplus/10.2.0.1.0/context.xml
./inventory/ContentsXML/ConfigXML/oracle.sqlplus.isqlplus.10_2_0_1_0.CFM.2.inst.xml
./zhang.sirius.com_MyData/sysman/config/emoms.properties
./oc4j/j2ee/deploy_db.ini
./sqlplus/bin/isqlplus.ini
./sysman/config/emoms.properties.emca
以上将
http://0:0:0:0:0:0:0:1:5561/isqlplus/dynamic
改成 http://zhang.sirius.com:5560/isqlplus
将 http://0:0:0:0:0:0:0:1:5561/isqlplus/dba/dynamic
改成 http://zhang.sirius.com:5560/isqlplusdba
另外注意所有5561端口改成5560端口
然后重启服务。
添加iSQL*Plus DBA用户登录
[oracle@zhang bin]$ cd $ORACLE_HOME/oc4j/j2ee/isqlplus/application-deployments/isqlplus/
[oracle@zhang isqlplus]$ $ORACLE_HOME/jdk/bin/java -Djava.security.properties=$ORACLE_HOME/sqlplus/admin/iplus/provider -jar $ORACLE_HOME/oc4j/j2ee/home/jazn.jar -user "iSQL*Plus DBA/admin" -password welcome
-shell
JAZN:> adduser "iSQL*Plus DBA" sys oracle1731
JAZN:> listusers
iSQL*Plus DBA/admin
iSQL*Plus DBA/sys
JAZN:> grantrole webDba "iSQL*Plus DBA" sys
JAZN:> listusers sys
The specified realm does not exist in the system.
JAZN:> listusers "iSQL*Plus DBA"
admin
sys
JAZN:> exit
[oracle@zhang isqlplus]$ isqlplusctl stop && isqlplusctl start
iSQL*Plus 10.2.0.1.0
Copyright (c) 2003, 2005, Oracle. All rights reserved.
is_rac = false
Stopping iSQL*Plus ...
iSQL*Plus stopped.
iSQL*Plus 10.2.0.1.0
Copyright (c) 2003, 2005, Oracle. All rights reserved.
is_rac = false
httpPortNO=5560
port_status=false
Starting iSQL*Plus ...
iSQL*Plus started.
然后在浏览器中
[症状2]
[oracle@zhang isqlplus]$java -Djava.security.properties=$ORACLE_HOME/sqlplus/admin/iplus/provider -jar $ORACLE_HOME/oc4j/j2ee/home/jazn.jar -user "iSQL*Plus DBA/admin" -password welcome
-shell
Exception in thread "main" java.lang.NoClassDefFoundError: sun.misc.BASE64Decoder
等等。
最初以为是版本问题
[oracle@zhang db_1]$ java -version
java version "1.4.2"
gij (GNU libgcj) version 4.1.1 20061011 (Red Hat 4.1.1-30)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
[oracle@zhang db_1]$ $ORACLE_HOME/jdk/bin/java -Djava.security.properties=$ORACLE_HOME/sqlplus/admin/iplus/provider -jar $ORACLE_HOME/oc4j/j2ee/home/jazn.jar -user "iSQL*Plus DBA/admin" -password welcome
-shell
则没问题了。
如果软件自带则一定要用自带的组件,这样可以减少出错的机会。
Ps: 环境搭建除了多想,还要多尝试。问题总会解决的。
常用配置
1查看默认端口
[oracle@zhang db_1]$ view $ORACLE_HOME/install/portlist.ini
iSQL*Plus HTTP port number =5560
Enterprise Manager Console HTTP Port (MyData) = 1158
Enterprise Manager Agent Port (MyData) = 3938
2 配置访问,isqlplus端口
[oracle@zhang config]$ view $ORACLE_HOME/sysman/config/emoms.properties.emca
#oracle.sysman.db.isqlplusUrl=http://0:0:0:0:0:0:0:1:5561/isqlplus/dynamic
#oracle.sysman.db.isqlplusWebDBAUrl=http://0:0:0:0:0:0:0:1:5561/isqlplus/dba/dynamic
oracle.sysman.db.isqlplusUrl=http://zhang.sirius.com:5560/isqlplus/dynamic
oracle.sysman.db.isqlplusWebDBAUrl=http://zhang.sirius.com:5560/isqlplus/dba/dynamic
[oracle@zhang config]$ cd $ORACLE_HOME/oc4j/j2ee/isqlplus/config
[oracle@zhang config]$ view http-web-site.xml
<web-site
port="5560" display-name="OC4J Java HTTP Web Site">
注意跟$ORACLE_HOME/sysman/config/emoms.properties.emca保持一致
3查看isqlplus服务是否在
ps -eaf|grep Djava
参考网址