Home Database Mysql Tutorial Oracle传输表空间在数据仓库ETL中的应用

Oracle传输表空间在数据仓库ETL中的应用

Jun 07, 2016 pm 05:13 PM

在数据仓库项目中,ETL无疑是最为繁琐,也是最为耗时和最不稳定的,如果数据源和目标同为oracle,且满足了一定的条件,则可以使用

在数据仓库项目中,ETL无疑是最为繁琐,也是最为耗时和最不稳定的,如果数据源和目标同为Oracle,且满足了一定的条件,则可以使用oracle的传输表空间来帮助ETL提高效率。
要想使用传输表空间,必须满足以下几个条件:
源与目标库都必须大于8i;
对于低于10G的版本,源与目标库必须为统一平台;
自包含:可以通过以下语句予以检测:
SYS@racdb1 SQL>exec dbms_tts.transport_set_check('TS_BIG1',true);
PL/SQL procedure successfully completed.
SYS@racdb1 SQL>select * from TRANSPORT_SET_VIOLATIONS;
no rows selected
没有返回行,说明源表空间是自包含的,否则需要处理,另传输表空间不要包含sys的对象。
源表空间为read only
虽然从9i开始不需要源和目标的blocksize一样,但如果不一致,需要在目标数据库中增加相应的db_xk_cache_size,如本次实验中源数据库的blocksize为8k,目标数据库的blocksize为16k,则需要在目标库中增加db_8k_cache_size=8192参数,否则impdp时会报错ORA-29339.
 
本实验中数据源为一个linux平台的oracle10g的分区表,目标为一个windows2008平台的oracle10g,实现步骤为:
1.确定源数据库的类型:
SYS@racdb1 SQL>select * from gv$version;
 
   INST_ID BANNER
---------- ----------------------------------------------------------------
         1 Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bi
         1 PL/SQL Release 10.2.0.5.0 - Production
         1 CORE 10.2.0.5.0      Production
         1 TNS for Linux: Version 10.2.0.5.0 - Production
         1 NLSRTL Version 10.2.0.5.0 - Production
 
SYS@racdb1 SQL>SELECT p.PLATFORM_NAME, p.ENDIAN_FORMAT
FROM V$TRANSPORTABLE_PLATFORM p, V$DATABASE d
WHERE p.PLATFORM_NAME = d.PLATFORM_NAME;
 
PLATFORM_NAME                   ENDIAN_FORMAT
----------------------------------------      --------------
Linux x86 64-bit                          Little
 
2.确定目标数据库的类型:
CCZDBA@bidb SQL>select * from v$version;
 
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE    11.2.0.1.0      Production
TNS for 64-bit Windows: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production
 
CCZDBA@bidb SQL>SELECT p.PLATFORM_NAME, p.ENDIAN_FORMAT
 2 FROM V$TRANSPORTABLE_PLATFORM p, V$DATABASE d
 3 WHERE p.PLATFORM_NAME = d.PLATFORM_NAME;
PLATFORM_NAME                              ENDIAN_FORMAT
--------------------------------------------            ----------------------------
Microsoft Windows x86 64-bit                         Little
 
3.在源库中创建各个分区具有独立表空间的分区表:
CCZDBA@racdb1 SQL>create tablespace ts_big1 datafile '+RACDAT' size 100M autoextend on uniform size 10m;
Tablespace created.
CCZDBA@racdb1 SQL>create tablespace ts_big2 datafile '+RACDAT' size 100M autoextend on uniform size 10m;
Tablespace created.
SYS@racdb1 SQL>CREATE TABLE SCOTT.BIGTAB
 2 (
 3    INS_TIME        DATE,
 4    OWNER           VARCHAR2(30 BYTE),
 5    OBJECT_NAME     VARCHAR2(128 BYTE),
 6    SUBOBJECT_NAME VARCHAR2(30 BYTE),
 7    OBJECT_ID       NUMBER,
 8    DATA_OBJECT_ID NUMBER,
 9    OBJECT_TYPE     VARCHAR2(19 BYTE),
 10    CREATED         DATE,
 11    LAST_DDL_TIME   DATE,
 12    TIMESTAMP       VARCHAR2(19 BYTE),
 13    STATUS          VARCHAR2(7 BYTE),
 14    TEMPORARY       VARCHAR2(1 BYTE),
 15    GENERATED       VARCHAR2(1 BYTE),
 16    SECONDARY       VARCHAR2(1 BYTE)
 17 )
 18 PARTITION BY RANGE (INS_TIME)
 19 (
 20    PARTITION INS_20120416 VALUES LESS THAN (TO_DATE(' 2012-04-17 00:00:00', 'SYYYY-MM-DD HH24:MI:SS'))
 21      LOGGING
 22      NOCOMPRESS
 23      TABLESPACE TS_BIG1,
 24    PARTITION INS_20120417 VALUES LESS THAN (TO_DATE(' 2012-04-18 00:00:00', 'SYYYY-MM-DD HH24:MI:SS'))
 25      LOGGING
 26      NOCOMPRESS
 27      TABLESPACE TS_BIG2
 28 );
Table created.
 
SYS@racdb1 SQL>conn scott/tiger
Connected.
SCOTT@racdb1 SQL>insert into bigtab select sysdate-1,a.* from dba_objects a;
50286 rows created.
SCOTT@racdb1 SQL>commit;
Commit complete.
SCOTT@racdb1 SQL>insert into bigtab select sysdate,a.* from dba_objects a;
 
50286 rows created.
 
 
4.建立临时表以和分区INS_20120416进行交换,一满足表空间ts_big1为自包含:
注意在交换之前该分区所在的表空间不满足自包含的要求,无法导出:
SYS@racdb1 SQL>exec dbms_tts.transport_set_check('TS_BIG1',true);
 
PL/SQL procedure successfully completed.
 
SYS@racdb1 SQL>select * from TRANSPORT_SET_VIOLATIONS;
 
VIOLATIONS
--------------------------------------------------------------------------------
Default Partition (Table) Tablespace USERS for BIGTAB not contained in transport
able set
 
Partitioned table SCOTT.BIGTAB is partially contained in the transportable set:
check table partitions by querying sys.dba_tab_partitions
 
[oracle@Linux1]expdp cczdba/cczdba dumpfile=trans_ts.dmp directory=DATA_PUMP_DIR transport_tablespaces=ts_big1
 
Export: Release 10.2.0.5.0 - 64bit Production on Tuesday, 17 April, 2012 13:20:02
 
Copyright (c) 2003, 2007, Oracle. All rights reserved.
 
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
Starting "CCZDBA"."SYS_EXPORT_TRANSPORTABLE_01": cczdba/******** dumpfile=trans_ts.dmp directory=DATA_PUMP_DIR transport_tablespaces=ts_big1
ORA-39123: Data Pump transportable tablespace job aborted
ORA-29341: The transportable set is not self-contained
 
Job "CCZDBA"."SYS_EXPORT_TRANSPORTABLE_01" stopped due to fatal error at 13:20:12
交换后:
SCOTT@racdb1 SQL>create table bigtab_temp as select * from bigtab where 1=2;
Table created.
SCOTT@racdb1 SQL>alter table bigtab exchange partition INS_20120416 with table bigtab_temp;
Table altered.
SCOTT@racdb1 SQL>conn /as sysdba
Connected.
SYS@racdb1 SQL>exec dbms_tts.transport_set_check('TS_BIG1',true);
PL/SQL procedure successfully completed.
SYS@racdb1 SQL>select * from TRANSPORT_SET_VIOLATIONS;
no rows selected

linux

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Roblox: Bubble Gum Simulator Infinity - How To Get And Use Royal Keys
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusion System, Explained
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers Of The Witch Tree - How To Unlock The Grappling Hook
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

Java Tutorial
1670
14
PHP Tutorial
1274
29
C# Tutorial
1256
24
MySQL's Role: Databases in Web Applications MySQL's Role: Databases in Web Applications Apr 17, 2025 am 12:23 AM

The main role of MySQL in web applications is to store and manage data. 1.MySQL efficiently processes user information, product catalogs, transaction records and other data. 2. Through SQL query, developers can extract information from the database to generate dynamic content. 3.MySQL works based on the client-server model to ensure acceptable query speed.

Explain the role of InnoDB redo logs and undo logs. Explain the role of InnoDB redo logs and undo logs. Apr 15, 2025 am 12:16 AM

InnoDB uses redologs and undologs to ensure data consistency and reliability. 1.redologs record data page modification to ensure crash recovery and transaction persistence. 2.undologs records the original data value and supports transaction rollback and MVCC.

MySQL vs. Other Programming Languages: A Comparison MySQL vs. Other Programming Languages: A Comparison Apr 19, 2025 am 12:22 AM

Compared with other programming languages, MySQL is mainly used to store and manage data, while other languages ​​such as Python, Java, and C are used for logical processing and application development. MySQL is known for its high performance, scalability and cross-platform support, suitable for data management needs, while other languages ​​have advantages in their respective fields such as data analytics, enterprise applications, and system programming.

How does MySQL index cardinality affect query performance? How does MySQL index cardinality affect query performance? Apr 14, 2025 am 12:18 AM

MySQL index cardinality has a significant impact on query performance: 1. High cardinality index can more effectively narrow the data range and improve query efficiency; 2. Low cardinality index may lead to full table scanning and reduce query performance; 3. In joint index, high cardinality sequences should be placed in front to optimize query.

MySQL for Beginners: Getting Started with Database Management MySQL for Beginners: Getting Started with Database Management Apr 18, 2025 am 12:10 AM

The basic operations of MySQL include creating databases, tables, and using SQL to perform CRUD operations on data. 1. Create a database: CREATEDATABASEmy_first_db; 2. Create a table: CREATETABLEbooks(idINTAUTO_INCREMENTPRIMARYKEY, titleVARCHAR(100)NOTNULL, authorVARCHAR(100)NOTNULL, published_yearINT); 3. Insert data: INSERTINTObooks(title, author, published_year)VA

MySQL vs. Other Databases: Comparing the Options MySQL vs. Other Databases: Comparing the Options Apr 15, 2025 am 12:08 AM

MySQL is suitable for web applications and content management systems and is popular for its open source, high performance and ease of use. 1) Compared with PostgreSQL, MySQL performs better in simple queries and high concurrent read operations. 2) Compared with Oracle, MySQL is more popular among small and medium-sized enterprises because of its open source and low cost. 3) Compared with Microsoft SQL Server, MySQL is more suitable for cross-platform applications. 4) Unlike MongoDB, MySQL is more suitable for structured data and transaction processing.

Explain the InnoDB Buffer Pool and its importance for performance. Explain the InnoDB Buffer Pool and its importance for performance. Apr 19, 2025 am 12:24 AM

InnoDBBufferPool reduces disk I/O by caching data and indexing pages, improving database performance. Its working principle includes: 1. Data reading: Read data from BufferPool; 2. Data writing: After modifying the data, write to BufferPool and refresh it to disk regularly; 3. Cache management: Use the LRU algorithm to manage cache pages; 4. Reading mechanism: Load adjacent data pages in advance. By sizing the BufferPool and using multiple instances, database performance can be optimized.

MySQL: Structured Data and Relational Databases MySQL: Structured Data and Relational Databases Apr 18, 2025 am 12:22 AM

MySQL efficiently manages structured data through table structure and SQL query, and implements inter-table relationships through foreign keys. 1. Define the data format and type when creating a table. 2. Use foreign keys to establish relationships between tables. 3. Improve performance through indexing and query optimization. 4. Regularly backup and monitor databases to ensure data security and performance optimization.

See all articles