您的位置:首页 > 数据库 > Oracle

Rad Hat Enterprise Linux 5.5上安装oracle 11g R2 (2)

2013-07-18 20:19 555 查看
第二篇来了!!其实昨天第一篇文章中已经把安装的过程详细的写完了,只剩下自启动的设置了,这个也很简单,就留在这里和监听一块设置了。接下来,就是使用oralce之前的要做的工作:建立监听和自己的数据库。下面接着记录我建立自己的数据库的过程,我是使用图形界面来建库的,用命令的话,我这个水平还不够,慢慢学吧。回到正题,我使用dbca命令来调用oracle程序的图形界面建立数据库,当然也是使用oracle用户的身份来操作。[oracle@oraclehostadmin]$ dbca会出现如下图所示的界面:


这是欢迎界面,单击下一步:

选择创建数据库Create a Datebase,下一步:

下一步,如无特殊要求,选择第一项即可

设置数据库全局名和SID,两项参数设置成一致,应该还记得上篇中所描述的,在安装之前给oracle设置环境变量,其中有一条为export ORACLE_SID=dmb2 ,此处设置应该与这个值相同,设置好之后下一步:

这里可以设置告警通知和数据库备份(从安全和维护的角度讲,应该做设置),我没有什么要求,暂时先不设置,默认即可,下一步:

这步设置账户密码,为了方便(但不安全),选择所有账户使用同一个密码,即上图,选择第二项“use the same administrative password for all accounts”,设置好之后,下一步:

选择数据库文件的存储类型和路径,存储的类型选裸设备要比文件系统更可靠,更安全,但是要麻烦、繁琐、复杂的多,之前安装操作系统时要把这些都考虑到,提前建好裸设备所需的分区和逻辑卷。先做简单的吧,就默认选取filesystem,存储路径也选择默认的使用模版,下一步

一路默认,直到这一步,上图所示,是设置一些具体的参数,如内存、文件大小、数据库字符集等参数。设置数据库字符集,由于我之后还有另外的实验,需要设置字符集为ZHS16GBK。这里应该根据需要选择。当然,像之前的默认几步,如设置RecoveryArea ,都可以根据自己对数据库性能和安全性要求进行设置。其他参数没有特殊要求,就选取默认,下一步。后面如果对存储文件等无特别的要求和设置,这里就可以finish了。单击finish,会弹出一个配置的确认表,如无问题,点击OK。接下来就是创建数据的过程了,时间会有点长。下面是安装进度界面

静候安装完成吧。数据库建完之后,就该为之建立监听了。这项工作同样可以使用图形界面操作,或者直接修改监听文件,监听文件的路径是$ORACLE_HOME/network/admin/listener.ora,如果没有可以手动创建它。下面是我的主机上的oracle监听文件(红色部分是需要关注的地方),可做参考:
[oracle@oraclehost admin]$ cat listener.ora# listener.ora Network Configuration File:/u01/app/oracle/network/admin/listener.ora# Generated by Oracle configuration tools.SID_LIST_LISTENER= (SID_LIST= (SID_DESC= (GLOBAL_DBNAME=dmb2) (SID_NAME=dmb2) (ORACLE_HOME=/u01/app/oracle) ) )LISTENER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.13)(PORT = 1521)) )ADR_BASE_LISTENER = /u01/app[oracle@oraclehost admin]$这是修改文件的方法,下面介绍使用图形界面的办法,通过netca的命令调用oralce的图形界面(我记得,10g中好像是netmgr命令,尝试一下好像也可以):
[oracle@oraclehost database]$ netca接着会出现下面的界面,我们去选取监听配置“listener configuration”,下一步:


选择添加,原本我还没有创建过监听,所以如下图也只能选添加,下一步

这一步给监听命名,可以默认,如下图,单击下一步:

选择通讯协议,我们这里选择TCP/IP,如下图:

下一步就是选择监听端口,选择默认的1521,如果其他程序占用可以改成其他端口


再下一步询问是否继续添加监听,我选否,监听配置完毕。

到此,监听也建立完毕了。两种方法,根据个人习惯选择吧。个人觉得,还是直接修改文件更明了、直接。我比较倾向这个办法。下面该要启动数据库监听了。下面记录我启动监听的过程。监听的命令是lsnrctl,使用方法如下:usage:lsnrctl {start/status/stop}或者直接输入lsnrctl,会进入监听对话下,然后输入start/status/stop等命令进行操作,退出用exit。查看监听状态:[root@oraclehost ~]# su - oracle[oracle@oraclehost ~]$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 18-JUL-2013 17:18:12

Copyright (c) 1991, 2009, Oracle. All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.13)(PORT=1521)))TNS-12541: TNS:no listener TNS-12560: TNS:protocol adapter error TNS-00511: No listener Linux Error: 111: Connection refused[oracle@oraclehost ~]$ 发现出现错误,监听失败。那么我就查看错误出在那里,错误提示说是没有监听,那就是说监听没有启动,那就启动它:[oracle@oraclehost ~]$ lsnrctl startLSNRCTL for Linux: Version 11.2.0.1.0 - Production on 18-JUL-2013 17:34:23Copyright (c) 1991, 2009, Oracle. All rights reserved.Starting /u01/app/oracle/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 11.2.0.1.0 - ProductionSystem parameter file is /u01/app/oracle/network/admin/listener.oraLog messages written to /u01/app/diag/tnslsnr/oraclehost/listener/alert/log.xmlListening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.13)(PORT=1521)))Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.13)(PORT=1521)))STATUS of the LISTENER------------------------Alias LISTENERVersion TNSLSNR for Linux: Version 11.2.0.1.0 - ProductionStart Date 18-JUL-2013 17:34:23Uptime 0 days 0 hr. 0 min. 3 secTrace Level offSecurity ON: Local OS AuthenticationSNMP OFFListener Parameter File /u01/app/oracle/network/admin/listener.oraListener Log File /u01/app/diag/tnslsnr/oraclehost/listener/alert/log.xmlListening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.13)(PORT=1521)))Services Summary...Service "dmb2" has 1 instance(s). Instance "dmb2", status UNKNOWN, has 1 handler(s) for this service...The command completed successfully[oracle@oraclehost ~]$ 这下再去查看下监听的状态,我换了另外的方式:[oracle@oraclehost ~]$ lsnrctl

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 18-JUL-2013 17:35:38

Copyright (c) 1991, 2009, Oracle. All rights reserved.

Welcome to LSNRCTL, type "help" for information.

LSNRCTL> status Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.13)(PORT=1521)))STATUS of the LISTENER------------------------Alias LISTENERVersion TNSLSNR for Linux: Version 11.2.0.1.0 - ProductionStart Date 18-JUL-2013 17:34:23Uptime 0 days 0 hr. 1 min. 28 secTrace Level offSecurity ON: Local OS AuthenticationSNMP OFFListener Parameter File /u01/app/oracle/network/admin/listener.oraListener Log File /u01/app/diag/tnslsnr/oraclehost/listener/alert/log.xmlListening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.13)(PORT=1521)))Services Summary...Service "dmb2" has 1 instance(s). Instance "dmb2", status UNKNOWN, has 1 handler(s) for this service...The command completed successfullyLSNRCTL> LSNRCTL> LSNRCTL> exit[oracle@oraclehost ~]$ 我们也可以通过查看进程看监听进程是否已经起来:[oracle@oraclehost ~]$ ps -ef | grep tnslsnroracle 4997 1 0 17:34 ? 00:00:00 /u01/app/oracle/bin/tnslsnr LISTENER -inheritoracle 5017 4707 0 17:39 pts/2 00:00:00 grep tnslsnr[oracle@oraclehost ~]$ 我们知道了如何启动和停止监听,在这里说一下如何启动和停止oracle数据库。我们可以使用oracle自带的脚本dbstart和dbshut,也可以使用sqlplus这个工具。如何使用oracle自带的脚本呢?用oracle用户登录,这两个脚本在任何路径下都是可以执行的,因为我们在安装时,就已经把环境变量设置好了,脚本的位置是在$ORACLE_HOME/bin目录下。试一下吧![root@oraclehost ~]# su - oracle
[oracle@oraclehost ~]$ dbstartORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net ListenerUsage: /u01/app/oracle/bin/dbstart ORACLE_HOMEProcessing Database instance "dmb2": log file /u01/app/oracle/startup.log[oracle@oraclehost ~]$提示有错,无法启动监听,这个是没问题的,因为oracle的这个脚本里,对监听的路径ORACLE_HOME_LISTNER是没有设置的,上边已经讲了我们该如何去启动监听,先不去管它。来查看一下进程看数据库是否已经启动了:
[oracle@oraclehost ~]$ ps -ef | grep oraroot 3636 3607 0 18:58 ? 00:00:00 hald-addon-storage: polling /dev/hdcavahi 3940 1 0 19:01 ? 00:00:00 avahi-daemon: running [oraclehost.local]oracle 4064 1 0 19:01 ? 00:00:00 /u01/app/oracle/bin/tnslsnr LISTENER -inheritroot 4545 4515 0 19:04 pts/1 00:00:00 su - oracleoracle 4546 4545 0 19:04 pts/1 00:00:00 -bashoracle 4809 1 0 19:05 ? 00:00:00 ora_pmon_dmb2oracle 4811 1 0 19:05 ? 00:00:00 ora_vktm_dmb2oracle 4815 1 0 19:05 ? 00:00:00 ora_gen0_dmb2oracle 4817 1 0 19:05 ? 00:00:00 ora_diag_dmb2oracle 4819 1 0 19:05 ? 00:00:00 ora_dbrm_dmb2oracle 4821 1 0 19:05 ? 00:00:00 ora_psp0_dmb2oracle 4823 1 0 19:05 ? 00:00:00 ora_dia0_dmb2oracle 4825 1 0 19:05 ? 00:00:00 ora_mman_dmb2oracle 4827 1 0 19:05 ? 00:00:00 ora_dbw0_dmb2oracle 4829 1 0 19:05 ? 00:00:00 ora_lgwr_dmb2oracle 4831 1 0 19:05 ? 00:00:00 ora_ckpt_dmb2oracle 4833 1 0 19:05 ? 00:00:00 ora_smon_dmb2oracle 4835 1 0 19:05 ? 00:00:00 ora_reco_dmb2oracle 4837 1 0 19:05 ? 00:00:00 ora_mmon_dmb2oracle 4839 1 0 19:05 ? 00:00:00 ora_mmnl_dmb2oracle 4841 1 0 19:05 ? 00:00:00 ora_d000_dmb2oracle 4843 1 0 19:05 ? 00:00:00 ora_s000_dmb2oracle 4882 1 0 19:05 ? 00:00:00 ora_qmnc_dmb2oracle 4958 1 0 19:05 ? 00:00:00 ora_cjq0_dmb2oracle 4988 1 0 19:05 ? 00:00:00 ora_q000_dmb2oracle 4990 1 0 19:05 ? 00:00:00 ora_q001_dmb2oracle 5008 1 0 19:10 ? 00:00:00 ora_smco_dmb2oracle 5010 1 0 19:10 ? 00:00:00 ora_w000_dmb2oracle 5013 4546 3 19:11 pts/1 00:00:00 ps -eforacle 5014 4546 1 19:11 pts/1 00:00:00 grep ora[oracle@oraclehost ~]$ 我们看到,数据库已经成功起来了。关闭数据库用dbshut即可。我们也可以修改一下dbstart,找到监听路径设置并改成如下内容:ORACLE_HOME_LISTNER=$ORACLE_HOME //*把$ORACLE_HOME换成绝对路径*
例如,我的主机上$ORACLE_HOME是/u01/app/oracle,就应该修改成下面这样:ORACLE_HOME_LISTNER=/u01/app/oracle这样就实现执行dbstart一条命令就把数据库和监听一起都启动起来。还有一种启动数据库的方法是使用sqlplus,命令格式如下:startup [nomount|mount|open|force]shutdown [normal|transactional|immediate|abort]具体的参数解说这里就不赘述了,有兴趣的朋友可以网上搜一下,有很多讲解。下面试一下:
[oracle@oraclehost bin]$ sqlplus /nologSQL*Plus: Release 11.2.0.1.0 Production on Thu Jul 18 19:30:39 2013Copyright (c) 1982, 2009, Oracle. All rights reserved.SQL> conn / as sysdbaConnected.SQL> shutdown immediateDatabase closed.Database dismounted.ORACLE instance shut down.SQL> startupORACLE instance started.Total System Global Area 422670336 bytesFixed Size 1336960 bytesVariable Size 268437888 bytesDatabase Buffers 146800640 bytesRedo Buffers 6094848 bytesDatabase mounted.Database opened.SQL> SQL> exitDisconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing options[oracle@oraclehost bin]$ ps -ef |grep oraroot 3636 3607 0 18:58 ? 00:00:00 hald-addon-storage: polling /dev/hdcavahi 3940 1 0 19:01 ? 00:00:00 avahi-daemon: running [oraclehost.local]root 4545 4515 0 19:04 pts/1 00:00:00 su - oracleoracle 4546 4545 0 19:04 pts/1 00:00:00 -bashoracle 5165 1 0 19:16 ? 00:00:00 /u01/app/oracle/bin/tnslsnr LISTENER -inheritoracle 5537 1 0 19:31 ? 00:00:00 ora_pmon_dmb2oracle 5539 1 0 19:31 ? 00:00:00 ora_vktm_dmb2oracle 5543 1 0 19:31 ? 00:00:00 ora_gen0_dmb2oracle 5545 1 0 19:31 ? 00:00:00 ora_diag_dmb2oracle 5547 1 0 19:31 ? 00:00:00 ora_dbrm_dmb2oracle 5549 1 0 19:31 ? 00:00:00 ora_psp0_dmb2oracle 5551 1 0 19:31 ? 00:00:00 ora_dia0_dmb2oracle 5553 1 1 19:31 ? 00:00:00 ora_mman_dmb2oracle 5555 1 0 19:31 ? 00:00:00 ora_dbw0_dmb2oracle 5557 1 0 19:31 ? 00:00:00 ora_lgwr_dmb2oracle 5559 1 0 19:31 ? 00:00:00 ora_ckpt_dmb2oracle 5561 1 0 19:31 ? 00:00:00 ora_smon_dmb2oracle 5563 1 0 19:31 ? 00:00:00 ora_reco_dmb2oracle 5565 1 1 19:31 ? 00:00:00 ora_mmon_dmb2oracle 5567 1 0 19:31 ? 00:00:00 ora_mmnl_dmb2oracle 5569 1 0 19:32 ? 00:00:00 ora_d000_dmb2oracle 5571 1 0 19:32 ? 00:00:00 ora_s000_dmb2oracle 5610 1 0 19:32 ? 00:00:00 ora_qmnc_dmb2oracle 5622 1 1 19:32 ? 00:00:00 ora_cjq0_dmb2oracle 5624 1 1 19:32 ? 00:00:00 ora_q000_dmb2oracle 5626 1 0 19:32 ? 00:00:00 ora_q001_dmb2oracle 5627 4546 0 19:32 pts/1 00:00:00 ps -eforacle 5628 4546 0 19:32 pts/1 00:00:00 grep ora[oracle@oraclehost bin]$ 这样启动数据库和使用dbstart脚本效果是一样的,当然使用sqlplus也是要使用lsnrctl启动监听的。sqlplus暂时说到这吧,还有很多知识,我也只是知道一星半点。慢慢学吧,我相信毛爷爷的那句话:星星之火是可以燎原滴!知道了如何去启动数据库和监听,那么我们接下来就看看如何设置数据库的自启动吧。方法很多,比如编写脚本把oracle作为服务加到系统里设置自启动等等,这里就不说了。说说最简单的方法,就是使用oracle自带的启动脚本dbstart。看一看如何使用这个办法实现自启动。首先,要想使用dbstart,必须要修改/etc/oratab这个文件,我们看一下这个文件:
[oracle@oraclehost bin]$ cat /etc/oratab# This file is used by ORACLE utilities. It is created by root.sh# and updated by the Database Configuration Assistant when creating# a database.# A colon, ':', is used as the field terminator. A new line terminates# the entry. Lines beginning with a pound sign, '#', are comments.# Entries are of the form:# $ORACLE_SID:$ORACLE_HOME:<N|Y>:# The first and second fields are the system identifier and home# directory of the database respectively. The third filed indicates# to the dbstart utility that the database should , "Y", or should not,# "N", be brought up at system boot time.# Multiple entries with the same $ORACLE_SID are not allowed.dmb2:/u01/app/oracle:Y前边一堆注释,是在解释这个文件如何去用,像我的这个,把最后一行加粗部分的值改成你的SID和Y就行了。然后,我们要把dbstart添加到rc.local下面,这个得使用root账户修改,oracle用户是没有权限修改的。添加如下两行命令(粗体红色)即可:
[root@oraclehost bin]# cat /etc/rc.local #!/bin/sh# This script will be executed *after* all the other init scripts.# You can put your own initialization stuff in here if you don't# want to do the full Sys V style init stuff.

touch /var/lock/subsys/localsu - oracle -c 'lsnrctl start'su - oracle -c 'dbstart'当然,如果如前面所说的那样,你自行修改过dbstart脚本中的关于ORACLE_HOME_LISTNER的设置,那么在/etc/rc.local中就不要添加su - oracle -c 'lsnrctl start'了。设置完/etc/rc.local,我们就可以重启一下系统,测试一下,是否真的能够随系统而自动起来。这个方法我已经试过了,是没有问题的。讲到这里,这篇文章也就完成了,建库、建立监听和设置自启动都描述的很清楚了(自我感觉良好,脸皮比较厚)。如果我有荣幸,您能读到这篇拙作,有什么错误地方和疑问,请您留言,相互讨论,我们共同进步!

本文出自 “磨刀客” 博客,请务必保留此出处http://tianzhiwei.blog.51cto.com/5719302/1252240
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: