TOM说:数据库可被许多实例安装和打开,或者一个接一个的实例安装和打开,或者由多个实例同时安装和打开(即RAC)……一个数据库可以同时被许多实例安装和打开,这就是关于RAC的所有内容了。
下面我们测试一下看看,新建立一个实例,打开一个已经存在的数据库:
--1.查看一下现有实例(orasid)及数据库的信息
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:05:26 2007
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
请输入用户名: / as sysdba
已连接到空闲例程。
已连接到空闲例程。
SQL> startup
ORACLE 例程已经启动。
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
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;
-------- ----------- ------------------------------
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
------- -----------------------------------
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
-----------------------------------
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
-----------------------------------
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 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;
数据库已经关闭。
已经卸载数据库。
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中断开
从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.创建新实例orasid2
C:/Documents and Settings/yuechaotian>oradim
ORADIM: <command> [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 命令输入了无效的选项
ORADIM: <command> [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
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 例程已经启动。
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
数据库装载完毕。
数据库已经打开。
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
数据库已经打开。
SQL> select status from v$instance;
STATUS
------------
OPEN
------------
OPEN
--4.3检查spfile:目前使用pfile登录的数据库
SQL> set linesize 1000
SQL> show parameter spfile
SQL> set linesize 1000
SQL> show parameter spfile
NAME TYPE VALUE
-------- ----------- ----------
spfile string
-------- ----------- ----------
spfile string
--4.4检查实例名:orasid2
SQL> show parameter instance_name
SQL> show parameter instance_name
NAME TYPE VALUE
-------------- ----------- --------
instance_name string orasid2
-------------- ----------- --------
instance_name string orasid2
--4.5 检查控制文件、数据文件、在线重做日志文件:与orasid打开的是同一个数据库
SQL> set wrap off
SQL> select * from v$controlfile;
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
------- ------------------------------------
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
------------------------------------
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
------------------------------------
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 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) 版权所有 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
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 ????????
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
------------------------
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
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
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 on
SQL> 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
------------------------------------ ---------------------- ------------------------------
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
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中断开
数据库已经关闭。
已经卸载数据库。
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
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
数据库装载完毕。
数据库已经打开。
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.