ITPub博客

首页 > Linux操作系统 > Linux操作系统 > [20121128]传输表空间与scn.txt

[20121128]传输表空间与scn.txt

原创 Linux操作系统 作者:lfree 时间:2012-11-28 14:52:14 0 删除 编辑
[20121128]传输表空间与scn.txt

今天测试如果使用传输表空间,数据文件的scn的变化。如果传输表空间的数据文件scn很大,传过来后数据库的scn是否同步到最大的情况。

测试机器A(10g)

SQL> select * from v$version where rownum<=1;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi

SQL> select current_scn from v$database ;

CURRENT_SCN
-----------
 3180115893


测试机器B(11g)
SQL> select * from v$version where rownum<=1;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

SQL> select current_scn from v$database ;

CURRENT_SCN
-----------
 3179998749

两者相差3180115893 - 3179998749 = 117144. 相差有点小,不过这两个数据都是测试库,基本没人使用,应该还是可以测试出来的。

1.首先测试是否可以传输表空间(10g)

SQL> exec dbms_tts.transport_set_check('LIS_BAK',TRUE);

PL/SQL procedure successfully completed.


SQL> select * from transport_set_violations ;

no rows selected


SQL> alter tablespace lis_bak read only;


$ exp \"/ as sysdba\" tablespaces=LIS_BAK transport_tablespace=y file=lis_bak.dmp

Export: Release 10.2.0.4.0 - Production on Wed Nov 28 09:31:36 2012

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

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

Export done in ZHS16GBK character set and AL16UTF16 NCHAR character set

Note: table data (rows) will not be exported

About to export transportable tablespace metadata...

For tablespace LIS_BAK ...

. exporting cluster definitions

. exporting table definitions

......

. exporting referential integrity constraints

. exporting triggers

. end transportable tablespace metadata export

Export terminated successfully without warnings.


2.在11g上建立用户:
CREATE USER DBO
  IDENTIFIED BY VALUES 'XXXXXXXX'
  DEFAULT TABLESPACE users
  TEMPORARY TABLESPACE TEMP
  PROFILE DEFAULT
  ACCOUNT UNLOCK;
  -- 2 Roles for DBO 
  GRANT CONNECT TO DBO;
  GRANT DBA TO DBO;
  ALTER USER DBO DEFAULT ROLE ALL;

3.拷贝文件到B机器,并导入数据:
$ scp  /data/orcl/lis_bak.dbf oracle11g@192.168.105.xx:/u01/app/oracle11g/oradata/test/
$ scp lis_bak.dmp oracle11g@192.168.105.xx:/home/oracle11g/test3

$ imp \'\/ as sysdba\' tablespaces=LIS_BAK transport_tablespace=y file=lis_bak.dmp  datafiles=/u01/app/oracle11g/oradata/test/lis_bak.dbf
Import: Release 11.2.0.1.0 - Production on Wed Nov 28 11:00:14 2012
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

Export file created by EXPORT:V10.02.01 via conventional path
About to import transportable tablespace(s) metadata...
import done in ZHS16GBK character set and AL16UTF16 NCHAR character set
. importing SYS's objects into SYS
. importing SYS's objects into SYS
. importing DBO's objects into DBO
.....
. importing SYS's objects into SYS
Import terminated successfully without warnings.

SQL> select current_scn from v$database ;

CURRENT_SCN
-----------
 3180117422

--可以发现现在scn同步到最大的数据文件,像dblink一样。


在11G上执行:
SQL> alter system checkpoint;
SQL> SELECT 'controlfile' "SCN location", 'SYSTEM checkpoint' NAME, checkpoint_change# FROM v$database
UNION
SELECT 'file in controlfile', NAME, checkpoint_change# FROM v$datafile WHERE NAME LIKE '%lis_bak%'
UNION
SELECT 'file header', NAME, checkpoint_change# FROM v$datafile_header WHERE NAME LIKE '%lis_bak%';

SCN location        NAME                                     CHECKPOINT_CHANGE#
------------------- ---------------------------------------- ------------------
controlfile         SYSTEM checkpoint                                3180123887
file header         /data/orcl/lis_bak.dbf                           3180116692
file in controlfile /data/orcl/lis_bak.dbf                           3180116692

在测试机器A(10G)上执行:
SQL> alter system checkpoint;
SQL> SELECT 'controlfile' "SCN location", 'SYSTEM checkpoint' NAME, checkpoint_change# FROM v$database
UNION
SELECT 'file in controlfile', NAME, checkpoint_change# FROM v$datafile WHERE NAME LIKE '%lis_bak%'
UNION
SELECT 'file header', NAME, checkpoint_change# FROM v$datafile_header WHERE NAME LIKE '%lis_bak%';

SCN location        NAME                                               CHECKPOINT_CHANGE#
------------------- -------------------------------------------------- ------------------
controlfile         SYSTEM checkpoint                                          3180117582
file header         /u01/app/oracle11g/oradata/test/lis_bak.dbf                3180116692
file in controlfile /u01/app/oracle11g/oradata/test/lis_bak.dbf                3180116692

使用logminer看也能发现存在大的跳跃:

SQL> SELECT   SCN, TIMESTAMP,  sql_redo FROM v$logmnr_contents WHERE SCN BETWEEN 3179999383 AND 3180116696 ORDER BY 1;

SCN           TIMESTAMP             SQL_REDO
----------    -------------------   -----------------------------------------
3179999383    2012-11-28 11:00:16   ALTER SEQUENCE sys.idgen1$ INCREMENT BY 50;    
3179999385    2012-11-28 11:00:16   commit;    
3180116693    2012-11-28 11:00:16   set transaction read write;    
3180116693    2012-11-28 11:00:16   update "SYS"."OBJ$" set "OBJ#" = '1', "DATAOBJ#" = '267606', "TYPE#" = '0', ....
3180116694    2012-11-28 11:00:16   commit;    
3180116696    2012-11-28 11:00:16   set transaction read write;    
3180116696    2012-11-28 11:00:16   Unsupported    

--从3179999385 到 3180116693(正好是数据文件记录的scn+1) 存在大的跳跃.

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-750140/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    4006
  • 访问量
    7969378