ホームページ > データベース > Oracle > Oracle の起動プロセスを 1 つの記事でマスターする

Oracle の起動プロセスを 1 つの記事でマスターする

WBOY
リリース: 2022-07-08 15:03:31
転載
2520 人が閲覧しました

この記事では、Oracle に関する関連知識を提供します。主に、NOMOUNT ステータス、MOUNT ステータス、OPEN ステータスなど、起動プロセスに関連する問題を次のように整理します。 、皆さんのお役に立てれば幸いです。

Oracle の起動プロセスを 1 つの記事でマスターする

## 推奨チュートリアル: 「

Oracle ビデオ チュートリアル

ORACLE の起動プロセスについての深い理解

ORACLE SERVER by

Instance (Instance, Application) および Database (database, Database file) は、一連のバックグラウンド プロセスとこれは共有メモリ領域 (sga) で構成されており、バックグラウンド プロセスはデータベースとオペレーティング システム間の対話チャネルです。バックグラウンド プロセスの名前は ORACLE_SID によって決定されます。ORACLE は パラメータ ファイル ## を探します# ORACLE_SID に基づいてインスタンスを起動します。データベースは、ディスク上に保存されている物理ファイルのセットを指します。 ORACLE の起動は 3 つのプロセスに分かれています:

NOMOUNT 状態: インスタンスの開始

MOUNT 状態: 制御ファイルを開く

OPEN 状態: コントロールを開きます。

#NOMOUNT status:

ORACLE に記述されているファイルは、SPFILE(システム パラメータ ファイル)

を見つける必要があります。 (oracle 10g のデフォルト、pfile

(パラメータ ファイル)Also) ファイルを使用してインスタンスを作成し、メモリを割り当てます。 MOUNT 状態:

この状態では、制御ファイルを開く必要があります。制御ファイルには、ログ ファイル、データ ファイルの場所情報が含まれています。 、チェックポイント情報

およびその他の重要な情報。

ORACLE9i では、パスワード ファイルが失われるとエラーが報告され、orapw ツールを使用して再構築できます。 Oracle 10g ではエラーは報告されず、v$pwfile_users ビューを通じてクエリを実行します。

lk_このファイルはデータベースの起動時に作成され、オペレーティング システムによってデータベースをロックするために使用されます。 (lock)

パスワード ファイルは $ORACLE_HOME/dbs にあります

alter 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 status

まず、データ ファイル ヘッダーのチェックポイント数が制御ファイルのチェックポイント数と一致しているかどうかを確認します。次に、データ ファイル ヘッダーの開始 SCN と制御ファイルに記録されているファイルの終了 SCN が一致しているかどうかを確認します。制御ファイルの終了 SCN がデータ ファイル ヘッダーの開始 SCN と等しい場合は、一致しないことを意味します。回復が必要です。

SQL>showparameter backgroud_dump_dest;

データベース内のファイルが失われた場合、アラーム ログは MOUNT ステージ中にフォアグラウンドに表示されませんが、alter_.log に記録されます。 。

Oracle の起動とシャットダウン

1. sql*plus メソッド:

sql*plus を使用して Oracle に接続します

Sqlplus /nolog はデータベースに接続せずに sql*plus を開始します

Connect /as sysdba は DBA として oracle に接続します

. Start

Startup を開始します。

ただし、Oracle 起動モードは 3 つあります。

l 起動 nomount (nomount モード) は、データベースをロードせずにインスタンスを起動します。

l 起動マウント (マウント モード) はインスタンスを起動してデータベースをロードしますが、データベースは開きません

l 起動 (オープン モード) はインスタンスを起動してデータベースをロードして開きます。上記で使用したコマンド

ノーマウント モードでは、Oracle はインスタンスのさまざまなメモリ構造とサービス プロセスを作成するだけで、データベース ファイルは開きません。

1) 新しいデータベースを作成します

2) 制御ファイルを再構築します

#両方の操作をこのモードで実行する必要があります。 マウント モードでは、Oracle はデータベースをロードするだけで、データベースを開きません。そのため、次のようになります。

1) データ ファイルの名前を変更します。 2) REDO ログ ファイルの追加、削除、名前変更 3) 完全なデータベース リカバリ操作の実行

4) データベース アーカイブ モードの変更

これら 4 つの操作は、このモードで実行する必要があります。

オープン モード (つまり、上記の起動はパラメータを受け取りません) は通常どおりに開始されます。

もちろん、これら 3 つのモードは変換できます:

データベース マウントの変更 (マウント モードなし) --> データベース オープンの変更 (マウント モード) --> (オープン モード)

もちろん、他の状況もあります。オープン モードでは、データベースを非制限状態と制限状態に設定できます。

制限状態では、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. 即時シャットダウン
データベースをただちに閉じます。
SVRMGRL で即時シャットダウンを実行すると、データベースはすぐには閉じられません。
代わりに、Oracle が特定のクリーンアップ作業 (セッションの終了とセッション リソースの解放) を実行した後にデータベースが閉じられます。
シャットダウンが使用できない場合データベースを閉じるには、即時にシャットダウンすることでデータベースのシャットダウン操作を完了できます。

これは、データベースを閉じるためによく使用される方法です。データベースをすぐに閉じたいが、データベースをきれいに閉じたい場合は、この方法をよく使用します。
Oracle によって現在処理されている SQL ステートメントは直ちに中断され、システム内のコミットされていないトランザクションはすべてロールバックされます。システム内に長時間コミットされていないトランザクションがある場合、この方法でデータベースをシャットダウンするのにも時間がかかります (トランザクションのロールバック時間)。システムは、データベースに接続しているすべてのユーザーがシステムから終了するのを待たず、現在アクティブなトランザクションをすべて強制的にロールバックし、接続しているすべてのユーザーを切断します。
3. シャットダウン中止
データベースを直接閉じると、データベースにアクセスしているセッションが突然終了します (バックグラウンド インスタンス サービス プロセスを直接閉じるのと同じです)
大量の操作が実行されている場合データベースを停止する場合は、この時点でシャットダウンを実行します。中断後のデータベースの再起動には時間がかかります。

4. Windows でシャットダウンした後、バックグラウンド インスタンス サービス プロセスを再起動する必要があります。そうしないと、ora-12514 エラーが報告されます。インスタンスサービスを再起動すると、データベースはオープン状態への起動を自動的に実行します。

推奨チュートリアル: 「Oracle ビデオ チュートリアル

以上がOracle の起動プロセスを 1 つの記事でマスターするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート