日期:2014-05-16  浏览次数:20416 次

重启Oracle数据库的操作步骤
    http://www.enet.com.cn/article/2008/0420/A20080420236234.shtml
[摘要] 在实际的应用中,有时候工作数据库需要重新启动。本文介绍了一个特别实用的操作步骤,希望对大家有所帮助。
一、Oracle 重启
  在实际的应用中,有时候工作数据库需要重新启动。本文介绍了一个特别实用的操作步骤,希望对大家有所帮助。

  1. 停应用层的各种程序

  2. 停Oralce的监听进程

  $ lsnrctl stop

  3. 在独占的系统用户下,备份控制文件:

  $ sqlplus "/as sysdba"

  SQL> alter database backup controlfile to trace;

  4. 在独占的系统用户下,手工切换重作日志文件,确保当前已修改过的数据存入文件:

  SQL> alter system switch logfile;

  5. 在独占的系统用户下,运行下面SQL语句,生成杀数据库用户连接的kill_all_session.sql文件:

  SQL> set head off;

  SQL> set feedback off;

  SQL> set newpage none;

  SQL> spool ./kill_session.sql

  SQL> select 'alter system kill session '''  sid  ','  serial#  ''';' from v$session where username is not null;

  SQL> spool off;

  6. 在独占的系统用户下,执行杀数据库用户连接的kill_session.sql文件

  SQL> @./kill_session.sql

  7. 在独占的系统用户下,用immediate方式关闭数据库:

  SQL> shutdown immediate;

  或者

  SVRMGRL> shutdown immediate;

  8. 启动oralce的监听进程

  $ lsnrctl start

  9. 进入独占的系统用户下,启动Oralce数据库

  $ sqlplus /nolog

  SQL> connect / as sysdba

  SQL> startup;

  或者

  $ svrmgrl

  SVRMGRL> connect internal;

  SVRMGRL> startup;

  10.启动应用层的各种程序

二、通过几个步骤有效关闭Oracle死锁进程
  1. 查哪个过程被锁

  查V$DB_OBJECT_CACHE视图:

  SELECT * FROM V$DB_OBJECT_CACHE WHERE OWNER='过程的所属用户' AND CLOCKS!='0';

  2. 查是哪一个SID,通过SID可知道是哪个SESSION

  查V$ACCESS视图:

  SELECT * FROM V$ACCESS WHERE OWNER='过程的所属用户' AND NAME='刚才查到的过程名';

  3. 查出SID和SERIAL#

  查V$SESSION视图:

  SELECT SID,SERIAL#,PADDR FROM V$SESSION WHERE SID='刚才查到的SID'

  查V$PROCESS视图:

  SELECT SPID FROM V$PROCESS WHERE ADDR='刚才查到的PADDR';

  4. 杀进程

  (1).先杀Oracle进程:

  ALTER SYSTEM KILL SESSION '查出的SID,查出的SERIAL#';

  IXDBA.NET社区论坛

  (2).再杀操作系统进程:

  KILL -9 刚才查出的SPID

  或者用ORAKILL(刚才查出的SID和SPID)