【轉】新建例項開啟已有的資料庫 — 資料庫與例項的區分測試

ljm0211發表於2012-06-20

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.建立新例項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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章