当前位置:数据库 > Oracle >>

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 是用的比较多的,因为能够快速关闭数据库而且没有脏数据。
Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,