整理了下關於"Oracle資料庫提供了幾種不同資料庫啟動和關閉方式",然後,自己就回去就寫了個樣本.
其中,就出現了1個問題:
ORA-12528: TNS:listener: all appropriate instances are blocking new connections
於是到網上就大量的查閱資料,哈哈,好不錯,解決方案找到了.其中紅色的就是主要解決方案.下面就把我整理的東西給共用下.
一:注意事項
要啟動和關閉資料庫,必須要以具有Oracle 管理員權限使用者登陸,通常也就是以具有SYSDBA許可權使用者登陸。一般我們常用INTERNAL使用者來啟動和關閉資料庫(INTERNAL使用者實際上是SYS使用者以SYSDBA串連同義字)。Oracle資料庫新版本將逐步淘汰INTERNAL這個內部使用者,所以我們最還是設定DBA使用者具有SYSDBA許可權。
二:啟動一個資料庫需要三個步驟
1、 建立一個Oracle執行個體(非安裝階段)
2、 由執行個體安裝資料庫(安裝階段)
3、 開啟資料庫(開啟階段)
三:Startup(啟動資料庫命令)
1、 STARTUP NOMOUNT
NONOUNT選項僅僅建立一個Oracle執行個體。讀取init.ora初始化參數檔案、啟動後台進程、初始化系統全域區(SGA)。Init.ora檔案定義了執行個體配置,包括記憶體結構大小和啟動後台進程數量和類型等。執行個體名根據Oracle_SID設定,不一定要與開啟資料庫名稱相同。當執行個體開啟後,系統將顯示一個SGA記憶體結構和大小列表,如下所示:
SQL> startup nomount
ORACLE 常式已經啟動。
Total System Global Area 35431692 bytes
Fixed Size 70924 bytes
Variable Size 18505728 bytes
Database Buffers 16777216 bytesu
Redo Buffers 77824 bytes
2、STARTUP MOUNT
該命令建立執行個體並且安裝資料庫,但沒有開啟資料庫。Oracle系統讀取控制檔案中關於資料檔案和重作記錄檔內容,但並不開啟該檔案。這種開啟檔案常在資料庫維護操作中使用,如對資料檔案更名、改變重作日誌以及開啟歸檔方式等。在這種開啟檔案下,除了可以看到SGA系統列表以外,系統還會給出"資料庫裝載完畢"提示。
3、STARTUP
該命令完成建立執行個體、安裝執行個體和開啟資料庫所有三個步驟。此時資料庫使資料檔案和重作記錄檔線上,通常還會請求一個或者是多個復原段。這時系統除了可以看到前面Startup Mount方式下所有提示外,還會給出一個"資料庫已經開啟"提示。此時,資料庫系統處於正常工作狀態,可以接受使用者請求。
如果採用STARTUP NOMOUNT或者是STARTUP MOUNT資料庫開啟命令方式,必須採用ALTER DATABASE命令來執行開啟資料庫操作。例如,如果你以STARTUP NOMOUNT方式開啟資料庫,也就是說執行個體已經建立,但是資料庫沒有安裝和開啟。這是必須運行下面兩條命令,資料庫才能正確啟動。
ALTER DATABASE MOUNT;
ALTER DATABASE OPEN
4、其他開啟檔案
除了前面介紹三種資料庫開啟檔案選項外,還有另外其他一些選項。
(1) STARTUP RESTRICT
這種方式下,資料庫將被成功開啟,但僅僅允許一些特權使用者(具有DBA角色使用者)才可以使用資料庫。這種方式常用來對資料庫進行維護,如資料匯入/匯出操作時不希望有其他使用者串連到資料庫操作資料。
(2) STARTUP FORCE
該命令其實是強行關閉資料庫(shutdown abort)和啟動資料庫(startup)兩條命令一個綜合。該命令僅在關閉資料庫遇到問題不能關閉資料庫時採用。
(3) ALTER DATABASE OPEN READ ONLY;
該命令在建立執行個體以及安裝資料庫後,以唯讀方式開啟資料庫。對於那些僅僅提供查詢功能產品資料庫可以採用這種方式開啟。
四:資料庫關閉(SHUTDOWN)
1、SHUTDOWN NORMAL
這是資料庫關閉SHUTDOWN命令確省選項。也就是說如果你發出SHUTDOWN這樣命令,也即是SHUTDOWN NORNAL意思。
發出該命令後,任何新串連都將再不允許串連到資料庫。在資料庫關閉之前,Oracle將等待目前串連所有使用者都從資料庫中退出後才開始關閉資料庫。採用這種方式關閉資料庫,在下一次啟動時不需要進行任何執行個體恢複。但需要注意一點是,採用這種方式,也許關閉一個資料庫需要幾天時間,也許更長。
2、SHUTDOWN IMMEDIATE
這是我們常用一種關閉資料庫方式,想很快地關閉資料庫,但又想讓資料庫乾淨關閉,常採用這種方式。
當前正在被Oracle處理SQL語句立即中斷,系統中任何沒有提交事務全部復原。如果系統中存在一個很長未提交事務,採用這種方式關閉資料庫也需要一段時間(該交易回復時間)。系統不等待串連到資料庫所有使用者退出系統,強行復原當前所有活動事務,然後斷開所有串連使用者。
3、SHUTDOWN TRANSACTIONAL
該選項僅在Oracle 8i後才可以使用。該命令常用來計劃關閉資料庫,它使當前串連到系統且正在活動事務執行完畢,運行該命令後,任何新串連和事務都是不允許。在所有活動事務完成後,資料庫將和SHUTDOWN IMMEDIATE同樣方式關閉資料庫。
4、SHUTDOWN ABORT
這是關閉資料庫最後一招,也是在沒有任何辦法關閉資料庫情況下才不得不採用方式,一般不要採用。如果下列情況出現時可以考慮採用這種方式關閉資料庫。
下面是問題解決:
ORA-12528: TNS:listener: all appropriate instances are blocking new connections
1:修改listener.ora的參數
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = C:\oracle\product\10.1.0\db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = ammicly)
(ORACLE_HOME = c:\oracle\product\10.1.0\db_1)
(SID_NAME = ammicly)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = lypch )(PORT = 1521))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
)
)
2:修改tnsnames.ora的參數
AMMICLY =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = lypch )(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ammicly)
(UR=A)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
啟動資料庫
SQL> conn /as sysdba
SQL> alter database mount;
SQL> alter database open;
關閉資料庫
SQL> shutdown immediate;