概述
Oracle功能繁多,接触Oracle不深,将接触到的基础知识整理下来,以便不时之需。整理的内容主要有Expdp指令实现数据库备份,Impdp指令实现数据库还原,以及用户、表空间的定义。整理的数据来源多为网上优秀的博客和论坛,内容如有相同之处,纯属转载。
Expdp指令数据备份导出
expdp工具导出的方式有很多种,使用方便,直接在CMD命令行中输入导出指令即可,这里仅仅介绍按用户名导出数据库文件。如果是普通用户进行数据导出和导入时候,需要授权用户读写目录权限:
最好以system等管理员赋予: grant read,write on directory dpdata1 to scott;
1、导出指令格式:
A、导出全部数据库格式:
[expdp 用户名/密码 dumpfile=导出文件名.dmp directory=文件目录];
B、导出指定表空间:
[expdp 用户名/密码@SID名称 dumpfile=导出文件名.dmp directory=文件目录 TABLESPACES=表空间A,表空间B];
(备注:该导出方式包括表空间和用户,所以还原数据的时候,需要对应的表空间和用户)
C、导出指定用户的数据:
[expdp 用户名/密码 dumpfile=导出文件名.dmp directory=文件目录 schemas=username];
expdp system/ZSORCL@AORCL dumpfile=einv20161106.dmp directory=data_pump_dir schemas=einv
(使用system导出是为了导出einv schema中的全部内容,包括用户创建和权限授予部分,使用用户本身导出则不包含这些内容。)
D、导出表空间结构,而非数据格式:
[expdp 用户名/密码 dumpfile=导出文件名.dmp directory=文件目录 CONTENT=METADATA_ONLY schemas=username];
(备注:设置CONTENT为ALL 时,将导出对象定义及其所有数据.为DATA_ONLY时,只导出对象数据,为METADATA_ONLY时,只导出对象定义(导出数据表结构))
expdp system/ZSORCL@AORCL dumpfile=einv20161107.dmp CONTENT=METADATA_ONLY directory=data_pump_dir schemas=einv
2、查询和新建文件目录
select * from dba_directories; #查看Oracle文件目录
create directory dpdata1 as 'd:\test\dump'; #创建Oracle文件目录
create or replace directory dpdata1 as 'd:/dmp' #如果dpdata1目录文件存在,就修改文件指向到d:/dmp
Impdp指令数据库还原
A、导入全部数据库的格式:[expdp 用户名/密码 dumpfile=导入文件名.dmp directory=文件目录],举例如下:
impdp system/Abc.@MyHost transform=segment_attributes:n directory=dpdata1 dumpfile=.dmp FULL=y;
B、导入表空间的格式:[expdp 用户名/密码 dumpfile=导入文件名.dmp directory=文件目录 TABLESPACES=原备份表空间名称]
(备注:该导入方式需要和原导出文件的命名空间和用户名保持一致)
C、导入用户数据的格式:
格式I:(通过remap_tablespace来替换表空间,用新数据库的表空间替换老的表空间)
[expdp 用户名/密码 dumpfile=导入文件名.dmp directory=文件目录 SCHEMAS=username remap_tablespace=原表空间:新表空间];
impdp system/1bc2123@ZSORCL DIRECTORY=data_pump_dir DUMPFILE=einv20161106.dmp SCHEMAS=einv;
格式II:(通过remap_tablespace来替换表空间,用新数据库的表空间替换老的表空间,remap_schema替换就的用户名称schema)
[expdp 用户名/密码 dumpfile=导入文件名.dmp directory=文件目录 remap_schema=原schema:新schema remap_tablespace=原表空间:新表空间];
impdp system/1bc2123@ZSORCL DIRECTORY=dpdata1 DUMPFILE=einv1106.dmp remap_tablespace=EINV_DATA:ZSEINV_DATA remap_schema=einv:zsmgr
D、导入表空间数据结果而非数据格式:
[expdp 用户名/密码 dumpfile=导入文件名.dmp directory=文件目录 CONTENT=METADATA_ONLY SCHEMAS=username
remap_tablespace=原表空间:新表空间];
impdp system/3456@TSTRCL dumpfile=einv1107.dmp CONTENT=METADATA_ONLY directory=data_pump_dir remap_schema=einv:zsmgr remap_tablespace=EV_DATA:ZS_DATA
有些时候,牵扯到分区表的还原时候,需要在sqlplus中,执行如下指令:表示文件自动扩展
#在sqlplus命令里面,先指向第一条
alter database datafile 'D:\app\Administrator\oradata\orcl\EINVDATA.DBF' autoextend on;
#在sqlplus命令里面,数据还原完成之后,再指向第二条
alter database datafile 'D:\app\Administrator\oradata\orcl\EINVDATA.DBF' resize 2G autoextend off ;
备注:存在表:数据追加(append)和数据替换(replace) ,即:table_exists_action=append
******************************存在表空:数据追加(append)和数据替换(replace)***********************
impdp system/Abc.@MyHost transform=segment_attributes:n directory=dpdata1 dumpfile=db20161108023000.dmp table_exists_action=append FULL=y;
举例一个分区表的数据导入和导出指令
分区表的数据导出
#导出分区表table1中的p2014分区数据,按分区表导出的数据tables
expdp demo/demo directory=datapump dumpfile=exp_table1_2014.dmp tables=table1:p2014 logfile=exp_table1_2014.log;
分区表的数据导入
#导入分区表table1中的2014分区数据导入table2中
impdp demo/demo directory=datapump dumpfile=exp_table1_2014.dmp remap_table=table1:table2 table_exists_action=append logfile=impdp_table1_2014
.log
备注:表table2中必须有p2014分区,否则数据导入失败;
表空间和用户创建
1、数据库文件一般都是放在哪里的
select name from v$datafile;
2、传进命名空间
create tablespace EINV_DATA datafile 'D:\oracle\oradata\orcl\yang.dbf' size 3000m;
有时候我们可以附件空间磁盘:
create tablespace EINV_DATA datafile 'D:\ExecSofe\OracleData\einv_data_01.dbf' size 1000m; alter tablespace EINV_DATA add datafile 'D:\ExecSofe\OracleData\einv_data_02.dbf' size 1000M;
3、删除命名空间
drop tablespace EINV_DATA including contents and datafiles;
4、创建数据库用户并分配表空间
create user 用户名 identified by 密码 default tablespace 用户默认使用哪一个表空间;
create user yanglei identified by yang123 default tablespace EINV_DATA;
5、修改用户的权限
grant 角色1,角色2 to 用户名;
grant dba, connect to yanglei;
6、修改用户密码
alter user sys identified by password;
7、解锁用户
alter user system account unlock;
8、删除用户及全部对象
drop user username cascade;
Orcel客户端连接配置:
Net Manger 工具(实用配置网络)
Database Configuration Assistant 工具(配置数据库,包括新增、删除)
参考文章
impdp请教下大家都是怎么追加导入分区表的(http://www.itpub.net/forum.php?mod=viewthread&tid=1940160&extra=&highlight=&page=1)