zoukankan      html  css  js  c++  java
  • 启动数据库

    当您启动数据库时,您将创建该数据库的一个实例并确定数据库的状态。通常,您通过安装和打开数据库来启动一个实例。这样做使数据库可供任何有效的用户连接并执行典型的数据访问操作。其他选项存在,这些也在本节中讨论。

    本节包含与启动数据库实例有关的以下主题:

    • 关于数据库启动选项
    • 关于初始化参数文件和启动
    • 关于自动启动数据库服务
    • 准备启动实例
    • 启动一个实例
    关于数据库启动选项
    当Oracle Restart未使用时,您可以使用SQL * Plus,Recovery Manager或Enterprise Manager启动数据库实例。如果您的数据库由Oracle Restart管理,则建议使用SRVCTL启动数据库。
    有关Oracle Restart的信息,请参见第4章“配置Oracle数据库的自动重新启动

     使用SQL * Plus启动数据库


    您可以启动SQL * Plus会话,使用管理员权限连接到Oracle数据库,然后发出STARTUP命令。以这种方式使用SQL * Plus是本书中详细描述的唯一方法。

     使用Recovery Manager启动数据库


    您还可以使用恢复管理器(RMAN)执行STARTUP和SHUTDOWN命令。如果您在RMAN环境中并且不想调用SQL * Plus,则可能更愿意执行此操作。

    使用Oracle Enterprise Manager启动数据库


    您可以使用Oracle Enterprise Manager来管理数据库,包括启动并关闭它。企业管理器结合了GUI控制台,代理,通用服务和工具,为管理Oracle产品提供了一个集成和全面的系统管理平台。企业管理器数据库控制是企业管理器的一部分,专门用于管理Oracle数据库,使您能够使用GUI界面执行本书中讨论的功能,而不是使用命令行操作。 

    使用SRVCTL启动数据库


    当为数据库安装并配置Oracle Restart时,Oracle建议您使用SRVCTL来启动数据库。这确保:

    • 数据库依赖的任何组件(如Oracle自动存储管理和Oracle Net侦听器)都会自动启动,并按正确的顺序。
    • 数据库根据其Oracle重新启动配置中的设置启动。这种设置的一个例子是服务器参数文件位置
    • 存储在数据库的Oracle Restart配置中的环境变量在启动实例之前设置。

    有关详细信息,请参阅“srvctl start database”和“启动和停止Oracle Restart管理的组件”。

    在启动时指定初始化参数
    要启动实例,数据库必须从服务器参数文件(SPFILE)或文本初始化参数文件(PFILE)中读取实例配置参数(初始化参数)。
    数据库在默认位置查找这些文件。您可以为这些文件指定非默认位置,并且这样做的方法取决于您是使用SQL * Plus(不使用Oracle Restart时)还是使用SRVCTL(使用Oracle Restart管理数据库时)来启动数据库。
    以下各节提供了详细信息:
    • 关于初始化参数文件和启动
    • 使用非默认服务器参数文件启动SQL * Plus
    • 使用非默认服务器参数文件启动SRVCTL

    关于初始化参数文件和启动

    在启动数据库实例时,它会尝试从平台特定的默认位置中的SPFILE读取初始化参数。如果它找不到SPFILE,它将搜索一个文本初始化参数文件。

    表2-3列出了PFILE和SPFILE的默认名称和位置

    在特定于平台的默认位置,Oracle数据库通过按以下顺序检查文件名来查找初始化参数文件:

    1. spfileORACLE_SID.ora
    2. spfile.ora
    3. initORACLE_SID.ora

    前两个文件是SPFILE,第三个是文本初始化参数文件。如果DBCA在Oracle自动存储管理磁盘组中创建了SPFILE,则数据库将搜索磁盘组中的SPFILE。

    如果您(或数据库配置助手)创建了服务器参数文件,但您想用文本初始化参数文件覆盖它,则可以使用SQL * Plus执行此操作,指定STARTUP命令的PFILE子句以标识初始化参数文件:
     
    STARTUP PFILE = /u01/oracle/dbs/init.ora

     非默认的服务器参数文件

    非默认服务器参数文件(SPFILE)是位于默认位置以外的位置的SPFILE。通常不需要使用非缺省SPFILE启动实例。但是,如果出现这种需求,SRVCTL(带有Oracle Restart)和SQL * Plus都提供了这种方法。这些将在本节后面进行介绍。

    初始化文件和Oracle自动存储管理
    使用Oracle自动存储管理(Oracle ASM)的数据库通常具有非缺省SPFILE。如果使用数据库配置助手(DBCA)将数据库配置为使用Oracle ASM,DBCA将为Oracle ASM磁盘组中的数据库实例创建一个SPFILE,然后在该文件中创建文本初始化参数文件(PFILE)如下一节所述,本地文件系统中的默认位置指向SPFILE。

    使用非默认服务器参数文件启动SQL * Plus


    使用SQL * Plus,您可以使用PFILE子句以非默认服务器参数文件启动实例。

    使用非默认服务器参数文件启动SQL * Plus:

    1. 创建一个仅包含SPFILE参数的单行文本初始化参数文件。参数的值是非默认的服务器参数文件位置。例如,创建一个仅包含以下参数的文本初始化参数文件/u01/oracle/dbs/spf_init.ora:
      SPFILE = /u01/oracle/dbs/test_spfile.ora
    2. 启动指向这个初始化参数文件的实例
      STARTUP PFILE = /u01/oracle/dbs/spf_init.ora

    SPFILE必须驻留在数据库主机上。因此,上述方法还为客户端系统启动使用SPFILE的数据库提供了一种手段。它也消除了客户端系统维护客户端初始化参数文件的需要。当客户端系统读取包含SPFILE参数的初始化参数文件时,它将该值传递给读取指定SPFILE的服务器。

    使用非默认服务器参数文件启动SRVCTL


    如果您的数据库由Oracle Restart管理,则可以通过在数据库的Oracle Restart配置中设置或修改SPFILE位置选项来指定非默认SPFILE的位置

    使用非默认服务器参数文件启动SRVCTL:

    1. 按照“准备运行SRVCTL”中所述准备运行SRVCTL。
    2. 输入以下命令
      srvctl modify database -d db_unique_name -p spfile_path

       其中db_unique_name必须与数据库的DB_UNIQUE_NAME初始化参数设置匹配。

    3. 输入以下命令:
      srvctl start database -d db_unique_name [options]

    关于自动启动数据库服务


    当您的数据库由Oracle Restart管理时,可以为每个单独的数据库服务(服务)配置启动选项。如果将服务的管理策略设置为AUTOMATIC(缺省值),则在使用SRVCTL启动数据库时,服务会自动启动。如果将管理策略设置为MANUAL,则该服务不会自动启动,您必须使用SRVCTL手动启动它。 MANUAL设置不会阻止Oracle Restart在运行时监视服务,并在发生故障时重新启动服务。

    在通过Oracle Restart管理数据库的Oracle Data Guard(Data Guard)环境中,您还可以通过将Data Guard角色分配给Oracle Restart配置中的服务来控制服务的自动启动。只有当服务的管理策略为AUTOMATIC并且其分配的角色之一与数据库的当前角色相匹配时,服务才会在手动启动数据库时自动启动。

    准备启动实例


    在尝试使用SQL * Plus启动数据库实例之前,您必须执行一些预备步骤。

    。。。

    启动一个实例


    当Oracle Restart未使用时,可以使用SQL * Plus STARTUP命令启动Oracle数据库实例。如果您的数据库由Oracle Restart管理,Oracle建议您使用srvctl start database命令。

    无论哪种情况,您都可以以各种模式启动实例:

    • NOMOUNT-在不挂载数据库的情况下启动实例。这不允许访问数据库,通常只能用于创建数据库或重新创建控制文件。
    • MOUNT-启动实例并挂载数据库,但保持关闭状态。此状态允许某些DBA活动,但不允许对数据库进行一般访问。
    • OPEN-启动实例,并挂载并打开数据库。这可以在不受限制的模式下完成,允许访问所有用户或处于受限模式,只允许数据库管理员访问。
    • FORCE-强制实例在启动或关闭问题后启动
    • OPEN RECOVER-启动实例并立即开始完整的介质恢复。

    如果通过共享服务器进程连接到数据库,则无法启动数据库实例。

    如果控制文件,数据库文件或重做日志文件不可用,则可能遇到启动实例的问题。如果在尝试装入数据库时​​CONTROL_FILES初始化参数指定的一个或多个文件不存在或无法打开,Oracle数据库将返回警告消息并且不装入数据库。如果一个或多个数据文件或重做日志文件在尝试打开数据库时不可用或无法打开,则数据库将返回警告消息并且不会打开数据库。

    启动实例以及挂载和打开数据库

    正常的数据库操作意味着一个实例已启动并且数据库已安装并打开。该模式允许任何有效的用户连接到数据库并执行数据访问操作

    以下命令启动实例,从默认位置读取初始化参数,然后装入并打开数据库。

    SQL*Plus SRVCTL (When Oracle Restart Is In Use)
    STARTUP
    srvctl start database -d db_unique_name

    其中db_unique_name与DB_UNIQUE_NAME初始化参数匹配。

    在不加载数据库的情况下启动实例

    您可以在不安装数据库的情况下启动实例。通常,只有在数据库创建期间才这样做。使用以下命令之一:

    SQL*Plus SRVCTL (When Oracle Restart Is In Use)
    STARTUP NOMOUNT
    srvctl start database -d db_unique_name -o nomount

    启动实例并挂载数据库

    您可以启动实例并挂载数据库而不打开它,从而允许您执行特定的维护操作。例如,数据库必须在以下任务中挂载但未打开:

    以下命令启动实例并挂载数据库,但保持数据库关闭:

    SQL*Plus SRVCTL (When Oracle Restart Is In Use)
    STARTUP MOUNT
    srvctl start database -d db_unique_name -o mount

    在启动时限制对实例的访问

    您可以启动一个实例,并可选择以限制模式安装和打开数据库,以便该实例仅对管理人员(非常规数据库用户)可用。当您必须完成以下任务之一时,使用此模式的实例启动:

    • 执行数据的导出或导入
    • 执行数据加载(使用SQL * Loader)
    • 暂时阻止典型用户使用数据
    • 执行某些迁移或升级操作

    通常,具有CREATE SESSION系统特权的所有用户都可以连接到打开的数据库。以限制模式打开数据库只允许具有CREATE SESSION和RESTRICTED SESSION系统特权的用户访问数据库。只有数据库管理员应具有RESTRICTED SESSION系统特权。此外,当实例处于受限模式时,数据库管理员无法通过Oracle Net侦听器远程访问实例,但只能从运行实例的系统本地访问实例。

    以下命令以受限模式启动实例(并装入并打开数据库):

    SQL*Plus SRVCTL (When Oracle Restart Is In Use)
    STARTUP RESTRICT
    srvctl start database -d db_unique_name -o restrict

     您可以将限制模式与MOUNT模式,nomount模式和打开模式结合使用。

    稍后,使用ALTER SYSTEM语句来禁用RESTRICTED SESSION功能:

    ALTER SYSTEM DISABLE RESTRICTED SESSION;

     如果以非限制模式打开数据库,并且稍后发现必须限制访问,则可以使用ALTER SYSTEM语句来执行此操作(ENABLE),如“限制对打开数据库的访问”中所述。

    强制实例启动 

    在特殊情况下,尝试启动数据库实例时可能会遇到问题。除非您遇到以下情况,否则不应强制数据库启动:

    • 您无法使用SHUTDOWN NORMAL,SHUTDOWN IMMEDIATE或SHUTDOWN TRANSACTIONAL命令关闭当前实例
    • 启动实例时遇到问题

    如果出现这些情况之一,通常可以通过使用以下命令之一启动一个新实例(以及可选地挂载和打开数据库)来解决问题:

    SQL*Plus SRVCTL (When Oracle Restart Is In Use)
    STARTUP FORCE
    srvctl start database -d db_unique_name -o force

    如果实例正在运行,强制模式在重新启动之前使用ABORT模式将其关闭。在这种情况下,警报日志显示消息“关闭实例(中止)”,然后显示“正在启动ORACLE实例(正常)”

    启动实例,挂载数据库和启动完整介质恢复

    如果您知道需要进行介质恢复,则可以启动实例,将数据库装入实例,并使用以下命令之一自动启动恢复过程:

    SQL*Plus SRVCTL (When Oracle Restart Is In Use)
    STARTUP OPEN RECOVER
    srvctl start database -d db_unique_name -o "open,recover"

    如果尝试在不需要恢复时执行恢复,Oracle数据库将发出错误消息。

    在操作系统启动时自动启动数据库

    许多站点使用过程在系统启动后立即启用一个或多个Oracle数据库实例和数据库的自动启动。执行此任务的过程特定于每个操作系统。有关自动启动的信息,请参阅您的操作系统特定的Oracle文档。

    从Oracle数据库11g第2版开始,配置数据库自动启动的首选(和平台无关)方法是Oracle Restart。有关详细信息,请参见第4章“配置Oracle数据库的自动重新启动”。

    启动远程实例
    如果您的本地Oracle数据库服务器是分布式数据库的一部分,则可能需要启动远程实例和数据库。根据通信协议和操作系统,启动和停止远程实例的过程差异很大。

    参考资料


    https://docs.oracle.com/cd/E11882_01/server.112/e25494/start.htm#ADMIN10063

     
  • 相关阅读:
    跨域现象及原理分析
    git的commit撤销
    什么是幂等,什么情况下需要幂等,如何实现幂等
    flowable表简要说明
    关于SpringCloud、SpringBoot简单讲解
    常用的maven仓库地址
    Python安装第三方库常用方法
    反编译pyinstaller打包的exe安装包
    测试用例-需要添加@Transactional 这样 就不会再数据库里面留下痕迹了
    断点 太多了 调试运行特别慢-把所有的历史断点都去掉就快了
  • 原文地址:https://www.cnblogs.com/ZeroTiny/p/8986264.html
Copyright © 2011-2022 走看看