linux下 Oracle自动启动与停止

mac2022-06-30  67

linux下 Oracle自动启动与停止

 

1、 修改Oracle系统配置文件/etc/oratab/etc/oratab 格式为: SID:ORACLE_HOME:AUTO把AUTO域设置为Y(大写),只有这样,oracle 自带的dbstart和dbshut才能够发挥作用。我的为:ora9i:/home/oracle/ora/products/9.2.0:Y2、 编写服务脚本:如下#!/bin/bash##################FUNCTION############### AutoStart Oracle and listener# AutoStop Oracle and listener######################################## Created by ZhouYS 2003-11-26#

case "$1" instart)echo "Starting Oracle Databases ... "echo "-------------------------------------------------" >> /var/log/oracledate +" %T %a %D : Starting Oracle Databasee as part of system up." >> /var/log/oracleecho "-------------------------------------------------" >> /var/log/oraclesu - oracle -c "dbstart" >> /var/log/oracleecho "Done."echo "Starting Oracle Listeners ... "echo "-------------------------------------------------" >> /var/log/oracledate +" %T %a %D : Starting Oracle Listeners as part of system up." >> /var/log/oracleecho "-------------------------------------------------" >> /var/log/oraclesu - oracle -c "lsnrctl start" >> /var/log/oracleecho "Done."echo ""echo "-------------------------------------------------" >> /var/log/oracledate +" %T %a %D : Finished." >> /var/log/oracleecho "-------------------------------------------------" >> /var/log/oracletouch /var/lock/subsys/oracle

;;stop)echo "Stoping Oracle Listeners ... "echo "-------------------------------------------------" >> /var/log/oracledate +" %T %a %D : Stoping Oracle Listener as part of system down." >> /var/log/oracleecho "-------------------------------------------------" >> /var/log/oraclesu - oracle -c "lsnrctl stop" >> /var/log/oracleecho "Done."rm -f /var/lock/subsys/oracleecho "Stoping Oracle Databases ... "echo "-------------------------------------------------" >> /var/log/oracledate +" %T %a %D : Stoping Oracle Databases as part of system down." >> /var/log/oracleecho "-------------------------------------------------" >> /var/log/oraclesu - oracle -c "dbshut" >>/var/log/oracleecho "Done."echo ""echo "-------------------------------------------------" >> /var/log/oracledate +" %T %a %D : Finished." >> /var/log/oracleecho "-------------------------------------------------" >> /var/log/oracle

;;restart)$0 stop$0 start

;;*)echo "Usage: oracle "exit 1esac

将脚本命名为oracle,保存在/etc/rc.d/init.d下改变文件属性:chmod 755 oracle

注意:在windows下编辑此文件时有DOS格式字符导致在linux下不能够正常运行,建议用gedit 或用 vi编辑

3、建立服务连接:系统启动时启动数据库,我们需要以下连结∶--------------------------------------------------------------------------------$ ln -s ../init.d/oracle /etc/rc.d/rc2.d/S99oracle$ ln -s ../init.d/oracle /etc/rc.d/rc3.d/S99oracle$ ln -s ../init.d/oracle /etc/rc.d/rc5.d/S99oracle #rc4.d unused

--------------------------------------------------------------------------------

要在重新启动时停止数据库,我们需要以下连结∶

--------------------------------------------------------------------------------

$ ln -s ../init.d/oracle /etc/rc.d/rc0.d/K01oracle # 停止$ ln -s ../init.d/oracle /etc/rc.d/rc6.d/K01oracle # 重新启动

vnc server配置1。使用root用户启动系统的vncserver服务;#service vncserver start2。然后切换到登陆用户下面,我这里假设要使用oracle系统帐户进行远程登陆#su - oracle3。使用oracle用户输入以下命令:$vncserver如果是第一次运行,则系统会出现提示信息,提示你输入密码,这是通过终端进行登陆时需要输入的;另外,还有一个数字信息,这个也是需要在终端登陆时输入的,即冒号后面跟着的一个数字,如:1  ,:2等等,需要记住;4。在windows客户端使用vncviewer,输入如下:xxx.xxx.xxx.xxx:1 或者xxx.xxx.xxx.xxx:2等,后面的数字需要和服务器端的对应才行;xxx是你服务器的ip地址了;[linux as 5] 软件要求其他所需程序包的版本(或更高版本):        gcc-2.96-124        make-3.79        binutils-2.11        openmotif-2.1.30-11        glibc-2.2.4-31要查看系统上安装了这些程序包的哪些版本,运行以下命令:rpm -q gcc make binutils openmotif glibc setarchp4198954_21_linux.zip 在运行 runInstaller 之前打.rpm -ivh compat-oracle-rhel4-1.0-5.i386.rpm     (p4198954_21_linux.zip) (不打PATH也可以)安装 libaio-0.3.102-1.i386.rpm 和libaio-devel0.3.102-1.i386.rpm  在Red Hat Enterprise Linux 介质的第三张 CD  以 root 用户身份运行以下命令:rpm -ivh /mnt/cdrom/RedHat/RPMS/ libaio-0.3.102-1.i386.rpm创建数据库安装的准备工作:1,创建user/group;groupadd dbagroupadd oinstalluseradd oracle -g oinstall -G dbapasswd oracle如果nobody用户不存在(id nobody命令查看),则创建:useradd nobody2,建立oracle安装文件夹(sample);mkdir -p /opt/oracle/10.2.0.1 /opt/oracle/oradata /opt/oracle/archivelogchown -R oracle.oinstall  /opt/oraclechmod 755 -R /opt/oracle2, 配置环境变量;要使用 Oracle 产品,应该或必须设置几个环境变量。如果您在同一服务器上安装了多个 Oracle 产品或数据库,则 ORACLE_HOME、ORACLE_SID 和 PATH 变量可能会更改。ORACLE_BASE 变量不应更改,并可以在需要时在您的登录配置文件中设置它。Oracle 提供了一个称作 oraenv 的实用程序来设置其他变量。对于数据库服务器,建议设置以下环境变量:使用root用户: vi /home/oracle/.bash_profile以下是配置文件的内容ORACLE_BASE=/opt/oracleORACLE_HOME=/opt/oracle/10.2.0.1ORACLE_SID=ge01PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH     TNS_ADMIN=$ORACLE_HOME/network/adminNLS_LANG=AMERICAN_AMERICA.ZHS16GBKLANG=AMERICAN_AMERICA.ZHS16GBKexport PATH ORACLE_BASE ORACLE_HOME ORACLE_SID  TNS_ADMIN NLS_LANG LANG    4, 设置系统参数; Oracle 数据库 10g 需要以下所示的内核参数设置。 一般情况下可以设置最大共享内存为物理内存的一半,如果物理内存是 2G,则可以设置最大共享内存为 1073741824,如上;如物理内存是 1G,则可以设置最大共享内存为 512 * 1024 * 1024 = 536870912;以此类推。在redhat上最大共享内存不建议超过  4*1024*1024*1024-1=4294967295切换到root用户:su root 修改vi /etc/sysctl.conf, 添加:kernel.shmmax = 2147483648kernel.shmmni = 4096kernel.shmall = 2097152kernel.sem = 250 32000 100 128fs.file-max = 65536net.ipv4.ip_local_port_range = 1024 65000net.core.rmem_default=262144net.core.rmem_max=262144net.core.wmem_default=262144net.core.wmem_max=262144修改后运行"/sbin/sysctl -p"命令使得内核改变立即生效; B) 设置oracle对文件的要求:编辑文件:vi /etc/security/limits.conf 加入以下语句:oracle           soft    nproc           2047oracle           hard    nproc           16384oracle           soft    nofile          1024oracle           hard    nofile          65536编辑文件:vi /etc/pam.d/login 加入以下语句(可能应该加在最后一条规则之前):session    required     /lib/security/pam_limits.so设置oraInst.loc文件:[root@enterprice64 ~]#vi /etc/oraInst.loc inventory_loc=/opt/oracle/oraInventoryinst_group=oinstall[root@enterprice64 ~]#chown oracle.oinstall /etc/oraInst.loc确保/etc/oraInst.loc中包含上面的信息,且Oracle包含访问权限。5.解压缩Oracle10G的安装文件 : 使用Oracle用户登陆:su - oracle在/home/oracle 上传和解压缩10201_database_linux32.zip:unzip 10201_database_linux32 6.开始安装oracle L i n u x 命令行环境下安装(也可以在图形界面下安装)使用Oracle用户登陆:su - oracle根据希望安装的数据库版本类型选择Silent安装模式的response_file文件的类似,比如:enterprise.rsp、standard.rsp还是custom.rsp。这里选择enterpise.rsp类型,安装盘中的database/response目录下对应的response文件拷贝出来,根据文件里面的提示对输入值进行修改。比如这个例子中对如下的参数进行设置:UNIX_GROUP_NAME="oinstall"FROM_LOCATION="/home/oracle/database/stage/products.xml"ORACLE_BASE="/opt/oracle"ORACLE_HOME="/opt/oracle/10.2.0.1"ORACLE_HOME_NAME="OraDbHome1"SHOW_INSTALL_PROGRESS_PAGE= trueSHOW_END_OF_INSTALL_MSGS= trueCOMPONENT_LANGUAGES=s_nameForDBAGrp= "dba"s_nameForOPERGrp="dba"INSTALL_TYPE="EE"n_configurationOption=3RESTART_SYSTEM=falseRESTART_REMOTE_SYSTEM=false注意,所有的字符串需要放在双引号中,注意大小写。数字和布尔变量直接写就可以。由于这里没有选择建立数据库而只安装软件,因此没有设置数据库相关的配置参数。[oracle@enterprice64 data]$ chmod 700 enterprise.rsp面可以开始SILENT安装了:注意,响应文件需要使用绝对路径。cd /home/oracle/database[oracle@enterprice64 database]$ ./runInstaller -silent -responseFile /home/oracle/enterprise.rsp用root执行如下脚本:/opt/oracle/10.2.0.1/oraInventory/orainstRoot.sh/opt/oracle/10.2.0.1/root.sh不过这里Oracle存在一个bug,在root.sh脚本中,自动将OUI_SILENT参数设置为TRUE,而后的检查中,如果发现这个值为TRUE,那么这个脚本运行会自动退出了。这里需要手工将其修改为false,最后使用root执行一下$ORACLE_HOME/root.sh脚本就可以了。根据提示按 Enter 就可以了。这样就在字符下成功安装了。通过SILENT模式安装数据库之后,下面继续使用SILENT模式进行数据库的建立,仍然是拷贝安装目录下的/home/oracle/database/response/dbca.rsp到安装目录,并进行编译,根据数据库建立方式的不同编辑不同的数据库库选项。比如在本次安装过程中设置了下列参数:RESPONSEFILE_VERSION = "10.0.0"OPERATION_TYPE = "createDatabase"GDBNAME = "ge01"SID = "ge01"TEMPLATENAME = "New_Database.dbt"SYSPASSWORD = "georacle"SYSTEMPASSWORD = "georacle"DATAFILEDESTINATION ="/opt/oracle/oradata/"RECOVERYAREADESTINATION="/opt/oracle/flash_recovery_area"STORAGETYPE=FSCHARACTERSET = "ZHS16GBK"MEMORYPERCENTAGE = "40"SCRIPTDESTINATION ="/opt/oracle/admin/ora10g/scripts"EMCONFIGURATION=”LOCAL”SYSMANPASSWORD = "georacle"DBSNMPPASSWORD = "georacle"其中最后1项不是必须的,这个的目的是在建立数据库的同时生成脚本。下面就可以开始SILENT模式的数据库创建了:[oracle@enterprice64 database]$ dbca -silent -responseFile /home/oracle/dbca.rsp用root执行如下脚本:/opt/oracle/10.2.0.1/oraInventory/orainstRoot.sh最后可以利用netca来SILENT方式设置网络部分,同样的方法设置netca.rsp:RESPONSEFILE_VERSION="11.1"CREATE_TYPE= "CUSTOM"SHOW_GUI=falseLOG_FILE=""/opt/oracle/10.2.0.1/network/tools/log/netca.log""INSTALLED_COMPONENTS=INSTALL_TYPE=""typical""LISTENER_NUMBER=1LISTENER_NAMES=LISTENER_PROTOCOLS=LISTENER_START=""LISTENER""NAMING_METHODS=设置的参数包括上面的部分,然后就可以使用netca启动silent配置:[oracle@enterprice64 database]$ netca /silent /responsefile  /home/oracle/netca.rsp----------------------------------------------------------------静默卸载Oracle数据库ge01dbca -silent -deleteDatabase -sourceDB    <source database sid> [-sysDBAUserName     <user name  with SYSDBA privileges> -sysDBAPassword <password for sysDBAUserName user name>]例如:dbca -silent -deleteDatabase -sourceDB ge01 -sysDBAUserName sys -sysDBAPassword georacle静默卸载Oracle数据库软件 执行以下命令静默卸载Oracle数据库软件$./runInstaller -silent -deinstall -removeallfiles -removeAllPatches "REMOVE_HOMES=" -responseFile ~/enterprise.rsp---------------------------------------------------------------------------------------(一)图形界面开始安装:1.以oracle用户登录X-WINDOWS系统,进行Oracle的安装(远程安装需打开XDM):[ linux 5}export DISPLAY=cd /opt/database (或者你解压缩安装程序包的目录)./runInstaller 或者./runInstaller   -ignoreSysPrereqs过一会儿就会出现Oracle的X安装界面注意:1、选择advance install2、数据库home设置为/opt/oracle/10.2.0.13、数据库全局名称设置为ge014、数据库字符集选Simplified Chinese ZHS16GBK2.其他用默认设置!注意:安装过程中会提示以root用户登陆执行一些脚本 ,执行后再按“ok”按钮继续安装。3、登陆并启动数据库的操作。su - oracle[oracle@oracle oracle]$ lsnrctl start[oracle@oracle oracle]$ sqlplus /nologSQL*Plus: Release 9.2.0.0 - Production on Sat Mar 12 22:58:53 2005Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.SQL> connect / as sysdbaConnected.SQL> startup; 启动数据库ORACLE instance started.Total System Global Area 236000356 bytesFixed Size 451684 bytesVariable Size 201326592 bytesDatabase Buffers 33554432 bytesRedo Buffers 667648 bytesDatabase mounted.Database opened.SQL> shutdown immediate ;关闭数据库 (OR "dbshut" command)Database closed.Database dismounted.ORACLE instance shut down.4, dbstart脚本修改数据库创建完成后,修改vi /etc/oratab,把ge01:/opt/oracle/10.2.0.1:N那一行最后的N改成Y,修改vi /opt/oracle/10.2.0.1/bin/dbstart中ORACLE_HOME_LISTNER=/opt/oracle/10.2.0.1然后执行dbstart启动数据库数据库可能无法启动,报告Can’t find init file …的错误,需要复制一个初始化文件:cp /opt/oracle/admin/ge01/pfile/init.ora.* /opt/oracle/10.2.0.1/dbs/initge01.ora重新执行dbstart就可以了。可以执行dbshut 停止ORACLEvi /etc/rc.local 加入下面一行 起动ORACLE ON system bootsu - oracle -c "lsnrctl start"su - oracle -c "dbstart" 5. 为了root方便管理,可以写一个启动脚本vi /etc/init.d/ora10g #!/bin/bash## chkconfig: 2345 91 19# description: starts the oracle listener and instance status() {    pid=`ps -ef | grep ora_pmon | grep -v grep | awk '{print $8}'`    if [ "X$pid" = "X" ]    then        echo "oracle10g is not running."        exit 1    else        echo "oracle10g is running."        exit 0    fi}case "$1" in    start)        #startup the listener and instance        echo -n "oracle begin to startup: "        su - oracle -c "lsnrctl start"        su - oracle -c dbstart        echo "oracle10g started"        ;;    stop)        # stop listener, apache and database        echo -n "oracle begin to shutdown:"        su - oracle -c "lsnrctl stop"        su - oracle -c dbshut        echo "oracle10g shutdowned"        ;;    reload|restart)        $0 stop        $0 start        ;;    'status')        status        ;;     *)        echo "Usage: ora10g [start|stop|reload|restart]"        exit 1esacexit 0 存为ora10g后,然后chmod a+x /etc/init.d/ora10g即可在以后以root身份运行/etc/rc.d/init.d/ora10g start |stop 来管oracle的启动和停止了。如果要将这个脚本加入到系统中使其可开机运行,那么要运行以下命令:chkconfig --level 35 ora10g on 6, 关于数据库删除重新安装的问题:1 . 去除 /usr/local/bin 目录 下的 coraenv dbhome oraenv2 . 去除 /etc/oratab , /etc/oracle3 . 去掉安装 目录 /opt/oracle 目录下的 product admin oradata oralnventor 目录 。# userdel -r oracle# groupdel dba oinstallrm -rf /tmp/ora*rm -rf /opt/oracle/*rm -rf /opt/ORCLfmaprm -f /etc/ora*rm -f /usr/local/bin/oraenvrm -f /usr/local/bin/coraenvrm -f /usr/local/bin/dbhome7.修改Oracle10g数据库字符集SQL> connect sys/oracle as sysdbaSQL> startup mountSQL> alter session set sql_trace=true;Session altered.SQL> alter system enable restricted session;System altered.SQL> alter system set job_queue_processes=0;System altered.SQL> alter system set aq_tm_processes=0;System altered.SQL> alter database open;Database altered.SQL> set linesize 120;SQL> alter database character set zhs16gbk;alter database character set zhs16gbk*ERROR at line 1:ORA-12712: new character set must be a superset of old character setSQL> ALTER DATABASE character set INTERNAL_USE zhs16gbk; # 使用INTERNAL_USE可以跳过超集的检查,ALTER DATABASE character set INTERNAL_USE Database altered.SQL> shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down.SQL> STARTUPSQL> select name,value$ from props$ where name like '%NLS%';NLS_CHARACTERSETZHS16GBK8. oracle database异机备份脚本su - oraclemkdir /home/oracle/dbbackup(1)vi /home/oracle/dbbackup/bachupdb.sh#!/bin/bash#As oracle user, chmod 744 /home/oracle/dbbackup/DBbackuprecover.sh#crontab -e 35 1 * * * /home/oracle/dbbackup/DBbackuprecover.sh >/dev/null 2>&1#@tip: modify local database's home directory#@tip <ip> is remote database ip addressexport ORACLE_HOME=/opt/oracle/10.2.0.1export PATH=$ORACLE_HOME/bin:$PATH:export NLS_LANG=AMERICAN_AMERICA.zhs16gbkexport LANG=AMERICAN_AMERICA.ZHS16GBKexport ORACLE_SID=ge01dmpfile=gedb_`date +%F`.dmplogfile=gedb_`date +%F`.logrestoredblog=restoredb_`date +%F`.logWORK_DIR=~/dbbackupcd $WORK_DIRexp USERID=gedb/gegedb@<ip>/ge01 file=$dmpfile log=$logfile  owner=gedbif [ 0 -eq "$?" ]     then         sqlplus / as sysdba @user.sql          imp USERID=gedb/gegedb file=$dmpfile log=./$restoredblog fromuser=gedb  touser=gedb         find  ./*.dmp -type f -mtime +7 -exec rm {} ;         find  ./*.log -type f -mtime +30 -exec rm {} ;         exit 0      else         echo "backup error,quit!" > $logfile         exit 1fi #@tip ip地址修改为要备份的oracle的主机地址exp USERID=gedb/gedb@10.248.1.5/ge01 file=$dmpfile log=$logfile  owner=gedb direct=y  (2)更改脚本权限:     chown oracle.oinstall backupdb.sh     chmod 744 backupdb.sh         (3)以oracle user role    crontab -e    35 2 * * * /home/oracle/dbbackup/backupdb.sh 9. restore oracle backup(1) 先创建gedb用户和授权:  su - oracle  sqlplus / as sysdba @createUser.sql (2)imp USERID=gedb/gegedb file=110.dmp fromuser=gedb touser=gedb  如果要第二次IMP操作要先删除用户gedb,再新建用户gedb,这样imp才不会出错.  DROP USER gedb CASCADE;  CREATE USER gedb  IDENTIFIED BY gegedb;  GRANT UNLIMITED TABLESPACE TO gedb;  GRANT CONNECT TO gedb;  GRANT RESOURCE TO gedb;  GRANT DBA TO gedb; 10. oracle优化 SQL> alter system set "_kgl_large_heap_warning_threshold"=8388608 scope=spfile ; (ONLY FOR 10.2.0.1.0 )SQL> shutdown immediateSQL> startup    11.BUG FIX(1)10g EM乱码之快速解决[oracle@danaly ~]$ cd $ORACLE_HOME/jdk/jre/lib[oracle@danaly lib]$ ls font*zh_CN*font.properties.zh_CN.Redhat font.properties.zh_CN.Redhat2.1font.properties.zh_CN.Sun font.properties.zh_CN_UTF8.Sun [oracle@danaly lib]$ cd $ORACLE_HOME/jre/1.4.2/lib/[oracle@danaly lib]$ ls font*zh_CN*font.properties.zh_CN.Redhat font.properties.zh_CN.Redhat2.1font.properties.zh_CN.Sun font.properties.zh_CN_UTF8.Sun 我们只要用合适的中文字符集文件替换缺省文件即可,我选择使用font.properties.zh_CN.Redhat来替换缺省字体定义文件: [oracle@danaly lib]$ cp font.properties.zh_CN.Redhat font.properties 替换之后需要清理一下Cache,重启EM即可. Cache路径通常位于: $ORACLE_HOME/oc4j/j2ee/oc4j_applications/applications/em/em/cabo/images/cache/zhs 清除所有gif文件即可.然后重新启动EM(2)10201上一个严重的BUG环境 10201,AIX53但据ORACLE解释,在任何操作系统版本都有此问题。现象:监听器启动后,隔一段时间(长短不定),就会出现无法连接: 若是用10201版本的SQLPLUS,则会出现 NO LISTENER。9207 版本的SQLPLUS,则会出现:没反应,HANG住。原因:10201 版本上的一个BUG:4518443。其会自动创建一个子监听器,当出现此情况时,监听器将会挂起。/opt/oracle/product/10g/network/log/listener.log有如下语句:WARNING: Subscription for node down event still pending检查是否真因为此BUG造成此现象:$ ps -ef | grep tnslsnrora10g 8909 1 0 Sep 15 ? 902:44 /u05/10GHOME/DBHOME/bin/tnslsnr sales -inheritora10g 22685 8909 0 14:19:23 ? 0:00 /u05/10GHOME/DBHOME/bin/tnslsnr sales –inherit正常情况只有一个监听器,而此BUG则会出现两个监听器。解决方法:打补丁4518443或者在listener.ora 文件里加入:SUBSCRIBE_FOR_NODE_DOWN_EVENT_<listener_name>=OFF其中,<listener_name> 是数据库的监听器的名称。如:默认情况下,监听器名为:LISTENER 。则语句就是:SUBSCRIBE_FOR_NODE_DOWN_EVENT_LISTENER=OFF同时:cd $ORACLE_HOME/opmn/confmv ons.config ons.config.orig重启监听程序:lsnrctl stoplncrctl start posted on 2012-05-05 07:32  蓝红石 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/liuweihua/archive/2012/05/05/2484442.html

最新回复(0)