|
Moving Tablespaces in Oracle 8iby Oscar Bonilla |
exp
and imp, these tools only work when the import is done on
the same tablespace from where the export was done. Sometimes what you
want to do is move the data from one tablespace to another. This document
describes a dirty hack to do that.
Say you have a tablespace call "PRODUCTION" which you need to move to a new tablespace called "DEVELOPMENT". These are the steps to move all the data from "PRODUCTION" to "DEVELOPMENT".
$ svrmgrl
Oracle Server Manager Release 3.1.7.0.0 - Production
Copyright (c) 1997, 1999, Oracle Corporation. All Rights Reserved.
Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production
SVRMGR> connect internal
SVRMGR> drop user development cascade;
SVRMGR> drop tablespace development including contents cascade constraints;
SVRMGR> exit;
$ rm -f /ora8/m02/oradata/ora8/development.dbf
$ svrmgrl
Oracle Server Manager Release 3.1.7.0.0 - Production
Copyright (c) 1997, 1999, Oracle Corporation. All Rights Reserved.
Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production
SVRMGR> create tablespace development datafile '/ora8/m02/oradata/ora8/development.dbf' size 50m autoextend on default storage (pctincrease 1);
SVRMGR> create user development identified by development default tablespace development temporary tablespace temp quota unlimited on development;
SVRMGR> grant connect, resource, ctxapp, javasyspriv, query rewrite to development;
SVRMGR> revoke unlimited tablespace from development;
SVRMGR> alter user development quota unlimited on development;
SVRMGR> exit;
exp
utility. While logged in as the oracle user do:
$ exp production/production file=production.dmp owner=production consistent=Y direct=Y
This will create a file called production.dmp that contains
a dump of your tablespace.
.dmp file with xemacs (or optionally emacs).
$ split -b100m production.dmp
This will create files called "aa", "ab", "ac", etc. each
100MB in size.
M-% in Emacs.
$ mv aa development.dmp
$ cat a* >> development.dmp
development.dmp using the imp utility. As the oracle user type:
$ imp development/development file=development.dmp buffer=8192000 full=y
This works because whenever you specify an owner and do not specify which tables to export, everything that has been created by that owner is exported.