TOM说:数据库可被许多实例安装和打开,或者一个接一个的实例安装和打开,或者由多个实例同时安装和打开(即RAC)……一个数据库可以同时被许多实例安装和打开,这就是关于RAC的所有内容了。
下面我们测试一下看看,新建立一个实例,打开一个已经存在的数据库:
--1.查看一下现有实例(orasid)及数据库的信息
C:\Documents and Settings\yuechaotian>set oracle_sid=orasid
已连接到空闲例程。 SQL> startup
ORACLE 例程已经启动。 Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
数据库已经打开。
SQL> set linesize 1000
SQL> show parameter spfile NAME TYPE VALUE
-------- ----------- ------------------------------
spfile string %ORACLE_HOME%\DATABASE\SPFILE%
ORACLE_SID%.ORA
SQL> set wrap off
SQL> select * from v$controlfile; STATUS NAME
------- -----------------------------------
D:\ORACLE\ORADATA\ORA\CONTROL01.CTL
D:\ORACLE\ORADATA\ORA\CONTROL02.CTL
D:\ORACLE\ORADATA\ORA\CONTROL03.CTL SQL> select name from v$datafile; NAME
-----------------------------------
D:\ORACLE\ORADATA\ORA\SYSTEM01.DBF
D:\ORACLE\ORADATA\ORA\UNDOTBS01.DBF
D:\ORACLE\ORADATA\ORA\CWMLITE01.DBF
D:\ORACLE\ORADATA\ORA\DRSYS01.DBF
D:\ORACLE\ORADATA\ORA\EXAMPLE01.DBF
D:\ORACLE\ORADATA\ORA\INDX01.DBF
D:\ORACLE\ORADATA\ORA\ODM01.DBF
D:\ORACLE\ORADATA\ORA\TOOLS01.DBF
D:\ORACLE\ORADATA\ORA\USERS01.DBF
D:\ORACLE\ORADATA\ORA\XDB01.DBF
D:\ORACLE\ORADATA\TEST\TP_TEST01.DBF NAME
-----------------------------------
D:\ORACLE\ORADATA\TEST\TP_BAK01.DBF
D:\ORACLE\ORADATA\TEST\TP_P1.DBF
D:\ORACLE\ORADATA\TEST\TP_P2.DBF
D:\ORACLE\ORADATA\TEST\TP_JB_MID.DBF
D:\ORACLE\ORADATA\TEST\TP_P3.DBF 已选择16行。 SQL> select * from v$logfile; GROUP# STATUS TYPE MEMBER
---------- ------- ------- ---------------------------------
5 ONLINE D:\ORACLE\ORADATA\ORA\REDO05.LOG
4 STALE ONLINE D:\ORACLE\ORADATA\ORA\REDO04.LOG --2.关闭数据库及实例orasid,创建pfile文件-- 创建完毕后,修改pfile2.ora中的参数*.instance_name='orasid2'。(其实不修改也没关系,同样可以启动数据库)SQL> shutdown
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> create pfile='d:\pfile2.ora' from spfile; 文件已创建。 SQL> exit
从Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production中断开 --3.创建新实例orasid2C:\Documents and Settings\yuechaotian>oradim
ORADIM: [options]。 请参阅手册。
请输入以下命令之一:
通过指定以下参数创建例程:
-NEW -SID sid | -SRVC service [-INTPWD password] [-MAXUSERS number] [-STARTMODE a|m] [-PFILE file] [-TIMEOUT secs]
通过指定以下参数编辑例程:
-EDIT -SID sid [-NEWSID sid] [-INTPWD passwd] [-STARTMODE a|m] [-PFILE file] [-SHUTMODE a|i|n] [-SHUTTYPE srvc|inst]
通过指定以下参数删除例程:
-DELETE -SID sid | -SRVC service name
通过指定以下参数启动服务和例程:
-STARTUP -SID sid [-USRPWD password] [-STARTTYPE srvc|inst|srvc,inst] [-PFILE filename]
通过指定以下参数关闭服务和例程:
-SHUTDOWN -SID sid [-USRPWD password] [-SHUTTYPE srvc|inst|srvc,inst] [-SHUTMODE a | i | n]
通过指定以下参数查询帮助: -? | -h | -help
您为 -NEW 命令输入了无效的选项 C:\Documents and Settings\yuechaotian>oradim -new -sid orasid2 -intpwd test -maxusers 5 -startmode a -pfile 'd:\pfile2.ora' --4.使用新创建的实例 orasid2 登录刚才 orasid 实例登录的数据库,并测试。C:\Documents and Settings\yuechaotian>set oracle_sid=orasid2 C:\Documents and Settings\yuechaotian>sqlplus SQL*Plus: Release 9.2.0.1.0 - Production on 星期六 12月 22 12:10:39 2007 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. 请输入用户名: / as sysdba
已连接到空闲例程。 --4.1 此时实例orasid2尚未启动,不能做任何操作SQL> alter database mount;
alter database mount
*
ERROR 位于第 1 行:
ORA-01034: ORACLE not available
SQL> shutdown
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist --4.2使用指定参数文件启动数据库
SQL> startup pfile=d:\pfile2.ora
ORACLE 例程已经启动。 Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
数据库已经打开。 SQL> select status from v$instance; STATUS
------------
OPEN --4.3检查spfile:目前使用pfile登录的数据库
SQL> set linesize 1000
SQL> show parameter spfile NAME TYPE VALUE
-------- ----------- ----------
spfile string --4.4检查实例名:orasid2
SQL> show parameter instance_name NAME TYPE VALUE
-------------- ----------- --------
instance_name string orasid2 --4.5 检查控制文件、数据文件、在线重做日志文件:与orasid打开的是同一个数据库
SQL> set wrap off
SQL> select * from v$controlfile; STATUS NAME
------- ------------------------------------
D:\ORACLE\ORADATA\ORA\CONTROL01.CTL
D:\ORACLE\ORADATA\ORA\CONTROL02.CTL
D:\ORACLE\ORADATA\ORA\CONTROL03.CTL SQL> select name from v$datafile; NAME
------------------------------------
D:\ORACLE\ORADATA\ORA\SYSTEM01.DBF
D:\ORACLE\ORADATA\ORA\UNDOTBS01.DBF
D:\ORACLE\ORADATA\ORA\CWMLITE01.DBF
D:\ORACLE\ORADATA\ORA\DRSYS01.DBF
D:\ORACLE\ORADATA\ORA\EXAMPLE01.DBF
D:\ORACLE\ORADATA\ORA\INDX01.DBF
D:\ORACLE\ORADATA\ORA\ODM01.DBF
D:\ORACLE\ORADATA\ORA\TOOLS01.DBF
D:\ORACLE\ORADATA\ORA\USERS01.DBF
D:\ORACLE\ORADATA\ORA\XDB01.DBF
D:\ORACLE\ORADATA\TEST\TP_TEST01.DBF NAME
------------------------------------
D:\ORACLE\ORADATA\TEST\TP_BAK01.DBF
D:\ORACLE\ORADATA\TEST\TP_P1.DBF
D:\ORACLE\ORADATA\TEST\TP_P2.DBF
D:\ORACLE\ORADATA\TEST\TP_JB_MID.DBF
D:\ORACLE\ORADATA\TEST\TP_P3.DBF 已选择16行。 SQL> select * from v$logfile; GROUP# STATUS TYPE MEMBER
---------- ------- ------- ---------------------------------
5 ONLINE D:\ORACLE\ORADATA\ORA\REDO05.LOG
4 STALE ONLINE D:\ORACLE\ORADATA\ORA\REDO04.LOG --5.那么我们新开一个session,使用原来的 orasid 实例登录一下现在的数据库看看Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp. C:\Documents and Settings\yuechaotian>set oracle_sid=orasid C:\Documents and Settings\yuechaotian>sqlplus SQL*Plus: Release 9.2.0.1.0 - Production on 星期六 12月 22 12:16:22 2007 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. 请输入用户名: / as sysdba
已连接到空闲例程。 --5.1这时候实例 orasid 还没有启动,我们把它启动:SQL> select status from v$instance;
select status from v$instance
*
ERROR 位于第 1 行:
ORA-01034: ORACLE not available
SQL> startup
ORACLE 例程已经启动。 Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
ORA-01102: ??? EXCLUSIVE ???????? SQL> select status from v$instance; STATUS
------------------------
STARTED --5.2 现在数据库是nomount状态,我们mount一下看看会出现什么错误:SQL> alter session set nls_language=american; Session altered. SQL> alter database mount;
alter database mount
*
ERROR at line 1:
ORA-01102: cannot mount database in EXCLUSIVE mode --5.3 另一个非sysdba用户是不可以连接的SQL> conn test/test
ERROR:
ORA-01033: ORACLE initialization or shutdown in progress
Warning: You are no longer connected to ORACLE.
SQL> conn / as sysdba
已连接。
SQL> select *from v$controlfile; 未选定行 SQL> set wrap onSQL> show parameter control_files NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
control_files string D:\oracle\oradata\ora\control0
1.ctl, D:\oracle\oradata\ora\c
ontrol02.ctl, D:\oracle\oradat
a\ora\control03.ctl SQL> alter session set nls_language=american; Session altered. SQL> select *from v$logfile;
select *from v$logfile
*
ERROR at line 1:
ORA-01507: database not mounted
SQL> alter database mount;
alter database mount
*
ERROR at line 1:
ORA-01102: cannot mount database in EXCLUSIVE mode --6. 收尾:我们还是在会话1中把数据库关闭,并删除这个实例orasid2吧SQL> shutdown
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> exit
从Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production中断开 C:\Documents and Settings\yuechaotian>oradim -delete -sid orasid2 --7.那么这时候会话2就可以打开数据库了SQL> shutdown
ORA-01507: database not mounted
ORACLE instance shut down.
SQL> startup
ORACLE instance started. Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
数据库已经打开。SQL> 我们用启动会话2是产生的错误(步骤5)来做为本次测试的结论吧: ORA-01102 cannot mount database in EXCLUSIVE mode
Cause: Some other instance has the database mounted exclusive or shared.
Action: Shut down the other instance or mount in a compatible mode.
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11411056/viewspace-733350/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/11411056/viewspace-733350/