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> 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> 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 ElementDescription
STARTUPIf you specify only STARTUP with no other options, then the instance starts, then mounts and open the database.
DBARestricts access to users with the RESTRICTED SESSION privilege.
FORCEIf 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.
MOUNTStarts the instance, then mounts the database without opening it
NOMOUNTStarts 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 是用的比较多的,因为能够快速关闭数据库而且没有脏数据。


关于关闭数据库的补充:
SHUTDOWN NORMAL
SHUTDOWN TRANSACTIONAL
SHUTDOWN IMMEDIATE


这三种关闭数据的操作的步骤都要做如下操作:


1:把数据库的缓存写到数据文件中--> data files中
2:把没有提交的数据回滚掉
3:释放资源
所以以上三种关闭是 clean database 干净的关闭,
所以在下次数据库启动的时候,不需要数据库instance recovery


关于数据库的关闭可以做个实验。


对于一些关闭不掉的数据库的时候可以使用:
SHUTDOWN ABORT  或者 Instance Failure  或者 START FORCE
这三种情况成为 Inconsistent 数据库, 脏数据的数据库:


如果出现以上三种情况 :
修改的缓存不被写入到数据文件中 -->data files
没有提交的改变的数据不回滚


在关闭的时候:
联机redo log文件被用于重新改变。
Undo segments 被用于回滚没有提交的数据的改变,
释放资源.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值