Download you are transporting the tablespace set to a platform

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Microsoft Jet Database Engine wikipedia , lookup

Open Database Connectivity wikipedia , lookup

Extensible Storage Engine wikipedia , lookup

Database wikipedia , lookup

Entity–attribute–value model wikipedia , lookup

Relational model wikipedia , lookup

Clusterpoint wikipedia , lookup

Oracle Database wikipedia , lookup

PL/SQL wikipedia , lookup

Versant Object Database wikipedia , lookup

Database model wikipedia , lookup

Transcript
Cross Platform Transportable Tablespace Case
Study
Source Platform – Windows 32 Bit, Oracle 10.2.0.4 – CBDORCA261
Target Platform – AIX 64 Bit, Oracle 10.2.0.4 – DEVU007
This case study demonstrates the cross platform tablespace transport of two
tablespaces – USERS and EXAMPLE from the source GENUA2 database.
These tablespaces contain objects from the demo schemas
SH,OE,IX,PM,HR,SCOTT with a number of different data types to test the case
– as noted, issues were observed with few objects of certain XML data type and
some objects did not get transported. This will have to be investigated further.
DATA_TYPE
------------------------------------------------------------------------------AQ$_SIG_PROP
ADHEADER_TYP
XMLTYPE
TEXTDOC_TAB
TIMESTAMP(6) WITH LOCAL TIME ZONE
INTERVAL YEAR(2) TO MONTH
NVARCHAR2
BFILE
TIMESTAMP(6)
ORDER_EVENT_TYP
WAREHOUSE_TYP
CHAR
NUMBER
CLOB
ORDDOC
PHONE_LIST_TYP
CUST_ADDRESS_TYP
ORDIMAGE
ORDIMAGESIGNATURE
INVENTORY_LIST_TYP
DATE
RAW
TIMESTAMP(9)
ORDER_LIST_TYP
ORDER_ITEM_LIST_TYP
CUSTOMER_TYP
ORDVIDEO
NCLOB
ANYDATA
ORDAUDIO
VARCHAR2
BLOB
ROWID
SDO_GEOMETRY
Determine the platform and endian compatability
If we are transporting the tablespace set to a platform different from the source
platform, then determine if cross-platform tablespace transport is supported for both
the source and target platforms, and determine the endianness of each platform. If
both platforms have the same endianness, no conversion is necessary. Otherwise you
must do a conversion of the tablespace set either at the source or target database.
Run the following SQL on both Source and Target.
SQL> SELECT d.PLATFORM_NAME, ENDIAN_FORMAT
FROM V$TRANSPORTABLE_PLATFORM tp, V$DATABASE d
WHERE tp.PLATFORM_NAME = d.PLATFORM_NAME;
Source:
PLATFORM_NAME
ENDIAN_FORMAT
------------------------------------------------------------ ------------Microsoft Windows IA (32-bit)
Little
Target:
PLATFORM_NAME
ENDIAN_FORMAT
------------------------------------------------------------------------------- -------------AIX-Based Systems (64-bit)
Big
Since the endian formats are different, thus a conversion is necessary for
transporting the tablespace set.
Ensure that the tablespaces to be transported are self contained
SQL> EXECUTE DBMS_TTS.TRANSPORT_SET_CHECK('EXAMPLE,USERS',TRUE);
PL/SQL procedure successfully completed.
SQL> SELECT * FROM TRANSPORT_SET_VIOLATIONS;
no rows selected
Limitations to be noted for TTS (Transportable Tablespaces)
1.
The source and target database must use the same character set and national
character set.
2. You cannot transport a tablespace to a target database in which a tablespace with
the same name already exists. However, you can rename either the
tablespace to be transported or the destination tablespace before the transport
operation.
3. Objects with underlying objects (such as materialized views) or contained objects
(such as partitioned tables) are not transportable unless all of
the underlying or contained objects are in the tablespace set.
4. Beginning with Oracle Database 10g Release 2, you can transport tablespaces that
contain XMLTypes, but you must use the IMP and EXP utilities,
not Data Pump. When using EXP, ensure that the CONSTRAINTS and TRIGGERS
parameters are set to Y (the default).
The following query returns a list of tablespaces that contain XMLTypes:
select distinct p.tablespace_name
from dba_tablespaces p, dba_xml_tables x, dba_users u,
all_all_tables t
where t.table_name=x.table_name and
t.tablespace_name=p.tablespace_name and
x.owner=u.username
Transporting tablespaces with XMLTypes has the following limitations:
a.The target database must have XML DB installed.
b.Schemas referenced by XMLType tables cannot be the XML DB standard
schemas.
c.Schemas referenced by XMLType tables cannot have cyclic dependencies.
d.Any row level security on XMLType tables is lost upon import.
e.If the schema for a transported XMLType table is not present in the target
database, it is imported and registered.
If the schema already exists in the target databasean error is returned unless the
ignore=y option is set.
5. Advanced Queues Transportable tablespaces do not support 8.0-compatible
advanced queues with multiple recipients.
6. You cannot transport the SYSTEM tablespace or objects owned by the user SYS.
7. Opaque Types Types(such as RAW, BFILE, and the AnyTypes) can be transported,
but they are not converted as part of the cross-platform transport operation.
Their actual structure is known only to the application, so the application must
address any endianness issues after these types are moved to the new platform.
8. Floating-Point Numbers BINARY_FLOAT and BINARY_DOUBLE types are
transportable using Data Pump but not the original export utility, EXP.
Export the database metadata from the source
Note – Objects in SYS and SYSAUX tablespaces are not transported
E:\oracle\rman\GENUA2>expdp directory=ttsdir logfile=db_meta_exp.log
dumpfile=db_meta.dmp full=y INCLUDE=USER,ROLE,ROLE_GRANT,PROFILE,
content=METADATA_ONLY
Export: Release 10.2.0.4.0 - Production on Tuesday, 12 May, 2009 14:23:57
Copyright (c) 2003, 2007, Oracle.
All rights reserved.
Username: system/oracle
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Produc
tion
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
Starting "SYSTEM"."SYS_EXPORT_FULL_01": system/******** directory=ttsdir logfil
e=db_meta_exp.log dumpfile=db_meta.dmp full=y INCLUDE=USER,ROLE,ROLE_GRANT,PROFI
LE, content=METADATA_ONLY
Processing object type DATABASE_EXPORT/PROFILE
Processing object type DATABASE_EXPORT/SYS_USER/USER
Processing object type DATABASE_EXPORT/SCHEMA/USER
Processing object type DATABASE_EXPORT/ROLE
Processing object type DATABASE_EXPORT/SCHEMA/ROLE_GRANT
Master table "SYSTEM"."SYS_EXPORT_FULL_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SYSTEM.SYS_EXPORT_FULL_01 is:
E:\ORACLE\RMAN\GENUA2\DB_META.DMP
Job "SYSTEM"."SYS_EXPORT_FULL_01" successfully completed at 14:24:08
Restrict Access to the database and make tablespaces to be
transported as READ ONLY
E:\oracle\rman\GENUA2>sqlplus /nolog
SQL*Plus: Release 10.2.0.4.0 - Production on Tue May 12 14:26:11 2009
Copyright (c) 1982, 2007, Oracle.
All Rights Reserved.
SQL> conn sys as sysdba
Enter password:
Connected.
SQL> alter system enable restricted session;
System altered.
SQL> alter tablespace example read only;
Tablespace altered.
SQL> alter tablespace users read only;
Tablespace altered.
Make a note of any directories which exist on the source database –
these need to be created on the target database as well before
plugging in the tablespaces as objects may refer to these directories
SQL>
SQL>
2
3
4
set serveroutput on
declare x boolean;
begin x := dbms_tdb.check_external; end;
/
The following external tables exist in the database:
SH.SALES_TRANSACTIONS_EXT
The following directories exist in the database:
SYS.SUBDIR, SYS.XMLDIR, SYS.MEDIA_DIR, SYS.LOG_FILE_DIR, SYS.DATA_FILE_DIR, SYS.
WORK_DIR, SYS.ADMIN_DIR,
SYS.ORACLE_OCM_CONFIG_DIR, SYS.DATA_PUMP_DIR
The following BFILEs exist in the database:
PM.PRINT_MEDIA
Export the Tablespace Metadata
Parfile dp_ttsexp.par:
directory=ttsdir
dumpfile=ts_meta.dmp
logfile=dp_ttsexp.log
transport_full_check=no
transport_tablespaces=EXAMPLE, USERS
Note: Data Pump does not handle XMLSCHEMA data type
SQL> desc oe.purchaseorder
Name
Null?
Type
----------------------------------------- -------- --------------------------TABLE of XMLTYPE(XMLSchema
"http://localhost:8080/source/schemas/poSource/xsd/pu
rchaseOrder.xsd" Element "PurchaseOrder") STORAGE Object-relational
TYPE "PURCHASEORDER_T"
E:\oracle\rman\GENUA2>expdp parfile=ts_meta_exp.par
Export: Release 10.2.0.4.0 - Production on Tuesday, 12 May, 2009 14:38:43
Copyright (c) 2003, 2007, Oracle.
All rights reserved.
Username: system
Password:
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Produc
tion
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
Starting "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01": system/******** parfile=ts_met
a_exp.par
Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK
Processing object type TRANSPORTABLE_EXPORT/TYPE/TYPE_SPEC
Processing object type TRANSPORTABLE_EXPORT/TYPE/GRANT/OWNER_GRANT/OBJECT_GRANT
Processing object type TRANSPORTABLE_EXPORT/TYPE/TYPE_BODY
Processing object type TRANSPORTABLE_EXPORT/TABLE
ORA-39139: Data Pump does not support XMLSchema objects. TABLE:"OE"."PURCHASEORD
ER" will be skipped.
Processing object type TRANSPORTABLE_EXPORT/GRANT/OWNER_GRANT/OBJECT_GRANT
Processing object type TRANSPORTABLE_EXPORT/INDEX
Processing object type TRANSPORTABLE_EXPORT/CONSTRAINT/CONSTRAINT
Processing object type TRANSPORTABLE_EXPORT/INDEX_STATISTICS
Processing object type TRANSPORTABLE_EXPORT/COMMENT
Processing object type TRANSPORTABLE_EXPORT/CONSTRAINT/REF_CONSTRAINT
Processing object type TRANSPORTABLE_EXPORT/TRIGGER
Processing object type TRANSPORTABLE_EXPORT/INDEX/FUNCTIONAL_AND_BITMAP/INDEX
Processing object type TRANSPORTABLE_EXPORT/INDEX/STATISTICS/FUNCTIONAL_AND_BITM
AP/INDEX_STATISTICS
Processing object type TRANSPORTABLE_EXPORT/TABLE_STATISTICS
Processing object type TRANSPORTABLE_EXPORT/DOMAIN_INDEX/TABLE
Processing object type TRANSPORTABLE_EXPORT/DOMAIN_INDEX/SECONDARY_TABLE/INDEX
Processing object type TRANSPORTABLE_EXPORT/DOMAIN_INDEX/INDEX
Processing object type TRANSPORTABLE_EXPORT/RLS_POLICY
Processing object type TRANSPORTABLE_EXPORT/MATERIALIZED_VIEW
Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PROCACT_INSTANCE
Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PROCDEPOBJ
Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
Master table "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SYSTEM.SYS_EXPORT_TRANSPORTABLE_01 is:
E:\ORACLE\RMAN\GENUA2\TS_META.DMP
Job "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01" completed with 1 error(s) at 14:39:10
Perform the Conversion
Note: Conversion can be performed either at source or target – a number of
factors need to be considered for this
E:\oracle\rman\GENUA2>rman target /
Recovery Manager: Release 10.2.0.4.0 - Production on Tue May 12
14:59:19 2009
Copyright (c) 1982, 2007, Oracle.
All rights reserved.
connected to target database: GENUA2 (DBID=3824459639)
RMAN> convert tablespace users,example to
2> platform 'AIX-Based Systems (64-bit)'
3> format 'E:\oracle\rman\genua2\%U';
Starting backup at 12/MAY/09
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=129 devtype=DISK
channel ORA_DISK_1: starting datafile conversion
input datafile fno=00005 name=+DATA/genua2/datafile/example.444.686236815
converted datafile=E:\ORACLE\RMAN\GENUA2\DATA_D-GENUA2_I-3824459639_TS-EXAMPLE_F
NO-5_08KERKQM
channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:07
channel ORA_DISK_1: starting datafile conversion
input datafile fno=00004 name=+DATA/genua2/datafile/users.375.686236713
converted datafile=E:\ORACLE\RMAN\GENUA2\DATA_D-GENUA2_I-3824459639_TS-USERS_FNO
-4_09KERKQU
channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:01
Finished backup at 12/MAY/09
E:\oracle\rman\GENUA2>dir
12/05/2009
12/05/2009
12/05/2009
-5_08KERKQM
12/05/2009
_09KERKQU
12/05/2009
12/05/2009
12/05/2009
12/05/2009
12/05/2009
02:59 PM
02:59 PM
02:59 PM
<DIR>
.
<DIR>
..
104,865,792 DATA_D-GENUA2_I-3824459639_TS-EXAMPLE_FNO
02:59 PM
5,251,072 DATA_D-GENUA2_I-3824459639_TS-USERS_FNO-4
02:24 PM
212,992 DB_META.DMP
02:24 PM
1,093 db_meta_exp.log
02:39 PM
2,398 dp_ttsexp.log
02:39 PM
1,351,680 TS_META.DMP
02:37 PM
306 ts_meta_exp.par
7 File(s)
111,685,333 bytes
2 Dir(s) 46,828,691,456 bytes free
Rename the converted files to users01.dbf and example01.dbf
E:\oracle\rman\GENUA2>dir *.dbf
Volume in drive E is ORACLE
Volume Serial Number is 289A-13DE
Directory of E:\oracle\rman\GENUA2
12/05/2009
12/05/2009
02:59 PM
104,865,792 example01.dbf
02:59 PM
5,251,072 users01.dbf
2 File(s)
110,116,864 bytes
0 Dir(s) 46,828,691,456 bytes free
Create the GENUA2 database on the target platform
Note: ensure the same character set is used as the source database
scp or FTP the dumpfiles from the Windows source machine to the
AIX Target machine
location on target machine is /u01/oracle/tts
Create the required directories on the target – in case any directores are created on the
source, the same need to be created on the target database
SQL> create directory ttsdir as '/u01/oracle/tts';
Directory created.
Note: We need to create some placeholder tablespaces which are created so that the
meta data dumpfile which will create the users can be imported. These tablespaces are
those that are designated as the DEFAULT tablespace for the particular user in the
source database.
Note: these placeholder tablespaces have to be dropped as they will be plugged in at a
later stage.TTS will fail if a tablespace which is being plugged in already exists in
the target database.
Scp or FTP all the Data Pump dumpfiles and RMAN converted
datafiles to the target machine required locations
/u01/oracle/tts location for all the meta data dump files
/u02/oradata/genua2 location for the datafiles
Import the user meta data
genua2:/u01/oracle/tts> impdp system/oracle dumpfile=db_meta.dmp
logfile=dp_fullimp.log full=y directory=ttsdir
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
Master table "SYSTEM"."SYS_IMPORT_FULL_02" successfully loaded/unloaded
Starting "SYSTEM"."SYS_IMPORT_FULL_02": system/******** dumpfile=GAVIN.DMP
logfile=dp_fullimp.log full=y directory=ttsdir
Processing object type DATABASE_EXPORT/PROFILE
ORA-31684: Object type PROFILE:"MONITORING_PROFILE" already exists
Processing object type DATABASE_EXPORT/SYS_USER/USER
Processing object type DATABASE_EXPORT/SCHEMA/USER
ORA-31684: Object type USER:"OUTLN" already exists
ORA-31684: Object type USER:"TSMSYS" already exists
ORA-31684: Object type USER:"ANONYMOUS" already exists
ORA-31684: Object type USER:"OLAPSYS" already exists
ORA-31684: Object type USER:"MDDATA" already exists
ORA-31684: Object type USER:"SYSMAN" already exists
ORA-31684: Object type USER:"MGMT_VIEW" already exists
ORA-31684: Object type USER:"SCOTT" already exists
Processing object type DATABASE_EXPORT/ROLE
ORA-31684: Object type ROLE:"SELECT_CATALOG_ROLE" already exists
ORA-31684: Object type ROLE:"EXECUTE_CATALOG_ROLE" already exists
ORA-31684: Object type ROLE:"DELETE_CATALOG_ROLE" already exists
ORA-31684: Object type ROLE:"RECOVERY_CATALOG_OWNER" already exists
ORA-31684: Object type ROLE:"GATHER_SYSTEM_STATISTICS" already exists
ORA-31684: Object type ROLE:"LOGSTDBY_ADMINISTRATOR" already exists
ORA-31684: Object type ROLE:"AQ_ADMINISTRATOR_ROLE" already exists
ORA-31684: Object type ROLE:"AQ_USER_ROLE" already exists
ORA-31684: Object type ROLE:"GLOBAL_AQ_USER_ROLE" already exists
ORA-31684: Object type ROLE:"SCHEDULER_ADMIN" already exists
ORA-31684: Object type ROLE:"HS_ADMIN_ROLE" already exists
ORA-31684: Object type ROLE:"OEM_ADVISOR" already exists
ORA-31684: Object type ROLE:"OEM_MONITOR" already exists
ORA-31684: Object type ROLE:"WM_ADMIN_ROLE" already exists
ORA-31684: Object type ROLE:"JAVAUSERPRIV" already exists
ORA-31684: Object type ROLE:"JAVAIDPRIV" already exists
ORA-31684: Object type ROLE:"JAVASYSPRIV" already exists
ORA-31684: Object type ROLE:"JAVADEBUGPRIV" already exists
ORA-31684: Object type ROLE:"EJBCLIENT" already exists
ORA-31684: Object type ROLE:"JAVA_ADMIN" already exists
ORA-31684: Object type ROLE:"JAVA_DEPLOY" already exists
ORA-31684: Object type ROLE:"CTXAPP" already exists
ORA-31684: Object type ROLE:"XDBADMIN" already exists
ORA-31684: Object type ROLE:"AUTHENTICATEDUSER" already exists
ORA-31684: Object type ROLE:"XDBWEBSERVICES" already exists
ORA-31684: Object type ROLE:"OLAPI_TRACE_USER" already exists
ORA-31684: Object type ROLE:"OLAP_DBA" already exists
ORA-31684: Object type ROLE:"CWM_USER" already exists
ORA-31684: Object type ROLE:"OLAP_USER" already exists
……..
………
Import the tablespace meta data and plug in the USERS and
EXAMPLE tablespaces
genua2:/u01/oracle/tts> impdp dumpfile=TS_META.DMP directory=ttsdir
transport_datafiles=/u02/oradata/genua2/users01.dbf,/u02/oradata/genu
a2/example01.dbf
The following errors were observed while the tablespace import took place
ORA-31684: Object type TYPE:"XDB"."XDB$RAW_LIST_T" already exists
ORA-39139: Data Pump does not support XMLSchema objects.
"OE"."PURCHASEORDER" will be skipped.
ORA-39132: object type "OE"."PART_T" already exists with different
hashcode
Note: users like SH, OE. HRetc have now been created
SQL> select username,to_char(created,'HH24:MI:SS') from dba_users
order by 2;
USERNAME
-----------------------------BI
IX
PM
HR
OE
SH
SYSTEM
SYS
OUTLN
DIP
TSMSYS
DBSNMP
ORACLE_OCM
WMSYS
EXFSYS
DMSYS
CTXSYS
ANONYMOUS
XDB
ORDPLUGINS
SI_INFORMTN_SCHEMA
ORDSYS
MDSYS
OLAPSYS
MDDATA
SYSMAN
MGMT_VIEW
SCOTT
TO_CHAR(
-------15:33:06
15:33:06
15:33:06
15:33:06
15:33:06
15:33:06
21:24:50
21:24:50
21:24:59
21:30:04
21:38:48
21:42:38
21:42:45
21:44:20
21:53:45
21:54:08
21:54:47
21:55:38
21:55:38
21:58:21
21:58:21
21:58:21
21:58:21
22:10:18
22:11:52
22:18:33
22:20:52
22:22:00
Check the objects that have been imported
HR
HR
HR
HR
IX
IX
IX
IX
IX
IX
IX
IX
IX
IX
OE
OE
OE
OE
OE
OE
OE
PM
PM
PM
PM
PM
SH
SH
SH
SH
SH
SH
SCOTT
SCOTT
SCOTT
INDEX
TABLE
TRIGGER
LOB
TYPE
VIEW
INDEX
QUEUE
TABLE
RULE SET
SEQUENCE
EVALUATION CONTEXT
LOB
TYPE
INDEX
TABLE
TRIGGER
TYPE BODY
LOB
TYPE
INDEX
TABLE
LOB
INDEX
TABLE
INDEX PARTITION
TABLE PARTITION
INDEX
TABLE
28
19
7
2
53
3
1
8
14
4
15
4
2
2
57
5
11
26
11
1
3
26
17
3
3
3
297
2
27
16
196
56
6
2
4
Note: Tablespaces that have been imported will have the PLUGGED_IN column
set to YES
SQL> select plugged_in from dba_tablespaces where tablespace_name in
('USERS','EXAMPLE');
PLU
--YES
YES