이 기사에서는 Oracle에 대한 관련 지식을 주로 NOMOUNT 상태, MOUNT 상태, OPEN 상태 등 시작 프로세스와 관련된 사항으로 정리합니다. 모두에게 도움이 되기를 바랍니다. 도움이 되는.
추천 튜토리얼: "Oracle Video Tutorial"
ORACLE SERVER는 Instance(인스턴스, Application)와 Database(데이터베이스, Database)로 구성됩니다. file) 인스턴스는 일련의 백그라운드 프로세스와 공유 메모리 영역(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_ 파일은 데이터베이스가 시작될 때 생성되며 운영 체제에서 데이터베이스를 잠그는 데 사용됩니다. (잠금)
암호 파일이 $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 상태
먼저 데이터 파일 헤더의 체크포인트 개수가 해당 파일 헤더의 체크포인트 개수와 일치하는지 확인하십시오. 제어 파일의 체크포인트 수입니다. 둘째, 데이터 파일 헤더의 시작 SCN과 컨트롤 파일에 기록된 파일의 끝 SCN이 일치하는지 확인합니다. 컨트롤 파일의 끝 SCN이 데이터 파일 헤더의 시작 SCN과 일치하면 일치하지 않음을 의미합니다. 회복이 필요합니다.
SQL>show 매개변수 backgroud_dump_dest;
데이터베이스의 파일이 손실된 경우 MOUNT 단계에서 알람 로그가 포그라운드에 표시되지 않고 alter_.log에 기록됩니다.
1. sql*plus 방법:
sql*plus를 사용하여 Oracle에 연결
Sqlplus /nolog는 데이터베이스에 연결하지 않고 sql*plus를 시작하는 것입니다
Connect /as sysdba Connect DBA로 Oracle에
시작
시작하려면 시작하세요.
그러나 Oracle 시작 모드에는 3가지가 있습니다.
l Startup nomount(nomount 모드)는 데이터베이스를 로드하지 않고 인스턴스를 시작합니다.
l 시작 마운트(마운트 모드)는 인스턴스를 시작하여 데이터베이스를 로드하지만 데이터베이스를 열지는 않습니다.
l 시작(개방 모드)은 인스턴스를 시작하여 데이터베이스를 로드하고 엽니다. 이는 위에서 사용한 명령입니다.
In Nomount 모드, Oracle은 인스턴스에 대한 다양한 인스턴스만 생성합니다. 메모리 구조 및 서비스 프로세스는 데이터베이스 파일을 열지 않습니다.
So:
1) 새 데이터베이스 생성
2) 컨트롤 파일 재구축
이 2 모든 작업은 이 모드에서 수행되어야 합니다.
마운트 모드에서 Oracle은 데이터베이스만 로드하고 데이터베이스를 열지 않습니다. 따라서:
1) 데이터 파일 이름 바꾸기
2) 리두 로그 파일 추가, 삭제 및 이름 바꾸기
3) 전체 작업 수행 데이터베이스 복구 작업
4) 데이터베이스의 보관 모드 변경
이 네 가지 작업은 이 모드에서 수행되어야 합니다.
개방 모드(즉, 위의 시작은 매개 변수를 사용하지 않음)가 정상적으로 시작됩니다.
물론 다음 세 가지 모드를 변환할 수 있습니다.
데이터베이스 마운트 변경(마운트 안 함 모드) -> 데이터베이스 열기 변경(마운트 모드) -> (오픈 모드)
물론 오픈 모드에서는 다른 상황도 있습니다. 데이터베이스는 제한되지 않은 상태와 제한된 상태로 설정할 수 있습니다.
제한된 상태에서는 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进程,最后在关闭服务器。
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에서 shutdown instant를 실행하면 데이터베이스가 즉시 닫히지 않습니다.
대신 Oracle이 특정 정리 작업(세션 종료 및 세션 리소스 해제)을 수행한 후에 닫힙니다.
shutdown을 사용하여 데이터베이스를 닫을 수 없는 경우에는 종료합니다. 즉시 데이터베이스 폐쇄 작업을 완료할 수 있습니다.
데이터베이스를 빠르게 닫고 싶지만, 깔끔하게 데이터베이스를 닫고 싶을 때 자주 사용하는 방법입니다.
현재 Oracle에서 처리 중인 SQL 문은 즉시 중단되고 시스템에서 커밋되지 않은 모든 트랜잭션은 롤백됩니다. 시스템에 커밋되지 않은 긴 트랜잭션이 있는 경우 이 방법으로 데이터베이스를 종료하는 데에도 시간이 걸립니다(트랜잭션 롤백 시간). 시스템은 데이터베이스에 연결된 모든 사용자가 시스템을 종료할 때까지 기다리지 않고 현재 활성화된 모든 트랜잭션을 강제로 롤백한 다음 연결된 모든 사용자의 연결을 끊습니다.
3. shutdown abort
데이터베이스를 직접 닫으면 데이터베이스에 접근하는 세션이 갑자기 종료된다. (백그라운드 인스턴스 서비스 프로세스를 직접 종료하는 것과 동일)
데이터베이스에서 실행 중인 작업이 많은 경우 다음을 실행한다. 종료를 중단하고 데이터베이스를 다시 시작하는 데 시간이 오래 걸립니다.
4. Windows를 종료한 후 백그라운드 인스턴스 서비스 프로세스를 다시 시작해야 합니다. 그렇지 않으면 ora-12514 오류가 보고됩니다. 인스턴스 서비스를 다시 시작한 후 데이터베이스는 자동으로 열린 상태로 시작되었습니다.
추천 튜토리얼: "Oracle Video Tutorial"
위 내용은 한 기사로 Oracle 시작 프로세스를 마스터하세요의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!