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

ORACLE新建实例打开已有的数据库--数据库与实例的区分测试

2009-12-12 12:38 441 查看
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 例程已经启动。
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.创建新实例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 命令输入了无效的选项
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 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
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.

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息