oracle 传统导出导入和数据泵导出导入

来源:互联网 发布:快达票 淘宝 编辑:程序博客网 时间:2024/05/20 22:30

Oracle表空间以及导库总结
一、表空间的问题
1.1表空间创建
1.1
自己本机环境的路径:C:\oracle\product\10.2.0\oradata\orcl

create tablespace LTSYSDATA01datafile 'C:\oracle\product\10.2.0\oradata\orcl\LTSYSDATA01A.DBF' size 1024Mautoextend on next 50M maxsize unlimited loggingextent management local autoallocatesegment space management auto;

1.2修改表空间LTSYSDATA01数据文件LTSYSDATA01KZ.DBF的大小

alter database datafile 'C:\oracle\product\10.2.0\oradata\orcl\LTSYSDATA01KZ.DBF'  resize 2g;

1.3 空间单个数据文件最大32g,扩展表空间数据文件语句(允许自动增长):

alter tablespace LTSYSDATA01 add datafile 'C:\oracle\product\10.2.0\oradata\orcl\LTSYSDATA01KZ.DBF' size 1g autoextend on next 500M;

1.4扩展表空间的三种办法:
1手动增加数据文件大小

alter database datafile '/home/oracle/ts01.dbf' resize 100m;

2把表空间设置为自动扩展

alter database datafile '/home/oracle/ts01.dbf' autoextend on   next 5m maxsize     unlimited;

3 往表空间增加数据文件

alter tablespace ts01 add datafile '/home/oracle/ts02.dbf' size     2m;

2.表空间大小,使用情况

select total.tablespace_name,       round(total.MB, 2) as Total_MB,       round(total.MB - free.MB, 2) as Used_MB,       round((1 - free.MB / total.MB) * 100, 2) || '%' as Used_Pct from       (select tablespace_name,sum(bytes) / 1024 / 1024 as MB from dba_free_space group by tablespace_name) free,       (select tablespace_name,sum(bytes) / 1024 / 1024 as MB from dba_data_files group by tablespace_name) total       where free.tablespace_name = total.tablespace_name  order by tablespace_name desc;select t1.name,t2.name   --查看表空间及数据文件from v$tablespace t1,v$datafile t2where t1.ts# = t2.ts#;SELECT FILE_NAME,TABLESPACE_NAME,AUTOEXTENSIBLE FROM dba_data_files;

3.删除表空间、删除表空间数据文件以及删除用户时级联删 除
1.删除表空间,

Drop tablespace xxx including contents 

2.删除表空间及数据文件

Drop tablespace xxx including contents and datafiles

3.删除用户级联删除表空间

drop user test cascade

级联删除该用户后该用户对应表空间对应数据文件使用率下降
A用户表空间 tablespace1 数据文件data1.dbf 使用率下降

如果这个用户使用的表空间 tablespace 没有其他用户在用,则可以直接删除该表空间以及该表空间的数据文件来释放空间;如果该表空间被共用,则删除该用户后可以修改表空间对应数据文件的大小来释放空间,不能直接删除表空间以及表空间对用数据文件
二、数据库导入导出
1.拿到现场的数据库后一般可以先创建一个新用户然后导入拿到的文件
导出数据库:
导出远端192.168.3.15/orcl用户hf_hs

exp hf_hs/hf_hs@192.168.3.15/orcl file=C:\hf_hs201901010101.dmp log=C:\hf_hs201901010101.log ignore=y full=yexp int_jc/int_jc@orcl file=C:\int_jc20160419.dmp log=C:\int_jc20160419.log full=y

导入数据库:
1.导入到远端10.12.184.230/orcl,用户名可以不一致

imp fasp_hf_cs/1@10.12.184.230/orcl file=C:\hf_hs201901010101.dmp log=C:\hf_hs201901010101.log ignore=y full=y

例:新用户导入

sqlplus / as sysdbacreate user hf_hs identified by hf_hs;grant dba,connect,resource to hf_hs;

然后导入

三、数据泵导入导出
在Oracle10g中exp imp被重新设计为Oracle Data Pump(保留了原有的 exp imp工具)
  数据泵与传统导出导入的区别;
  1) exp和imp是客户端工具,他们既可以在客户端使用,也可以在服务端使用。  
  2) expdp和impdp是服务端工具,只能在Oracle服务端使用。
  3) imp只适用于exp导出文件,impdp只适用于expdp导出文件。
  expdp导出数据:
  1、为输出路径建立一个数据库的directory对象。
    

create or replace directory dumpdir as 'd:\';--可以通过:select * from dba_directories;查看。

  2、给将要进行数据导出的用户授权访问。
    

grant read,write on directory dumpdir to test_expdp;

  3、将数据导出
    

expdp test_expdp/test_expdp@orcl directory=dumpdir dumpfile=test_expdp_bak.dmp logfile=test_expdp_bak.log schemas=test_expdp

    注意:这句话在cmd窗口中运行,并且最后不要加分号,否则会提示错误。因为这句话是操作系统命令而不是SQL。
  impdp导入数据:
    1、给将要进行数据导入的用户授权访问。
      

grant read,write on directory dumpdir to test_impdp;

    2、将数据导入
      

impdp test_impdp/impdp@orcl directory=dumpdir dumpfile=test_expdp_bak.dmp remap_schema=test_expdp:test_impdp

注意:

数据泵导出的时候一定要求现场同事导出文件添加版本号

expdp test_expdp/test_expdp@orcl directory=dumpdir dumpfile=test_expdp_bak.dmp logfile=test_expdp_bak.log version=’10.2.0.1.0’;create or replace directory dumpdir as 'C:\database\';grant read,write on directory dumpdir to hf_hs_test;expdp hf_hs_test/1@192.168.1.111/orcl directory=dumpdir dumpfile=hf_hs_test0429.dmp logfile=hf_hs_test0429.log version='10.2.0.1.0'

如果现场同事11.0版本导出,是导入不到10.0版本的

==================================

导出数据

1)按用户导expdp scott/tiger@orcl schemas=scott dumpfile=expdp.dmp DIRECTORY=dpdata1;2)按表空间导expdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=temp,example;3)导整个数据库expdp system/manager DIRECTORY=dpdata1 DUMPFILE=full.dmp FULL=y;

导入数据

1)导到指定用户下impdp scott/tiger DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=scott;3)导入表空间impdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=example;4)导入数据库impdb system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=y;

==================================
创建数据表空间(这里没有用临时表空间)

create tablespace ACCTDATA01 datafile 'D:\app\orcldata\ACCTDATA01.dbf' size 1024m autoextend on next 50M;create tablespace EFMIS datafile 'D:\app\orcldata\EFMIS.dbf' size 10240m autoextend on next 50M;

windows cmd

sqlplus / as sysdba

创建用户, 并赋予权限

create user ACCT_1502 identified  by "1"--default tablespace user_data  (指定数据表空间)--temporary tablespace user_temp(指定临时表空间);  grant resource,connect,dba to ACCT_1502 ;

指定dmp文件位置,并给用户权限

create or replace directory dumpdir as 'D:\app\orcldata';grant read,write on directory dumpdir to ACCT_1502;

开始导入

impdp ACCT_1502/1@orcl directory=dumpdir dumpfile=ACCT_1502_20170720.dmp logfile=ACCT_1502_20170720_imp.log