分类: Oracle
2009-10-16 16:28:58
1. 首先确定导出的是哪种类型的数据,如按用户导出,按表空间导出,按表导出等。这里介绍的是按用户导出。
2. 计算导出用户下表空间大小(需要知道导出哪些表空间)
SELECT c.tablespace_name tablespace_name, ROUND(a.bytes/1048576,2) total_size,ROUND((a.bytes-b.bytes)/1048576,2) used_size, ROUND(b.bytes/1048576,2) free_size, ROUND(b.bytes/a.bytes * 100,2)||'%' free_pct FROM (SELECT tablespace_name,SUM(a.bytes) bytes FROM sys.DBA_DATA_FILES a GROUP BY tablespace_name) a, (SELECT a.tablespace_name, NVL(SUM(b.bytes),0) bytes FROM sys.DBA_DATA_FILES a, sys.DBA_FREE_SPACE b WHERE a.tablespace_name = b.tablespace_name (+) AND a.file_id = b.file_id (+) GROUP BY a.tablespace_name) b, sys.DBA_TABLESPACES c WHERE a.tablespace_name = b.tablespace_name(+) AND a.tablespace_name = c.tablespace_name ORDER BY ROUND(b.bytes/1048576,2); |
3. 计算机磁盘空间大小(windows直接打开资源管理器即可)
df -g |
4. 查询用户权限
select * from dba_role_privs WHERE grantee='PECKER'; GRANTEE GRANTED_ROLE ADMIN_ DEFAUL ------------------------------------------ ------ ------ SYSTEM AQ_ADMINISTRATOR_ROLE YES YES SYSTEM MGMT_USER NO YES SYSTEM DBA YES YES |
5. 创建目录。如在/home/oracle下创建dmp目录,赋予目录权限(导出的数据文件存放在此)
Cd /home/oracle Mkdir dmp Chmod 777 dmp |
6. 查询表空间的创建脚本
sys@ORACLE>select DBMS_LOB.substr(dbms_metadata.get_ddl('TABLESPACE','LWS')) from dual;
DBMS_LOB.SUBSTR(DBMS_METADATA.GET_DDL('TABLESPACE','LWS')) ------------------------------------------------------------------------------------------------------------------------------------------------------
CREATE TABLESPACE "LWS" DATAFILE '/home/oracle/lws.dbf' SIZE 2097152 LOGGING ONLINE PERMANENT BLOCKSIZE 8192 EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO |
LWS替换成表空间名
7. 执行导出命令(以system用户为例)
exp pecker/pecker file=/home/oracle/dmp/pecker.dmp log=pecker.log buffer=5000000 |
8. 进入目录拷贝文件*.dmp至目标机器(步骤同5)
9. 接下来的工作在目标机器上进行。查看磁盘空间剩余(同3)
10. 查询用户名及权限(同4)如没有用户名,则应创建新用户并赋予4查询的权限。例:
create user pecker identified by pecker --pecker用户名,pecker密码 grant AQ_ADMINISTRATOR_ROLE, MGMT_USER,DBA to pecker;
|
11. 查询表空间,对比是否有相同表空间
select TABLESPACE_NAME from dba_tablespaces; |
12. 根据6的显示结果在目标机器上创建对应的表空间(注意修改脚本蓝色部分)
13. 导入数据
imp pecker/pecker fromuser=pecker touser=pecker file=/home/oracle/dmp/pecker1016.dmp buffer=50000 COMMIT=y; |
最后附上windows xp数据迁移至linux源码:
Windows操作如下: create tablespace pecspace datafile 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORACLE\PECSPACE01.DBF' size 5m; --创建表空间 create user pecker identified by pecker default tablespace pecspace temporary tablespace temp ; --创建用户,分配表空间 grant dba, connect, resource, create table to pecker ; --授权 create table pecker.pectable (test varchar2(10)) tablespace pecspace; --建表 SQL> insert into pecker.pectable values('test1');
已创建 1 行。
SQL> commit;
提交完成。
SQL> select * from pecker.pectable;
TEST ---------- test1 --插入数据,查询 SQL> select DBMS_LOB.substr(dbms_metadata.get_ddl('TABLESPACE','PECSPACE')) from dual;
DBMS_LOB.SUBSTR(DBMS_METADATA.GET_DDL('TABLESPACE','PECSPACE')) --------------------------------------------------------------------------------
CREATE TABLESPACE "PECSPACE" DATAFILE 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORACLE\PECSPACE01.DBF' SIZE 5242880 LOGGING ONLINE PERMANENT BLOCKSIZE 8192 EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO --查询建表空间的脚本 C:\Documents and Settings\Administrator>exp pecker/pecker file=e:\pecker1016.dmp log=pecker1016.log buffer=50000
Export: Release 10.2.0.1.0 - Production on 星期五 10月 16 15:03:43 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options 已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
即将导出指定的用户... . 正在导出 pre-schema 过程对象和操作 . 正在导出用户 PECKER 的外部函数库名 . 导出 PUBLIC 类型同义词 . 正在导出专用类型同义词 . 正在导出用户 PECKER 的对象类型定义 即将导出 PECKER 的对象... . 正在导出数据库链接 . 正在导出序号 . 正在导出簇定义 . 即将导出 PECKER 的表通过常规路径... . . 正在导出表 PECTABLE导出了 1 行 . 正在导出同义词 . 正在导出视图 . 正在导出存储过程 . 正在导出运算符 . 正在导出引用完整性约束条件 . 正在导出触发器 . 正在导出索引类型 . 正在导出位图, 功能性索引和可扩展索引 . 正在导出后期表活动 . 正在导出实体化视图 . 正在导出快照日志 . 正在导出作业队列 . 正在导出刷新组和子组 . 正在导出维 . 正在导出 post-schema 过程对象和操作 . 正在导出统计信息 成功终止导出, 没有出现警告。
--导出数据到指定磁盘下
以下操作为linux下: Mkdir /home/oracle/dmp Cd /home/oracle Chmod 777 dmp --建目录,授权 select owner from dba_segments where owner='PECKER'; --查询是否存在PECKER用户 idle>select 2 a.tablespace_name name, 3 b.bytes sizebytes, 4 b.file_name datafiles 5 from dba_tablespaces a,dba_data_files b 6 Where a.tablespace_name=b.tablespace_name and a.tablespace_name='SYSTEM';
NAME SIZEBYTES ------------------------------ ---------- DATAFILES ------------------------------------------------------------------------------------------------------------------------------------------------------ SYSTEM 524288000 /opt/oracle/oradata/oracle/system01.dbf --表空间的数据文件存放的位置,为新建表空间作准备 create tablespace pecspace datafile '/opt/oracle/oradata/oracle/PECSPACE01.DBF' size 5m; --创建表空间 create user pecker identified by pecker default tablespace pecspace temporary tablespace temp ; --创建用户,分配表空间 grant dba, connect, resource, create table to pecker ; --授权 [oracle@localhost ~]$ imp pecker/pecker fromuser=pecker touser=pecker file=/home/oracle/dmp/pecker1016.dmp buffer=50000 COMMIT=y;
Import: Release 10.2.0.1.0 - Production on Tue Sep 15 12:07:49 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options
Export file created by EXPORT:V10.02.01 via conventional path import done in ZHS16GBK character set and AL16UTF16 NCHAR character set import server uses WE8ISO8859P1 character set (possible charset conversion) . . importing table "PECTABLE" 1 rows imported Import terminated successfully without warnings. --导入数据 idle>select * from pecker.pectable;
TEST -------------------- test1 --验证是否成功
|