1. 程式人生 > >Oracle啟動之一 啟動到nomount和引數檔案

Oracle啟動之一 啟動到nomount和引數檔案

sqlplus下,我們可以使用管理員sysdba/sysoper的身份啟動資料庫,即使用startup命令。而在這條命令的背後,Oracle系統做了很多的操作。總體來說,啟動的過程分為三個步驟:

1.啟動到nomount狀態,這個階段資料庫讀取spfile/pfile檔案中的引數,啟動資料庫例項。

2.啟動到mount狀態,這個階段資料庫開啟控制檔案,驗證控制檔案。

3.啟動到open狀態,這個階段資料庫開啟控制檔案裡描述的檔案。

在關閉資料庫(shutdown)過程,正好相反。

我們首先看資料庫啟動到nomount狀態的過程,這個過程即啟動資料庫的例項。首先找到oracle的二進位制程式:

我們可以通過

file命令檢視該Oracle32位還是64位版本:

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.

從以上輸入我們可以看到pid1的程序是個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 初始化引數檔案pfilespfile

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,kernelnfs檔案系統

qemu 本文介紹瞭如何編譯u-boot、linux kernel,然後用qemu啟動u-boot和linux kernel,達到與開發板上一樣的學習效果! 雖然已經買了2440開發板,但是在實際學習開發過程中,還是覺得不方便,既然這樣,那就用qemu模擬2440開發板,