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

猜你喜欢

转载自www.cnblogs.com/hezt1114/p/8972614.html