oracle启动的四个状态

oracle启动的四个状态

 

官方文档

重要参考文档: 这个讲的很好

1:oracle启动文件的优先顺序:

1:spfileSID.ora

2:Default SPFILE -->spfile.ora

3: initSID.ora

4: DEFAULT PFILE-->

 

2:如何指定启动spfile文件

oracle只有启动pfile文件命令,如果想手动启动spfile文件。

可以通过以下设置:

在pfile文件中使用

spifle=$ORACLE_HOME/dbs/spfileabc.ora这个命令

ex: 有一个文件为:abc123.ora

在abc123.ora中有 有

spifle=$ORACLE_HOME/dbs/spfileabc.ora这个命令

 

然后我们启动时候使用:

startup pfile=$ORACLE_HOME/dbs/abc123.ora

这样oracle能够正常启动,启动时候会读取

pfile中的文件,因为:abc123.ora中有

spifle=$ORACLE_HOME/dbs/spfileabc.ora这个命令

所以还是启动spfile文件 即: spfileabc.ora

 

question: 谁能够启动oracle数据库

如果你是操作系统的管理员,你能够启动和关闭数据库。

oracle是口令认证的,如果一个认证的用户具有了

SYSDBA,和 SYSOPER 权限 可以启动和关闭数据库。

 

3:oracle数据库的四种状态:

状态转换说明

 

 

shutdown状态: oracle数据库没有启动

NOMOUNT状态: SGA和后台进程已经启动

MOUNT状态: 通过参数读取了控制文件  ,拥有sysdba权限的可以进行一些数据的备份和恢复操作,其他用户还不能访问

OPEN状态; 其他用户正常访问

 

一:SHUTDOWN -->NOMOUNT   

一个数据库实例是开始:

首先从spfile或者pfile中读取数据库参数文件:

然后分配SGA和创建后台进程。

相当于生产线和工人都到位了

但是没有开始生产,生产线上没有产品。

 

这个时候一些参数可以查到了:

show parameter db_name;

show parameter db_block_size;

[sql] 

SQL> startup nomount  

ORACLE 例程已经启动。  

  

Total System Global Area  431038464 bytes  

Fixed Size                  1333676 bytes  

Variable Size             276825684 bytes  

Database Buffers          146800640 bytes  

Redo Buffers                6078464 bytes  

 

一些参数查询:

[sql] 

SQL> show parameter db_name;  

  

NAME                                 TYPE  

------------------------------------ ----------------------  

VALUE  

------------------------------  

db_name                              string  

orcl  

  

SQL> show parameter db_block_size;  

  

NAME                                 TYPE  

------------------------------------ ----------------------  

VALUE  

------------------------------  

db_block_size                        integer  

8192  

 

二:NOMOUNT---->MOUNT

就相当于把 数据库和实例建立关系。

首先根据初始化参数文件中的CONTROL_FILE参数找到相应的控制文件然后打开它们。

在控制文件中包含了数据库的数据文件和redo log文件信息。

 

这个时候数据库还没有打开,仍然处于关闭状态,这个时候普通的用户还不能

连接到数据库,只有数据库管理员可以进行一些备份恢复等工作。

 

三: MOUNT ----> OPEN

通过控制文件信息找到 联机数据文件和redo log 文件,

如果没有以上两个文件,数据库就会报错。如果这两个文件坏了,

数据库无法打开,这个时候可以通过sysdba权限进入mount挂载状态后,对

这两个数据文件进行恢复操作后再打开数据库。

 

数据库从nomount变成 mount状态语句:

ALTER DATABASE db_name MOUNT

STRATUP 命令解释 官方:

Keywords and Parameters

If you do not specify any options, then RMAN mounts and opens the database with the default server parameter file.

Syntax Element Description

STARTUP If you specify only STARTUP with no other options, then the instance starts, then mounts and open the database.

DBA Restricts access to users with the RESTRICTED SESSION privilege.

FORCE If the database is open, then FORCE shuts down the database with a SHUTDOWN ABORT statement before re-opening it.If the database is closed, then FORCE opens the database.

MOUNT Starts the instance, then mounts the database without opening it

NOMOUNT Starts the instance without mounting the database. If no parameter file exists, then RMAN starts the instance with a "dummy" parameter file. You can then run RESTORE SPFILE to restore a backup server parameter file.

PFILE ='filename' Specifies the filename of the init.ora file for the target database. If this parameter is not specified, then the default init.ora filename is used.

startup RESTRICT 对不同用户权限的用户连接到oracle上进行了限制,

 

ALTER SYSTEM ENABLE RESTRICTED SESSION;

 

这样 没有 RESTRICT权限的用户就无法连接进来了。

 

所有登录的session都是在V$session表中可以查询到。

 

select saddr,sid,serial#,username from v$session;

可以看到连接进来的用户。

 

alter system kill session  'SID,SERIAL#';

 

这样可以杀死远程连接进来的用户。

 

数据库还有一种READ-ONLY模式:

可以使用以下命令让数据库变成只读模式:

STARTUP MOUNT

ALTER DATABASE OPEN READ ONLY;

 

4:如何关闭数据库

A = ABORT 

I = IMMEDIATE

T = TRANSACTIONAL

N = NORMAL

 

 

如何关闭数据库:

关闭数据库有几个阶段:

 

 

1:close database:

首先把SGA中数据写到磁盘数据文件中,保持数据的完整性

然后,把联机的数据文件,一些datafiles和redo log文件都关闭掉。

但是控制文件依然是打开的,可以被管理员所使用。

 

 

2:Unmount database:

oracle把控制文件关闭掉,但是数据库实例 instance还是存在

 

 

3:shut down an instance

把对应的资源释放掉;

 

 

SHUTDOWN 命令有以下模式:

 

 

A = ABORT 

I = IMMEDIATE

T = TRANSACTIONAL

N = NORMAL

 

 

abort的时候会有脏数据,其他三个都不会有脏数据。

shutdown immediate 是用的比较多的,因为能够快速关闭数据库而且没有脏数据。

猜你喜欢

转载自blog.csdn.net/qq_36249352/article/details/80415486