管理Oracle数据库

Posted FANCY PANDA

tags:

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

Oracle数据库系统是由实例和数据库两部分组成

Oracle数据库的启动是分步骤的,涉及实例的启动、数据库的加载和打开三种状态

启动数据库与实例

启动数据库实例的步骤

  1. 创建并启动数据库对应的实例
  2. 为实例加载数据库
  3. 将数据库设置为打开状态

创建并启动与数据库对应的实例(nomount)
在nomount模式下可以做如下工作:

  1. 创建数据库
  2. 重建控制文件
  3. 在nomount模式下,只能访问那些与SGA区相关的数据字典的视图

为实例加载数据库(mount)
当达到nomount阶段后,下一个启动阶段就是mount

通过alter database mount;来从nomount阶段或通过startup mount来到达这个阶段
  • 在mount阶段,加载数据库时需要打开数据库控制文件,但数据文件与重做日志文件都无法读写,所以用户不能对数据库进行操作
  • 在mount模式下的维护工作包括:
    • 重命名数据文件
    • 添加、删除、重命名日志文件
    • 执行数据库完全恢复操作
    • 改变数据库的归档模式

将数据库设置为打开状态( open)

  • mount阶段结束后,数据库体系的所有信息已经读取全了
  • 在open阶段数据库根据控制文件信息打开所有处于联机状态的数据文件和重做日志文件。如果控制文件中的任何一个数据文件或重做日志文件无法正常打开,则数据库都将打开失败,需要数据库恢复
  • 如果已经将数据库启动到了mount状态,则可以使用命令: alter database open来打开数据库

启动模式


 - Startup nomount
 -  Startup mount
 -  Startup open
 -  Startup force
Startup force:当启动例程时碰到问题,可利用强制执行来强制启动一个没有关闭的或没有正常启动的数据库

数据库的关闭步骤:

  • 关闭数据库
  • 实例卸载数据库
  • 最后终止实例
shutdown [normal | transactional | immediate | abort]

关闭数据库例程时将完成以下步骤:

  • 第一阶段: ORACLE将从执行缓冲区里的内容写入重执行日志文件,将数据库缓冲区内被更改的数据写入数据文件,然后关闭数据文件和重执行日志文件,控制文件仍然打开,数据库不能进行一-般的访问操作
  • 第二阶段:关闭数据库,例程开始卸载数据库,关闭控制文件,但SGA内存和后台支持进程仍然运行
  • 第三阶段:例程关闭,释放SGA内存,结束所有后台进程

正常关闭方式(NORMAL):

  • 如果对关闭数据库的时间没有限制,通常会使用正常方式来关闭数据库。使用带有NORMAL子句的SHTUDOWN语句将以正常方式关闭数据库
  • 正常:所有与数据库连接的用户必须在关闭数据库之前断开与该数据库的连接。下次启动数据库时不要求任何例程恢复过程。切记必须断开所有数据库的连接,否则关闭操作不能顺利完成。
SQL> shutdown normal
	 数据库已经关闭
	 已经卸载数据库
	 ORACLE 例程已经关闭

立即关闭方式(IMMEDIATE):

  • 立即方式能够在尽可能短的时间内关闭数据库以立即方式关闭数据库时,Oracle 将执行如下操作:
    • 阻止任何用户建立新的连接,同时阻止当前连接的用户开始任何新的事务
    • 任何未提交的事务均被回退
    • Oracle不再等待用户主动断开连接,而是直接关闭, 卸载数据库,并终止实例
SQL> shutdown immediate
	 数据库已经关闭
	 已经卸载数据库
	 ORACLE 例程已经关闭

事务关闭方式(TRABSACTIONL):

  • 事务方式介于正常关闭方式与立即关闭方式之间,它能够在尽可能短的时间内关闭数据库,但是能够保证当前所有的活动事务都可以被提交
  • 使用事务方式关闭数据库时,Oracle 将等待所有未提交的事务完成后再关闭数据库
  • 事务处理关闭可防止客户机丢失工作,同时不要求所有的用户退出
  • 以事务方式关闭数据库时,Oracle执行如下操作:
    • 阻止任何用户建立新的连接,同时阻止当前连接的用户开始任何新的事务
    • 等待所有未提交的活动的事务提交完毕,然后立即断开用户的连接
    • 关闭、卸载数据库,并终止实例

终止关闭方式(ABORT):

  • 如果上述三种关闭方式都无法关闭数据库,说明数据库产生了严重的错误,这时只能使用终止方式来关闭数据库。终止关闭方式将丢失一部分数据信息,会对数据库的完整性造成损害
  • 因此,如果重新启动实例并打开数据库时,后台进程SMON会执行实例恢复
  • 一般情况下,应当尽量避免使用这种方式来关闭数据库
  • 当使用shutdownabort命令关闭数据库时Oracle将:
    • 阻止任何用户建立新的连接,同时阻止当前连接的用户开始新的事务
    • 立即提交当前正在执行的SQL语句
    • 任何未提交的事务均不被回退
    • 立即断开所有用户的连接、关闭、卸载数据库,并终止实例

以上是关于管理Oracle数据库的主要内容,如果未能解决你的问题,请参考以下文章

sql Oracle代码片段

Oracle 数据库 - 使用UEStudio修改dmp文件版本号,解决imp命令恢复的数据库与dmp本地文件版本号不匹配导致的导入失败问题,“ORACLE error 12547”问题处理(代码片段

Client / Server Interoperability Support Matrix for Different Oracle Versions (Doc ID 207303.1)(代码片段

YASnippet - emacs 的代码片段管理工具

使用 Git 来管理 Xcode 中的代码片段

massCode 一款优秀的开源代码片段管理器