ORACLE 启动和关闭

Posted 肤浅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ORACLE 启动和关闭相关的知识,希望对你有一定的参考价值。

ORACLE 启动和关闭

数据库的启动

sqlplus “/as sysdba”

SQL> startup

ORACLE 例程已经启动。

ORACLE instance started (启动引擎)

Total System Global Area 135339940 bytes (开辟SGA区)

Fixed Size 454564 bytes

Variable Size 109051904 bytes

Database Buffers 25165824 bytes

Redo Buffers 667648 bytes

Database mounted. (连上数据库)

Database opened. (打开数据库)

数据库的启动过程涉及的3个状态

● NOMOUNT状态:该状态只打开了数据库实例,此时读取参数文件。oracle进程会根据参数文件开创共享内存池

SQL> startup nomount;

ORACLE instance started.

Total System Global Area 1904054272 bytes

Fixed Size

2254384 bytes

Variable Size

1308625360 bytes

Database Buffers

587202560 bytes

Redo Buffers

5971968 bytes

 

终端输入命令ipcs –m 查看共享内存情况

[oracle@ljy ~]$ ipcs -m

------ Shared Memory Segments --------

key shmid owner perms bytes nattch status

0x00000000 4 oracle 600 524288 2 dest

0x00000000 32776 oracle 600 16777216 2 dest

0x00000000 9 oracle 600 524288 2 dest

0x00000000 10 oracle 600 524288 2 dest

0x00000000 32781 oracle 600 524288 2 dest

0x00000000 32782 oracle 600 524288 2 dest

0x00000000 32783 oracle 600 524288 2 dest

0x00000000 19 oracle 600 524288 2 dest

0x00000000 32790 oracle 640 4096 0

0x00000000 32791 oracle 640 4096 0

0x2435e184 32792 oracle 640 4096 0
show parameter spfile;

  • MOUNT状态:该状态ORACLE根据参数文件中控制文件的位置找到并打开控制文件,读取控制文件中的各种参数信息,如数据文件和日志文件的位置等,但是此时并不打开数据文件。

mount阶段,oracle会根据nomount阶段的参数文件来寻找控制文件的名称和位置,一旦查找到立即锁定该控制文件,控制文件里记录了数据库中的数据文件、日志文件、检查点信息等非常重要的信息。启动mount时,会先自动启动nomount。

  • OPEN状态:该状态数据库将打开数据文件并进行一系列的检查工作,这些检查工作用于数据恢复。

open阶段会根据控制文件记录的信息,定位到数据库文件、日志文件等,正式开启实例和数据库之间的桥梁。如果数据文件或者日志文件缺少,那么open失败。

open之后,如果有使用归档日志功能,便可看到归档日志的进程

数据库的关闭

服务器关闭的4种方式

  • 正常关闭:(shutdown normal)

数据库正常关闭。应用关闭选项后,不允许有新的连接。所有与数据库连接的用户必须在关闭数据库之前断开与该数据库的连接

  • 立即关闭:(shutdown immediate)

数据库立即关闭。当前的客户机 SQL 语句立即终止

  • 中止关闭:(shutdown abort)

中止正在被Oracle数据库服务器处理的当前客户机SQL语句

  • 事务处理关闭:(shutdown transactional)

提供一个指定的时间长度。关闭数据库前在该时间内完成事务处理。直到最后一个数据库事务处理完成后,才关闭数据库

启动和关闭Oracle数据库过程图

问题:如果不小心物理上删除了一Oracle的数据文件,那么ORACLE数据库能不能正常启动?

Oracle读控制文件时,和打开数据库时所面对的参数不一致,Oracle数据库将启动不了,

解决这种问题的方法是把其对应的表空间先卸下,再删除,以保证控制文件描述和物理上

存在文件一致。

SQL>startup mount

SQL>alter database datafile \'/directory/abc.dbf\' offline;

SQL>alter database open;

SQL>drop tablespace abc; 

oracle启动和关闭

1.oracle启动和关闭(只有管理员才可以)
开启:

su - oracle;sqlplus /as sysdba
       SQL<startup
   启动后,还需要执行  lsnrctl start

关闭:

先执行  
lsnrctl stop
su - oracle;sqlplus /as sysdba  
   SQL<shutdown immediate
 2.oracle加入linux系统的开机自启动
步骤:

1)查看ORACLE_HOME是否设置

2)执行dbstart 数据库自带启动脚本

3)编辑/etc/oratab文件

4)编辑/etc/rc.d/rc.local启动文件,添加数据库启动脚本dbstart

5)重启主机,查看数据库和监听是自启动

6)查看数据库是否处于open状态

 操作步骤如下:

[[email protected] bin]$ dbstart
ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener
Usage: /u01/app/oracle/product/10.2.0/db_1/bin/dbstart ORACLE_HOME

错误提示:ORACLE_HOME_LISTNER 没有设置

[[email protected] bin]$ cd /u01/app/oracle/product/10.2.0/db_1/bin/
[[email protected] bin]$ ll | grep dbs
-rwxr-x--- 1 oracle oinstall 6582 Jan 1 2000 dbshut
-rwxr-x--- 1 oracle oinstall 14088 Jan 1 2000 dbstart


编辑 dbstart,将ORACLE_HOME_LISTNER=$1修改成
ORACLE_HOME_LISTNER=$ORACLE_HOME
前提是$ORACLE_HOME环境设置正确

编辑oratab

编辑/etc/oratab文件
dbca建库时都会自动创建/etc/oratab文件
将orcl:/u01/app/oracle/product/10.2.0/db_1:N 修改成
orcl:/u01/app/oracle/product/10.2.0/db_1:Y

添加启动脚本:

编辑/etc/rc.d/rc.local启动文件,添加数据库启动脚本dbstart
该文件必须使用root用户编辑
[[email protected] ~]# tail -2 /etc/rc.d/rc.local
#!/bin/sh
su - oracle -lc /u01/app/oracle/product/10.2.0/db_1/bin/dbstart
su - oracle -lc "/u01/app/oracle/product/10.2.0/db_1/bin/lsnrctl start"

以上是关于ORACLE 启动和关闭的主要内容,如果未能解决你的问题,请参考以下文章

Oracle启动和关闭监听服务的启动/关闭

Oracle启动和关闭脚本

ORACLE 启动和关闭

Oracle下启动与关闭

Linux下oracle数据库启动和关闭操作

Oracle启动和关闭