免费注册 查看新帖 |

Chinaunix

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

如果开机自动启动oracle,环境为solaris10 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-06-01 16:46 |只看该作者 |倒序浏览
我的机器是sun 445,4G内存,4×72G硬盘,系统环境安装的是solaris10,oracle是8.1.7
一、建立一个oracle用户,属于dba组
   我一般是这样启动(原来可以直接运行dbstart,现在不知道新安装的这个机器不行)
                   #su - oracle
                            $lsnrctl start
                            $lsnrctl svrmgrl
                            SVRMGR> connect internal
                            SVRMGR>startup
我的问题,如何在solaris启动,机器自动运行,能直接运行oracle?
各位能给个具体配置说明吗?

论坛徽章:
2
双鱼座
日期:2014-02-23 12:10:03操作系统版块每日发帖之星
日期:2015-12-17 06:20:00
2 [报告]
发表于 2007-06-01 16:51 |只看该作者
#!/bin/sh


case "$1" in
start)

        # start tsnlisnter
        echo "start tsnlisnter"
                su - oracle -c "lsnrctl start"

        # start database
        echo "Start oracle  database instance"
        su - oracle -c "echo \"
                        CONN SYS/PASSWORD AS SYSDBA
                        STARTUP
                        exit \"|sqlplus /NOLOG"

        # start enterprise manager
        echo " Start Emterprise Manager"
        su -oracle  -c "emctl start dbconsole"

        # start isqlplus
        echo "Start isqlplus"
        su - oracle  -c "isqlplusctl start"

        ;;
stop)
        # shutdown database
        echo "Shutdown oracle  database instance"
        su - oracle  -c "echo \"
                        CONN SYS/PASSWORD AS SYSDBA
                        SHUTDOWN immediate
                        exit \"|sqlplus /NOLOG"

        # stop tsnlisnter
        echo "Stop tsnlisnter"
                su -oracle  -c "lsnrctl stop"

        # stop enterprise manager
        echo " Stop Emterprise Manager"
        su -oracle  -c "emctl stop dbconsole"

        # stop isqlplus
        echo "Stop isqlplus"
        su - oracle -c "isqlplusctl stop"

        ;;
*)
        echo "Usage: $0 { start | stop }"
        exit 1
        ;;
esac
exit 0


save as /etc/init.d/oracle10g and then
#ln [-s] /etc/init.d/oracle10g  /etc/rc2.d/S99oracle10g

#ln [-s] /etc/init.d/oracle10g /etc/rc0.d/K00oracle10g

论坛徽章:
0
3 [报告]
发表于 2007-06-01 17:36 |只看该作者
1、编辑/var/opt/oracle/oratab,允许Oracle实例自动启动
2、编辑$ORACLE_HOME/bin/dbstart,将LISTENER一句改为真实目录(如果是Oracle 10,不需要启动listener)
3、cat /var/svc/manifest/application/oracle/database,application/oracle不是必须的,可根据实际情况进行调整
  1. <?xml version="1.0"?>
  2. <!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">

  3. <service_bundle type='manifest' name='oracle_database'>

  4. <service
  5.         name='application/oracle/database'
  6.         type='service'
  7.         version='1'>

  8.         <dependency
  9.             name='filesystem_minimal'
  10.             grouping='require_all'
  11.             restart_on='none'
  12.             type='service'>
  13.                 <service_fmri value='svc:/system/filesystem/minimal' />
  14.         </dependency>

  15.         <dependency
  16.             name='loopback'
  17.             grouping='require_any'
  18.             restart_on='error'
  19.             type='service'>
  20.                 <service_fmri value='svc:/network/loopback' />
  21.         </dependency>

  22.         <dependency
  23.             name='network'
  24.             grouping='optional_all'
  25.             restart_on='error'
  26.             type='service'>
  27.                 <service_fmri value='svc:/milestone/network' />
  28.                 <service_fmri value='svc:/milestone/multi-user-server' />
  29.         </dependency>

  30.         <exec_method
  31.             type='method'
  32.             name='stop'
  33.             exec='/lib/svc/method/database stop'
  34.             timeout_seconds='60' >
  35.         </exec_method>

  36.         <instance name='default' enabled='false' >

  37.                 <exec_method
  38.                     type='method'
  39.                     name='start'
  40.                     exec='/lib/svc/method/database start'
  41.                     timeout_seconds='60' >
  42.                 </exec_method>

  43.         </instance>

  44.         <stability value='Unstable' />

  45.         <template>
  46.                 <common_name>
  47.                         <loctext xml:lang='C'>
  48.                                 Oracle Database
  49.                         </loctext>
  50.                 </common_name>
  51.         </template>

  52. </service>

  53. </service_bundle>
复制代码

文件中的timeout时间需要根据自己的数据库进行调整,时间太小可能会出问题
4、cat /lib/svc/method/databae
  1. #!/sbin/sh

  2. isstart=`ps -ef | grep oracle | wc -l`
  3. ORACLE_HOME=/oracle/product/10g

  4. case "$1" in
  5. 'start')
  6.         su - oracle -c "$ORACLE_HOME/bin/dbstart > /dev/null 2>&1"
  7.         ;;

  8. 'stop')
  9.         su - oracle -c "$ORACLE_HOME/bin/dbshut > /dev/null 2>&1"
  10.         ;;
  11. *)
  12.         echo "Usage:$0 start | stop | status"
  13.         ;;

  14. esac
  15. exit 0
复制代码

5、使用svccfg命令进行import,然后svcadm -v enable oracle/database

6、非10g版本需要启动listener,方法与3、4、5上相同

[ 本帖最后由 jinijxta 于 2007-6-1 17:40 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2007-06-01 21:32 |只看该作者
EastSpider and jinijxta, thanks for sharing your scripts.

A question for jinijxta, if Solaris SMF has control on the Oracle database,
it will try to start the database when the database is down, right?

论坛徽章:
0
5 [报告]
发表于 2007-06-01 23:49 |只看该作者
如果timeout_seconds设置过小,SMF会使得Oracle频繁启停,具体原因没有查过。估计是SMF在超时后发现启动不成功就停止服务,停止后又进行启动造成的,我一般设置的超时时间是240秒。在method/database文件中isstart变量未用,可用来检查oracle是否己启动,isstart中最好是改为isstart=`ps -ef | grep ora_ | wc -l`,否则以oracle用户登录时会误判,然后检查isstart的值>5就认为oracle己启动。

论坛徽章:
0
6 [报告]
发表于 2007-06-02 01:10 |只看该作者
Thanks for your prompt reply, jinijxta.

240 sec. is a long time for a production DB.
That's why I did not put my prod. DB under the control of SMF.

Now the $ORACLE_HOME/bin/dbstart contains three operations:
1. start the listener
2. start the DB
3. start ASM

If you only want to stop the DB or ASM to do some maintenance,
the SMF will give you trouble, I guess.

论坛徽章:
0
7 [报告]
发表于 2007-06-02 13:59 |只看该作者
我的生产系统是Solaris 8上运行的Oracle 9iR2,10g只是为升级作准备,在VMware里面测试的。具体时间应该可以调整。如果要将listener、database、asm分开,应该能办到。
也就是建立3个服务,分别是:
oracle/listener,使用$ORACLE_HOME/bin/listenerctl来控制启停
oracle/database,这个要自己写一个脚本,或者copy dbstart改改也没问题
oracle/asmcontrol,使用$ORACLE_HOME/bin/crsctl来控制启停
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP