不可轻言放弃,否则对不起自己!

发布新日志

  • 常用默认端口

    2011-06-21 09:15:02

    20   文件传输协议(默认数据口)   pure-ftp
    21   文件传输协议(控制)        vsftpd
    22   SSH远程登录协议  
    23   telnet 终端仿真协议  
    24   预留给个人用邮件系统  
    25   smtp 简单邮件发送协议
    110  Pop3 服务器(邮箱发送服务器)
    161  snmp - snmp  
    162  snmp-trap -snmp  
    514  syslog默认发送和接收端口
    4899 远程登录端口

  • 脚本

    2011-06-15 18:14:02

    RMAN> run {
    2> allocate channel prmy1 type disk;
    3> allocate channel prmy2 type disk;
    4> allocate channel prmy3 type disk;
    5> allocate channel prmy4 type disk;
    6> allocate channel prmy5 type disk;
    7> allocate channel prmy6 type disk;
    8> allocate auxiliary channel stby1 type disk;
    9> allocate auxiliary channel stby2 type disk;
    10> allocate auxiliary channel stby3 type disk;
    11> allocate auxiliary channel stby4 type disk;
    12> duplicate target database for standby from active database nofilenamecheck;
    13> }

    后来报错,见另一个日志

  • dataguard容灾

    2011-06-15 18:13:44

    DBGANY:     Mismatched message length! [18:57:49.297] (krmiduem)
    DBGANY:     Mismatched message length! [18:57:49.298] (krmiduem)
    MAN-00571: ===========================================================
    RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
    RMAN-00571: ===========================================================
    RMAN-00600: internal error, arguments [3045] [] [] [] []
    RMAN-00571: ===========================================================
    RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
    RMAN-00571: ===========================================================
    RMAN-03002: Duplicate Db 命令 (在 06/15/2011 18:57:49 上) 失败
    RMAN-03015: 在存储的脚本Memory Script中出现错误
    RMAN-03009: sql 命令 (default 通道上, 在 06/15/2011 18:57:49 上) 失败
    RMAN-11003: 在分析/执行 SQL 语句期间失败: alter system archive log current
    ORA-16014: 日志 1 sequence# 1 未归档, 没有可用的目的地
    ORA-00312: 联机日志 1 线程 1: '/dev/raw/raw10'
  • dg容灾-10

    2011-06-07 16:11:14

             4          0          0 YES UNASSIGNED
             5          0          0 YES UNASSIGNED
             6          0          0 YES UNASSIGNED
             7          0          0 YES UNASSIGNED

    SQL>

    2、 standby数据库重新启动恢复管理模式
    SQL> alter database recover managed standby database disconnect from session;
    alter database recover managed standby database disconnect from session
    *
    第 1 行出现错误:
    ORA-01153: 激活了不兼容的介质恢复


    SQL>

    3、 修改primary数据库参数
    设置standby数据库为最大性能模式(primary库优先)
    SQL> alter system set log_archive_dest_2='SERVICE=STANDBY SYNC LGWR AFFIRM NET_TIMEOUT=10' SCOPE=SPFILE;
    SQL> shutdown immediate
    SQL> startup mount
    SQL> alter database set standby database to maximize availability;
    SQL> alter database open;

    4、 primary数据库侧,查看保护模式
    SQL> select protection_mode ,protection_level from v$database;

    PROTECTION_MODE      PROTECTION_LEVEL
    -------------------- --------------------
    MAXIMUM AVAILABILITY RESYNCHRONIZATION

    SQL>
    显示当前为最大可用模式。

    5、 主(primary)备(standby)切换
    如果要使得主备库可以切换,则应如步骤1~4同理在主备库做相应修改。

  • dg容灾-9

    2011-06-07 16:10:34

    2、 standby 切换到 primary
    SQL> startup mount
    SQL> alter database commit to switchover to primary with session shutdown;
    alter database commit to switchover to primary with session shutdown
    *
    第 1 行出现错误:
    ORA-16139: 需要介质恢复


    SQL> shutdown immediate
    ORA-01109: 数据库未打开


    已经卸载数据库。
    ORACLE 例程已经关闭。
    SQL> startup
    至此,primary与standby数据库已经切换完成

    如果想再去切换回来,请重复上述操作,注意primary和standby数据库已经发生了变化,以前的primary现在为standby数据库了。


    切换的最大可用模式
    1、 首先应当在standby数据库创建standby redolog
    SQL> startup mount
    SQL> alter  database recover managed standby database cancel;
    alter  database recover managed standby database cancel
    *
    第 1 行出现错误: 
    ORA-16136: 受管备用恢复未激活

    注:
    此时只是暂时redo应用,并不是停止Standby数据库,standby仍会保持接收只不过不会再应用接收到的归档,直到你再次启动redo应用为止。

    SQL> alter database add standby logfile group 4 '/opt/oracle/oradata/mmsgdb/stdREDO01.LOG' size 500M; 
    SQL> alter database add standby logfile group 5 '/opt/oracle/oradata/mmsgdb/stdREDO02.LOG' size 500M;
    SQL> alter database add standby logfile group 6 '/opt/oracle/oradata/mmsgdb/stdREDO03.LOG' size 500M;
    SQL> alter database add standby logfile group 7 '/opt/oracle/oradata/mmsgdb/stdREDO04.LOG' size 500M;
    SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;     //启动实时应用

    注:
    1、standy redelog的组数参考公式:(online redolog组数+1)*数据库线程数:
    单机线程数为1,RAC一般为2。

    2、stabdby redolog的组成员数和大小也尽量和online redolog一样

    检查standby redolog是否已经添加成功:
    SQL> select group#,thread#,sequence#,archived,status from v$standby_log;

        GROUP#    THREAD#  SEQUENCE# ARC STATUS
    ---------- ---------- ---------- --- ----------

  • dg容灾-8

    2011-06-07 16:09:59

    在primary服务器,执行归档操作:
    SQL> ALTER SYSTEM SWITCH LOGFILE;

    返回standby服务器
    SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;

     SEQUENCE# FIRST_TIME     NEXT_TIME
    ---------- -------------- --------------
             2 09-8月 -10     10-8月 -10
             3 10-8月 -10     10-8月 -10
             4 10-8月 -10     10-8月 -10
             5 10-8月 -10     10-8月 -10
             6 10-8月 -10     10-8月 -10

    SQL> SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;

     SEQUENCE# APPLIED
    ---------- ---------
             2 YES
             3 YES
             4 YES
             5 YES
             6 YES

    SQL>
    发现有一条新的记录,说明同步是正常的。


    容灾关闭
    关闭数据库一定要先关闭primary数据库,然后再去关闭standby数据库。
    primary数据库
    SQL> shutdown immediate

    standby数据库
    SQL> alter database recover managed standby database cancel;
    SQL> shutdown immediate

     

    主备切换
    注:
    主备切换必须先主切备,在备切主。
    1、 primary切换到standby 数据库
    在primary数据库做如下操作
    SQL> startup
    SQL> alter system switch logfile; //主备切换做好做一次归档
    SQL> alter database commit to switchover to standby with session shutdown;
    SQL> shutdown immediate
    SQL> startup nomount              
    SQL> alter database mount standby database;
    SQL> alter database recover managed standby database disconnect from session;

  • dg容灾-7

    2011-06-07 16:09:03

    启动standby数据库到mount状态
    SQL> startup mount
    SQL> alter database recover managed standby database disconnect from session;

    查看同步情况
    方法一
    首先连接到primary数据库
    SQL> show parameter instance_name

    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    instance_name                        string      mmsgdb
    SQL> alter system switch logfile;

    系统已更改。

    SQL> select max(sequence#) from v$archived_log;

    MAX(SEQUENCE#)
    --------------
                 5

    SQL>
     

    连接到standby数据库
    SQL> alter database recover managed standby database disconnect from session;

    数据库已更改。

    SQL> show parameter instance_name

    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    instance_name                        string      mmsgdb
    SQL> select max(sequence#) from v$archived_log;

    MAX(SEQUENCE#)
    --------------
                 5
    SQL>

    MAX(SEQUENCE#)值一致,同步成功。


    方法二
    在standby服务器,执行如下操作:
    SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;

     SEQUENCE# FIRST_TIME     NEXT_TIME
    ---------- -------------- --------------
             2 09-8月 -10     10-8月 -10
             3 10-8月 -10     10-8月 -10
             4 10-8月 -10     10-8月 -10
             5 10-8月 -10     10-8月 -10

  • dg容灾-6

    2011-06-07 16:07:54

    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.4.14)(PORT = 1521))
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
        )
      )
    上面为primary数据库的listener信息,standby数据库同理。其中蓝色部分为新增信息,红色部分为primary数据库ip地址。

    配置primary数据库和standby数据库的tnsnames.ora文件,修改成如下信息
    PRIMARY =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.4.14)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = mmsgdb)
        )
      )
     
    STANDBY =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.4.17)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = mmsgdb)
        )
      )


    完成之后重启primary数据库和standby数据库的listener,并测试监听:
    oracle@mmsg:~/product/11g/network/admin> lsnrctl stop
    oracle@mmsg:~/product/11g/network/admin> lsnrctl start
    oracle@mmsg:~/product/11g/network/admin> tnsping primary 10
    oracle@mmsg:~/product/11g/network/admin> tnsping standby 10


    执行ping操作,primary和standby互ping一下ip地址,如果能ping通,则继续执行下面的操作,如果ping不通,请检查配置。

    9、 启动standby数据库
    oracle@mmsg1:~/product/11g/dbs> sqlplus / as sysdba

    SQL*Plus: Release 11.1.0.7.0 - Production on 星期二 8月 10 14:47:21 2010

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

    已连接到空闲例程。

    SQL> create spfile from pfile='/opt/oracle/product/11g/dbs/initmmsgdb.ora';

  • dg容灾-5

    2011-06-07 16:05:34

    220-IPv6 connections are also welcome on this server.
    220 You will be disconnected after 15 minutes of inactivity.
    Name (10.10.4.14:root): oracle
    331 User oracle OK. Password required
    Password:
    230-User oracle has group access to:  dba      oinstall
    230 OK. Current directory is /opt/oracle
    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp> cd ~/product/11g/dbs
    250 OK. Current directory is /opt/oracle/product/11g/dbs
    ftp> ls
    ftp> asc
    200 TYPE is now ASCII
    ftp> get initmmsgdb.ora
    ftp> bin
    ftp> get orapwmmsgdb
    ftp> by

    7、 修改standby数据库参数文件
    *.DB_UNIQUE_NAME=uqn_standby
    *.LOG_ARCHIVE_CONFIG='DG_CONFIG=(uqn_primary,uqn_standby)'
    *.LOG_ARCHIVE_DEST_2='SERVICE=primary ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=uqn_primary'
    *.LOG_ARCHIVE_DEST_STATE_1=ENABLE
    *.LOG_ARCHIVE_DEST_STATE_2=ENABLE
    *.LOG_ARCHIVE_MAX_PROCESSES=30

    #--------配置standby角色的参数用于角色转换
    *.FAL_SERVER=primary
    *.FAL_CLIENT=standby
    *.STANDBY_FILE_MANAGEMENT=AUTO

    8、 修改listener及tns信息
    配置primary数据库和standby数据库的listener及net service names(方式多样,不详述)
    SID_LIST_LISTENER =
    (SID_LIST =
       (SID_DESC =
          (SID_NAME = PLSExtProc)
          (ORACLE_HOME = /opt/oracle/product/11g)
          (PROGRAM = extproc)
      )
        (SID_DESC =
            (GLOBAL_DBNAME = mmsgdb)
            (ORACLE_HOME = /opt/oracle/product/11g)
            (SID_NAME = mmsgdb)          
         )
      )

  • dg容灾-4

    2011-06-07 16:04:26

    DB_FILE_NAME_CONVERT  在做duplicate复制和传输表空间的时候这类参数讲过很多遍,该参数及上述内容中同名参数功能,格式等完全相同。
    LOG_FILE_NAME_CONVERT  同上
    STANDBY_FILE_MANAGEMENT  如果primary数据库数据文件发生修改(如新建,重命名等)则按照本参数的设置在standby中做相应修改。设为AUTO表示自动管理。设为MANUAL表示需要手工管理。例如:STANDBY_FILE_MANAGEMENT=AUTO

    注意:
    上面列举的这些参数仅只是对于primary/standby两角色可能会相关的参数,还有一些基础性参数比如*_dest,*_size等数据库相关的参数在具体配置时也需要根据实际情况做出适当修改。

    通过pfile重建spfile
    SQL> shutdown immediate
    SQL> startup pfile='/opt/oracle/product/11g/dbs/initmmsgdb.ora'
    SQL> create spfile='/opt/oracle/product/11g/dbs/spfilemmsgdb.ora' from pfile='/opt/oracle/product/11g/dbs/initmmsgdb.ora';
    SQL> shutdown immediate

    6、 复制数据文件到standby服务器(方式多样,不详述)

    注:
    要先停止primary和standby服务器上的oracle数据库,然后复制所有数据文件,备份的控制文件及客户端初始化参数文件(数据文件、口令文件、pfile文件、控制文件)到standby数据库(同时,建议先备份一下standby数据库侧的数据文件、控制文件、参数文件和口令文件) ,具体文件列表信息如下:
    #控制文件
    backupctl.ctl
    control01.ctl
    control02.ctl
    control03.ctl
    #重做日志文件
    redo01.log
    redo02.log
    redo03.log
    #数据文件
    sysaux01.dbf
    system01.dbf
    temp01.dbf
    undotbs01.dbf
    users01.dbf
    #口令文件
    orapwmmsgdb
    参数文件
    initmmsgdb.ora

    还需要到STANDBY服务器上执行下面的操作。
     
    oracle@mmsg1:~> cd /opt/oracle/oradata/ora11g
    oracle@mmsg1:~/oradata/ora11g> rm -rf control0*
    oracle@mmsg1:~/oradata/ora11g> mv backupctl.ctl  control01.ctl
    oracle@mmsg1:~/oradata/ora11g> cp control01.ctl control02.ctl
    oracle@mmsg1:~/oradata/ora11g> cp control01.ctl control03.ctl
    oracle@mmsg1:~> cd $ORACLE_HOME/dbs
    # 替换口令(如果sys密码不同)和pfile文件
    oracle@mmsg1:~/product/11g/dbs> ftp 10.10.4.14
    Connected to 10.10.4.14.
    220-Welcome to Pure-FTPd.
    220-You are user number 1 of 50 allowed.

  • dg容灾-3

    2011-06-07 16:03:30

    #--------配置standby角色的参数用于角色转换
    *.FAL_SERVER=standby                        //这里为net service name
    *.FAL_CLIENT=primary
    *.STANDBY_FILE_MANAGEMENT=AUTO
    上述新增内容中的蓝色部分不需要,请添加时去掉。

    初始化参数参考
    对于primary数据库,需要定义几个primary角色的初始化参数控制redo传输服务,还有几个附加的standby角色的参数需要添加以控制接收redo数据库并应用(switchover/failover后primary/standby角色可能互换,所以建议对于两类角色 相关的 初始化参数都进行配置)。
     
    下列参数为primary角色相关的初始化参数:
    DB_NAME  注意保持同一个Data Guard中所有数据库DB_NAME相同。
    例如:DB_NAME=mmsgdb
    DB_UNIQUE_NAME  为每一个数据库指定一个唯一的名称,该参数一经指定不会再发生变化,除非你主动修改它。
    例如:DB_UNIQUE_NAME= uqn_mmsgdb
    LOG_ARCHIVE_CONFIG  该参数通过DG_CONFIG属性罗列同一个Data Guard中所有DB_UNIQUE_NAME(含primary db及standby db),以逗号分隔
    例如:LOG_ARCHIVE_CONFIG='DB_CONFIG= uqn_primary, uqn_standby)'
    CONTROL_FILES  没啥说的,控制文件所在路径。
    LOG_ARCHIVE_DEST_n  归档文件的生成路径 。该参数非常重要,并且属性和子参数也特别多(这里不一一列举,后面用到时单独讲解如果你黑好奇,建议直接查询oracle官方文档。Data guard白皮书第14章专门介绍了该参数各属性及子参数的功能和设置)。 例如:
    LOG_ARCHIVE_DEST_1=
    'LOCATION= /opt/oracle/diag/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME= uqn_primary'
    LOG_ARCHIVE_DEST_STATE_n  指定参数值为ENABLE,允许redo传输服务传输redo数据到指定的路径。 该参数共拥有4个属性值,功能各不相同。
    REMOTE_LOGIN_PASSWORDFILE  推荐设置参数值为EXCLUSIVE或者SHARED,注意保证相同Data Guard配置中所有db服务器sys密码相同。
    LOG_ARCHIVE_FORMAT  指定归档文件格式。
    LOG_ARCHIVE_MAX_PRODUCESSES  指定归档进程的数量(1-30),默认值通常是4 。
    以下参数为standby角色相关的参数,建议在Primary数据库 的初始化参数中也进行设置,这样在role transition后(Primary转为Standby)也能正常运行:
    FAL_SERVER  指定一个数据库SID,通常该库为primary角色。
    例如:FAL_SERVER=primary
    FAL_CLIENT  指定一个数据库SID,通常该库为standby角色。
    例如:FAL_CLIENT=standby
    提示:FAL是Fetch Archived Log的缩写

  • dg容灾-2

    2011-06-07 16:02:15

    2、 设置归档日志路径
    SQL> show parameter log_archive_dest

    #arch目录请到dbs目录下手工创建
    SQL> alter system set log_archive_dest_1=' location=/opt/oracle/diag/arch ' scope=spfile;
    SQL> alter system set log_archive_format=' arch_%t_%s_%r.arc' scope=spfile;

    3、 将primary数据库置为FORCE LOGGING模式
    通过下列语句:
    SQL> alter database force logging;


    #需要重启数据库,做如下操作:
    SQL> shutdown immediate
    SQL> startup
    SQL> show parameter log_archive_dest


    4、 primary数据库创建standby数据库控制文件
    SQL> shutdown immediate
    SQL> startup mount
    SQL> alter database create standby controlfile as '/opt/oracle/oradata/mmsgdb/backupctl.ctl'; 
    SQL> alter database open;
    SQL> alter system archive log current;


    5、 创建primary数据库客户端初始化参数文件
    注:
    主要此处修改项较多,为了方便,我们首先创建并修改pfile,然后再通过pfile重建spfile,你当然也可以通过alter system set命令直接修改spfile内容,不过,麻烦。
    SQL> create pfile from spfile;

    文件已创建。
    将该初始化参数文件复制一份,做为standby数据库的客户端初始化参数文件
    SQL> host
    oracle@mmsg:~> cp /opt/oracle/product/11g/dbs/initmmsgdb.ora  /opt/oracle/product/11g/dbs/bakinitmmsgdb.ora

    备份已有的spfile文件
    oracle@mmsg:~> cd $ORACLE_HOME/dbs
    oracle@mmsg:~/product/11g/dbs> cp spfilemmsgdb.ora bak_spfilemmsgdb.ora


    修改客户端初始化参数文件,增加下列内容
    *.DB_UNIQUE_NAME=uqn_primary              //自定义一个unique_name名字
    *.LOG_ARCHIVE_CONFIG='DG_CONFIG=(uqn_primary,uqn_standby)'  //此处为主备服务器的unique_name
    *.LOG_ARCHIVE_DEST_2='SERVICE=standby ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=uqn_standby'
    *.LOG_ARCHIVE_DEST_STATE_1=ENABLE
    *.LOG_ARCHIVE_DEST_STATE_2=ENABLE
    *.LOG_ARCHIVE_MAX_PROCESSES=30

  • DG容灾-1

    2011-06-07 15:53:55

    DG容灾同步数据方案
    背景
    XX行业网关,本期配置了4块服务器(4C8G),分别部署在A地和B地两地,组成两两双机的对等集群。A地和B地两地相距30KM,采用千兆专线拉通,具体拓扑如下图所示:
     

    数据库容灾方案
    在A地和B地业务、数据库和计费服务器均进行合设。平时A地节点作为数据库生产节点,B地节点作为数据库容灾节点,生产节点和容灾节点通过DATAGUARD进行数据同步。
    数据库生产节点和容灾节点通过F5实现对业务服务器的统一IP。即在F5上为数据库专门配置一个POOL和VISUAL SERVER。VISUAL SERVER是对外提供的数据库统一IP,将数据库生产节点优先级设置为高优先级,容杂节点设置为低优先级。平时F5会将流量发送高优先级的生产节点处理,当生产节点不可用时会自动发送给低优先级的容灾节点。
    试验环境
    SUSE Linux Enterprise Server 10 SP1 (x86_64) - Kernel 2.6.16.46-0.12-smp (3)
    IP规划如下:
    10.10.4.14   R2+单板          primary数据库
    10.10.4.17   R2单板           standby数据库

    软件环境
    Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production

    Data guard 操作
    配置操作
    1、 确认primary数据库处于归档模式
    SQL> archive log list
    如果为非归档模式,请执行下列命令修改
    SQL> shutdown immediate
    SQL> startup mount
    SQL> ALTER DATABASE ARCHIVELOG;
    SQL> ALTER DATABASE OPEN;

  • oracle案例-3

    2011-06-07 15:02:41

    解决方法
    步骤一 从spfile文件中清除过时的参数,重启数据库
    SQL> alter system reset log_archive_start scope=spfile sid='*';
    SQL> shutdown immediate
    SQL> startup


    步骤二 查看当前版本不再使用的参数信息

    select name,description from v$parameter where isdeprecated='TRUE'


    案例:ORA-01031  权限问题解决方法

    表象
    oracle@mmsc101:~/product/11/network/admin> sqlplus sys/sys@mmsgdb as sysdba

    SQL*Plus: Release 11.1.0.7.0 - Production on Sun May 15 16:44:47 2011

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

    ERROR:
    ORA-01031: 鏉冮檺涓嶈冻


    Enter user-name:

    解决方法:
    步骤一  查询视图 SQL> select * from v$pwfile_users;

    no rows selected

    步骤二  创建新的口令文件
    oracle@mmsc101:~/product/11/dbs> orapwd file=/opt/oracle/product/11/dbs/orapwmmsgdb password=sys
    注意:file=$ORACLE_HOME/dbs/orapw$ORACLE_SID中的$ORACLE_SID是系统的环境变量


    步骤三  重启数据库

  • oracle案例-2

    2011-06-07 14:59:21

    发现并没有对表空间MMSG有限额分配的信息,推论表空间MMSG应该使用默认的分配限额(具体是多少,暂时不知)。

    解决方法
    为表空间分配使用限额,设置扩大或者不限制。方法如下:
    alter user mmsg quota unlimited on MMSG;
    或者
    grant unlimited tablespace to MMSG;


    案例:ORA-32004
    表   象
    启动数据库时,报错误码:ORQA-32004
    SQL> startup
    ORA-32004: obsolete and/or deprecated parameter(s) specified
    ORACLE 例程已经启动。

    Total System Global Area 8417955840 bytes
    Fixed Size                  2146024 bytes
    Variable Size            4429185304 bytes
    Database Buffers         3959422976 bytes
    Redo Buffers               27201536 bytes
    数据库装载完毕。
    数据库已经打开。
    SQL>

    启动数据库,收到ORA-32004错误码,多是过时的且不在当前系统中使用的参数导致,遇见这类问题,直接reset即可。

    查看告警日志
    <msg time='2011-03-04T10:11:39.436+08:00' org_id='oracle' comp_id='rdbms'
     msg_id='kspdmp:13638:2661745733' type='WARNING' group='system_param'
     level='16' pid='5220'>
     <txt>Deprecated system parameters with specified values:
     </txt>
    </msg>
    <msg time='2011-03-04T10:11:39.437+08:00' org_id='oracle' comp_id='rdbms'
     msg_id='kspdmp:13644:2633769647' type='WARNING' group='system_param'
     level='16' pid='5220'>
     <txt>  log_archive_start       
     </txt>
    </msg>
    <msg time='2011-03-04T10:11:39.437+08:00' org_id='oracle' comp_id='rdbms'
     msg_id='kspdmp:13652:3788363585' type='WARNING' group='system_param'
     level='16' pid='5220'>
     <txt>End of deprecated system parameter listing
     </txt>
    </msg>

  • oracle案例-1

    2011-06-07 14:58:28

    案例:ORA-01536
    表像
    执行刷库脚本,创建表报错
    SQL> SQL> SQL>   2    3    4    5    6  CREATE TABLE "ECTOSIINFO"
    *
    ERROR at line 1:
    ORA-01536: space quota exceeded for tablespace 'MMSG'

    原因分析
    1、查看错误码
    01536, 00000, "space quota exceeded for tablespace '%s'"
    // *Cause:  The space quota for the segment owner in the tablespace has
    //          been exhausted and the operation attempted the creation of a
    //          new segment extent in the tablespace.
    // *Action: Either drop unnecessary objects in the tablespace to reclaim
    //          space or have a privileged user increase the quota on this
    //          tablespace for the segment owner.
    显示可能为表空间段扩展问题。

    2、查看表空间使用率
    观察一下表空间是否已经满了,无法自动扩展或者扩展已达配额

    TABLESPACE_NAME                USED_SPACE TABLESPACE_SIZE USED_PERCENT
    ------------------------------ ---------- --------------- ------------
    MMSG                                13384         4194302   .319099578
    MMSG_TMP                                0           64000            0
    MMSG表空间使用率很低啊,3.27G的空间只使用了104M

    3、查看表空间限额
    表空间限额和表空间是两个不同的概念,表空间限额约束了表空间的使用情况,如果表空间200M,表空间限额只分配20M,剩下的180M的空间能够被数据库所使用的空间就被浪费掉了。

    SQL>select tablespace_name,username,bytes,max_bytes from dba_ts_quotas;

    TABLESPACE_NAME                USERNAME                            BYTES  MAX_BYTES
    ------------------------------ ------------------------------ ---------- ----------

  • rman备份形式与类型

    2011-06-07 14:32:01

    RMAN备份形式
    RMAN备份有两种形式:
    1、镜像备份(image copies);
    2、备份集备份(backup sets)。
    镜像备份
    镜像备份实际就是RMAN利用目标数据库服务进程来完成文件的copy操作,是数据文件、控制文件或者归档日志文件的副本。
    RMAN镜像备份的副本无法通过list backup显示,可以通过list copy显示。

    本文主要描述备份集备份。

    备份集备份
    备份集是通过RMAN创建的逻辑备份对象,一个备份集中可以包括多个控制文件、数据文件、归档文件。
    备份集在物理上由多个备份片段组成,每个备份片段就是一个操作系统文件。

    RMAN备份类型
    利用RMAN进行备份时,可以通过三种方式来对RMAN的备份做分类
    完全备份(Full Backup)与增量备份(Incremental Backup)
    全备与增备是针对数据文件而言,控制文件和归档日志文件不能进行增量备份。当然,后两者可以做备份优化。

    打开备份(Open Backup)或关闭备份(Closed Backup)
    数据库打开状态下进行备份即是打开备份,数据库关闭状态下(加载状态)进行的备份即关闭备份。
    一致备份(Consistent Backup)与不一致备份(Inconsistent Backup)
    数据库打开状态或不干净关闭状态(shutdown abort)进行的备份是不一致备份,利用不一致的备份修复数据库后还需要做数据库的恢复。在数据库干净关闭状态进行的备份是一致备份,利用一致备份修复数据库后不需要做数据库的恢复。

  • rman命令--delete

    2011-06-07 14:30:56

    delete
    RMAN> delete obsolete;                 删除陈旧备份;
    RMAN> delete expired backup;           删除EXPIRED备份  
    RMAN> delete expired copy;             删除EXPIRED副本
    RMAN> delete backupset 19;             删除特定备份集
    RMAN> delete backuppiece '/opt/oracle/oradata/backup/test.ora';   删除特定备份片
    RMAN> delete backup;                   删除所有备份集
    RMAN> delete datafilecopy '/opt/oracle/oradata/backup/test.bak';  删除特定映像副本
    RMAN> delete copy;                     删除所有映像副本
    RMAN> delete archivelog all delete input;
    RMAN> delete backupset 22 format = '/opt/oracle/oradata/backup/%u.bak' delete input;
                                           在备份后删除输入对象            
    RMAN> delete backupset id;             删除备份集
  • rman命令-check

    2011-06-07 14:30:35

    check
    RMAN> crosscheck backup;                              核对所有备份集 
    RMAN> crosscheck backup of database;                  核对所有数据文件的备份集 
    RMAN> crosscheck backup of tablespace MMSG;           核对特定表空间的备份集 
    RMAN> crosscheck backup of datafile 4;                核对特定数据文件的备份集 
    RMAN> crosscheck backup of controlfile;               核对控制文件的备份集 
    RMAN> crosscheck backup of spfile;                    核对SPFILE的备份集  
    RMAN> crosscheck backup of archivelog sequence 3;     核对归档日志的备份集
    RMAN> crosscheck copy;                                核对所有映像副本
    RMAN> crosscheck copy of database;                    核对所有数据文件的映像副本
    RMAN> crosscheck copy of tablespace MMSG;             核对特定表空间的映像副本 
    RMAN> crosscheck copy of datafile 6;                  核对特定数据文件的映像副本 
    RMAN> crosscheck copy of archivelog sequence 4;       核对归档日志的映像副本  
    RMAN> crosscheck copy of controlfile;                 核对控制文件的映像副本
    RMAN> crosscheck backup tag='SAT_BACKUP';
    RMAN> crosscheck backup completed after 'sysdate - 2';
    RMAN> crosscheck backup completed between 'sysdate - 5' and 'sysdate -2 ';
    RMAN> crosscheck backup device type sbt;
    RMAN> crosscheck archivelog all;
    RMAN> crosscheck archivelog like '%ARC00012.001';
    RMAN> crosscheck archivelog from sequence 12;
    RMAN> crosscheck archivelog until sequence 522;
  • rman命令-list

    2011-06-07 14:28:31

    list
    list backup;                          列出详细备份
    list expired backup;                  列出过期备份
    list backup of database;              列出所有数据文件的备份集
    list backup of tablespace MMSG;       列出特定表空间的所有数据文件备份集
    list backup of controlfile;           列出控制文件备份集
    list backup of archivelog all;        列出归档日志备份集详细信息
    list archivelog all;            列出归档日志备份集简要信息
    list backup of spfile;                列出SPFILE备份集
    list copy of datafile 5;              列出数据文件映像副本
    list copy of controlfile;             列出控制文件映像副本
    list copy of archivelog all;          列出归档日志映像副本
    list incarnation of database;         列出对应物/列出数据库副本
    list backup summary;                  概述可用的备份(B表示backup、F表示FULL、A表示archive log、S说明备份状态(A AVAILABLE   X EXPIRED )
        
    list backup by file;                  按备份类型列出备份
                                          按照数据文件备份,归档日志备份,控制文件备份,服务器参数文件备份 列出
983/5<12345>
Open Toolbar