Oracle啟動之一 啟動到nomount和引數檔案
在sqlplus下,我們可以使用管理員sysdba/sysoper的身份啟動資料庫,即使用startup命令。而在這條命令的背後,Oracle系統做了很多的操作。總體來說,啟動的過程分為三個步驟:
1.啟動到nomount狀態,這個階段資料庫讀取spfile/pfile檔案中的引數,啟動資料庫例項。
2.啟動到mount狀態,這個階段資料庫開啟控制檔案,驗證控制檔案。
3.啟動到open狀態,這個階段資料庫開啟控制檔案裡描述的檔案。
在關閉資料庫(shutdown)過程,正好相反。
我們首先看資料庫啟動到nomount狀態的過程,這個過程即啟動資料庫的例項。首先找到oracle的二進位制程式:
我們可以通過
bash-3.00$ file oracle
oracle:ELF 64-位 MSB 可執行 SPARCV9 版本 1,動態連結,沒有除去
下面是一個正常情況下,資料庫啟動到nomount的過程:
bash-3.00$ sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.1.0 - Production on Sat Jul 4 12:39:48 2009
Copyright (c) 1982, 2005, Oracle.All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 2550136832 bytes
Fixed Size1980808 bytes
Variable Size553649784 bytes
Database Buffers1979711488 bytes
Redo Buffers14794752 bytes
Database mounted.
Database opened.
我們可以看到,資料庫例項已經啟動了,且分配了相應的記憶體區域。現在我們看一下日誌檔案的內容:
bash-3.00$ pwd
/export/home/oracle/admin/uep4x/bdump
bash-3.00$ tail -50 alert_uep4x.log
Sat Jul4 12:51:24 2009
Starting ORACLE instance (normal)
LICENSE_MAX_SESSION = 0
LICENSE_SESSIONS_WARNING = 0
Picked latch-free SCN scheme 3
Using LOG_ARCHIVE_DEST_10 parameter default value as USE_DB_RECOVERY_FILE_DEST
Autotune of undo retention is turned on.
IMODE=BR
ILAT =18
LICENSE_MAX_USERS = 0
SYS auditing is disabled
ksdpec: called for event 13740 prior to event group initialization
Starting up ORACLE RDBMS Version: 10.2.0.1.0.
System parameters with non-default values:
processes= 150
__shared_pool_size= 520093696
__large_pool_size= 16777216
__java_pool_size= 16777216
__streams_pool_size= 0
nls_language= SIMPLIFIED CHINESE
nls_territory= CHINA
sga_target= 2550136832
control_files= /export/home/oracle/oradata/uep4x/control01.ctl, /export/home/oracle/oradata/uep4x/control02.ctl, /export/home/oracle/oradata/uep4x/control03.ctl
db_block_size= 8192
__db_cache_size= 1979711488
compatible= 10.2.0.1.0
db_file_multiblock_read_count= 16
db_recovery_file_dest= /export/home/oracle/flash_recovery_area
db_recovery_file_dest_size= 2147483648
undo_management= AUTO
undo_tablespace= UNDOTBS1
remote_login_passwordfile= EXCLUSIVE
db_domain=
dispatchers= (PROTOCOL=TCP) (SERVICE=uep4xXDB)
job_queue_processes= 10
background_dump_dest= /export/home/oracle/admin/uep4x/bdump
user_dump_dest= /export/home/oracle/admin/uep4x/udump
core_dump_dest= /export/home/oracle/admin/uep4x/cdump
audit_file_dest= /export/home/oracle/admin/uep4x/adump
db_name= uep4x
open_cursors= 300
pga_aggregate_target= 848297984
PMON started with pid=2, OS id=6834
PSP0 started with pid=3, OS id=6836
MMAN started with pid=4, OS id=6838
DBW0 started with pid=5, OS id=6840
LGWR started with pid=6, OS id=6842
CKPT started with pid=7, OS id=6844
SMON started with pid=8, OS id=6846
RECO started with pid=9, OS id=6848
CJQ0 started with pid=10, OS id=6850
MMON started with pid=11, OS id=6852
Sat Jul4 12:51:28 2009
starting up 1 dispatcher(s) for network address '(ADDRESS=(PARTIAL=YES)(PROTOCOL=TCP))'...
MMNL started with pid=12, OS id=6854
Sat Jul4 12:51:28 2009
starting up 1 shared server(s) ...
從上面的日誌檔案中我們可以看到Oracle啟動例項的時啟動的程序,pid是程序在資料庫內部的識別符號編號,OS id是程序在作業系統中的程序號。
bash-3.00$ ps -ef | grep ora_
oracle684010 12:51:28 ?0:00 ora_dbw0_uep4x
oracle683610 12:51:28 ?0:00 ora_psp0_uep4x
oracle683410 12:51:28 ?0:00 ora_pmon_uep4x
oracle684610 12:51:28 ?0:00 ora_smon_uep4x
oracle684210 12:51:28 ?0:00 ora_lgwr_uep4x
oracle684410 12:51:28 ?0:00 ora_ckpt_uep4x
oracle683810 12:51:28 ?0:01 ora_mman_uep4x
oracle687067380 12:59:00 pts/60:00 grep ora_
oracle685010 12:51:28 ?0:00 ora_cjq0_uep4x
oracle684810 12:51:28 ?0:00 ora_reco_uep4x
oracle685610 12:51:29 ?0:00 ora_d000_uep4x
oracle685210 12:51:28 ?0:00 ora_mmon_uep4x
oracle685410 12:51:28 ?0:00 ora_mmnl_uep4x
oracle685810 12:51:29 ?0:00 ora_s000_uep4x
我們發現,在日誌裡沒有記錄pid=1的程序,下面我們看下v$process這個檢視。
SQL> select pid,spid,program
2from v$process;
PID SPID PROGRAM
1PSEUDO
2 6834 [email protected] (PMON)
3 6836 [email protected] (PSP0)
4 6838 [email protected] (MMAN)
5 6840 [email protected] (DBW0)
6 6842 [email protected] (LGWR)
7 6844 [email protected] (CKPT)
8 6846 [email protected] (SMON)
9 6848 [email protected] (RECO)
10 6850 [email protected] (CJQ0)
11 6852 [email protected] (MMON)
12 6854 [email protected] (MMNL)
13 6856 [email protected] (D000)
14 6858 [email protected] (S000)
15 6878 [email protected] (TNS V1-V3)
15 rows selected.
從以上輸入我們可以看到pid為1的程序是個PSEUDO程序,該程序認為是初始化資料庫的程序,資料庫啟動之後該程序會一直存在。
下面我們看一下v$process這個檢視的結構:
SQL> desc v$process;
NameNull?Type
----------------------------------------------------- -------- ------------------------------------
ADDRRAW(8)
PIDNUMBER
SPIDVARCHAR2(12)
USERNAMEVARCHAR2(15)
SERIAL#NUMBER
TERMINALVARCHAR2(30)
PROGRAMVARCHAR2(48)
TRACEIDVARCHAR2(255)
BACKGROUNDVARCHAR2(1)
LATCHWAITVARCHAR2(16)
LATCHSPINVARCHAR2(16)
PGA_USED_MEMNUMBER
PGA_ALLOC_MEMNUMBER
PGA_FREEABLE_MEMNUMBER
PGA_MAX_MEMNUMBER
其中ADDR欄位是程序的地址,PID是資料庫中的程序號,SPID是系統的程序號,LATCHWAIT是該程序當前正在等待的鎖(latch)的資訊,LATCHSPIN是該程序正在通過自旋(spin)進行鎖(latch)競爭。另外幾個PGA相關的欄位記錄了該程序使用PGA的情況。
Oracle啟動需要選擇引數檔案,目錄在$ORACLE_HOME/dbs下,選擇引數檔案的順序首選spfile<ORACLE_SID>.ora,如果這個檔案不存在的話則選擇spfile.ora,如果spfile.ora不存在的話,則選擇init<ORACLE_SID>.ora。如果都不存在的話,則資料庫例項無法啟動。
我們可以檢視資料庫啟動是否使用了spfile檔案:
SQL> show parameter spfile
NAMETYPE
------------------------------------ ----------------------
VALUE
------------------------------
spfilestring
/export/home/oracle/product/10
g/dbs/spfileuep4x.ora
我們知道spfile是二進位制檔案,而pfile是文字檔案,有時候我們需要在這兩種檔案之間做轉換:
SQL> create pfile='tmp.ora' from spfile='spfileuep4x.ora';
File created.
我們啟動一個數據庫例項僅僅需要一個引數檔案,我們可以做下面的實驗說明。
bash-3.00$ export ORACLE_SID=david
bash-3.00$ sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.1.0 - Production on Sat Jul 4 16:23:26 2009
Copyright (c) 1982, 2005, Oracle.All rights reserved.
Connected to an idle instance.
SQL> startup
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/export/home/oracle/product/10g/dbs/initdavid.ora'
提示缺少一個引數檔案,然後我們建立一個引數檔案。
SQL> !echo "db_name=david" > /export/home/oracle/product/10g/dbs/initdavid.ora
SQL> startup nomount;
ORACLE instance started.
Total System Global Area171966464 bytes
Fixed Size1977208 bytes
Variable Size113251464 bytes
Database Buffers50331648 bytes
Redo Buffers6406144 bytes
相關推薦
Oracle啟動之一 啟動到nomount和引數檔案
在sqlplus下,我們可以使用管理員sysdba/sysoper的身份啟動資料庫,即使用startup命令。而在這條命令的背後,Oracle系統做了很多的操作。總體來說,啟動的過程分為三個步驟: 1.啟動到nomount狀態,這個階段資料庫讀取spfile/pfile檔案中
『ORACLE』表空間建立和資料檔案的新增(11g)
建立多資料檔案的表空間Create TABLESPACE TS_TAB DATAFILE '/oracle/app/oradata/orcl/ecq_01.dbf' SIZE 2147483648 AUTOEXTEND ON NEXT 52428800 MAXSIZE
『ORACLE』查詢表空間使用率和資料檔案大小(11g)
查詢表空間對應資料檔案的路徑和大小select file_id , file_name , tablespace_name , bytes/1024/1024/1024 G from dba_data_files where tablespace_name
Oracle 11g筆記——調整表空間和資料檔案的大小、移動資料檔案、聯機重做日誌檔案、控制檔案
一、調整表空間和資料檔案的大小 1、調整表空間大小 alter database datafile '/u01/app/oracle/oradata/rmanrep/users01.dbf' resize 15m; 2、調整表空間大小為允許自動擴充套件
oracle啟動引數檔案全部丟失 沒有備份 簡單三步正常啟動資料庫
第一次寫部落格,有點小緊張啊(⊙o⊙)…,寫的不好請見諒。,首先來簡單介紹一下引數檔案,我們知道啟動oracle資料庫的兩個啟動引數檔案分別是spfile和pfile。 pfile:是文字檔案 修改後要重啟才可以生效,修改出現錯誤不會報錯。 spfile:
錯誤修改初始化引數檔案導致oracle啟動失敗!
如果錯誤的修改了引數檔案導致資料庫不能啟動,由於spfile是採用的二進位制檔案,不能直接修改。 可以通過spfile建立pfile,手動修改pfile,利用pfile啟動資料庫,然後再通過pfile建立spfile: SQL> startup ORACLE 例程已經
如何讓oracle DB、監聽和oem開機啟動(dbstart)
監聽和oem開機啟動如何讓oracle DB、監聽和oem開機啟動(dbstart)讓oracle DB、監聽和oem開機啟動(dbstart)Oracle提供了伴隨操作系統自動重啟的功能,在Windows中,可以修改“我的電腦-->管理-->服務-->OracleService$ORACL
java啟動exe程式,傳遞引數和獲取引數
1、java中啟動exe程式 ,並新增傳參 String[] cmd = {"hh.exe","12315"}; Process process = null; try { ProcessBuilder pb =
怎樣從網路上核心和根檔案系統啟動開發板
首先在ubuntu虛擬機器上要有nfs伺服器 1.啟動開發板uboot,輸入 下面的命令 set bootargs console=ttySAC0 root=/dev/nfs nfsroot=192.168.1.19:/work/nfs_root/tmp/fs_mini
springboot 的啟動圖案配置 和 favicon.ico 小圖示和yml 檔案使用
springboot的啟動圖案為: 更改springboot的啟動圖案: 在resources下建立banner.txt 預設是這個檔案 把圖案複製到banner.txt中 AnsiColorBLUE設定字型顏色 配置favicon.ico
springboot(一)啟動和配置檔案的讀取
引言:小白自學springboot框架的總結 1.建立簡單的springboot專案 @SpringBootApplication public class Application { public static void main(Strin
移植u-boot-2011.03到S3C2440(utu2440)的方法與步驟###8. u-boot引導啟動nand flash中核心和根檔案系統cramfs和使用者檔案系統yaffs2支援
rivers/rtc/hctosys.c: unable to open rtc device (rtc0)uncorrectable error : <3>uncorrectable error : <3>end_request: I/O error, dev mtdblock2,
oracle-安裝(11GR2)-和隨機啟動
本文件提供CentOS 6.6作業系統下Oracle 11.2.0.4的安裝說明,以便於相關人員順利安裝Oracle 11.2.0.4資料 一 安裝準備 1、已安裝完成的CentOS 6.6作業系統; 2、Oracle 11.2.0.4 For Linux 64位安裝程式
11g rac 修改引數檔案導致資料庫無法啟動 解決方案!
rac中spfile預設是存在 '+DATADG/SID/spfileSID.ora' 然而一次修改錯誤的修改引數,重啟起資料庫之後報錯導致資料庫起不來了。 則可以先用各個節點上備用的pfile來啟動。備用pfile位置: '$ORACLE_BASE/adm
oracle 11g RAC 啟動和關閉和一些維護命令
在Oracle 11g環境中,Oracle的關閉和啟動順序如下:關閉順序: 1、關閉資料庫,oracl使用者執行srvctl命令: [[email protected] ~]$ srvctl stop database -d ORCL ---停止所有
Oracle RAC的啟動和關閉
情況1:保養資料庫及作業系統,伺服器,需要關閉DB(所有例項),OS及SERVER a.首先停止oracle10g環境 $ lsnrctl sop (每個節點上停止監聽,也可以用srvctl來操作) $ emctl stop dbconsole(每個節點停止dbco
WPF 利用Process.Start()方法啟動指定路徑下的exe檔案並傳遞引數
簡單來說就是實現一個程式A 開啟程式B,並且在開啟的時候傳遞一些引數給B,最後在B視窗上顯示出引數,這個小功能也是折騰了我半天。現在把我的過程整理記錄下來。 1.首先我們得有一個被呼叫的程式,新建一個簡單的WPF程式,命名為:argTest。裡面加一個label,用來顯示接
Oracle 初始化引數檔案pfile和spfile
pfile和spfile的區別 pfile :Oracle 9i之前,ORACLE一直採用PFILE方式儲存初始化引數,該檔案為文字檔案,可以在作業系統級別修改。當spfile檔案修改出現錯誤導致oracle無法啟動時,可以使用 pfile檔案啟動資料庫 spfile:從O
Oracle資料庫的啟動和關閉詳細過程
一、資料庫開啟 startup資料庫正常啟動 1.startup nomount 啟動 Oracle DB 例項:NOMOUNT ,建立sga,建立了alert日誌,用於create db,create controlfile 啟動資料庫例項時,請選擇例項啟動時所處
qemu 模擬-arm-mini2440開發板-啟動u-boot,kernel和nfs檔案系統
qemu 本文介紹瞭如何編譯u-boot、linux kernel,然後用qemu啟動u-boot和linux kernel,達到與開發板上一樣的學習效果! 雖然已經買了2440開發板,但是在實際學習開發過程中,還是覺得不方便,既然這樣,那就用qemu模擬2440開發板,