2012年6月28日星期四

nmon 监控

一、介绍

Nmon 工具是 IBM 提供的免费的在AIX与各种Linux操作系统上广泛使用的监控与分析工具。该工具可将服务器的系统资源耗用情况收集起来并输出一个特定的文件,并可利用 excel 分析工具nmonanalyser进行数据的统计分析。并且,nmon运行不会占用过多的系统资源,通常情况下CPU利用率不会超过2%。针对不同的操作系统版本,nmon有相应版本的程序。分别依次按c,m,t会分别显示相应信息。

以下介绍AIX版本下的nmon的使用

二、安装

首先下载 nmon 工具,下载时需注意要下载对应的系统版本。我们这里以 AIX 为例,下载的是nmon4aix_11e.tar.gz 版本。下载后解压nmon4aix_11e.tar.gz(里面包含README_v11.txt、nmon_aix51、nmon_aix52ml5、nmon、nmon_aix52ml2nmon_aix53),将文件夹名改为 nmon 并上传到 Linux 中(任何一个文件夹下均可以)。

为了能够正常的使用 nmon 工具,我们需要修改相关文件的权限。

tbcs@BOSS1:/interface/interface/nmon$chmod 755 nmon nmon_aix51nmon_aix52ml2 nmon_aix52ml5 nmon_aix53
1.jpg


现在可以使用nmon了。

Nmon工具使用比较简单,在nmon 目录下,输入 ./nmon
2.jpg

出现此画面,说明已安装成功。(这是AIX版本的画面,其他版本画面会稍有不同)

输入c可显示CPU的信息,“m”对应内存、“n”对应网络,“d”可以查看磁盘信息;“t”可以查看系统的进程信息;“
3.jpg


三、数据采集

以上实现的是对服务器的实时监控,在实际的性能测试中我们需要把一段时间之内的数据记录下来,可以使用如下命令

./nmon –f –t –r test –s 30 –c 10

上面命令的含义是:

-f :按标准格式输出文件名称:<hostname>_YYYYMMDD_HHMM.nmon

-t 输出最耗资源的进程
-s :每隔n秒抽样一次,这里为30秒
-c :取出多少个抽样数量,这里为10,即监控=10*30/60=5分钟

test:监控记录的标题

该命令启动后,会在nmon所在目录下生成监控文件,并持续写入资源数据,直至360个监控点收集完成——即监控1小时,这些操作均自动完成,无需手工干预,测试人员可以继续完成其他操作。如果想停止该监控,需要通过“#ps –ef|grep nmon”查询进程号,然后杀掉该进程以停止监控。

nmon 输出文件的命名方式是服务器名_日期时间.nmon

通过以下命令,将.nmon文件转化成.csv文件,在当前目录生成对应的.csv文件

sort BOSS1_110810_1438.nmon>BOSS1_110810_1438.csv

4.jpg


将BOSS1_110810_1438.csv文件下载到本地。通过nmon analyser工具( nmon analyser v33g.xls)转化为excel文件。如何转化呢?步骤如下:

1) 下载后打开nmon analyser v33g.xls

2) 调整excel宏的安全级别,调整为最低或者如下操作

5.jpg


3) 然后点击Analyser nmon data 按钮,选择下载下来的.csv文件,然后就会转化成.excel文件,生成图形化的文件,例如:
6.jpg
7.jpg

2012年6月27日星期三

11g数据导入到10g

用exp、imp命令时进行11g备份,导入10g的时候会抛错:不是有效的导出文件,头部验证失败;未成功终止导入。

实验步骤如下:

一、在11g服务器上,使用expdp命令备份数据

EXPDP USERID='SYS/abc@metar as sysdba' schemas=oa directory=DATA_PUMP_DIR dumpfile=dag.dmp logfile=dag.log version=10.2.0.1.0

例如我的sys密码是abc,数据库sid是metar,要导出的用户名是oa,要导入到10.2.0.1.0版本的Oracle数据库中去。aa.dmp和aa.log将会在11g的dpdump目录中生成,例如我的11g装在了D盘下面,于是dag.dmp将会在D:/app/Administrator/admin/cuc/dpdump目录下被生成。

二、在10g服务器上,使用impdp命令恢复数据

步骤:1.建库2.建表空间3.建用户并授权4.将dag.dmp拷贝到10g的dpdump目录下5.impdp导入数据库
1、建库:是在database configuration assistant 中直接新建一个数据库(实例)。
2、建表空间:create tablespace OA datafile 'D:\oracle\product\10.2.0\oradata\orcl\oa.dbf' size 400m autoextend on next 20m online;
3、建用户:
create user oa identified by oa;
授权:
Alter user OA default tablespace OA quota unlimited on OA;
grant create session to oa;
grant connect to oa;
grant connect, resource, dba to oa;
grant create table to oa;
grant create view to oa;
grant create trigger to oa;
grant select any table to oa;
grant create sequence to oa;
grant create procedure to oa;
grant create role to oa;
grant create type to oa;
grant GRANT ANY PRIVILEGE to oa;

4、创建目录:
sqlplus sys/abc@metar
sql>create directory dump_dir as 'C:\oracle\product\10.2.0\admin\daggis\udump';

IMPDP USERID='SYS/abc@metar as sysdba' schemas=oa directory=DATA_PUMP_DIR dumpfile=dag.dmp logfile=dag.log version=10.2.0.1.0
 
进行验证,在导出数据库的机器运行一次,在导入数据库后的机器运行一次,看看结果是否一样:sql>select count(*) from dba_objects where owner in ('xxx','xxx','xxx');

2012年6月26日星期二

sqluldr2在linux上运用

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs
         
PATH=$PATH:$HOME/bin
         
export PATH
export ORACLE_SID=orcl
export ORACLE_BASE=/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export PATH=$ORACLE_HOME/bin:$PATH:$ORACLE_HOME/lib
export NLS_LANG='AMERICAN_AMERICA.ZHS16GBK'
export LD_LIBRARY_PATH=$ORACLE_HOME/lib

[oracle@localhost sqluldr]$ ./sqluldr2_linux64_10204.bin cm_dsa/cm_dsa query=ds_clt_abis_ho field=, file=/oradata/cm_dsadump/ds_clt_abis_ho.csv text=CSV

ASM概念以及管理

一、关于oracle ASM实例的概念:
      ASM 实例与 ORACLE 实例差不多,都是 由 sga 和一堆后台进程组成,从功能上来看,区别在于oracle实例管理的是数据库,而asm实例只是管理asm盘阵。
通过Oracle EM或DBCA都可以对asm进行一些配置,不过三思觉着管理asm括弧实例的最佳工具仍是sql*plus,在进入sql*plus前也需要设置ORACLE_SID的环境变量,该环境变量通常是+ASM[node#] 。
ASM 实例没有数据字典之类的东东存储用户系统,因此最常见的连接认证方式就是操作系统认证as sysdba进入(OSDBA组的用户)。如果是通过远程连接的话( 比如远程通过tnsnames或OEM管理),也可以使用密钥文件进行验证,该密钥文件直数据库的密钥文件在命名规则及使用规则上完全一模一样。如果使用dbca建库的话,默认就会创建asm的密钥文件,当然也可以自行手动通过orapwd命令进行创建,与数据库的密钥文件有所不同的是,asm 的密钥文件对应的用户只有一个----sys。
二、启动和关闭oracle实例:
前些日子,装完oralce配置完asm后一切正常,当重新启动后就发现了oracle起不来,报如下错误:
ORA-01078: failure in processing system parameters 
ORA-01565: error in identifying file '+ORADATA/db01/spfiledb01.ora' 
ORA-17503: ksfdopn:2 Failed to open file +ORADATA/db01/spfiledb01.ora 
ORA-15077: could not locate ASM instance serving a required diskgroup
检查了一下,并非'+ORADATA/db01/spfiledb01.ora'文件不存在,而是由于ASM磁盘组没起来导致的。启动asm磁盘组有两种方法,一是使用dbca工具,二是从命令行启动。
1、dbca启动:
当启动dbca后,在出现的画面上选择 “Configure Automatic Storage Management”选项,下一步,就会启动ASM磁盘组并挂载磁盘组。
image
2、命令行启动:
首先要知道asm实例名,否则只能从DBCA启动了。这里的实例名是+ASM,操作如下:
在执行之前注意别忘了先设置操作系统环境变量ORACLE_SID。
image
现在已经启动到nomount状态了,查看磁盘组状态,可以使用以下命令查看:
image
查看ASM实例名:
image
ASM 实例与DB实例高度相似,启动和停止实例的命令也一模一样,就启动来说,也同样拥有 NOMOUNT/MOUNT/OPEN /FORCE 几种状态。
  • NOMOUNT :仅启动实例;
  • MOUNT 、OPEN:启动实例并加载磁盘,注意加载的是磁盘组(如果当前未创建或配置任何磁盘组,则提示敬告信息),OPEN,选项对于ASM实例无意义等同于MOUNT。
  • FORCE :相当于先执行shutdown abort,然后再startup。
使磁盘组处于mount状态:
image
查看磁盘组状态:
image
使用ps -ef|grep ora可以查看asm进程:
image
到此,就可以正常启动oracle数据库实例了:
image 
在oracle 10g版本中,ASM是依赖于CSS守护进程的,因此在启动ASM 实例前要确保css守护进程已经启动。CSS(Cluster Synchronization Services) 守护进程 用来维持ASM 及客户端数据库实例间的一致性 同步,如果是通过dbca建库的话,那么CSS守护进程默认即会启动(跟随系统reboot)。
检查css守护进程是否启动非常简单 ,直接使用crsctl check cssd即可,如果启动的话会收到"CSS appears healthy"的返回消息:
image
关闭ASM实例:
NORMAL/IMMEDIATE/TRANSACTIONAL/ABORT几个选项的定义与关闭普通数据库实例完全一模一样。
如果oracle数据库实例开启了,关闭asm实例时会报如下错误:
image
关闭oracle数据库实例后才能关闭ASM实例。
image
三、ASM实例的初始化参数:
ASM 实例的初始化参数形式上与数据库的初始化参数相同,也分spfile和pfile,操作方式也完全相同,只不过具体的参数及参数值略有差异,大多数数据库的初始化参数在这里也能见到,并且某些参数意义都完全相同,同样也有一些参数虽然见到了,不过并不需要设置,这个可以理解,毕竟asm只有实例,相对比数据库的初始化参数要简单的多了,还有一些参数则是数据库初始化参数中没有的。比如ASM开头的那几个初始化参数,这里把差异的部分都列出说明。
ASM 实例在内存占用这块还是比较轻量级的,基本上有个100m空间就很充足了 ,因此内存这块相关参数就不说了,下面说说几个ASM实例特别需要的参数。
首先,初始化参数中的INSTANCE_TYPE,该参数必须被设置为ASM(见粉红色部分):
+ASM.asm_diskgroups='ORADATA'#Manual Mount 
*.asm_diskgroups='ORADATA' 
*.background_dump_dest='/u01/app/oracle/admin/+ASM/bdump' 
*.core_dump_dest='/u01/app/oracle/admin/+ASM/cdump' 
*.instance_type='asm' 
*.large_pool_size=12M 
*.remote_login_passwordfile='SHARED' 
*.user_dump_dest='/u01/app/oracle/admin/+ASM/udump'
标识要启动的实例是ASM,而不是数据库实例(数据库实例对应类型为RDBMS)。
与ASM相关的初始化参数有三个:
  • ASM_POWER_LIMIT :指定磁盘rebalance的程度,有0-11个级别,默认值为1,指定的级别越高,则rebalance的操作就会越快被完成(当然这也意味着这个时间段内将占用更多的资源),指定级别较低的话,虽然rebalance操作会耗时更久,但对当前系统的IO及负载影响会更少,这中间的度需要DBA根据实际情况衡量。另外,这个参数指定的只是一个默认值,在操作过程中,即可以随便动态修改,也可以在语句级命令行时指定power,覆盖该默认值。
  • ASM_DISKSTRING :用最简单的话说,就是设置ASM启动时检查的磁盘,该选项可以同时指定多个值,并且支持通配符。比如说,只检查/dev/dsk/下的设备,可以设置该参数如下:/dev/dsk/*,默认情况下该参数为空,为空的话,表示ASM将查找系统中所有ASM拥有读写权限的设备。
  • ASM_DISKGROUPS :指定实例启动或alter diskgroup all mount语句时要加载的磁盘组,如果为空的话,那么实际就仅启动到NOMOUNT状态了。如果是使用SPFILE的话,该参数一般不需要手动修改,ASM能够自动更新该初始化参数中的值。
    修改 ASM 实例初始化参数文件的命令规则与数据库初始化参数完全相同 ,例如:
image
四、管理ASM磁盘:
ASM 磁盘组的管理方式呢也比较多,比如像DBCA、EM、SQL*PLUS等均可操作(不同工具 易用性不同,不过 功能也有差异),除此之外ORACLE还专门提供了ASMCMD命令行方式,像操作文件系统一样来操作磁盘组。本节操作主要使用sql*plus命令行工具,关于asmcmd命令行中的命令,以后再说。
在管理ASM之前不得不提与ASM相关的动态性能视图,这些视图将对我们后面的操作起到重要作用,查询数据库中ASM相关视图可以通过下列SQL语句:
image
这其中,V$ASM_ALIAS视图中记录文件别名信息,V$ASM_CLIENT返回当前连接的客户端实例信息,V$ASM_DISK*相关视图中记录的是ASM管理的磁盘及磁盘组信息,V$ASM_OPERATION记录当前磁盘的操作信息,例如:
image
image 
加或删除磁盘的影响
当发生添加/删除磁盘组中磁盘的操作时,ASM能够自动平衡。对于普通的删除操作(无force选项),被删除的磁盘在该上数据被有效处理前并不会立刻释放,同样,新增磁盘时,在重分配工作完成前,该盘也不会承担I/O负载的工作。
ASM 如何处理磁盘故障
ASM 中的磁盘组可以分成两类:普通磁盘组和failure磁盘组,后者又与ASM的冗余方式有所关联。普通磁盘组就是标准的存储单元,ASM可以向其可访问的磁盘组中读写数据,failure磁盘组是为了提高数据的高可用性。ASM中的磁盘冗余策略非常简单,概要成三类:外部冗余、标准冗余和高度冗余,其中前者与failure磁盘组无关,如果设置了后者,那么该磁盘组就必须拥有failure磁盘组。听起来像在说failure磁盘组是普通磁盘组的子集,其实差不多可以这么理解,外部冗余的话磁盘属于磁盘组,内部冗余的话,磁盘属于磁盘组的同时,还属于某个(并且只能是一个)failure磁盘组。
比如说对于标准冗余(Normal Redundancy),ASM要求该磁盘组至少要拥有两个failure磁盘组,即提供双倍镜像保护,对于同一份数据(ASM中镜像单位不是磁盘,也不是块,而是一种AU的单位,该单位大小默认是1M)将有主从两份镜像,并且ASM通过算法来自动确保主、从镜像不会存在于同一份failure磁盘组,这样就保障了就算整个failure磁盘组都损坏,数据也不会丢失。至于高度冗余(High Redundancy)就更安全了,它至少需要三个failure磁盘组,也就是一份AU有一主多从的镜像,理论上将更加安全。
如果磁盘发生损坏,那么损坏的磁盘默认自动offlice并被drop掉,不过该磁盘所在的磁盘组仍将保持MOUNT状态,如果该盘有镜像的话,那么应用不会有影响,镜像盘将自动实现接管--只要不是所有failure磁盘组都损坏掉,否则的话,该磁盘组将自动DISMOUNT。举个例子吧,某标准冗余的failure组有6个盘(对应6个裸设备),假如说此时坏了一块盘,没关系,操作继续,坏了那块会被自动dropped,剩下的5块盘仍然能够负担起正常的读写操作。
ASM 扩展性
  • 最多支持63个磁盘组;
  • 最多支持10000个磁盘;
  • 最大支持4pb/磁盘;
  • 最大支持40 exabyte/ASM存储;
  • 最大支持1百W个文件/磁盘组;
  • 外部冗余时单个文件最大35tb,标准冗余时单个文件最大5.8tb,高冗余度时单个文件最大3.9tb。

2012年6月25日星期一

(ASM起不来)ORA-29701: unable to connect to Cluster Synchronization Service

  ORA-29701:unable to connect to Cluster Synchronization Service

  由于CSS服务没起来,导致ASM实例起不来 。解决方法

 [grid@vm11gr2] /home/grid> sqlplus "/as sysasm"
    SQL*Plus: Release 11.2.0.1.0 Production on Sun Oct 25 10:16:21 2009

    Copyright (c) 1982, 2009, Oracle. All rights reserved.

    Connected to an idle instance.
    SQL> startup
    ORA-01078: failure in processing system parameters
    ORA-29701: unable to connect to Cluster Synchronization Service
    SQL>
    无法连接到CSS服务上.到操作系统上检查一下看看

    [grid@vm11gr2] /home/grid> crsctl check css
    CRS-4530: Communications failure contacting Cluster Synchronization Services daemon
    [grid@vm11gr2] /home/grid>
    [grid@vm11gr2] /home/grid> ps -ef|grep cssd
    果然没有CSS的服务daemon进程,再看一下HAS(High Availability Service)的状态

    [grid@vm11gr2] /home/grid> crsctl check has
    CRS-4638: Oracle High Availability Services is online

    [grid@vm11gr2] /home/grid> ps -ef|grep d.bin
    grid 5886 1 0 10:06 ? 00:00:01 /u01/app/grid/product/11.2/grid/bin/ohasd.bin reboot
    [grid@vm11gr2] /home/grid>
    发现HAS的服务确实启动了的,而ora.cssd和ora.diskmon这2个服务是依赖于HAS维护的.
  

    进一步查看各资源的状态
    [grid@vm11gr2] /home/grid> crs_stat -t
    Name                Type                 Target    State Host
    --------------------------------------------------------------
    ora.FLASH_DATA.dg   ora.diskgroup.type   OFFLINE OFFLINE vm11gr2
    ora.SYS_DATA.dg     ora.diskgroup.type   OFFLINE OFFLINE vm11gr2
    ora.asm             ora.asm.type         OFFLINE OFFLINE vm11gr2
    ora.cssd            ora.cssd.type        OFFLINE OFFLINE vm11gr2
    ora.diskmon         ora.diskmon.type     OFFLINE OFFLINE vm11gr2
    [grid@vm11gr2] /home/grid>
  
    [grid@vm11gr2] /home/grid> crsctl status resource -t
    --------------------------------------------------------------------------------
    NAME               TARGET          STATE        SERVER     STATE_      DETAILS
    --------------------------------------------------------------------------------
    Local Resources
    --------------------------------------------------------------------------------
    ora.FLASH_DATA.dg
                      OFFLINE          OFFLINE     vm11gr2
    ora.SYS_DATA.dg 

                      OFFLINE          OFFLINE     vm11gr2
    ora.asm         

                      OFFLINE          OFFLINE     vm11gr2
    --------------------------------------------------------------------------------
    Cluster Resources
    --------------------------------------------------------------------------------
    ora.cssd       

            1         OFFLINE          OFFLINE
    ora.diskmon    

            1         OFFLINE          OFFLINE

    再看一下ora.cssd和ora.diskmon的属性
    [grid@vm11gr2] /home/grid> crs_stat -p ora.cssd
    NAME=ora.cssd
    TYPE=ora.cssd.type
    ACTION_SCRIPT=
    ACTIVE_PLACEMENT=0
    AUTO_START=never
    CHECK_INTERVAL=30
    DESCRIPTION="Resource type for CSSD"
    FAILOVER_DELAY=0
    FAILURE_INTERVAL=3
    FAILURE_THRESHOLD=5
    HOSTING_MEMBERS=
    PLACEMENT=balanced
    RESTART_ATTEMPTS=5
    SCRIPT_TIMEOUT=600
    START_TIMEOUT=600
    STOP_TIMEOUT=900
    UPTIME_THRESHOLD=1m

    [grid@vm11gr2] /home/grid> crs_stat -p ora.diskmon
    NAME=ora.diskmon
    TYPE=ora.diskmon.type
    ACTION_SCRIPT=
    ACTIVE_PLACEMENT=0
    AUTO_START=never
    CHECK_INTERVAL=20
    DESCRIPTION="Resource type for Diskmon"
    FAILOVER_DELAY=0
    FAILURE_INTERVAL=3
    FAILURE_THRESHOLD=5
    HOSTING_MEMBERS=
    PLACEMENT=balanced
    RESTART_ATTEMPTS=10
    SCRIPT_TIMEOUT=60
    START_TIMEOUT=60
    STOP_TIMEOUT=60
    UPTIME_THRESHOLD=5s
    [grid@vm11gr2] /home/grid>
    到这里基本就找到了原因了,可以看到这两个资源的AUTO_START属性默认都设置为never,也就是说他们不会随着HAS服务的启动而自动启动的,
尽管默认情况下HAS服务是开机自动启动的.好了,那我们就手动启动一下吧:
    [grid@vm11gr2] /home/grid> crsctl start resource ora.cssd
    CRS-2672: Attempting to start 'ora.cssd' on 'vm11gr2'
    CRS-2679: Attempting to clean 'ora.diskmon' on 'vm11gr2'
    CRS-2681: Clean of 'ora.diskmon' on 'vm11gr2' succeeded
    CRS-2672: Attempting to start 'ora.diskmon' on 'vm11gr2'
    CRS-2676: Start of 'ora.diskmon' on 'vm11gr2' succeeded
    CRS-2676: Start of 'ora.cssd' on 'vm11gr2' succeeded
    [grid@vm11gr2] /home/grid>

    注:ora.cssd和ora.diskmon这两个服务是有依赖关系的,启动哪个都会把两个都起来.

    [grid@vm11gr2] /home/grid> crs_stat -t
    Name                Type                 Target    State Host
    --------------------------------------------------------------
    ora.FLASH_DATA.dg   ora.diskgroup.type   OFFLINE OFFLINE vm11gr2
    ora.SYS_DATA.dg     ora.diskgroup.type   OFFLINE OFFLINE vm11gr2
    ora.asm             ora.asm.type         OFFLINE OFFLINE vm11gr2
    ora.cssd            ora.cssd.type        ONLINE  ONLINE  vm11gr2
    ora.diskmon         ora.diskmon.type     ONLINE  ONLINE  vm11gr2
    [grid@vm11gr2] /home/grid>
    CSS服务起来了,重启动asm instance 

    [grid@vm11gr2] /home/grid> sqlplus "/as sysasm"

    SQL*Plus: Release 11.2.0.1.0 Production on Sun Oct 25 10:30:03 2009

    Copyright (c) 1982, 2009, Oracle. All rights reserved.

    Connected to an idle instance.

    SQL> startup
    ASM instance started

    Total System Global Area 284565504 bytes
    Fixed Size 1336036 bytes
    Variable Size 258063644 bytes
    ASM Cache 25165824 bytes
    ASM diskgroups mounted
    SQL> exit
    Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
    With the Automatic Storage Management option
    [grid@vm11gr2] /home/grid> crs_stat -t
    Name                Type                 Target    State Host
    --------------------------------------------------------------
    ora.FLASH_DATA.dg   ora.diskgroup.type   ONLINE  ONLINE  vm11gr2
    ora.SYS_DATA.dg     ora.diskgroup.type   ONLINE  ONLINE  vm11gr2
    ora.asm             ora.asm.type         ONLINE  ONLINE  vm11gr2
    ora.cssd            ora.cssd.type        ONLINE  ONLINE  vm11gr2
    ora.diskmon         ora.diskmon.type     ONLINE  ONLINE  vm11gr2
    [grid@vm11gr2] /home/grid>

    tips

      1)默认情况下HAS(High Availability Service)是自动启动的.通过如下命令可以取消和启用自动启动
        crsctl disable has
        crsctl enable has
      2)HAS手动启动和停止
        crsctl start has
        crsctl stop has
      3)查看HAS的状态
        crsctl check has
      4)如果想让ora.css和ora.diskmon服务随着HAS的启动而自动启动,那么你可以这两个服务的AUTO_START属性
        crsctl modify resource "ora.cssd" -attr "AUTO_START=1"
        or
        crsctl modify resource "ora.diskmon" -attr "AUTO_START=1"
      5)如果想取消ora.css和ora.diskmon的Auto start
        crsctl modify resource "ora.cssd" -attr "AUTO_START=never"
        crsctl modify resource "ora.diskmon" -attr "AUTO_START=never"

2012年6月21日星期四

exp/imp transport tablespace(传输表空间)

使用exp imp
transport tablespace
与使用expdp/impdp是步骤一样的 语法上有些不一样

限制条件与expdp/impdp一样 (查看expdp/impdp transport tablespace)
将db xh tablespace smallts transport 到db orcl
SQL> conntr/a123@xh
已连接。
SQL> select tablespace_name from dba_tablespaces;
TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
RMAN_TS
XHTEST
XHTR
OUTLINE_TS
SMALLTS
已选择11行。
SQL> select count(*) from t1;
COUNT(*)
----------
0
SQL> insert into t1 values(1);
已创建 1 行。
SQL> select count(*) from t1;
COUNT(*)
----------
1
SQL> commit;
提交完成。
SQL> select tablespace_name from user_tables where table_name='T1';
TABLESPACE_NAME
------------------------------
USERS
SQL> alter table t1 move tablespace smallts;
表已更改。
SQL> select tablespace_name from user_tables where table_name='T1';
TABLESPACE_NAME
------------------------------
SMALLTS

SQL> execute sys.dbms_tts.transport_set_check('smallts',true,true);
PL/SQL 过程已成功完成。
SQL> select * from sys.transport_set_violations;
VIOLATIONS
--------------------------------------------------------------------------------
Index TR.T1_IND in tablespace USERS points to table TR.T1 in tablespace SMALLTS

发现t1_ind 在USER TABLESPACE 与表不在同一个表空间
(expdp的话用TRANSPORT_FULL_CHECK 设置为N 可以导出时候不报告错误 成功导出 不过只导出INDEX 所在表空间 不导出依赖的表所在表空间还是会报错,impdp时也一样)(exp/imp时用 TTS_FULL_CHECK 一样) 在这里 我们还是手动解决下这个问题
SQL> alter index t1_IND REBUilD TABLESPACE smallts
2 ;
索引已更改。
SQL> execute sys.dbms_tts.transport_set_check('smallts',true,true);
PL/SQL 过程已成功完成。
SQL> select * from sys.transport_set_violations;
未选定行~~~~~~~~~~~~~~~~~可以了

C:\>set oracle_sid=orcl
C:\>sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 星期二 9月 29 11:43:05 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.

连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> select name from v$database;
NAME
---------
ORCL
SQL> select tablespace_name from dba_tablespaces;
TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
TEST
RMAN_TS
TESTXH
XHTEST
XHTR
已选择11行。
SQL> host exp'sys/a831115@xhas sysdba' transport_tablespace=y file=d:\exp\tablesp
ace.dmp tablespaces=smallts
Export: Release 10.2.0.1.0 - Production on 星期二 9月 29 11:47:43 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
注: 将不导出表数据 (行)
即将导出可传输的表空间元数据...
EXP-00008: 遇到 ORACLE 错误 29335
ORA-29335: 表空间 'SMALLTS' 不为只读~~~~~~~~必须要 read only
ORA-06512: 在 "SYS.DBMS_PLUGTS", line 507
ORA-06512: 在 line 1
EXP-00000: 导出终止失败

另外必须 sysdba connect(EXP-00044: 必须以 'SYSDBA' 身份连接, 才能进行时间点恢复或可传输的表空间导入)
SQL> alter tablespace smallts read only;
表空间已更改。
SQL> host exp'sys/a831115@xhas sysdba' transport_tablespace=y file=d:\exp\tablesp
ace.dmp tablespaces=smallts
Export: Release 10.2.0.1.0 - Production on 星期二 9月 29 11:48:10 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
注: 将不导出表数据 (行)
即将导出可传输的表空间元数据...
对于表空间 SMALLTS...
. 正在导出簇定义
. 正在导出表定义
. . 正在导出表 T1
. 正在导出引用完整性约束条件
. 正在导出触发器
. 结束导出可传输的表空间元数据
成功终止导出, 没有出现警告。
SQL> host copy d:\xhdatafile\smallfile.dbf E:\orcldatafile\smallfile.dbf
已复制 1 个文件。
SQL> alter tablespace smallts read write
2 ;
表空间已更改。
orcl db
SQL> host imp '/ as sysdba' transport_tablespace=y file=d:\exp\tablespace.dmp data
files=e:\orcldatafile\smallfile.dbf fromuser=tr touser=system
Import: Release 10.2.0.1.0 - Production on 星期二 9月 29 11:54:31 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
经由常规路径由 EXPORT:V10.02.01 创建的导出文件
即将导入可传输的表空间元数据...
已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
. 正在将 TR 的对象导入到 SYSTEM
. . 正在导入表 "T1"
成功终止导入, 没有出现警告。
SQL> conn system/a831115
已连接。
SQL> select count(*) from t1;
COUNT(*)
----------
1
SQL> select tablespace_name from user_tables where table_name='T1';
TABLESPACE_NAME
------------------------------
SMALLTS
SQL> select file_name from dba_data_files where tablespace_name='SMALLTS';
FILE_NAME
--------------------------------------------------------------------------------
E:\ORCLDATAFILE\SMALLFILE.DBF

2012年6月19日星期二

Creating a Recovery Catalog

This is an excerpt from the bestselling book Oracle Grid & Real Application Clusters.  To get immediate access to the code depot of working RAC scripts, buy it directly from the publisher and save more than 30%.

RMAN can be used either with or without a recovery catalog. A recovery catalog is a schema stored in a database that tracks backups and stores scripts for use in RMAN backup and recovery situations. Generally, an experienced DBA would suggest that the Enterprise Manager instance schema and RMAN catalog schema be placed in the same utility database on a server separate from the main servers. The RMAN schema generally only requires 15 megabyte per year per database backed up.
The RMAN schema owner is created in the RMAN database using the following steps:
  • 1. Start SQL*Plus and connect as a user with administrator privileges to the database containing the recovery catalog. For example, enter:
CONNECT SYS/oracle@catdb AS SYSDBA
  • 2. Create a user and schema for the recovery catalog. For example, enter:
CREATE USER rman IDENTIFIED BY cat
  TEMPORARY TABLESPACE temp
  DEFAULT TABLESPACE tools
  QUOTA UNLIMITED ON tools;
  • 3. Grant the recovery_catalog_owner role to the user. This role provides all of the privileges required to maintain and query the recovery catalog:
SQL> GRANT RECOVERY_CATALOG_OWNER TO rman;
Once the owner user is created, the RMAN recovery catalog schema can be added:
  • 1. Connect to the database that contains the catalog owner. For example, using the RMAN user from the above example, enter the following from the operating system command line.  The use of the CATALOG keyword tells Oracle this database contains the repository:
% rman CATALOG rman/cat@catdb
  • 2. It is also possible to connect from the RMAN utility prompt:
% rman
RMAN> CONNECT CATALOG rman/cat@catdb
  • 3. Now, the CREATE CATALOG command can be run to create the catalog. The creation of the catalog may take several minutes. If the catalog tablespace is this user's default tablespace, the command would look like the following:
CREATE CATALOG;
While the RMAN catalog can be created and used from either a 9i or 10g database, the Enterprise Manager Grid Control database must be a 9i database.  This is true at least for release 1, although this may change with future releases.
Each database that the catalog will track must be registered.
  • Registering a Database with RMAN
The following process can be used to register a database with RMAN:
  • 1. Make sure the recovery catalog database is open.
  • 2. Connect RMAN to both the target database and recovery catalog database. For example, with a catalog database of RMANDB and user RMAN, owner of the catalog schema, and the target database, AULT1, which is the database to be backed up, database user SYS would issue:
% rman TARGET sys/oracle@ault1 CATALOG rman/cat@rmandb
  • 3. Once connected, if the target database is not mounted, it should be opened or mounted:
RMAN> STARTUP;
--or--
RMAN> STARTUP MOUNT;
  • 4. If this target database has not been registered, it should be registered it in the connected recovery catalog:
RMAN> REGISTER DATABASE;
The database can now be operated on using the RMAN utility.
  • Example RMAN Operations
The following is an example of the command line connection to a RAC environment, assuming the RAC instances are AULT1 and AULT2:
$ rman TARGET SYS/kr87m@ault2 CATALOG rman/cat@rmandb
The connection string, in this case AULT2, can only apply to a single instance, so the entry in the tnsnames.ora for the AULT2 connection would be:
ault2 =
  (DESCRIPTION =
    (ADDRESS_LIST =
    (LOAD_BALANCE = OFF)
    (FAILOVER = ON)
      (ADDRESS = (PROTOCOL = TCP)(HOST = aultlinux2)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ault)
      (INSTANCE_NAME = ault2)
    )
  • If the instances use archive logs, RAC requires that a channel connection be specified for each instance that will resolve to only one instance. For example, using the AULT1 and AULT2 instances from the previous example:
CONFIGURE DEFAULT DEVICE TYPE TO sbt;
CONFIGURE DEVICE TYPE TO sbt PARALLELISM 2;
CONFIGURE CHANNEL 1 DEVICE TYPE sbt CONNECT = 'SYS/kr87m@ault1';
CONFIGURE CHANNEL 2 DEVICE TYPE sbt CONNECT = 'SYS/kr87m@ault2';
  • This configuration only has to be specified once for a RAC environment. It should be changed only if nodes are added or removed from the RAC configuration. For this reason, it is known as a persistent configuration, and it need never be changed for the life of the RAC system. This configuration requires that each of the specified nodes be open, the database is operational, or closed, the database shutdown. If one specified instance is not in the same state as the others, the backup will fail.
RMAN is also aware of the node affinity of the various database files. The node with the greatest access will be used to backup those datafiles that the instance has greatest affinity for. Node affinity can, however, be overridden with manual commands, as follows:
BACKUP
            #Channel 1 gets datafiles 1,2,3
            (DATAFILE 1,2,3 CHANNEL ORA_SBT_TAPE_1)
            #Channel 2 gets datafiles 4,5,6,7
            (DATAFILE 4,5,6,7 CHANNEL ORA_SBT_TAPE2)
The nodes chosen to backup an Oracle RAC cluster must have the ability to see all of the files that require backup. For example:
BACKUP DATABASE PLUS ARCHIVELOG;
The specified nodes must have access to all archive logs generated by all instances. This could entail some special considerations when configuring the Oracle RAC environment.
The essential steps for using RMAN in Oracle RAC are:
* Configure the snapshot control file location.
* Configure the control file autobackup feature.
* Configure the archiving scheme.
* Change the archivemode of the database, although this is optional.
* Monitor the archiver process.
The following section will show how the snapshot control file location is configured.

定制log组的数量和大小

根据 统计事务量 来确定 日志组数
下列语句可以 统计事务量
select to_char(first_time,'YYYY-MM-DD HH24') v_time, count(*)from v$log_history
group by to_char(first_time, 'YYYY-MM-DD HH24') order by v_time desc
看一小时 切换 几个log 一小时 切换 不能多余5次,否则影响性能
加大日志文件 也可以 , 但是当库坏,会丢的数据多些

redo 的 组多, 是为 避免 redo 一圈 使用完,要覆盖时, 却发现不能覆盖,要覆盖的还没归档
redo 的 大小:为了解决 checkpoint 数量过多 checkpoint 数量 每小时 5次, 越多越影响性能
++++++++++++++++++++++
关于影响性能说明:
1、
日志切换太频繁,那么就会引起数据写很频繁,那么就会影响性能
(日志切换就会产生checkpoint,产生了checkpoint那么就会写数据)
2、
checkpoint是把内存中的脏数据写到磁盘
checkpoint是一个数据库事件,它将已修改的数据从高速缓存刷新到磁盘,并更新控制文件和数据文件
如果checkpoint越大(即log_checkpoint_interval值),一次写磁盘的数据
也会越多。另外,内存中的脏数据也会越多,而且这些脏数据部分占用了内存空间,其他可用的空间就会更少。
还有,checkpoint越大,数据库意外停止后的启动时,需要恢复的过程也会越长。
++++++++++++++++++++++

checkpoint : date block 从 memeber --> disk 同步
redo 的 越大, checkpoint 数量越少(当 redo切换时,会做一次 checkpoint)
select a.member,a.group#,b.thread#,b.bytes,b.members,b.status from v$logfile a,v$log b where a.group#=b.group# order by a.group#;

6 rows selected.
如果看到将要当前使用日志组的下一组状态为active,那说明可能发生要切
换日志了但是日志还没归档完毕(active说明正在归档),所以有必要增
加一组日志来避免这种情况
也可以增大日志文件,但是增大日志文件会增大数据库的风险