Клониране на схема

 Без категория
фев. 102009
 

Най-простия начин:

expdp system@db schemas=abc directory=data_pump_dir dumpfile=abc.dp logfile=exp_abc.log
impdp system@db schemas=abc directory=data_pump_dir dumpfile=abc.dp logfile=imp_abc.log REMAP_SCHEMA=abc:def

После трябва да се оправят само грантовете от други към тази схема.
Не че е кой-знае какво, ама ми писна всеки път да се чудя какъв беше синтаксиса за нещо толкова елементарно. За това го пиша тук. Ако не те интересува – just ignore.

 Posted by at 17:14

  3 Responses to “Клониране на схема”

  1. Дори няма нужда от export. Ако искате да клонирате ABC схема в база данни XYZ така, че новата схема да е също в XYZ, но да се казва ABC2, то тогава:
    1. Създавате схема ABC2 и то празна, без специалните грантове даже, те ще се създадат при импорта.
    2. В tnsnames.ora на сървъра слагате abc2 entry за същата база данни (това с цел да направим dummy db link към същата база). Това е възможно, въпреки че в Intenet много твърдят че не ставало в Oracle такова нещо.
    3. Правите database link abc2:
    create database link abc2 connect to system identified by manager using 'abc';
    4. impdp system/manager network_link=abc2 remap_schema=abc:abc2 job_name=ot_abac_v_abc2 nologfile=Y parallel=4
    5. Даже и remap_tablespace слагаме в 4 за да не фрагментираме tablespace-овете. Нека всяка схема да си има собствени tablespaces.

    Това е особено полезно ако схемата е голяма над 10G например, тогава няма нужда от extra space за export dumpa. И става по-бързо.

  2. Много приятна идея! Няколко уточнения:
    – трябва да зададем и schemas=abc, иначе май ще преточим цялата база (не съм пробвал)
    – не е нужно да създаваме потребителя, impdp се грижи за това
    – защо да не използваме съществуващия implicit loopback database link? Така цялата процедура ще стане супер проста, само с една стъпка:
    impdp system/manager@XYZ schemas=ABC network_link=XYZ remap_schema=ABC:ABC2 job_name=ot_abc_v_abc2 nologfile=Y parallel=4

  3. Така е разбира се най-лесно, ама не го бях пробвал до сега. Разбира се, че си прав и става:

    impdp \"/ as sysdba\" schemas=ico network_link=RTVQ remap_schema=ico:ico2 job_name=ot_abc_v_abc2 nologfile=Y

    Import: Release 10.2.0.4.0 - 64bit Production on Wednesday, 11 February, 2009 15:31:16

    Copyright (c) 2003, 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
    Starting "SYS"."OT_ABC_V_ABC2": "/******** AS SYSDBA" schemas=ico network_link=RTVQ remap_schema=ico:ico2 job_name=ot_abc_v_abc2 nologfile=Y
    Estimate in progress using BLOCKS method...
    Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
    Total estimation using BLOCKS method: 0 KB
    Processing object type SCHEMA_EXPORT/USER
    Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
    Processing object type SCHEMA_EXPORT/ROLE_GRANT
    Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
    Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
    Job "SYS"."OT_ABC_V_ABC2" successfully completed at 15:31:54

Sorry, the comment form is closed at this time.