zoukankan      html  css  js  c++  java
  • oracle之二实例管理及数据库的启动/关闭

    实例管理及数据库的启动/关闭
       
    2.1 实例和参数文件

    1、instance 功能:用于管理和访问database。instance在启动阶段读取初始化参数文件(init parameter files)。
       
    2、init parameter files :管理实例相关启动参数 。位置:$ORACLE_HOME/dbs
     
    3、pfile :(parameter file)静态参数文件。

    1)文本文件,必须通过编辑器修改参数。 2)修改参数下次重启实例才生效。3)pfile参数文件可以不在database server上。

    命名方式:init+SID.ora
       
    4、spfile :(system parameter file) 动态参数文件。

    1)二进制文件,不可以通过编辑器修改。2)Linux下strings可以查看 。3)必须在database server段的指定路径下。

    命名方式: spfile+SID.ora
    env |grep ORACLE_SID  //查看环境变量

    静态参数和动态参数

    在spfile读到内存后,有一部分参数是可以直接在内存中修改,并对当前instance立即生效,这样的参数叫动态参数。除了动态参数都是静态参数。静态参数修改spfile文件。动态参数在instance关闭后失效,而静态参数是下次instance启动后才生效。

    修改spfile文件的方法:

    alter system set 参数=值 [scope=memory|spfile|both]

    alter system reset 参数 [scope=memory|spfile|both] SID='*'         //恢复缺省值。

    第一种scope=memory 参数修改立刻生效,但不修改spfile文件。
    第二种scope=spfile 修改了spfile文件,重启后生效。
    第三种scope=both 前两种都要满足。

    如果不写scope,即缺省,那就是第三种。

    *考点:如果不修改spfile,将无法更改静态参数。


    通过查看v$parameter ,可以确定哪些参数可以在memory修改,制定scope。或者show parameter 参数名称;

    10:38:35 SQL> desc v$parameter;

    其中:
    ISSYS_MODIFIABLE参数:对应alter system 命令,即系统级修改


    10:38:35 SQL> select distinct issys_modifiable from v$parameter;
     
    ISSYS_MODIFIABLE
    ----------------
    IMMEDIATE            //对应scope=memory
    FALSE                //只能scope=spfile,即修改spfile文件,下次启动才生效。
    DEFERRED            //其他session有效

    ISSES_MODIFIABLE参数:对应alter session命令,即session级修改
     
    10:38:35 SQL> select distinct isses_modifiable from v$parameter;

    ISSES_MODIFIABLE
    ----------------
    TRUE                //表示可以修改
    FALSE                //表示不能修改

    SQL> select name,ISSES_MODIFIABLE,ISSYS_MODIFIABLE from v$parameter where name='sql_trace';

    NAME                                                                             ISSES ISSYS_MOD
    -------------------------------------------------------------------------------- ----- ---------
    sql_trace                                                                        TRUE  IMMEDIATE


    这个结果表示 sql_trace参数在session级别可以改,在system级也可以both修改(动态参数)。

    5、startup时读取参数文件,找到$ORACLE_HOME/dbs目录,顺序是优先spfile启动,没有spfile 才从pfile启动。
             
    pfile和spfile可以相互生成:

    SQL>create pfile from spfile
    SQL>create spfile from pfile(使用spfile启动后不能在线生成spfile,ORA-32002: 无法创建已由实例使用的 SPFILE)

    *考点:

    1)如果使用pfile启动,设置scope=spfile将失败!但可以设置scope=memory。

    可以通过当前内存参数生成pfile和spfile(11g新特性):

    SQL>create pfile from memory;
    SQL>create spfile from memory;

    有了spfile,pfile一般留做备用,特殊情况也可以使用pfile启动,命令如下:只能指定pfile的路径,不能指定spfile的路径

    10:38:35 SQL> startup pfile=$ORACLE_HOME/dbs/inittimran.ora

    怎样知道实例是spfile启动还是pfile启动的?

    10:38:35 SQL> show parameter spfile                                                                                                  
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    spfile                               string      /u01/oracle/dbs/spfiletimran11g.ora

    //如果value有值,说明数据库启动时读的是spfile

    另一个办法是看v$spparameter(spfile参数视图)中的参数memory_target的isspecified字段值,如果是TRUE 说明是spfile启动10:42:35 的(考点)

    SQL> select name,value,isspecified from v$spparameter where name like 'memory_target';
     
    NAME                                VALUE                                        ISSPECIFIED
    -------------------------------------------------------------------------------- -------------------------------------------
    memory_target                       423624704                                    TRUE
     
    EM对初始参数有较好的可视化界面,可以看看,

       
    2.2 数据库启动与关闭:

    2.2.1启动分为三个阶段
      shudown immediate
    1)SQL> startup nomount      //用到spfile,启动内存和进程
    2)SQL> alter database mount;//启动controlfile
    3)SQL> alter database open; //启动all file
       
    1)nomount阶段:读取init parameter
                               
    10:38:35 SQL> select status from v$instance;   (这条命令很实用,看当前数据库启动的状态,有三个 started,mounted,open)                                                                                          
    STATUS
    ------------
    STARTED

    2)mount阶段:  读取控制文件
    20:32:53 SQL> select status from v$instance;                                                                                             
    STATUS
    ------------
    MOUNTED              
                 
    3)open阶段:  1、检查所有的datafile、redo log、 group 、password file。   
               2、检查数据库的一致性(controlfile、datafile、redo file的检查点是否一致)
                  
    SQL> SELECT checkpoint_change# FROM v$database;    //从控制文件读出,数据库的SCN  

    10:38:35 SQL> select file#,checkpoint_change#,last_change# from v$datafile;     //从控制文件读出,数据文件的SCN和结束SCN                                                                      
         FILE# CHECKPOINT_CHANGE#  LAST_CHANGE#
    ---------- ------------------  -------------
             1             570836  
             2             570836
             3             570836
             4             570836
             5             570836
             6             570836

    6 rows selected.

    10:38:35 SQL> SELECT file#,checkpoint_change# FROM v$datafile_header;   //从datafile header读出,LAST_CHANGE#为空则需要instance recover

         FILE# CHECKPOINT_CHANGE#
    ---------- ------------------                                                            
             1             570836
             2             570836
             3             570836
             4             570836
             5             570836
             6             570836

    6 rows selected.

    数据库open之前要检查controlfile所记录SCN和datafile header 记录的SCN是否一致;一致就正常打开库,不一致需要做media recover[SMON]  


    2.2.2 启动数据库时的一些特殊选项

    SQL> alter database open read only;
    SQL> startup force     //以abort关闭
    SQL> startup upgrade    (只有sysdba能连接)
    SQL> startup restrict    (有restrict session权限才可登录,sys不受限制)
    SQL> alter system enable restricted session;  (open后再限制)
    SQL> alter system disable restricted session; (取消限制)
     
                                                           
    2.2.3 实例关闭:

        shutdown normal: 拒绝新的连接,等待当前事务结束,等待当前会话结束,生成检查点
        shutdown transactional :拒绝新的连接,等待当前事务结束,生成完全检查点
        shutdown immediate:  拒绝新的连接,未提交的事务回滚,生成完全检查点
        shutdown abort(startup force) :事务不回滚,不生成检查点,下次启动需要做instance  recovery[SMON通过REDO文件回滚]    

    *考点:shutdown abort 不会损坏database。  
                
    2.3 自动诊断信息库ADR(Automatic Diagnostic Repository) 11g新特性

    存储在操作系统下的一个目录(树)结构,包括:预警日志文件,跟踪文件,健康检查,DUMP转储文件等

    11g用DIAGNOSTIC_DEST一个参数代替了许多老版本的参数,如BACKGROUND_DUMP_DEST,CORE_DUMP_DEST,USER_DUMP_DEST等。

    SQL> show parameter diag

    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    diagnostic_dest                      string      /u01

    考点:这是ADR的基目录,如果你设置了ORACLE_BASE环境变量,则diagnostic_dest默认值被设置为同样的目录,否则,oracle给你设置的目录是$ORACLE_HOME/log

     
    10:38:35 SQL> show parameter dump      //这是Oracle11g的。                                                                                      
    SQL> show parameter dump

    NAME                                         TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    background_core_dump                     string      partial
    background_dump_dest                     string      /u01/diag/rdbms/timran11g/timran11g/trace
    core_dump_dest                           string      /u01/diag/rdbms/timran11g/timran11g/cdump
    max_dump_file_size                      string      unlimited
    shadow_core_dump                         string      partial
    user_dump_dest                           string      /u01/diag/rdbms/timran11g/timran11g/trace

    在oracle 11g中,故障诊断及跟踪的文件路径改变较大,告警文件分别以两种文件格式存在,xml的文件格式和普通文本格式。这两份文件的位置分别是V$DIAG_INFO中的Diag Alert 和Diag Trace 对应的目录。

    如果熟悉9i的话,你会发现11g将bdump和udump合并到一个目录/u01/diag/rdbms/timran11g/timran11g/trace下了。

    1)跟踪文件:
    其命名方法依然是:
    Background Trace Files(针对bg process)    :SID_processname_PID.trc      如:timran11g_lgwr_5616.trc
    User Trace Files(针对server process)        :SID_ora_PID.trc        如:timran11g_ora_10744.trc

    另外增加.trm(trace map)文件,记录trc文件的结构信息。

    SQL> select * from v$diag_info;
     
       INST_ID NAME                                   VALUE
    ---------- ----------------------------------------     -----------------------------------------------------------------
             1 Diag Enabled                                     TRUE
             1 ADR Base                                             /u01
             1 ADR Home                                                /u01/diag/rdbms/timran11g/timran11g
             1 Diag Trace                                          /u01/diag/rdbms/timran11g/timran11g/trace
             1 Diag Alert                                           /u01/diag/rdbms/timran11g/timran11g/alert
             1 Diag Incident                                    /u01/diag/rdbms/timran11g/timran11g/incident
             1 Diag Cdump                                       /u01/diag/rdbms/timran11g/timran11g/cdump
             1 Health Monitor                                /u01/diag/rdbms/timran11g/timran11g/hm
             1 Default Trace File                       
             1 Active Problem Count                                 0
             1 Active Incident Count                                0

    其中Diag Trace对应的目录里为文本格式的告警日志和跟踪文件,并沿用在10g中命名方法

    2)告警日志:文本格式的告警日子命名是:alter_SID.log,它包含通知性的消息,如数据库启动或关闭,以及有关表空间创建和删除的信息,也包括一些内部错误信息等。
    alter_SID.log不断增长,定期清理是必要的

    $cat dev/null > alert_timran11g.log        //将文件清空

    $rm alter_timran11g.log            //删掉也没有关系,下次启动会自动创建(考点)

    检查告警日志和跟踪文件的有关错误信息的记录,如lwgr不能写日志组时,会创建一个跟踪文件,并将一条信息放入告警日志。

    [oracle@timran trace]$ tail -f /u01/diag/rdbms/timran11g/timran11g/trace/alert_timran11g.log
    space available in the underlying filesystem or ASM diskgroup.
    Tue Sep 04 09:12:19 2012
    Completed: ALTER DATABASE OPEN
    Tue Sep 04 09:16:41 2012
    Starting background process CJQ0
    Tue Sep 04 09:16:41 2012
    CJQ0 started with pid=29, OS id=2483
    Tue Sep 04 10:19:11 2012
    drop tablespace tb1
    Completed: drop tablespace tb1

    ADR的概念在053试题中较多,因为它涉及了11g在数据库自动管理方面的一些重要知识,如度量,阀值,预警系统,健康监测等等,我们在053课程里会继续介绍。

    2.4 口令文件

    oracle登录认证方式有多种

    2.4.1 sys的两种常用的登录认证方式:OS认证和口令文件认证。

    1)OS认证:本地认证方式。Oracle不验证用户密码,前提:用户必须属于DBA组,且使用本地登录。

    如:sqlplua / as sysdba

    2)口令文件认证:是一种网络远程认证方式,只有sysdba权限的用户可以使用口令文件,必须输入密码和网络连接符。

    如:sqlplus sys/oracle@timran11g as sysdba

    2.4.2 普通用户登录

    1)普通用户是指没有sysdba权限的用户,比如system 、scott,或者是tim什么的,登录都必须输入口令,不管是本地还是远程,它们的口令密码不是以文件形式存放的,而是由oracle保管在其内部的数据字典里。

    2)通过设置这个参数为TURE,可以让口令是大小写敏感的(11g新特性)

    SQL> show parameter case

    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    sec_case_sensitive_logon             boolean     TRUE

    本节讨论的口令文件是sysdba用户的远程登录认证密码文件,主要用于sys用户远程登录的认证。

    位置:$ORACLE_HOME/dbs/orapwSID, 所谓口令文件,指的就是sys的口令文件,可以通过remote_login_passwordfile参数控制是否生效

    参数remote_login_passwordfile的三种模式:

      1) none 拒绝sys用户从远程连接
      2)exclusive sys用户可以从远程连接
      3)share 多个库可以共享口令文件
                
    [oracle@timran ~]$ cd /u01/oracle/dbs
    [oracle@timran dbs]$ ll
    总计 52
    -rw-rw---- 1 oracle oinstall  1544 08-17 07:19 hc_timran11g.dat
    -rw-r--r-- 1 oracle oinstall 12920 2001-05-03 initdw.ora
    -rw-r--r-- 1 oracle oinstall  8385 1998-09-11 init.ora
    -rw-r--r-- 1 oracle oinstall  1024 08-17 13:23 inittimran11g.ora
    -rw-r----- 1 oracle oinstall    24 08-17 07:21 lkTIMRAN11
    -rw-r----- 1 oracle oinstall    24 08-17 10:36 lkTIMRAN11G
    -rw-r----- 1 oracle oinstall  1536 08-31 10:47 orapwtimran11g
    -rw-r----- 1 oracle oinstall  3584 09-04 17:49 spfiletimran11g.ora

    这里是放参数文件和(sys)口令文件的地方,orapwtimran11g就是我的sys口令文件

    使用orapwd命令创建新的sys口令文件:

    你可以先删掉它,再创建它,在linux下做:
    [oracle@timran dbs]$ rm orapwtimran11g         //把sys口令文件删了

    [oracle@timran dbs]$orapwd file=orapwurpdb password=sys123 entries=5 force=y   //重新建立口令文件

    注意:file=orapw+sid的写法

    entries的含义是表示口令文件中可包含的SYSDBA/SYSOPER权限登录的最大用户数。
             
    2.5 添加scott 案例

    有时候,scott用户被误删掉了,不要紧,可以通过执行下列脚本重新建立。

    10:38:35 SQL> @$ORACLE_HOME/rdbms/admin/utlsampl.sql

    大家可以试一下:先删除scott用户,再执行一下脚本即可。


  • 相关阅读:
    octotree神器 For Github and GitLab 火狐插件
    实用篇如何使用github(本地、远程)满足基本需求
    PPA(Personal Package Archives)简介、兴起、使用
    Sourse Insight使用过程中的常使用功能简介
    Sourse Insight使用教程及常见的问题解决办法
    github 遇到Permanently added the RSA host key for IP address '192.30.252.128' to the list of known hosts问题解决
    二叉查找树的C语言实现(一)
    初识内核链表
    container_of 和 offsetof 宏详解
    用双向链表实现一个栈
  • 原文地址:https://www.cnblogs.com/jinxf/p/9166726.html
Copyright © 2011-2022 走看看