本篇文章為大家帶來了關於Oracle的相關知識,其中主要整理了啟動過程的相關問題,其中包括了NOMOUNT狀態、MOUNT狀態和OPEN狀態等等內容,下面一起來看一下,希望對大家有幫助。
推薦教學:《Oracle影片教學》
深入理解ORACLE啟動過程
ORACLE SERVER由實例(Instance,應用程式)和資料庫(database,資料庫檔案)組成,而實例是由一組後台程序和一塊共享記憶體區域(sga)組成,而後台程序是資料庫和作業系統互動的通道,後台程序的命名由ORACLE_SID決定,ORACLE根據ORACLE_SID來尋找參數檔啟動實例。資料庫是指儲存在磁碟上的一組實體檔案。
ORACLE啟動分3個程序:
NOMOUNT狀態:啟動實例
MOUNT狀態:開啟控制檔
##OPEN狀態:開啟控制文件中描述的檔案
NOMOUNT狀態:
ORACLE需要尋找SPFILE(System Parameter File)(oracle 10g默認,pfile (Parameter File)也可以)文件,來建立實例和分配記憶體。
MOUNT狀態:
在此狀態需要開啟控製文件,而控製文件中包含日誌文件,資料文件的位置信息,檢查點資訊等重要資訊。
在ORACLE9i中,遺失口令檔案會報錯,可以透過orapw工具重建。在oracle 10g不會報錯,透過v$pwfile_users視圖查詢。lk_檔案在資料庫啟動時創建,用於作業系統對資料庫的鎖定。 (lock)
口令檔案存在$ORACLE_HOME/dbsalter system set controlfile='控制文件路径' scope=spfile; alter system set lock_name_space=orcl scope=spfile;
重建控制檔:
SQL>startup nomount; SQL>create controlfile reuse database "orcl" noresetlogs archivelog maxlogfiles 5 maxlogmembers 3 maxdatafiles 100 maxinstances 1 maxloghistory 1134 logfile group 3 '/data/app/oracle/oradata/orcl/redo03.log' size 10m, group 4 '/data/app/oracle/oradata/orcl/redo04.log' size 10m, group 5 '/data/app/oracle/oradata/orcl/redo05.log' size 10m datafile '/data/app/oracle/oradata/orcl/system01.dbf', '/data/app/oracle/oradata/orcl/undotbs01.dbf', '/data/app/oracle/oradata/orcl/sysaux01.dbf' character set zhs16gbk;
#OPEN狀態
首先會檢查資料檔頭中檢查點計數與控制檔中檢查點計數是否一致。其次檢查資料檔案頭的開始SCN和控制檔中記錄該檔案的結束SCN是否一致,如果控製檔案中結束的SCN等於資料檔案頭中開始的SCN,表示不需要復原。 SQL>show parameter backgroud_dump_dest;#如果資料庫中的某個檔案遺失,那麼在MOUNT階段不會在前台顯示警告日誌,會記錄在alter_.log中。 oracle的啟動和關閉一、sql*plus方式:
用sql*plus來連接到Oracle Sqlplus /nolog 是以不連接資料庫的方式啟動sql*plusConnect /as sysdba 是以DBA身分連接到oracle . 啟動Startup就可以啟動了。 不過oracle啟動模式有3種: l Startup nomount (nomount模式)啟動實例不載入資料庫。 l Startup mount (mount模式)啟動實例載入資料庫但不開啟資料庫 l #up ##Nomount模式中oracle僅為實例創建各種記憶體結構和服務進程,不會開啟任何資料庫文件, #所以說:1) 建立新資料庫
2) 重建控制檔
#這2種操作都必須在這個模式下進行。
Mount模式中oracle只載入資料庫但不開啟資料庫,所以說:
1) 重新命名資料檔案 新增、刪除並重新命名重做日誌檔案 3) 執行資料庫完全復原作業 4) 改變資料庫的歸檔模式#4種作業必須在這個模式中進行此作業都必須在這個資料庫的歸檔模式#。 Open模式(就是我們上面的startup不帶任何參數的)正常啟動。 當然這3種模式之間可以轉換:Alter database mount(nomount模式)—〉alter database open(mount 模式)—〉(open模式)當然還有其它一些情況,在我們open模式下可以將資料庫設定為非受限狀態和受限狀態在受限狀態下,只有DBA才能存取資料庫,所以說:1) 执行数据导入导出
2) 使用sql*loader提取外部数据
3) 需要暂时拒绝普通用户访问数据库
4) 进行数据库移植或者升级操作
这4种操作都必须在这个状态下进行
在打开数据库时使用startup restrict命令即进入受限状态。
使用alter system disable restricted session命令即可以将受限状态改变为非受限状态。
使用alter system enable restricted session命令可以将非受限状态变为受限状态
使用alter database open read only可以使数据库进入只读状态。
使用alter database open read write 可以使数据库进入读写状态。
当然在某些情况下可能是用上述各种启动方式都无法成功启动数据库,这个时候就要使用startup force命令来强行启动数据库。当然谁都不想碰到这种情况:)
c.关闭数据库
1)正常关闭 shutdown
2) 立即关闭 shutdown immediate
3) 关闭事务 shutdown transactional
4) 强行关闭 shutdown abort,当然谁都不想碰到这种情况。
二、OEM为例
Oracle Enterprise Management(OEM),
跟第一小节讲的Sqlplus /nolog ,Connect /as sysdba 这2个命令差不多的操作如图:
按照上面的一步步操作就能够连接到数据库。
下面是如何启动和关闭数据库:
点击我们前几章创建的ORADB01这个数据库树中的配置选项,这个里面的:
1)已启动 对应 Nomount模式
2)已转载 对应 mount模式
3)打开 对应 open模式
当你点击应有按钮之后就会进入如下对话框
1)正常 对应 正常关闭 shutdown
2) 立即 对应 立即关闭 shutdown immediate
3) 事务处理 对应 关闭事务 shutdown transactional
4) 中止 对应 强行关闭 shutdown abort
确定之后出现如下对话框
限制对数据库访问 对应 alter system disable restricted session
alter system enable restricted session
只读模式 对应 alter database open read only
alter database open read write
简单吧,sql*plus的一大堆命令到OEM中变成了几个按钮罢了。
3.windows控制台
这个熟悉吧:
oracle ***********Agent 用于OEM管理结构
oracle************HTTPSERVER oracle Web服务器
oracle ***********ManagementServer 用于OEM管理结构
oracle ***********TNSListener oracle网络结构的服务器端进程
oracle ***********OEMREP 资料档案库文件
oracle ***********ORADB001 用户创建的数据库
我一般都把所有的服务全部选成手动启动,如果全开,内存要用掉700M..............
提示:建议关闭数据库服务前先shutdown,否则可能会丢失数据。
如果是windows系统,关系不大,会自动提交未提交的DML。但是在unix或者linux系统的话,最好先shutdown immediate,在检查一下是否还有oracle进程,最后在关闭服务器。
Oracle启动的整个过程
1.启动选项
在发出startup命令启动数据库时,oracle将在默认位置$ORACLE_HOME/dbs(UNIX/Linux)中查找初始化参数文件。Oracle将以下面的顺序在其中寻找合适的初始化文件:
Spfile$ORACLE_SID.ora
Spfile.ora
Init$ORACLE_SID.ora
可以用几种方式启动oracle数据库。不同方式启动将影响启动数据库的程度。启动状态由nomount(数据库未装载)——>mount(数据库完成装载)——>open(数据库打开)
1.1 STARTUP NOMOUNT命令
SQL> startup nomount;ORACLE instance started. Total System Global Area 167387136 bytes Fixed Size 1343668 bytes Variable Size 150998860 bytes Database Buffers 12582912 bytes Redo Buffers 2461696 bytes
--Oracle读参数文件(里面有控制文件目录),打开实例,启动Oracle后台进程,给Oracle分配SGA。此时数据库状态为未装载。
可以在SQL*Plus会话中使用STARTUP NOMOUNT命令启动实例,这样启动仅有实例运行。如果以这种方式启动,将不读控制文件,而且数据文件也不打开。操作系统启动Oracle后台进程,并且给oracle分配SGA。事实上,只有实例本身在运行。
1.2 STARTUP MOUNT命令
SQL> startup mount;ORACLE instance started. Total System Global Area 167387136 bytes Fixed Size 1343668 bytes Variable Size 150998860 bytes Database Buffers 12582912 bytes Redo Buffers 2461696 bytesDatabase mounted.
--Oracle 打开并读取控制文件(里面有数据文件和日志文件的目录),获取数据文件和重做日志文件的名称和位置。此时数据库完成装载。
在启动过程中,oracle把实例与数据库关联。Oracle打开并读取控制文件,获取数据文件和重做日志文件的名称和位置。在进行诸如全数据库恢复、更改数据库的归档日志模式或重命名数据文件这一类的活动时,通常需要以安装模式启动数据库。请注意,这三种操作都要求oracle访问数据文件,但不提供对文件的用户操作。
1.3 STARTUP [OPEN]命令
SQL> startup openORACLE instance started. Total System Global Area 167387136 bytes Fixed Size 1343668 bytes Variable Size 150998860 bytes Database Buffers 12582912 bytes Redo Buffers 2461696 bytesDatabase mounted. Database opened.
--Oracle打开数据文件和重做日志文件,才能对外(所有有效用户)提供数据库服务。
启动过程的最后一步是打开数据库。当数据库以打开模式启动时,所有有效用户可以连接到数据库,执行数据库操作。在此步骤之前,一般用户根本就不能连接到数据库。通过发布下面的命令让数据库出于打开模式。
Oracle 的启动需要经历四个状态,SHUTDOWN 、NOMOUNT 、MOUNT 、OPEN。
SHUTDOWN状态
第一状态没什么好解释的,oracle的所有文件都静静的躺在磁盘里,一切都还未开始,属于关机状态
NOMOUNT状态
Starting the instance (nomount) * Reading the initialization file from $ORACLE_HOME/dbs in the following order: -first spfileSID.ora -if not found then, spfile.ora -if not found then, initSID.ora Specifying the PFILE parameter with STARTUP overrides the default behavior. * Allocating the SGA * Starting the background processes * Opening the alertSID.log file and the trace files The database must be named with the DB_NAME parameter either in the initialization Parameter file or in the STARTUP command. ----------------------------------------------------------------------- * 读取环境变量下dbs目录下的参数文件(spfile/pfile) [ora10@localhost dbs]$ pwd /ora10/product/10.2.0/db_1/dbs [ora10@localhost dbs]$ ll -rw-r----- 1 ora10 dba 3584 07-19 22:07 spfilechongshi.ora -rw-r----- 1 ora10 dba 3584 07-23 22:00 spfile.ora -rw-r--r-- 1 ora10 dba 1106 07-19 21:47 initchongshi.ora
查找参数文件的顺序如上面列表的,读取优先级
spfilechongshi.ora > spfile.ora>initchongshi.ora
如果三个文件都找不到的话,那么将启动失败。
* 启动算法,分配内存
* 启动后台进程
* 开放alertSID.log文件和跟踪文件
[ora10@localhost dbs]$ sqlplus SQL*Plus: Release 10.2.0.1.0 - Production on Tue Jul 24 22:33:54 2012 Copyright (c) 1982, 2005, Oracle. All rights reserved. Enter user-name: /as sysdba Connected to an idle instance. SQL> startup nomount; ORACLE instance started. Total System Global Area 205520896 bytes Fixed Size 1218532 bytes Variable Size 79693852 bytes Database Buffers 121634816 bytes Redo Buffers 2973696 bytes
现在就处在一个nomount状态。
mount状态
Mounting a database includes the following tasks: * Associating a database with a previously started instance * Locating and opening the control files specified in the parameter file * Reading the control files to obtain the names and status of the data files and online redo log files.However,no checks are performed to verify the existence of the data files and online redo log files at this time. ---------------------------------------------------------------------------------
* 把一个数据库和启动的实例关联起来
* 在参数文件(spfile/pfile)中找到控制文件进行读取
查看参数文件:
[ora10@localhost dbs]$ strings spfileora10.ora | more ...... *.control_files='/ora10/product/oradata/ora10/control01.ctl','/ora10/product/ora data/ora10/control02.ctl','/ora10/product/oradata/ora10/control03.ctl' .......
控制文件:
[ora10@localhost ~]$ cd /ora10/product/oradata/ora10/ [ora10@localhost ora10]$ ll 总计 954196 -rw-r----- 1 ora10 dba 7061504 07-23 23:01 control01.ctl -rw-r----- 1 ora10 dba 7061504 07-23 23:01 control02.ctl -rw-r----- 1 ora10 dba 7061504 07-23 23:01 control03.ctl
* 读取控制文件,获得的数据文件和联机重做日志文件,然而,在这个时候没有进行检查以验证存在的数据文件和联机重做日志文件
[ora10@localhost dbs]$ sqlplus SQL*Plus: Release 10.2.0.1.0 - Production on Tue Jul 24 23:02:28 2012 Copyright (c) 1982, 2005, Oracle. All rights reserved. Enter user-name: /as sysdba Connected to an idle instance. SQL> startup mount; ORACLE instance started. Total System Global Area 205520896 bytes Fixed Size 1218532 bytes Variable Size 79693852 bytes Database Buffers 121634816 bytes Redo Buffers 2973696 bytes Database mounted.
现在进入了数据库的mount状态,我们通过mount启动的时候,下面会多一句提示“Database mounted.” 数据库准备就绪。
open状态
opening the database includes the following tasks opening the online data log files opening the onling redo log files If any of the datafiles or noline redo log files are not present when you attempt to open the database ,the oracle server returns an error. During this final stage,the oracle server verfies that all the data files and online redo log files can be opened and checks the consistency of the database . If necessary , the SMON background process initiates instance recovery. -----------------------------------------------------------------------------------------
打开数据库包括下列任务:
打开在线数据日志文件
打开联机重做日志文件
如果任何数据文件或非线性重做日志文件不存在,当您试图打开的数据库,服务器返回错误。
在这最后阶段,该服务器验证所有数据文件和联机重做日志文件可以打开并检查数据库的一致性。如果需要,该系统监控进程开始实例恢复。
[ora10@localhost dbs]$ sqlplus /nolog SQL*Plus: Release 10.2.0.1.0 - Production on Wed Jul 25 21:50:55 2012 Copyright (c) 1982, 2005, Oracle. All rights reserved. SQL> conn /as sysdba Connected to an idle instance. SQL> startup ORACLE instance started. Total System Global Area 205520896 bytes Fixed Size 1218532 bytes Variable Size 79693852 bytes Database Buffers 121634816 bytes Redo Buffers 2973696 bytes Database mounted. Database opened.
在上面的命令中,startup后面不加其它信息的话,系统会为我们直接启动到第4个状态。
数据库关闭的三种方式
1、shutdown normal
正常方式关闭数据库。
发出该命令后,任何新的连接都将再不允许连接到数据库。在数据库关闭之前,Oracle将等待目前连接的所有用户都从数据库中退出后才开始关闭数据库。采 用这种方式关闭数据库,在下一次启动时不需要进行任何的实例恢复。但需要注意一点的是,采用这种方式,也许关闭一个数据库需要几天时间,也许更长。
2、shutdown immediate
立即方式關閉資料庫。
在SVRMGRL中執行shutdown immediate,資料庫並不會立即關閉,
而是在Oracle執行某些清除工作後才關閉(終止會話、釋放會話資源),
當使用shutdown無法關閉資料庫時,shutdown immediate可以完成資料庫關閉的作業。
這是我們常用的一種關閉資料庫的方式,想很快地關閉資料庫,但又想讓資料庫乾淨的關閉,經常採用這種方式。
目前正在Oracle處理的SQL語句立即中斷,系統中任何沒有提交的交易全部回滾。如果系統中存在一個很長的未提交的事務,採用這種方式關閉資料 庫也需要一段時間(該事務回溯時間)。系統不等待連接到資料庫的所有使用者退出系統,強行回滾目前所有的活動事務,然後斷開所有的連線使用者。
3、shutdown abort
直接關閉資料庫,正在存取資料庫的會話會突然終止, (相當於直接關閉後台執行個體服務程序)
如果資料庫中有大量作業正在執行,此時執行shutdown abort後,重新啟動資料庫需要很長時間。
4、Windows中shutdown之後需重新啟動後台實例服務進程,否則會回報ora-12514錯誤。重新啟動實例服務後資料庫自動執行了startup至open狀態。
推薦教學:《Oracle影片教學》
以上是一文掌握oracle啟動流程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Oracle備份與恢復的核心目的是在數據丟失或損壞時,能夠快速恢復數據庫到一致的狀態。 1.備份階段:通過RMAN或其他工具,將數據庫文件複製到備份介質中。 2.恢復階段:當數據庫發生故障時,首先恢復備份數據,然後通過應用重做日誌文件,恢復到故障前的狀態。

OracleRAC通過多節點共享數據庫存儲,實現了高可用性和可擴展性。其工作原理包括負載均衡、故障轉移和動態節點擴展,確保系統的高效運行和數據一致性。

在OCI中部署和管理Oracle數據庫可以通過以下步驟實現:1.創建數據庫實例,使用OCIPythonSDK設置配置參數;2.配置網絡和存儲資源;3.連接到數據庫並執行SQL查詢;4.進行數據庫備份和恢復操作;5.優化數據庫性能,通過調整資源配置、網絡優化和備份策略。這是一個高度自動化的過程,用戶只需提供必要的配置參數,OCI會處理剩餘的工作。

OracleDBA面試準備需要掌握數據庫架構、性能調優和備份恢復等核心知識。 1.了解Oracle數據庫架構,包括實例和數據庫的關係。 2.掌握性能調優方法,如SQL調優和索引優化。 3.熟悉備份與恢復策略,使用RMAN和數據泵工具。通過這些準備,你能在面試中展現專業技能,成功通過面試。

OracleSQL调优可以通过以下步骤提升查询性能:1.创建适当的索引,如为department列创建索引;2.分析执行计划,使用EXPLAINPLAN命令查看并优化;3.进行SQL重写,如使用子查询避免不必要的连接操作。通过这些方法,可以显著提升Oracle数据库的查询效率。

Oracle數據庫的安全性可以通過多種措施實現,包括認證、授權、加密和審計。 1)使用密碼文件進行用戶認證和授權;2)通過透明數據加密(TDE)保護敏感數據;3)使用虛擬專用數據庫(VPD)實現細粒度的訪問控制;這些方法確保了數據的機密性、完整性和可用性。

OracleGoldenGate通過捕獲源數據庫的事務日誌並將變更應用到目標數據庫,實現實時數據複製和集成。 1)捕獲變更:讀取源數據庫的事務日誌,轉換為Trail文件。 2)傳輸變更:通過網絡傳輸到目標系統,使用數據泵進程管理傳輸。 3)應用變更:在目標系統上,複製進程讀取Trail文件並應用變更,確保數據一致性。

OraclePL/SQL中的過程、函數和包分別用於執行操作、返回值和組織代碼。 1.過程用於執行操作,如輸出問候語。 2.函數用於計算並返回值,如計算兩個數之和。 3.包用於組織相關元素,提高代碼的模塊化和可維護性,如管理庫存的包。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

記事本++7.3.1
好用且免費的程式碼編輯器