数据导出:
1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中
exp system/manager@TEST file=d:\daochu.dmp full=y
full = y 全部导出 || 不写的话,只导出当前用户
2 将数据库中system用户与sys用户的表导出
exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
3 将数据库中的表table1 、table2导出
exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2)
4 将数据库中的表table1中的字段filed1以"00"打头的数据导出
exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=" where filed1 like ‘00%’"
上面是常用的导出,对于压缩我不太在意,用winzip把dmp文件可以很好的压缩。
不过在上面命令后面 加上 compress=y 就可以了
导出时遇到的问题:
1.导出时少表,发现缺少的表都是刚创建的表,0条数据。
解决方法:
select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 or num_rows is null```
执行查询出来的语句,然后在exp导出,就没有问题了
导入
一 在oracle 进入 sys 中 执行操作
1.创建表空间
CREATE TABLESPACE XXXX(表空间的名字)
DATAFILE ‘E:\Oracle_11g\app\Administrator\oradata\orcl\certification.dbf’ (这边可以写成oracle的某个路径下)
SIZE 20M(初始大小)
AUTOEXTEND ON;(自动扩展)
2.创建用户名
CREATE USER XXXX(用户名)
IDENTIFIED BY XXXX(密码)
DEFAULT TABLESPACE XXXX表空间名字 (上面创建的表空间)
TEMPORARY TABLESPACE temp;(临时表空间就写temp即可)
3.给予权限
GRANT CREATE SESSION,CREATE TABLE,CREATE VIEW,CREATE SEQUENCE,UNLIMITED TABLESPACE TO XXXX(用户名) ;
GRANT CONNECT TO XXXX(用户名) ;
GRANT RESOURCE TO XXXX(用户名) ;
GRANT DBA TO XXXX(用户名) ; --dba为最高级权限,可以创建数据库,表等。
二 在cmd 中执行操作
imp usename/password@192.168.xxx/orcl(表示SID)
file= E:\Oracle_11g\app\Administrator\product\11.2.0\dbhome_1\database\xxxx.dmp
full=y
三 在oracle中查看导入表
--查询表空间 和 所登陆用户 中的所有表信息
Select * From Dba_Tables Where Tablespace_Name = '表空间名称' and owner ='账号名'