2012年7月23日星期一

深入解析oracle--总结

1.alter database mount;
  这一过程数据库需要计算 mount id 并将其记录在控制文件中,然后开始启动心跳(heartbeat),每3秒更新一次控制文件。可用以下命令间隔3秒转储2次控制文件信息:
alter session set enents 'immediate trace name CONTROLF level 8';
cd dump 下用diff xx.trc  xx.trc 比较两个文件的不同。只有heartbeat的值不同。
2.也可用sys查内部表得到heartbeat的值X$KCCCP(Kernel Cache Controlfile managerment Checkpoint Progress);
select CPHBT from X$KCCCP;
SQL> select event#,name from v$event_name where name like '%heart%';

    EVENT# NAME
---------- --------------------------------------------------
        75 heartbeat monitor sleep
       380 ASM mount : wait for heartbeat
       563 control file heartbeat

SQL>
3.备份控制文件;
alter database backup controlfile to trace;
4.db_unique_name
5.orapwd file=orapworcl password=oracle entries=5
6.oracle_base在11g引入到了数据库的内部,增加了隐含参数。
SQL> select x.ksppinm name,y.ksppstvl value,x.KSPPDESC PDESC from sys.x$ksppi x,sys.x$ksppcv y where x.indx=y.indx and x.ksppinm like '%&par%' ;
SQL> /
输入par的值: oracle_base
old: 2: x.indx=y.indx and x.ksppinm like '%&par%'
new: 2: x.indx=y.indx and x.ksppinm like '%oracle_base%'

NAME                 VALUE                PDESC
-------------------- -------------------- --------------------
__oracle_base        /extdata/oracle      ORACLE_BASE

SQL>
7.ADR:automatic diagnostic repository.
  select * from v$diag_info ;其中diag_alert和diag trace对应目录分别存储了xml和文本格式的街区日志文件。
8.ADR之于诊断文件,就类似于OFA(Optimal Flexible Architecture)之于数据库文件,FRA(Flash Recovery Area)之于备份文件。
9.ADR 是 11g的新特性 故障诊断基础架构(Fault Diagnosability Infrastructure)的一角。
ips 属于FDI 的事件打包服务(Incident Packaging Service,IPS).
10.adrci
   adrci> show incident
   adrci> show incident -mode DETAIL -p "incident_id=14601"
   cd /extdata/oracle/diag/rdbms/orcl/orcl/incident/incident_14601
   ls -l
   使用如下命令可以为14601号incident创建逻辑package
   adrci> set homepath diag/rdbms/orcl/orcl/
   adrci> ips create package incident 14601
   进一步用如下命令生成物理package
   adrci> ips generate package 1 in /extdata/oracle/diag

1.2 数据库的访问
   select sid,username,machine,program from v$session where username='SYSTEM' ;
   select instance_name,startup_time,version from v$instance;
   select sid,program from v$session ;

    监听器不是默认的名称、端口 要设置 LOCAL_LISTENER参数:
    local_listener=listener_alias
    对于共享服务器模式,可以设置为:
    DISPATCHERS="(PROTOCOL=tcp)(LISTENER=listener1)"

 对于RAC环境,监听器可以向远程服务器注册:
 orcl1的remote_listener=listener_orcl2
 orcl2的remote_listener=listener_orcl1
 在orcl1的tnsnames.ora中:
 listener_orcl2=
 (description=
 (address=(protocol=tcp)(host=orcl2-server)(port=1521)))
 在orcl2上同样把listener_orcl1解析。

 show parameter remote_lis
 alter system set REMOTE_LISTENER='LISTENERS_ALIAS' scope=both sid='*';
 listener.ora 中:
 LISTENER_ORCL =
   (ADDRESS_LIST =
      (ADDRESS=(PROTOCOL=TCP)(HOST=192.168.100.100)(PORT=1521))
      (ADDRESS=(PROTOCOL=TCP)(HOST=192.168.100.101)(PORT=1521))
   )

RAC环境的tnsnames.ora多个实例地址信息,同时支持负载均衡和在多实例之间的Failover

smsrac =
  (description =
     (address=(protocol=tcp)(host=192.168.100.100)(port=1521))
     (address=(protocol=tcp)(host=192.168.100.101)(port=1521))
     (load_balance=yes)
     (connect_data=
        (service=dedicated)
        (service_name=smsrac)
        (failover_mode =
           (type=select)
           (method=basic)
           (retries=180)
           (delay=5)
      )
     )
    )