代码改变世界

启动Oracle 10g

2009-08-11 16:43  hyddd  阅读(4801)  评论(0编辑  收藏  举报

一.引言

    在上一篇《在CentOS5.3上安装Oracle 10g总结文档》中,我们成功地把Oracle 10g装上了,那么接下来的问题便是:如何启动Oracle数据库。

二.启动Oracle 10g

1.设置Oracle环境变量

    成功安装Oracle后,安装程序会自动把帮你设置相关的环境变量,但它并没有把这些信息写入.bash_profile文件,所以当机器重启后,这些环境变量便会被清空掉。为了重启后不用重新设置这些烦人的环境变量,我们决定把这些信息写入.bash_profile。

(1)开打.bash_profile文件

vim /home/oracle/.bash_profile

(2)设置环境变量

    由于安装目录各异,所以大家要根据实际情况调整一下值。在.bash_profile文件的最后加入以下内容:

export ORACLE_BASE=/u01/app/oracle
export ORACLE_SID=orcl
export ORACLE_HOME=$ORACLE_BASE/product/10.1.0/db_1
export PATH=$PATH:$ORACLE_HOME/bin

2.启动Oracle数据库

(1)登陆SQLPLUS

以Oracle身份登录后,启动并登陆SQLPLUS。

[oracle@vmlincn80ce5 admin]$ sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on Sun Aug 16 14:41:27 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.

SQL> conn sys/youpassword as sysdba
Connected to an idle instance.
SQL>

sys:一个Oracle默认账号。

yourpassword:你在安装Oracle时设置的密码。

(2)启动Oracle数据库

以sysdba的身份登陆SQLPLUS后,我们开始启动数据库实例。

SQL> startup
ORACLE instance started.

Total System Global Area 188743680 bytes
Fixed Size 778036 bytes
Variable Size 162275532 bytes
Database Buffers 25165824 bytes
Redo Buffers 524288 bytes
Database mounted.
Database opened.
SQL> exit

startup:启动数据库实例。因为之前我们设置了这样一个环境变量:ORACLE_SID=orcl ,所以这里启动数据库是:orcl。

exit:数据库实例启动完成后,退出SQLPLUS。

至此,数据库实例启动完成!接下来我简单介绍一下Oracle数据库实例启动流程:


整个流程大概可以分为3个部分,分别对应startup的3个参数:nomount,mount,open。

【1】加载spfile$ORACLE_SID.ora/init$ORACLE_SID.ora文件

    这两个文件在$ORACLE_HOME/dbs/目录下,他们的作用非常重要,因为里面记录很多重要的配置信息。一般Oracle会先加载spfile$ORACLE_SID.ora文件,当spfile$ORACLE_SID.ora文件不存在时,加载init$ORACLE_SID.ora文件,如果两个文件都不存在才报错。

    init$ORACLE_SID.ora是文本文件,spfile$ORACLE_SID.ora是二进制文件,在安装完成后,安装程序会用init$ORACLE_SID.ora生成spfile$ORACLE_SID.ora文件,当然,我们可以手工生成spfile:

SQL> create spfile from pfile;

也可以通过spfile生成pfile:

SQL> create pfile from spfile;

由于spfile$ORACLE_SID.ora是二进制文件,如果需要修改启动配置,可以通过修改pfile配置后重新生成spfile文件,因为直接修改二进制文件很容易出错。

    这种状态只启动数据库实例,但不打开数据库,在你希望创建一个新的数据库时使用,或者在你需要这样的时候使用!

    nomount参数使用实例:

SQL> startup nomount

【2】加载Control及数据文件

    Control文件包括control01.ctl ,control02.ctl ,control03.ctl这三个文件,文件在/data1/oradata/orcl目录下。

    这种状态和(3)的区别是,虽然加载了数据文件,但你还不能操作里面的数据。mount一般在进行数据库更名的时候采用

    mount参数使用实例:

SQL> alter database mount

【3】数据文件可读写

    在这种状态下,可以访问数据库中的数据了。

    open参数使用实例:

SQL> alter database open

如果startup不带参数,相当于执行以下3个命令:

SQL> startup nomount
SQL> alter database mount
SQL> alter database open

(3)开启监听器

    现在虽然是启动数据库成功了,但如果要其他机器上也能访问本地的数据库,则需要开启监听器。

【1】修改监听器配置

    监听器主要的配置文件是:$ORACLE_HOME/network/admin/listener.ora。我的listener.ora配置如下:

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /data1/oracle)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /data1/oracle)
(SID_NAME = orcl)
)
)

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST=10.20.212.255)(PORT = 1521))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
)

【2】开启监听器

lsnrctl start

    至此,我们完成了对监听器的开启。

【3】用PLSQL Developer测试连接数据库

    接下来,我们可以用PLSQL Developer测试一下,看数据库是否真的能连上。

    在远程的oracle_client上找到tnsnames.ora这个文件,并在文件中加上相应的配置信息,我加上的配置信息如下:

ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.20.212.255)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)

    启动PLSQL Developer连接数据库:

 

三.结语

    数据库启动这一块花了我差不多2天的时间,其中很大一部分时间花在了了解OEM(Oracle Enterprise Manager)上,OEM是一个基于WEB的界面管理Oracle数据库的工具,使用相当方便,功能也非常强大,不过配置会有点麻烦,最直接方式还是使用命令行启动。关于OEM的详解介绍,可以参考《Oracle DBA 两日速成课程》。