第二块:******Oracle 数据库实例启动关闭过程******

oracle 数据库实例启动关闭工程



1、oracle实例:系统全局区(sga)+后台进程、指一组后台进程(在Windows上是一组线程)和一块共享内存区域;

2、oracle数据库:oracle实例+数据文件、指存储在磁盘上的一组物理文件。

3、Oracle Server:Instance和Database。

通过Instance与Database协同,Oracle数据库才能形成一个动态的可访问关系型数据库系统。

概述:

从表象来看,数据库的启动极其简单,只需要以SYSDBA/SYSOPER身份登陆,敲一条startup命令既可启动数据库。

1、知道数据库启动的过程作用:


然而在这条命令之后,Oracle需要执行一系列复杂的操作,深入理解这些操作不仅有助于了解Oracle数据库的运行机制,还可以在故障发生时帮助大家快速的定位问题的根源所在,所以接下来让我们一起分析一下数据库的启动过程。


2、Oracle数据库的启动主要包含三个步骤:

  • 启动数据库到Nomount状态
  • 启动数据库到Mount状态
  • 启动数据库到Open状态

完成这三个过程,数据库才能进入就绪状态,准备提供数据访问。


Oracle数据库实例的启动,严格来说应该是实例的启动,

数据库仅仅是在实例启动后进行装载。

Oracle数据启动的过程被划分为几个不同的步骤,

在不同的启动过程中,我们可以对其实现不同的操作,系统修复等等工作,因此了解Oracle数据启动、关闭是非常有必要的。下面详细了Oracle Database 10g 数据库启动及关闭的过程。


一、数据库实例的启动
启动命令:starup [force][restrict] [pfile=...] [nomount] [mount] [open]
启动过程:nomount ---> mount ---> open               (startup不带参数将逐步一一完成)


1.nomount阶段(即实例的启动)


解析启动nomount阶段:

在启动的第一步骤,Oracle首先寻找参数文件(pfile/spfile),然后根据参数文件中的设置(如内存分配等设置),创建实例(INSTANCE),分配内存,启动后台进程。

Nomount的过程也就是启动数据库实例的过程。这个过程在后台是启动Oracle可执行程序的过程,

Windows上是oracle.exe文件的初始化,

在Unix/Linux上是oracle可执行文件的初始化。
Windows上Oracle11g的执行文件大小约为86M,

而Linux下Oracle11g的执行文件达到145M左右:


-----------------------------------------------------------要想真正的了解oracle还得放在linux上啊------------------------------------------


D:\oracle\product\11.1.0\BIN>dir oracle.exe
2007-10-03 17:42 89,702,400 oracle.exe
[oracle@localhost bin]$ ls -al $ORACLE_HOME/bin/oracle
-rwsr-s--x 1 oracle dba 151901909 Jul 4 15:13 /opt/oracle/product/11.1.0/bin/oracle


在Unix/Linux上可以通过file命令查看oracle执行文件来判断Oracle是64位或是32位的,以下是Linux平台的一个示范输出,输出显示Oracle为32位:
[oracle@localhost bin]$ file $ORACLE_HOME/bin/oracle
/opt/oracle/product/11.1.0/bin/oracle: setuid setgid ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), not stripped


在Windows上,也有可选的命令增强工具可以提供类似的功能。
了解Oracle可执行文件还有另外一个用途,在Unix/Linux上通过strings命令可以将oracle可执行文件中的字符文本转储出来,在转储的文本中可以找到很多有意思的信息,比如一些Oracle未公开的Hints信息、数据库字典基表创建信息等,类似如下一条命令可以完成这样的工作:
strings $ORACLE_HOME/bin/oracle > oracle.txt
在Nomount初始化的过程中,只要拥有了一个参数文件,就可以凭之启动实例(INSTANCE),这一步骤并不需要任何控制文件或数据文件等的参与。

------------------------------------------------------------------------------------------------------------------------------------------------------



实例的启动通常包含下列任务:
           a.[win平台为database]目录下搜索下列文件,即如果第一个没找到,就找下一个
               spfile<SID>.ora ---> spfile.ora ---> init<SID>.ora
           b.分配SGA
           c.启动后台进程
           d.打开并修改告警<SID>.log文件及跟踪文件
       使用场景:
           多用于数据库创建、控制文件重建、特定的备份恢复等


       注意:
           此阶段不打开任何的控制文件及数据文件。

          
2.mount阶段
mount阶段完成的任务:
           a.启动实例并打开控制文件将数据库与实例关联起来
           b.利用参数文件中的说明,打开并锁定控制文件
           c.读取控制文件以获取数据文件和重做日志文件的名字和状态信息,但不检查数据日志文件是否存在
       使用场景:
           a.重命名数据文件,移动数据文件位置等(数据库打开,表空间脱机的情况下也可以重命名数据文件)
           b.启用或关闭重做日志文件的归档及非归档模式
           c.实现数据库的完全恢复
       注意:


           这一步会读控制文件,如果这一步有一个控制文件损坏就无法启动
          
3.open阶段
       mount阶段完成的任务:
           a.打开数据文件
           b.打开联机日志文件
       注意:
            a.在此期间,Oracle服务器将校验所偶的数据文件和联机日志文件能否打开并对数据库作一致性检查
           b.如果出现一致性错误,SMON进程将启动实例恢复
           c.如果任一数据文件或联机日志文件丢失,Oracle服务器将报错


4.特殊的方式打开数据库
       只读模式:
       startup open read only;
      
       如果现在在mount
       alter database open read only;
      
       受限模式:
       有时进行数据库维护护,希望一般的用户不能登录。可以启动到该模式,这样只有用户具有
       restricted session 权限,才可登录到数据库。
      
       启动方法:
           startup restrict;
          
       取消受限:
            alter system disable restricted session;




二、数据库实例的关闭
    关闭命令:shutdowm abort | immediate | transactional | normal (shutdown不带参数将缺省为normal)


    关闭选项:
       normal            --->不准许新的连接,等待当前的session 结束,等待当前的事务结束,强制检查点并关闭文件
       transactional  --->不准许新的连接,不等待当前的session结束,等待当前的事务结束,强制检查点并关闭文件。
       immediate      --->不准许新的连接,不等待当前的session结束,不等待当前的事务结束,强制检查点并关闭文件。
       abort               --->不准许新的连接,不等待当前的session结束,不等待当前的事务结束,不作强制检查点。

   
三、几类诊断文件
    包含有重要意义时间的具体信息,用于解决问题,用于日常更好的管理数据库
   
    a.alterSID.log    告警文件
        记录了数据库启动、关闭时间和一些重要操作及错误警告信息,包含错误号ora-,由dba管理
       位置由background_dump_dest
       维护alertSID.log,定期转移,系统会自动产生新的alert_sid.log
      
    b.后台进程跟踪文件:
       记录了后台进程的一些重要信息和警告、错误等
    c.用户跟踪文件:
       由用户进程产生也能由服务器进程产生,跟踪用户的SQL语句的统计信息,也包括错误信息
       文件位置由user_dump_dest
       用户跟踪:
              会话级:
                  alter session set sql_trace=true;
 
              实例级:
                  alter system set set sql_trace=true;
 
       跟踪文件的大小由max_dump_file_size参数决定。跟踪时最好要限制他的大小
      
四、动态性能视图
        记录当前数据库的活动,并且不停的更新,故不能保证读取数据的一致性
        监控和调整数据库
        所有者sys
        以v$开头
      
       DICT和DICT_COLUMNS视图包含了动态性能视图描述及其列的描述
       v$FIXED_TALBE包含了所有视图的名字及相关信息


演示数据库实例的启动:


第一步:关闭数据库


SQL> shutdown
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。



SQL> startup nomount
ORA-01031: 权限不足
SQL> conn system/oracle as sysdba
已连接。
SQL> startup nomount
ORA-01081: 无法启动已在运行的 ORACLE - 请首先关闭它
SQL> shutdown
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。

第二步: startup nomount


SQL> startup nomount
ORACLE 例程已经启动。
Total System Global Area  293601280 bytes
Fixed Size                  1248600 bytes
Variable Size             104858280 bytes
Database Buffers          180355072 bytes
Redo Buffers                7139328 bytes
SQL> show user;
USER 为 "SYS"


注意这里,Oracle根据参数文件的内容,创建了instance,分配了相应的内存区域,启动了相应的后台进程。SGA的分配信息从以上输出中可以看到。



通过数据库中的v$process视图,可以找到对应于操作系统的每个进程信息:


SQL> select addr,pid,spid,username,program from v$process;


ADDR            PID SPID         USERNAME        PROGRAM
-------- ---------- ------------ --------------- ----------------------------------
90E472EC          1                              PSEUDO
90E478DC          2 2912         SYSTEM          ORACLE.EXE (PMON)
90E47ECC          3 1400         SYSTEM          ORACLE.EXE (PSP0)
90E484BC          4 1072         SYSTEM          ORACLE.EXE (MMAN)
90E48AAC          5 4456         SYSTEM          ORACLE.EXE (DBW0)
90E4909C          6 5884         SYSTEM          ORACLE.EXE (LGWR)
90E4968C          7 4552         SYSTEM          ORACLE.EXE (CKPT)
90E49C7C          8 4568         SYSTEM          ORACLE.EXE (SMON)
90E4A26C          9 6068         SYSTEM          ORACLE.EXE (RECO)
90E4A85C         10 168          SYSTEM          ORACLE.EXE (CJQ0)
90E4AE4C         11 4880         SYSTEM          ORACLE.EXE (MMON)


ADDR            PID SPID         USERNAME        PROGRAM
-------- ---------- ------------ --------------- ----------------------------------
90E4B43C         12 5992         SYSTEM          ORACLE.EXE (MMNL)
90E4BA2C         13 5644         SYSTEM          ORACLE.EXE (D000)
90E4C01C         14 3400         SYSTEM          ORACLE.EXE (S000)
90E4C60C         15 4580         SYSTEM          ORACLE.EXE (SHAD)
90E4CBFC         16 1364         SYSTEM          ORACLE.EXE (QMNC)
90E4D1EC         17 3856         SYSTEM          ORACLE.EXE (J000)
90E4D7DC         18 2256         SYSTEM          ORACLE.EXE (q001)
90E4E3BC         20 4804         SYSTEM          ORACLE.EXE (q000)


注意以上输出,pid=1的进程是一个PSEUDO进程,这个进程被认为是初始化数据库的进程,启动其他进程之前即被占用,并在数据库中一直存在。v$process的查询输出中,SPID列代表的就是操作系统上的进程号,通过SPID可以将进程从操作系统到数据库关联起来


如果在操作系统上发现某个进程表现异常(如占用很高的CPU资源),那么通过操作系统上的PID和V$PROCESS视图中的SPID关联,就可以找到这个OS上的进程在数据库内部的化身,从而可以进行进一步的跟踪诊断。


V$PROCESS视图包含当前数据库中活动进程的相关信息,这些进程在操作系统上都存在与之对应的OS进程。其中LATCHWAIT列代表进程当前正在等待的LATCH信息,LATCHSPIN则记录进程正在通过SPIN进行LATCH的竞争。Latch通常被称为闩,是数据库内部的串行锁机制,主要用来控制内存上的并发,在多处理器系统上,Oracle进程通过自旋(spin)来进行Latch争夺。
这个视图结构如下所示(Oracle10gR2信息):

SQL> desc v$process
 名称                           
 ------------------------------
 ADDR                           
 PID                            
 SPID                           
 USERNAME                       
 SERIAL#                        
 TERMINAL                       
 PROGRAM                        
 TRACEID                        
 BACKGROUND                     
 LATCHWAIT                      
 LATCHSPIN                      
 PGA_USED_MEM                   
 PGA_ALLOC_MEM                  
 PGA_FREEABLE_MEM               
 PGA_MAX_MEM  

      

注意这里的ADDR字段代表的是进程的地址,进程的状态等信息在内存中记录,这个ADDR记录的正是这样的内存地址信息。

ADDR在数据库中(甚至是所有软件中)是非常重要的,虽然通常并不会用到,但是深入理解这些知识有助于大家更好的了解Oracle数据库。


进程的地址(Address of process)进一步的被缩写为PADDR,在V$SESSION视图中记录的PADDR就是V$PROCESS.ADDR的进一步延伸,通过两者关联,可以向数据库进一步深入。
如果向操作系统端延伸,则SPID代表的正是操作系统进程标识符(Operating system process identifier),通过SPID和OS中看到的进程PID关联,就可以建立从操作系统到数据库的关联。
所以V$PROCESS被认为是从操作系统到数据库的入口。此外,和PGA相关的几个字段则记录了进程的PGA使用情况。         


 1.1.1.3 参数文件的选择
接下来关注一下启动过程中Oracle选择参数文件的顺序。
从Oracle9i开始,spfile被引入Oracle数据库,

Oracle首选spfile<ORACLE_SID>.ora文件作为启动参数文件;

如果该文件不存在,Oracle选择spfile.ora文件;

如果前两者都不存在,Oracle将会选择init<ORACLE_SID>.ora文件;如果以上三个文件都不存在,Oracle将无法创建和启动instance。

Oracle在启动过程中,会在特定的路径中寻找参数文件,

在Unix/Linux下的路径为$ORACLE_HOME/dbs目录,

在WINDOWS上的路径为$ORACLE_HOME\database目录。


可以在SQL*PLUS中通过show parameter spfile命令来检查数据库是否使用了spfile文件,如果value不为Null,则数据库使用了spfile文件:


SQL> show parameter spfile;


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      G:\ORACLE10G\DBS\SPFILEORACLE.
                                                 ORA


现在如果更名spfile<ORACLE_SID>.ora文件,此后Oracle将选择spfile.ora文件启动数据库:
重命名:mv spfileconner.ora spfileconner.ora.bak
SQL> startup nomount
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string ?/dbs/spfile.ora


进一步的如果再更名spfile.ora文件,此后Oracle将选择init.ora文件启动数据库:
更名: mv spfile.ora spfile.ora.bak
SQL> startup nomount
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string


如果这三个文件都不存在,Oracle将无法启动:
更名:mv initconner.ora initconner.ora.bak
SQL> startup
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/opt/oracle/product/9.2.0/dbs/initconner.ora'


注意这里出现的错误提示,报告无法找到参数文件init<ORACLE_SID>.ora,这正是Oracle在启动过程中最后一个查找的参数文件。
在Oracle整个启动过程中,参数文件是写在应用程序中的硬代码,按照前面描述的顺序进行查找,以下是来自源码中关于参数文件及其查找顺序的定义:


?/dbs/spfile@.ora


?/dbs/spfile.ora


?/dbs/init@.ora

                                                 ORA
SQL> show parameter sfile;
SQL>  show parameter background_dump


NAME                                 TYPE        VALUE
------------------------------------ ----------- -------------------------
background_dump_dest                 string      G:\ADMIN\ORACLE\BDUMP
SQL>  show parameter dump_dest


NAME                                 TYPE        VALUE
------------------------------------ ----------- -------------------------
background_dump_dest                 string      G:\ADMIN\ORACLE\BDUMP
core_dump_dest                       string      G:\ADMIN\ORACLE\CDUMP
user_dump_dest                       string      G:\ADMIN\ORACLE\UDUMP
SQL> 


虽然不能改变Oracle对于参数文件的搜索路径及行为,但是如果参数文件不在相应的位置,在Linux/Unix系统上,可以通过符号链接来进行重定位,以满足一些特殊需要(具体请参考第三章内容)



1.1.1.5 ORACLE_SID的含义
回顾一下前面的内容可以注意到,SID和ORACLE_SID已经多次出现,那么SID是什么?在数据库启动过程中又起到什么作用呢?
SID是System IDentifier的缩写,而ORACLE_SID就是Oracle System IDentifier 的缩写,在Oracle系统中,ORACLE_SID以环境变量的形式出现,当Oracle实例启动时,在操作系统上fork的进程就依据这个ORACLE_SID来创建,这就是SID的作用。


Oracle的实例(instance)是由一块共享内存区域(SGA)和一组后台进程(background processes)共同组成,而后台进程正是数据库和操作系统进行交互的通道,这些进程的名称就是通过ORACLE_SID决定的。
通过前面的讨论可以知道,实例的启动需要一个参数文件,参数文件的名称就是由ORACLE_SID决定的,对于init文件,缺省的文件名称是init<ORACLE_SID>.ora,对于spfile文件,缺省的文件名为spfile<ORACLE_SID>.ora,Oracle依据ORACLE_SID来决定和寻找参数文件启动实例。
在同一个$ORACLE_HOME下,通过参数文件,Oracle能够根据ORACLE_SID将实例区分开来;但是注意如果在不同的$ORACLE_HOME下,即使在同一台主机上,Oracle也是能够创建相同ORACLE_SID的实例的。


 1.1.1.6 INSTANCE_NAME的含义
在数据库内部和ORACLE_SID相关联的概念就是INSTANCE_NAME。
Oracle数据库内部存在一个初始化参数INSTANCE_NAME,用于标示数据库实例的名称,其缺省值通常就是ORACLE_SID;但是初始化参数INSTANCE_NAME和ORACLE_SID可以不同,不同实例可以拥有相同的INSTANCE_NAME。
在同一个ORACLE_HOME下,只要ORACLE_SID不同,数据库并不校验INSTANCE_NAME参数;通过简单的参数文件复制,我们就可以在同一台服务器上创建多个具有相同instance_name的实例(注意以下测试来自Oracle9i数据库):

1.1.1.7 DB_NAME与INSTANCE_NAME
相较INSTANCE_NAME参数来说,对于Oracle数据库更为重要的一个参数是DB_NAME。DB_NAME代表了实例即将挂接的数据库名称,关系到具体的物理文件。通常缺省的数据库instance_name和db_name可以设置相同
(在RAC环境下,由于多个实例对应一个数据库,所以instance_name和db_name不同)。
在创建数据库的过程中,下图是用于定义数据库名称(db_name)和影响INSTANCE_NAME的SID:

Oracle文档中对于db_name的定义如下:
DB_NAME用来定义数据库名称,必须是一个不超过8个字符的文本串,在数据库创建过程中,db_name被记录在数据文件,日志文件和控制文件中。如果数据库实例启动过程中参数文件中的db_name和控制文件中的数据库名称不一致,则数据库不能启动。
此外常见的几个结论有:


  • 1. 一个实例可以mount并打开任何数据库,但是同一时间一个实例只能打开一个数据库
  • 2. 一个数据库可以被一个或多个实例所mount并打开(在OPS/RAC环境下,一个数据库可以被多个实例所打开)。
SQL> show parameter db_name
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_name                              string      oracle
SQL> show parameter instance_name
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
instance_name                        string      oracle


测试:
1、SQL> select * from scott.emp;
select * from scott.emp
                    *
第 1 行出现错误:
ORA-01219: ??????: ???????/?????

2、SQL> desc scott.emp;
ERROR:
ORA-04043: ?? scott.emp ???

3、SQL> select * from v$controlfile;
未选定行
4、SQL> select * from v$datafile;
select * from v$datafile
              *
第 1 行出现错误:
ORA-01507: ??????
5、SQL> select * from v$logfile;
select * from v$logfile
              *
第 1 行出现错误:
ORA-01507: ??????

注意:
           此阶段不打开任何的控制文件及数据文件。


第三步:切换到mount

SQL> alter database mount;
数据库已更改。


1、查看控制文件:

SQL> desc v$controlfile;
 名称                                                                                                              是否为空? 类型
 ---------------------------------------------------------------------------------------------------
 STATUS                                                                                                                     VARCHAR2(7)
 NAME                                                                                                                       VARCHAR2(513)
 IS_RECOVERY_DEST_FILE                                                                                                      VARCHAR2(3)
 BLOCK_SIZE                                                                                                                 NUMBER
 FILE_SIZE_BLKS                                                                                                             NUMBER
SQL> select * from v$controlfile;
STATUS
-------
NAME
------------------------------------------------------------------------------------------------------------------------------------------
IS_ BLOCK_SIZE FILE_SIZE_BLKS
--- ---------- --------------
G:\ORADATA\ORACLE\CONTROL01.CTL
NO       16384            430
G:\ORADATA\ORACLE\CONTROL02.CTL
NO       16384            430
STATUS
-------
NAME
------------------------------------------------------------------------------------------------------------------------------------------
IS_ BLOCK_SIZE FILE_SIZE_BLKS
--- ---------- --------------
G:\ORADATA\ORACLE\CONTROL03.CTL
NO       16384            430


2、查看数据文件:


SQL> select FILE#,STATUS,ENABLED,CHECKPOINT_CHANGE#,CHECKPOINT_TIME,ONLINE_TIME,NAME from v$datafile;
     FILE# STATUS  ENABLED    CHECKPOINT_CHANGE# CHECKPOINT_TIM ONLINE_TIME    NAME
---------- ------- ---------- ------------------ -------------- -------------- ---------------------------------------------------------------
         1 SYSTEM  READ WRITE            3145435 31-10? -15     23-9?  -15     G:\ORADATA\ORACLE\SYSTEM01.DBF
         2 ONLINE  READ WRITE            3145435 31-10? -15     23-9?  -15     G:\ORADATA\ORACLE\UNDOTBS01.DBF
         3 ONLINE  READ WRITE            3145435 31-10? -15     23-9?  -15     G:\ORADATA\ORACLE\SYSAUX01.DBF
         4 ONLINE  READ WRITE            3145435 31-10? -15     23-9?  -15     G:\ORADATA\ORACLE\USERS01.DBF
         5 ONLINE  READ WRITE            3145435 31-10? -15                    G:\ORADATA\ORACLE\EXAMPLE01.DBF
         6 ONLINE  READ WRITE            3145435 31-10? -15                    G:\ORACLEMDF\USER_DATA.DBF
         7 ONLINE  READ WRITE            3145435 31-10? -15     25-10? -15     F:\ZHEN.DBF


3、查看日志文件

SQL> select * from v$logfile;
    GROUP# STATUS  TYPE    MEMBER                               
---------- ------- ------- -------------------------------------
         3 STALE   ONLINE  G:\ORADATA\ORACLE\REDO03.LOG         
         2 STALE   ONLINE  G:\ORADATA\ORACLE\REDO02.LOG         
         1         ONLINE  G:\ORADATA\ORACLE\REDO01.LOG    




数据不可访问,因为在此阶段,数据文件,日志文件并没有打开

SQL> select * from scott.emp;
select * from scott.emp
                    *
第 1 行出现错误:
ORA-01219: ??????: ???????/?????


第三步:open阶段



1、SQL> alter database open;


数据库已更改。


2、SQL> select * from scott.emp;


     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
      7499 ALLEN      SALESMAN        7698 20-2?  -81           1600        300         30
      7521 WARD       SALESMAN        7698 22-2?  -81           1250        500         30
      7566 JONES      MANAGER         7839 02-4?  -81           2975                    20
      7654 MARTIN     SALESMAN        7698 28-9?  -81           1250       1400         30
      7698 BLAKE      MANAGER         7839 01-5?  -81           2850                    30
      7788 SCOTT      ANALYST         7566 19-4?  -87           6100                    20
      7844 TURNER     SALESMAN        7698 08-9?  -81           1500          0         30
      7876 ADAMS      CLERK           7788 23-5?  -87           1100                    20
      7900 JAMES      CLERK           7698 03-12? -81            950                    30
      7902 FORD       ANALYST         7566 03-12? -81           3000                    20


已选择10行。


3、open阶段数据信息已经可以正常访问。


4、查看警告日志文件的路径:

SQL> show parameter background_dump_dest
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
background_dump_dest                 string      G:\ADMIN\ORACLE\BDUMP


查看动态性能视图

v$sql、v$lock、v$session 



总体的启动:


SQL> shutdown
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> select instance_name,host_name,status
  2  from v$instance;
select instance_name,host_name,status
*
第 1 行出现错误:
ORA-01034: ORACLE not available
SQL> startnomount
SP2-0734: 未知的命令开头 "startnomou..." - 忽略了剩余的行。
SQL> startup nomount
ORACLE 例程已经启动。
Total System Global Area  293601280 bytes
Fixed Size                  1248600 bytes
Variable Size             109052584 bytes
Database Buffers          176160768 bytes
Redo Buffers                7139328 bytes
SQL> alter database mount
  2  ;
数据库已更改。
SQL> alter database open;
数据库已更改。
SQL> select instance_name,host_name,status
  2  from v$instance;
INSTANCE_NAME    HOST_NAME                                                        STATUS
---------------- ---------------------------------------------------------------- ------------
oracle           PC-201509230003                                                  OPEN



     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值