startup and shut immediate

来源:互联网 发布:农村淘宝logo矢量图 编辑:程序博客网 时间:2024/05/17 06:55

1、 用sql*plus启动非默认位置上的参数文件起库

数据库启动一般会去固定的位置去读取spfile ,init文件,如果要去用非固定位置的方法起库,可以使用下列方法:

STARTUP PFILE = /u01/oracle/dbs/init.ora

也可以先从文本文件转换成二进制文件,然后再起库:

CREATE SPFILE='/u01/oracle/dbs/test_spfile.ora'   FROM PFILE='/u01/oracle/dbs/test_init.ora'

2使用srvctl 启动非默认位置参数文件起库

srvctl modify database -d db_unique_name -p spfile_path
srvctl start database -d db_unique_name [options]


3参数文件的优先级
spfile<sid>.ora 
                  ==> spfile.ora 
                                 ==> init<sid>.ora 
                                              ==> init.ora


4、起库方式

SQL*Plus:  你必须具有administrator privileges
Recovery Manager (RMAN) : 你可以执行STARTUP and SHUTDOWN
Enterprise Manager
SRVCTL


5、 启动数据库

STARTUP                  srvctl start database -d db_unique_name
STARTUP NOMOUNT          srvctl start database -d db_unique_name -o nomount
STARTUP MOUNT              srvctl start database -d db_unique_name -o mountSTARTUP RESTRICT        srvctl start database -d db_unique_name -o restrict
                       ALTER SYSTEM DISABLE RESTRICTED SESSION; 来关闭RESTRICT        
STARTUP FORCE               srvctl start database -d db_unique_name -o force
STARTUP OPEN RECOVER  srvctl start database -d db_unique_name -o "open,recover"



ALTER DATABASE MOUNT;
ALTER DATABASE OPEN;
ALTER DATABASE OPEN READ ONLY
ALTER DATABASE OPEN READ WRITE;


6、关闭数据库

SHUTDOWN [NORMAL]                srvctl stop database -d db_unique_name -o normalSHUTDOWN IMMEDIATE              srvctl stop database -d db_unique_name -o immediateSHUTDOWN TRANSACTIONAL   srvctl stop database -d db_unique_name -o transactionalSHUTDOWN ABORT                      srvctl stop database -d db_unique_name -o abort


7 SHUTDOWN ABORT
什么情况下用 SHUTDOWN ABORT?

一般是在要立马关闭数据库,例如如果你知道1分钟后主机就要关闭,可以使用shut abort,在启动数据库的时候出现异常的情况下都可以使用shut abort

shut abort 一般都做了什么?

  • No new connections are allowed, nor are new transactions allowed to be started, after the statement is issued.
  • Current client SQL statements being processed by Oracle Database are immediately terminated.
  • Uncommitted transactions are not rolled back.
  • Oracle Database does not wait for users currently connected to the database to disconnect. The database implicitly disconnects all connected users.

对oracle数据库相当于把电源,不产生检查点  是脏库 重新启动数据库时 需要实例恢复 由后台进程SMON先前滚 再回滚进行恢复


8、SHUTDOWN IMMEDIATE

   shut immediate 做了什么?

  • No new connections are allowed, nor are new transactions allowed to be started, after the statement is issued.
  • Any uncommitted transactions are rolled back. (If long uncommitted transactions exist, this method of shutdown might not complete quickly, despite its name.)
  • Oracle Database does not wait for users currently connected to the database to disconnect. The database implicitly rolls back active transactions and disconnects all connected users.

 不允许建立新的连接(普通用户)
不等待查询结束(查询的会话被杀掉)
不等待事务结束(将事务rollback)
产生检查点(完全检查点) 相对于增量检查点 8I后才引入 完全检查点会将所有脏块写盘 而增量只是对块产生写标记
关闭数据文件
卸载控制文件
关闭实例
当前会话有事务是不允许shut immediate 关闭数据库  但是其他会话可以shut immediate 关闭数据库


9、SHUTDOWN TRANSACTIONAL

  shut transactional 做了什么?

  • No new connections are allowed, nor are new transactions allowed to be started, after the statement is issued.
  • After all transactions have completed, any client still connected to the instance is disconnected.
  • At this point, the instance shuts down just as it would when a SHUTDOWN IMMEDIATE statement is submitted.

 不允许建立新的连接(普通用户)
不等待查询结束(查询的会话被杀掉)
等待事务结束
产生检查点(完全检查点) 相对于增量检查点 8I后才引入 完全检查点会将所有脏块写盘 而增量只是对块产生写标记
关闭数据文件
卸载控制文件
关闭实例



10 SHUTDOWN [NORMAL]

    shut normal 做什么? shut normal是默认的关闭方式,如果执行shutdown后面执行的就是shut normal

  • No new connections are allowed after the statement is issued.
  • Before the database is shut down, the database waits for all currently connected users to disconnect from the database.

    不允许建立新的连接(普通用户)
等待会话结束  等待disconnect
等待事务结束  commit
产生检查点(完全检查点) 相对于增量检查点 8I后才引入 完全检查点会将所有脏块写盘 而增量只是对块产生写标记
关闭数据文件
卸载控制文件
关闭实例



一般我们是不推荐使用shut abort的,但是我们在生产中,有的时候停库需要很长时间,当数据库中有比较大的事物如果按照正常的shut immediate,一个小时甚至 是更长时间

如果我们在停库的时候需要这么长时间才能停止数据库,如何才能快点停止数据库呢?,一般停机时间也是有限的,不能在关闭数据库这个环节花费这么长的时间,

1、shut   immediate  如果正常停止数据是最好的,如果系统里面有大事物不能

2、alter system archive all,
alter system switch logfile ,
alter system checkpoint。

shut abort



最后我们再来讨论一下,到底这个shutdown abort到底在生产中能不能用,可以用

如果你的库是归档的,shut abort 可以用,虽然shut abort是非一致性停止数据库,相当于断电了,内存中db cache ,log buffer cache中的缓存没写到 the data files and redo log files. 对于提交数据,发出COMMIT,会触发LGWR将,log buffer cache中内容写入redo log files.的。所以提交的数据是不会丢的。
未提交的事务,在重启库时实例恢复会做回滚,保证了数据的一致性。此时在shutdown abort前未提交的数据,就需要重做一遍然后再回滚。



shut abort后的日志只有这么几行,这种停止数据库是一种断电,瞬间就关闭了

Wed May  7 21:54:28 2014
Shutting down instance (abort)
License high water mark = 5
Instance terminated by USER, pid = 25471

如何以最快方式干净的关闭数据库? (文档 ID 1577321.1)


SHUTDOWN ABORT 是关闭数据库的最快方式。  但是,以这种形式关闭数据库会使数据库处于不一致的状态(没有回滚),在这种情况下的备份在下次启动时需要恢复 (参见下面的提示1)

*** 注意 *** 在8.1.6以前的数据库不推荐使用SHUTDOWN ABORT,因为在这么老的版本上这么做导致数据库损坏的概率很大。


1) 通过下面的查询判定干净的关闭数据库需要多少回滚(以字节计算)

select sum(used_ublk) * <undo / rollback segment 表空间的block size> from v$transaction;



2) SHUTDOWN ABORT

将不进行事务回滚,快速的中断所有进程 (客户端 和 后台)。 

 

A SHUTDOWN IMMEDIATE时SMON会尝试中断所有客户端进程(SIGKILL),但是很多情况下SMON无法及时完成,这是使用SHUTDOWN ABORT的原因。(参加下面的提示2) 

3) 从第一步的输出以及您的经验决定您是否能等待干净的关闭数据库的时间(shutdown immediate)  如果您不能等待shutdown immediate完成,忽略余下的步骤,在下次启动时,SMON会回滚事务。

4) STARTUP RESTRICT
  restrict模式是只有数据库管理员才能访问数据库其他人不能访问,或是具有create session 和RESTRICTED SESSION 权限的用户可以访问数据库。一般是只有数据库管理员才会有RESTRICTED SESSION 权限。还有在restrict 模式下,数据库管理员只能在从本地访问数据库,不能通过监听远程访问数据库

5) 通过下面的查询查看回滚(块的个数)
   

select sum(distinct(ktuxesiz)) from x$ktuxe where ktuxecfl = 'DEAD';


6) 当回滚完成 (有 可能 启动后立刻就完成了), 执行 SHUTDOWN IMMEDIATE。

当完成此步骤后,数据库将干净的关闭

=============================================================

提示 1:

** Oracle? Database Backup and Recovery User's Guide 11g Release 1 (11.1)

7 RMAN Backup Concepts

Consistent Backups(一致性备份)

您可以使用BACKUP命令进行数据库一致性和非一致性备份。当数据库为一致的状态可以进行一致性备份。当数据库使用SHUTDOWN NORMAL, SHUTDOWN IMMEDIATE, or SHUTDOWN TRANSACTIONAL命令关闭,数据库为一致性状态。一致性关闭保证了所有redo的信息都被应用到了数据文件。如果您在此时mount数据库进行备份,您可以稍后从备份restore数据库并在打开它时无需介质恢复。

Inconsistent Backups(非一致性备份)

任何不是一致性的备份都定义为非一致性备份。数据库不一致时的备份,如在实例失败或者SHUTDOWN ABORT后的备份。当数据库从一个非一致性备份restore,Oracle在打开前必须执行介质恢复,从重做日志中应用变更。

注意:
RMAN不允许在非归档模式下执行非一致性备份。如果您采用非归档模式下用户管理方式的备份,那么您不可以进行非一致性备份。

只要数据库在归档模式下运行,您可以备份归档日志文件和数据文件,非一致性备份是合理的备份恢复策略的基础。非一致性备份提供了高可用性,因为它无需关闭数据库来进行备份,也完全保护了数据库。

=============================================================

提示 2: 

一个存在的SQLPLUS内部bug(没有被发布)会阻止SQLPLUS会话被SMON中断。
    客户端进程的truss / pdump等会显示SQLPLUS会话在等待WAITPID 

=============================================================

提示 3:

** Oracle? Database Administrator's Guide 11g Release 1 (11.1)

Shutting Down a Database

Shutdown Timeout and Abort


关闭模式将等待用户断开或者事务在限定的时间内完成。如果关闭操作由于有事件阻塞进而不能在一小时内完成,关闭命令将中止并显示下面的信息:ORA-01013: user requested cancel of current operation。这个信息也会在您取消关闭进程时显示,例如执行CTRL-C。Oracle推荐您不要中断实例关闭。允许关闭进程完成,再重启实例。

当ORA-01013发生,您必须考虑到实例是在一个未知的状态。所要您必须重新执行SHUTDOWN命令来继续关闭进程。如果随后的SHUTDOWN命令仍旧失败,您需要执行SHUTDOWN ABORT使实例关闭。之后您可以重启实例。

 




http://docs.oracle.com/cd/E11882_01/server.112/e25494/start.htm#ADMIN11157



0 0
原创粉丝点击