8.Oracle的启动

来源:互联网 发布:java零基础多久能学会 编辑:程序博客网 时间:2024/06/05 06:23
----------------------oracle的启动和关闭原理-------------------


一、Oracle的启动过程


SQL> startup
------------------------------------
ORACLE instance started.    第一个阶段——启动实例阶段


Total System Global Area   1241513984 bytes
Fixed Size                 1267212 bytes
Variable Size              352324084 bytes
Database Buffers           872415232 bytes
Redo Buffers               15507456 bytes


1、读取参数文件spfile


2、根据参数文件中的内存的组件的值,分配每个组件的内存区域
读取下面的内容:
ORCL.__db_cache_size=872415232
ORCL.__java_pool_size=33554432
ORCL.__large_pool_size=16777216
ORCL.__shared_pool_size=301989888
ORCL.__streams_pool_size=0
3、启动后台进程
[oracle@oracle253 ~]$ ps -ef|grep ora_
oracle    3191     1  0 09:37 ?        00:00:00 ora_pmon_ORCL  --进程监控进程
oracle    3193     1  0 09:37 ?        00:00:00 ora_psp0_ORCL
oracle    3195     1  0 09:37 ?        00:00:00 ora_mman_ORCL
oracle    3197     1  0 09:37 ?        00:00:00 ora_dbw0_ORCL  --数据库写进程
oracle    3199     1  0 09:37 ?        00:00:00 ora_lgwr_ORCL  --日志写进程
oracle    3201     1  0 09:37 ?        00:00:00 ora_ckpt_ORCL  --检查点进程
oracle    3203     1  0 09:37 ?        00:00:00 ora_smon_ORCL  --系统监控进程
oracle    3205     1  0 09:37 ?        00:00:00 ora_reco_ORCL
oracle    3207     1  0 09:37 ?        00:00:00 ora_cjq0_ORCL
oracle    3209     1  0 09:37 ?        00:00:00 ora_mmon_ORCL
oracle    3211     1  0 09:37 ?        00:00:00 ora_mmnl_ORCL
oracle    3213     1  0 09:37 ?        00:00:00 ora_d000_ORCL


内存+后台进程 = Oracle的实例


启动完成之后,oracle处于nomount状态,数据库文件还没有和实例关联。
在nomount阶段作数据库的维护。
---------------------------------------
Database mounted.    第二个阶段——装载数据库阶段


1、根据参数文件中控制文件的路径打开控制文件


*.control_files='/u01/oracle/oradata/ORCL/control01.ctl','
          /u01/oracle/oradata/ORCL/control02.ctl','
          /u01/oracle/oradata/ORCL/control03.ctl'


2、从控制文件中读取数据文件和redo日志文件


此时数据库处于mount状态。


此时实例和数据库已经关联。此时只有SYS可以访问数据库。在mount阶段作数据库恢复。
-------------------------------------------
Database opened.         第三个阶段——数据库打开阶段


1、根据在控制文件中读取到的数据文件和redo日志文件路径,打开这些文件


2、启用归档日志进程(如果没有开启归档的话,这个进程是不会启动的)


此时数据库完全打开,任何用户都可以登录。
-------------------------------------------


操作实务:
1、启动数据库到nomount阶段:startup  nomount
2、启动数据库到mount:
   A 当前已经nomount:alter database mount;
   B 当前关闭的:startup mount
3、将数据库打开
  A 当前数据库是关闭的:startup
  B 当前数据库是mount的:alter database open
  C 如果当前是nomount的:alter database mount;alter database open;
4、将数据库启动到升级状态:startup upgrade


5、将数据库启动到限制模式——特殊的操作(数据导入导出,数据迁移,数据切割)


方法1:将已经打开的数据库置于限制模式下:
SQL> alter system enable restricted session;


System altered.  --通过监听器访问不了的,


SQL> select logins  from v$instance;   --本机SYS访问


LOGINS
----------
RESTRICTED   --表示当前数据库是限制模式


方法2:startup restrict


SQL> conn scott/scott
ERROR:
ORA-01035: ORACLE only available to users with RESTRICTED SESSION privilege




Warning: You are no longer connected to ORACLE.
SQL> conn /as sysdba
Connected.
SQL> grant restricted session to scott;  拥有restricted session权限,就可以访问


Grant succeeded.


授权语句:grant xxxx  to   user;
取消权限:revoke xxxx from user;


SQL> conn scott/scott
Connected.


就算有了这个权限,通过监听器访问是不行的:
SQL> conn scott/scott@ORCL253
ERROR:
ORA-12526: TNS:listener: all appropriate instances are in restricted mode




Warning: You are no longer connected to ORACLE.


===将数据库取消限制模式:


SQL> alter system disable restricted session;


System altered.


SQL> select logins  from v$instance;


LOGINS
----------
ALLOWED


6、以只读的方式打开数据库
方法1:
SQL> startup open read only
ORACLE instance started.


Total System Global Area 1241513984 bytes
Fixed Size                  1267212 bytes
Variable Size             352324084 bytes
Database Buffers          872415232 bytes
Redo Buffers               15507456 bytes
Database mounted.
Database opened.
SQL> select open_mode from v$database;


OPEN_MODE
----------
READ ONLY


方法2:
SQL> startup mount
ORACLE instance started.


Total System Global Area 1241513984 bytes
Fixed Size                  1267212 bytes
Variable Size             352324084 bytes
Database Buffers          872415232 bytes
Redo Buffers               15507456 bytes
Database mounted.
SQL> alter database open read only;


Database altered.


SQL> select open_mode from v$database;


OPEN_MODE
----------
READ ONLY


正常启动的话,这个状态:
SQL> select open_mode from v$database;


OPEN_MODE
----------
READ WRITE


7、启动数据库到恢复模式
SQL> startup open recover
ORACLE instance started.


Total System Global Area 1241513984 bytes
Fixed Size                  1267212 bytes
Variable Size             352324084 bytes
Database Buffers          872415232 bytes
Redo Buffers               15507456 bytes
Database mounted.
Database opened.


查询视图?


8、将数据库重置reset
SQL> startup force
ORACLE instance started.


Total System Global Area 1241513984 bytes
Fixed Size                  1267212 bytes
Variable Size             352324084 bytes
Database Buffers          872415232 bytes
Redo Buffers               15507456 bytes
Database mounted.
Database opened.
SQL> select status from v$instance;  --查看数据库当前的状态


STATUS
------------
OPEN


SQL> startup nomount
ORACLE instance started.


Total System Global Area 1241513984 bytes
Fixed Size                  1267212 bytes
Variable Size             352324084 bytes
Database Buffers          872415232 bytes
Redo Buffers               15507456 bytes
SQL> select status from v$instance;


STATUS
------------------------
STARTED   


SQL> alter database mount;


Database altered.


SQL> select status from v$instance;


STATUS
------------
MOUNTED  


SQL> alter database open;


Database altered.


SQL> select status from v$instance;


STATUS
------------
OPEN   





原创粉丝点击