Chinaunix首页 | 论坛 | 博客
  • 博客访问: 130116
  • 博文数量: 35
  • 博客积分: 1002
  • 博客等级: 准尉
  • 技术积分: 345
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-03 14:30
文章分类

全部博文(35)

文章存档

2014年(7)

2013年(8)

2011年(4)

2010年(9)

2009年(7)

我的朋友

分类: 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

--验证是否成功

 

 

 

 

阅读(667) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~