zoukankan      html  css  js  c++  java
  • oracle 11g ocp 笔记(3)-- 实例管理

    1、设置初始化参数文件:

       查询参数可以从v$parameter  (从实例中取得数值) 和v$spparameter(从参数文件取值。)

      两个参数文件:
        1.pfile(parameter file,参数文件)
              pfile是文本格式的参数文件,实例启动时只加载一次,通常认为是静态的.
              新版本Oracle已逐步取消pfile文件了
              默认名称: initSID.ora
              默认位置: $ORACLE_HOME/dbs/
                        /u01/app/oracle/product/12.1.0/db_1/dbs/pfileSID.ora
              新版本Oracle已逐步取消pfile用spfile代替了,在位置$ORACLE_HOME/dbs/已经找不到这个pfile文件了.
              创建数据库后会保存一份pfile到以下位置,当spfile有问题时可以使用这个pfile来启动.
              /u01/app/oracle/admin/sid/pfile/init.ora.xxxxxxxxxxx

         2.spfile(server parameter file,服务器参数文件)
              spfile是二进制的参数文件,在实例运行时能读取和更新spfile文件,通常认为是动态的
              默认名称: spfileSID.ora, spfile.ora
              默认位置: $ORACLE_HOME/dbs/
                          /u01/app/oracle/product/12.1.0/db_1/dbs/spfileSID.ora

    搜索顺序:

        $ORACLE_HOME/dbs/spfileSID.ora
        $ORACLE_HOME/dbs/spfile.ora    (通常只用于RAC环境,一个文件可以启动多个实例)
        $ORACLE_HOME/dbs/initSID.ora

    使用指定参数文件启动实例.
        startup pfile=$ORACLE_HOME/dbs/initSID.ora
        startup spfile=$ORACLE_HOME/dbs/spfileSID.ora

    通过pfile创建spfile.
        create spfile[='spfilename'] from pfile[='pfilename'];
        create spfile='/u01/app/oracle/product/12.1.0/db_1/dbs/spfile' from pfile='/u01/app/oracle/product/12.1.0/db_1/dbs/pfile';

    通过spfile创建pfile.
        create pfile[='pfilename'] from spfile[='spfilename'];
        create pfile='/u01/app/oracle/product/12.1.0/db_1/dbs/pfile' from spfile='/u01/app/oracle/product/12.1.0/db_1/dbs/spfileSID.ora';

    静态参数和动态参数:


        静态参数: 有些参数在实例启动后就固定了.
        动态参数: 有些参数可以在实例运行时更改.

        查看当前运行的实例中生效的参数值
        select name,value from v$parameter order by name;

        查看spfile参数文件中的参数值
        select name,value from v$spparameter order by name;
       
        查看参数类型:
        select name,value,issys_modifiable from v$parameter order by name;
        select distinct issys_modifiable from v$parameter;
        IMMEDIATE -- 动态参数,立即生效
        FALSE     -- 静态参数
        DEFERRED  -- 动态参数,延迟生效

        查看静态参数:
        select name,value from v$parameter where issys_modifiable='FALSE' order by name;

    基本参数和高级参数
        基本参数: 应该为每个数据库使用基本参数.
        select name,value from v$parameter where isbasic='TRUE' order by name;

        select s.name,s.value
          from v$spparameter s join v$parameter p
            on s.name=p.name
         where p.isbasic='TRUE'
         order by name;

        高级参数: 只要高级参数使用了默认值设置,大多数数据库实例都可以完美运行。
        实际上还有一些隐式参数,通常不可见,只能在Oracle Support的指导下进行设置。

    修改初始化参数
        语法:
        alter system set parameter=value [comment='text'] [deferred] [scope={spfile|both|memory}] [sid='sid|*'];
        deferred延迟生效.
        scope的三个可选值:
        memory: 只改变当前运行的实例.
        spfile: 只改变spfile文件的设置.
        both:   (默认值)改变实例及spfile文件的设置.

        如果修改的是静态参数,则必须指定scope=spfile,下次启动实例时参数才生效.
        修改静态参数不指定scope=spfile,则会出现错误: ORA-02095: specified initialization parameter cannot be modified.
        使用BOTH选项等同不带scope参数的alter system语句.
        如果使用pfile启动实例,设置scope=spfile将失败.

        有些参数可以在系统级别修改,也可以在会话级别修改.
        alter system set optimizer_mode=all_rows;
        alter session set optimizer_mode=first_rows;

        有些参数只能在会话级别进行修改,如: NLS_DATE_FORMAT.
        alter session set nls_date_format='dd-mm-yy hh24:mi:ss';

        重设参数为默认参数(reset)
        alter system reset log_archive_start scope=spfile;

    常用参数
        cluster_database              -- 数据库是RAC还是单实例
        compatible                    -- 模仿的版本,一般是实际版本
        control_files                 -- 控制文件副本的名称和位置
        db_block_size                 -- 数据文件默认块大小
        db_create_file_dest           -- 数据文件的默认位置
        db_create_online_log_dest_1   -- 联机重做日志文件的默认位置
        db_create_online_log_dest_2   -- 联机重做日志文件多重副本的默认位置
        db_domain                     -- 网络域名
        db_name                       -- 数据库名称(唯一不具有默认值的参数),和域名一起组成全局数据库名称. --alter database rename global_name
                                      -- 更改全局数据库名称需要重启实例并重建控制文件
        db_recovery_file_dest         -- 闪回区域的位置
        db_recovery_file_dest_size    -- 闪回区域容量
        db_unique_name                -- 唯一标识符,如果安装了两个相同名称的数据库,则需要使用唯一标识符
        instance_number               -- 用于区分两个打开同一数据库的RAC实例.
        job_queue_processes           -- 运行所调度作业可用的进程数
        log_archive_dest_1            -- 归档重做日志文件的目标
        log_archive_dest_2            -- 归档重做日志文件的多重副本的目标
        log_archive_dest_state_1      -- 指示是否启用了目标
        log_archive_dest_state_2      -- 指示是否启用了目标
        nls_language                  -- 实例的语言
        nls_territory                 -- 实例的地理位置
        open_cursors                  -- 会话一次可以打开的SQL工作区数量
        pga_aggregate_target          -- 实例可以分配给PGA的总内存量
        processes                     -- 可以连接到实例的最大进程数量(包括会话服务器进程)
        remote_listener               -- 此实例注册到远程计算机的侦听器的地址,与RAC有关的参数.
        remote_login_passwordfile     -- 是否使用外部口令文件,以便允许口令文件身份验证.
        rollback_segments             -- 差不多废弃,被后面的UNDO参数替代
        sessions                      -- 允许连接到实例的最大会话数量
        sga_target                    -- 系统全局区域SGA内存大小
        shared_servers                -- 要启动的共享服务器进程数量.
        star_transformation_enabled   -- 是否允许优化器重写将事实表的维度连接在一起的查询
        undo_management               -- 在撤销表空间中自动管理撤销数据,还是在回滚段中手工管理
        undo_tablespace               -- 在使用自动撤销管理的情况下,确定撤销数据的位置.

    2、描述启动和关闭的多个状态。

    1)database control的启动和关闭

     emctl  start  dbconsole

    emctl stop dbconsole

    前提是这是 oracle_home  oracle_sid path 三个环境变量。

    访问: https://hostname:端口号/em

    需要监听

    2)监听启动和关闭工具:

    lsnrctl工具;

    windows服务器

    dbconsole

    启动和停止侦听器语法:
        lsnrctl status [listener]
        lsnrctl start [listener]
        lsnrctl stop [listener]

    3)sqlplus启动

    4)数据库的启动和关闭

    2.启动和关闭数据库
        (1)使用适当的权限进行连接
        要启动和关闭数据库,需要先连接进行身份验证。身份验证类型: 
        ·默认为数据字典身份验证
        ·口令文件身份验证
        ·操作系统身份验证
        普通用户无权限启动或关闭数据库,原因在于普通用户依据数据字典进行身份验证。
        从逻辑上讲,只有在打开数据库之后,才能读取到数据字典,因此无法启动实例并打开数据库。
        要启动和关闭数据库必须使用一些外部身份验证方式来连接数据库: 操作系统身份验证或口令文件身份验证.
        SYSOPER和SYSDBA是具有特殊功能的特殊权限,只有用户使用外部身份验证方式连接时才能启用这些权限.    
        口令文件位置: $ORACLE_HOME/dbs/orapwSID


        使用sqlplus工具或使用Database Control工具来连接和操纵数据库.
        sqlplus文件位置: $ORACLE_HOME/bin/


        连接语法:
        sqlplus /nolog                                   -- 打开sqlplus程序
        connect user/pass[@connect_alias]                -- 普通用户身份验证
        connect user/pass[@connect_alias] as sysdba      -- 口令文件身份验证
        connect user/pass[@connect_alias] as sysoper     -- 口令文件身份验证
        connect / as sysdba                              -- 操作系统身份验证
        connect / as sysoper                             -- 操作系统身份验证


        启动并连接数据库的快捷语法: sqlplus / as sysdba


        (2)启动(startup)
        启动经历三个阶段: 未加载(nomount),加载(mount),打开(open)
        ·未加载(nomount) -- 启动实例
            ·读取数据库参数文件
            ·启动后台进程并按参数文件中的定义分配内存
            ·将进展情况写入警告日志文件中.
        ·加载(mount) -- 读取控制文件,
            ·确定数据文件和重做日志文件的名称和位置
            ·确定数据库名
            ·确定最新系统更改号.
        ·打开(open) -- 打开数据库
            ·所有联机数据文件的头与控制文件信息比较
            ·所有文件同步后,数据库打开.


        shutdown -> nomount   -- 读取初始化参数文件,实例被构建在内存中,启动某些后台进程,将进展情况写入警告日志文件中,参数文件找不到则不能到nomount.
        nomount -> mount      -- 定位并读取控制文件,控制文件损坏和丢失则不能到mount,可以在nomount状态修复控制文件.
        mount -> open         -- 打开数据文件和重做日志文件,数据文件和重做日志文件存在问题或不同步则不能到open状态,可以在mount状态修复.


        启动语法: 
        startup [nomount|mount|open]
        startup                      -- 经历nomount、mount、open阶段
        startup nomount
        alter database mount
        alter database open


        执行startup命令时,Oracle会尝试定位参数文件:
        $ORACLE_HOME/dbs/spfileSID.ora
        $ORACLE_HOME/dbs/spfile.ora
        $ORACLE_HOME/dbs/initSID.ora
        初始化参数control_files指示控制文件的位置,控制文件指示数据文件和重做日志文件的位置.


        (3)关闭(shutdown)
        关闭的四个参数(normal,transactional,immediate,abort)
        ·normal: 默认选项,不许可新的用户连接,但允许继续当前的连接,所有用户退出时,数据库才能真正关闭.
        ·transactional: 不许可新的用户连接,不存在某个事务中的会话将被终止,处于事务中的会话完成事务后终止.所有会话终止,数据库将被关闭。
        ·immediate: 不许可新的用户连接,当前所有连接的会话都被终止,任何活动的事物都将回滚,随后数据库被关闭
        ·abort: 相当于断电,实例被立即终止.


        关闭语法:
        shutdown [normal|transactional|immediate|abort]


        normal、immediate和transactional关闭模式通常称为干净的、一致的或有序的关闭。在所有会话终止后,PMON进程会回滚任何未结束的事务。接下来,CKPT进程发布一个检查点,从而促使DBWn进程将所有被更新的数据从数据库高速缓冲区写入数据文件,同时LGWR进程也将仍然存在于内存当中的所有变化矢量转储到日志文件,随后文件头被更新,文件句柄被关闭。这意味着数据库处于一致的状态:所有已提交的事务都位于数据文件中,不存在需要回滚的、被挂起的未提交事务,并且所有数据文件和日志文件同步。
        abort模式通常被称为无序的关闭,并且会使数据库处于不一致的状态: 因为已提交的事务只存在于内存中,而DBWn进程还未将它们写入数据文件,所以这些事务极有可能丢失,同样,数据文件中的未提交事务也可能尚未回滚。也就是可能丢失了已提交的事务,也可能存储了未提交的事务。这些讹误必须通过实例恢复来修复。abort模式相当于服务器断电和重启。


        startup force = shutdown abort + startup

    4)使用警报日志和跟踪文件。

    一.关于警报日志和跟踪文件
        警报日志中记录关键操作包括:
        ·所有启动和关闭命令,包括中间命令,如alter database mount
        ·实例的所有内部错误(ORA-600错误,只能报告给Oracle Support解决)
        ·任何检测到的数据文件块损坏情况
        ·任何已经发生的记录锁定死锁.
        ·影响数据库物理结构的所有操作,如创建或重命名数据文件和联机重做日志。
        ·调整内部参数值的alter system命令
        ·所有日志开关和日志归档文件.
        跟踪文件由各个后台进程生成,一般在遇到错误时发生,在诊断问题时,生成的跟踪文件非常有用


    二.旧版本中的警报日志和跟踪文件
        在Oracle10g及以前版本中,警报日志和跟踪文件的位置由参数background_dump_dest确定
        select value from v$parameter where name='background_dump_dest';
        默认位置: /u01/app/oracle/product/12.1.0/db_1/rdbms/log
        警报日志: alert_sid.log  (文本格式)
        跟踪文件: sid_***.trc


    三.新版本中的警报日志和跟踪文件
        在Oracle11g以后版本中,警报日志和跟踪文件的位置有改变.
        select * from v$diag_info;


    1.查看警报日志
        select value from v$diag_info where name ='Diag Alert';
        默认位置: /u01/app/oracle/diag/rdbms/sid/sid/alert
        警报日志: log.xml  (xml格式)


    2.查看跟踪文件
        select value from v$diag_info where name ='Diag Trace';
        默认位置: /u01/app/oracle/diag/rdbms/sid/sid/trace
        跟踪文件: sid_***.trc
        警报日志: alert_sid.log  (文本格式)


        参数background_dump_dest位置也有一部分跟踪文件
        select value from v$parameter where name='background_dump_dest';
        默认位置: /u01/app/oracle/product/12.1.0/db_1/rdbms/log
        跟踪文件: sid_***.trc


    四.SQL語句跟踪
    1.用户级自我跟踪
        alter session set sql_trace=true;


        在同一个session中执行SQL语句,将会产生跟踪文件sid_ora_spid.trc(spid为系统进程id):
        /u01/app/oracle/diag/rdbms/sid/sid/trace/sid_ora_spid.trc
        
        spid:系统进程id,可以通过语句查看:
        select s.username,s.sid,s.serial#,p.spid,s.program
          from v$session s,v$process p
         where s.paddr = p.addr 
           and s.username is not null 
           and p.background is null;


        alter session set sql_trace=false;


    2.系统级跟踪
        alter system set sql_trace=true scope=memory;


        在任何session中执行SQL语句,产生跟踪文件sid_ora_spid.trc(spid为系统进程id):
        /u01/app/oracle/diag/rdbms/sid/sid/trace/sid_ora_spid.trc


        alter system set sql_trace=false scope=memory;


    3.用户级的DBA跟踪
        使用Oracle的PL/SQL包DBMS_SYSTEM
        (1)从v$session中查出用户的sid和serial#.
        select s.username,s.sid,s.serial#,p.spid,s.program
          from v$session s,v$process p
         where s.paddr = p.addr 
           and s.username is not null 
           and p.background is null;
        USERNAME                              SID    SERIAL# SPID                     PROGRAM
        ------------------------------ ---------- ---------- ------------------------ -----------------------------
        SYSTEM                                 13      35114 9172                     plsqldev.exe
        SYSTEM                                248      32295 9225                     plsqldev.exe
        SYS                                    14      36202 9111                     sqlplus@gymvm (TNS V1-V3)


        (2)跟踪用户会话
        execute sys.dbms_system.set_sql_trace_in_session(248,32295,true);


        在任何id为248的session中执行SQL语句,产生跟踪文件sid_ora_spid.trc(spid为系统进程id):
        /u01/app/oracle/diag/rdbms/sid/sid/trace/sid_ora_9225.trc


        (3)停止跟踪
        execute sys.dbms_system.set_sql_trace_in_session(248,32295,true);


    4.SQL_TRACE跟踪SQL语句执行情况的内容
        ·解析、执行、取数据的计数
        ·CPU时间和占用时间
        ·物理读和逻辑读
        ·处理行数目
        ·所解析的用户名
        ·每次提交和回滚的情况.


    五.格式化跟踪文件(tkprof)
        使用tkprof程序可以将跟踪文件转化成可以阅读的文本文件,tkprof语法:
        tkprof tracefile outputfile [explain=user/password] [table=schema.tablename] 
                                    [print=integer] [insert= ] [sys= ] [sort= ] ...
        
        $ tkprof tracefile outputfile 

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

    4)数据字典和动态性能视图

    一.数据字典视图
        一般为前缀dba_ all_ user_
        dba_objects
        dba_data_files
        dba_users
        dba_tables
        dba_tablespaces
        dba_alert_history
        数据字典视图只允许在打开数据库及数据字典后查询。


    二.动态性能视图
        v_$前缀: 视图
        v$前缀:  同义词
     
        有些动态性能视图根据实例填充,在实例处于NOMOUNT模式就已可用,例如:
        v$instance
        v$sysstat


        由控制文件填充的动态性能视图(只有在已经加载数据库的情况下可用),例如:
        v$database
        v$datafile
        v$logfile
        v$tablespace


        v$视图与数据字典视图之间存在一些重叠,如:v$tablespace,dba_tablespaces


    三.查询视图了解数据库物理结构
    1.表空间和数据文件
        select t.name,d.name,d.bytes 
          from v$tablespace t join v$datafile d 
            on t.ts#=d.ts#
         order by t.name


        select t.tablespace_name,d.file_name,d.bytes
          from dba_tablespaces t join dba_data_files d
            on t.tablespace_name=d.tablespace_name
         order by tablespace_name;


    2.所有控制文件副本
        select * from v$controlfile;
        select value from v$parameter where name='control_files';


    3.联机重做日志文件成员的位置和大小
        select m.group#,m.member,g.bytes
          from v$log g join v$logfile m
            on m.group#=g.group#
         order by m.group#,m.member;


    四.常用动态性能视图
        v$parameter            -- 初始化参数
        v$spparameter          -- spfile文件初始化参数
        v$pwfile_users         -- 通过口令文件验证用户列表(sysdba,sysoper) 
        v$instance             -- 实例
        v$database             -- 数据库
        v$controlfile          -- 控制文件
        v$tablespace           -- 表空间
        v$datafile             -- 数据文件
        v$tempfile             -- 临时文件
        v$log                  -- 联机日志组
        v$logfile              -- 联机日志组成员文件
        v$archive_dest         -- 归档位置
        v$archived_log         -- 归档日志文件
        v$session              -- 会话
        v$process              -- 进程
        v$locked_object        -- 锁对象
        v$sqltext              -- SQL语句(显示在多行)
        v$sqlarea              -- SQL语句(显示在一行)
        v$sysstat              -- 系统状态
        v$sgastat              -- SGA状态
        v$pgastat              -- PGA状态
        v$undostat             -- 撤消状态
        v$sesstat              -- Session状态
        v$transaction          -- 事务
        v$shared_pool_advice   -- 共享池顾问
        v$java_pool_advice     -- Java池顾问
        v$streams_pool_advice  -- 流池顾问
        v$db_cache_advice      -- 数据库缓冲区顾问
        v$sga_target_advice    -- SGA自动管理顾问
        v$pga_target_advice    -- PGA自动管理顾问
        v$memory_target_advice -- 内存自动管理顾问(SGA+PGA)
        v$diag_info            -- 警报和跟踪文件位置
        
    五.常用数据字典
        dba_tablespaces    -- 表空间
        dba_data_files     -- 数据文件
        dba_segments       -- 段
        dba_extents        -- 区间
        dba_users          -- 用户
        dba_roles          -- 角色
        dba_objects        -- 对象
        dba_tables         -- 表
        dba_tab_columns    -- 列
        dba_tab_cols       -- 列
        dba_indexes        -- 索引
        dba_views          -- 视图
        dba_sys_privs      -- 系统权限
        dba_tab_privs      -- 对象权限
        dba_role_privs     -- 角色权限
        dba_waiters        -- 等待锁的会话
        dba_source         -- PL/SQL程序代码
        dba_db_links       -- 数据库链接

    参考网址:

    https://blog.csdn.net/gyming/article/details/42387911

    https://blog.csdn.net/gyming/article/details/43086461

    https://blog.csdn.net/gyming/article/details/42045199

    https://blog.csdn.net/gyming/article/details/42046117

  • 相关阅读:
    项目经验分享(上)
    socket.io实现在线群聊
    socket.io中文文档
    常用的Sublime Text插件及安装方法
    常用的Atom插件
    atom及其插件activate-power-mode下载安装
    jeesite快速开发平台
    js权威指南
    hexSHA1散列加密解密(不可逆)
    腾讯云企业邮箱
  • 原文地址:https://www.cnblogs.com/hezt1114/p/8972614.html
Copyright © 2011-2022 走看看