Windows下用命令開啟資料庫
在Windows上要把Oracle啟動到nomount狀態,於是在沒用啟動oracle服務的情況之下,輸入下述命令:
- C:\>sqlplus /nolog
- SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 10月 14 16:28:13 2011
- Copyright (c) 1982, 2005, Oracle. All rights reserved.
- SQL> connect / as sysdba
- ERROR:
- ORA-12560: TNS: 協議介面卡錯誤
- SQL>
於是啟動監聽服務(命令: lsnrctl start 也可以啟動服務,而且能顯示監聽器監聽的 IP地址 和 Port 埠號):
net start oracleoradb10g_home1tnslistener
或者
lsnrctl start
監聽服務啟動成功。但是發現在sqlplus裡再次輸入connect命令時,還是出現同樣的錯誤。
在網路上找了一下,發現很多人也碰到了這個問題,如果你也碰到了類似的問題,下面的方法可以試一下:
1、在Windows下,當我們啟動資料庫服務時,資料庫會自動到Open狀態。現在要啟動到nomount狀態,必需修改登錄檔,把鍵值:HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb10g_home1下ORA_ORCL_AUTOSTART值修改為 FALSE,修改之後就不會自動啟動到Open狀態了,這樣就有機會啟動到nomount狀態了。
2. 如果遇見下面這種情況:
首先我們要以管理員身份開啟命令:Windows+X+A 直接開啟【命令提示符(管理員)】,然後在輸入相應的命令就可以了
下面首先會啟動服務,然後再連線。
- C:\>net start OracleServiceOrcl
- OracleServiceORCL 服務正在啟動 .
- OracleServiceORCL 服務已經啟動成功。
- C:\>sqlplus /nolog
- SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 10月 14 17:08:14 2011
- Copyright (c) 1982, 2005, Oracle. All rights reserved.
- SQL> connect / as sysdba
- 已連線到空閒例程。
- SQL> startup nomount
- ORACLE 例程已經啟動。
- Total System Global Area 603979776 bytes
- Fixed Size 1250380 bytes
- Variable Size 213912500 bytes
- Database Buffers 381681664 bytes
- Redo Buffers 7135232 bytes
- SQL>
那麼接下去可以修改資料庫到mount,open狀態。
- SQL> alter database mount
- 資料庫已更改。
- SQL> alter database open;
- 資料庫已更改。
- SQL>
2、直接啟動資料庫的服務,然後連線資料庫,shutdown,然後再啟動到nomount狀態。
為什麼要這麼做呢? 主要是還是上面說的,如果不修改oracle在登錄檔裡的啟動引數的話,一旦啟動服務,那麼資料庫就處於open狀態,也就不可能在轉到nomount狀態了。
所以反其道而行之,這個時候資料庫已關閉、資料庫已解除安裝、例項已關閉,同時服務還是啟動的,也就是說在工作管理員裡oracle.exe程序還在,同時發現oracle佔的記憶體很少,因為此時已經釋放了SGA系統全域性區的記憶體了。
- C:\>sqlplus /nolog
- SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 10月 14 17:24:59 2011
- Copyright (c) 1982, 2005, Oracle. All rights reserved.
- SQL> connect / as sysdba
- 已連線到空閒例程。
- SQL> startup nomount
- ORACLE 例程已經啟動。
- Total System Global Area 603979776 bytes
- Fixed Size 1250380 bytes
- Variable Size 218106804 bytes
- Database Buffers 377487360 bytes
- Redo Buffers 7135232 bytes
- SQL>
- SQL> alter database mount
- 2 ;
- 資料庫已更改。
- SQL> alter database open;
- 資料庫已更改。
- SQL>
另外,當關閉資料庫,又重新啟動到open狀態時,下面顯示了關閉資料庫的順序(資料庫已經關閉、已經解除安裝資料庫、ORACLE 例程已經關閉)、啟動的順序(ORACLE 例程已經啟動、資料庫裝載完畢、資料庫已經開啟)。
- SQL> shutdown immediate;
- 資料庫已經關閉。
- 已經解除安裝資料庫。
- ORACLE 例程已經關閉。
- SQL> startup open;
- ORACLE 例程已經啟動。
- Total System Global Area 603979776 bytes
- Fixed Size 1250380 bytes
- Variable Size 218106804 bytes
- Database Buffers 377487360 bytes
- Redo Buffers 7135232 bytes
- 資料庫裝載完畢。
- 資料庫已經開啟。
- SQL>
還有,如果直接啟動到nomount狀態,那麼就不能再啟動到mount狀態(除非先shutdown),只能通過alter database mount語句,修改資料庫的狀態為mount,同理對open狀態也是一樣的,也就是說只能是:
第一種 :
startup nomount;
alter database mount;
alter database open;
第二種:
startup nomount;
alter database open;
第三種:
startup open;
像下面這樣:
startup nomount;
startup mount; 會導致ora_01081錯誤
下面給出了已經排好順序的啟動和停止服務的兩個批處理檔案:
Start Oracle 11g Service.bat
@echo off
echo 確定要啟動Oracle 11g服務嗎?
pause
net start OracleOraDb11g_home1TNSListener
net start OracleServiceORCL
net start OracleDBConsoleorcl
echo 啟動Oracle 11g服務完成,請確認有沒有錯誤發生。
Pause
Stop Oracle 11g Service.bat
@echo off
echo 確定要停止Oracle 11g服務嗎?
pause
net stop OracleDBConsoleorcl
net stop OracleServiceORCL
net stop OracleOraDb11g_home1TNSListener
echo 停止Oracle 11g服務完成,請確認有沒有錯誤發生。
Pause