- 启动数据库
在http://blog.csdn.net/chenxiaohua/archive/2008/01/22/2057815.aspx中已经描述怎样简单地启动数据库,和相应的服务监听。
用oracle安装用户登录主机,启动数据库和服务监听,操作如下:
跟据上面的提示,数据库和服务监听都成功启动了。
但是上面没有指定启动那个数据库,如果创建了多个数据库,该怎么指定地启动每个数据库和相应的监听服务呢?
上面的命令只启动了oracle安装的默认数据库linuxdb和相应的监听服务。
既然是启动数据库,就补充说明一下启动的状态,oracle有三种启动状态:
Nomount(非安装)Oracle只是读取ini文件中的配置信息,并初始化SGA区
Mount(安装)Oracle除了需要读取ini文件还要读取控制文件,并从中获取有关数据库的物理结构等信息。
Open(打开)数据库要检查所有文件处于同一时间点,对错误进行恢复对未完成事务回滚,并最终可以允许用户访问。
相应的命令就是:
SQL>startup nomount;
SQL>alter database mount;
SQL>alter database open;
上面三个命令顺序让数据库进入:Nomount,Mount,Open三种状态,直接执行startup等于顺序执行这三个状态。
对应上面的三阶段启动命令,启动过程也分为三个阶段:
1)启动实例
读取初始化参数文件.注意读取顺序.
分配系统全局区
启动后台进程
打开alertSID.log文件和跟踪文件
2)装载数据库
将数据库与一个已打开的实例相关联
打开控制文件
获取数据文件和重做日志文件的名称和状态.
3)打开数据库
打开数据文件
打开联机重做日志文件.
初始化参数文件:
在oracle9i以前,数据库启动使用文本的init<SID>.ora的初始化文件,oracle9i以后,都使用spfile<sid>.ora的二进制文件,如果大家在$ORACLE_HOME/dbs目录下的init.ora,initwd.ora都是样例文件,可以删除,其实这两个文件应该移到sample目录,免得误导使用者。
我使用的是oracle9.2i,直接删除这两个文件,数据库也可以正常启动、使用。为了减少垃圾,删掉或者移开这些文件吧。 - 创建数据库
在网上很容易找到oracle数据库的创建脚本。
但是对于初学者,我建议使用oracle提供的dbca,它提供向导,能够简单地创建自己需要的数据库。
我使用dbca成功创建了一个数据库wldev。
在$ORACLE_HOME/dbs下有spfilewldev.ora,这是数据库启动的初始文件。
在$ORACLE_HOME/network/admin下的listener.ora文件中,已添加了对服务wldev的监听,内容如下:
linuxdb是默认安装的数据库服务,wldev是刚创建数据库的时候才添加进来的。
listener.ora的一些介绍可以看文章http://blog.csdn.net/chenxiaohua/archive/2009/03/19/4004128.aspx
在数据库linuxdb上,创建用户dev/123,下面用别名分别登录两个数据库进行测试。
登录linuxdb,执行如下命令:
sqlplus dev/123@local_dev
登录成功。
登录wldev,执行如下命令:
sqlplus dev/123@wl_dev
登录失败,错误信息如下:
根据错误信息可知,服务监听没有问题,数据库wldev没有启动。
wldev为什么没有启动呢?有怎样指定启动的数据库呢? - 启动指定的数据库
这儿只给出一种方法
用在sqlplus命令模式下,用sysdba登录的时候,默认登录ORACLE_SID环境变量指定的数据库。当前环境下,由于oracle登录用户的ORACLE_SID=linuxdb,所以默认就启动了linuxdb。现在解决的办法就是在执行sqlplus "/ as sysdba"之前,设置ORACLE_SID=wldev,然后用sqlplus "/ as sysdba",执行startup启动wldev,执行命令如下:
提示数据库启动成功。
这时,我们就可以用wldev的sysdba角色创建一些自己需要资源了。
创建表空间:
create tablespace devbase
datafile '/home/ora/tbspace/wldevbase_2009032301.dbf' size 512M;
创建用户:
create user dev
identified by 123
default tablespace devbase
temporary tablespace temp;
对dev用户授予create session,connect,resource权限。
grant resource,connect to dev;
grant create session to dev;
grant create table to dev;
grant create tablespace to dev;
grant create view to dev;
现在可以重新登录数据库wldev了,执行如下命令:
sqlplus dev/123@local_dev
登录成功。
注意
错误1,错误信息如下:
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/home/ora/ora9/oracle/dbs/init<sid>.ora
那么肯定是环境变量ORACLE_SID没有设置正确,正确设置环境变量就可以了。 - 修改监听端口
从上面的listener.ora文件我们可以看到,linuxdb和wldev都监听同一个端口,如果访问量比较大的话,有可能会造成为一个瓶颈。
先备份listener.ora文件,执行命令:cp listener.ora 20090323_listener.ora
编辑listener.ora文件,内容如下:
现在不能简单地用lsnrctl start来启动了,因为linrctl start命令只启动默认的监听器LISTENER,现在的listener.ora中没有LISTENER监听器了。
现在上面有LISTENER_LINUXDB和LISTENER_WLDEV两个监听器。
现在分别启动两个监听器,命令如下:
lsnrctl start LISTENER_LINUXDB
lsnrctl start LISTENER_WLDEV
修改客户端的tnsname.ora中的wl_dev别名,因为监听器中的端口号已经变成1621了,修改后的内容如下:
然后用在客户重新登录linuxdb和wldev两个数据库,命令如下:
sqlplus dev/123@wl_dev
成功。
sqlplus dev/123@local_dev
成功。
通过如上的实践操作,对创建数据库,创建服务监控,启动数据库,启动服务监控这些操作有了更深的理解。 - 关闭数据库
补充一下关闭数据库命令的使用。
要关闭的数据库和上面描述的一样,是环境变量中的ORACLE_SID指定的数据库。
关闭数据库命令只有一个shutdown,常用的有两个数shutdown=shutdown normal就是正常关闭,它要等待所有的session结束,但是一般不需要等待所有的session结束;shutdown immediate就是立即关闭数据库,不用等待所有的session结束。
shutdown命令格式:
shutdown 参数
shutdown [ normal | transactional | immediate | abort ];
这几个参数详细的说明,大家可以查询相应的文档。篇幅有限,不能每个都详细描述。
创建、启动oracle数据库
最新推荐文章于 2024-07-25 22:00:53 发布