• 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用户,再执行一下脚本即可。


  • 相关阅读:
    leetcode 287 寻找重复数
    739 每日温度 && 单调栈算法的思路
    leetcode 34 在排序数组中查找元素的第一个和最后一个位置
    leetcode 239 滑动窗口最大值
    leetcode 114 二叉树展开为链表
    leetcode 79 单词搜索
    leetcode 88 合并两个有序数组
    函数指针 & 指针函数
    leetcode 240 搜索二维矩阵
    谱聚类
  • 原文地址:https://www.cnblogs.com/jinxf/p/9166726.html
Copyright © 2020-2023  润新知