创建数据表空间
create tablespace 表空间名
logging
datafile '文件名' size 100M autoextend on next 10M maxsize UNLIMITED extent management local;
举例:
create tablespace tps_data_evidence
logging
datafile 'TPS_DATA_EVIDENCE.dbf' size 100M autoextend on next 10M maxsize UNLIMITED extent management local;
创建临时表空间
create temporary tablespace 表空间名
tempfile '文件名'
size 100M
autoextend on
next 50m maxsize 2048m
extent management local;
举例:
create temporary tablespace tps_temp_evidence
tempfile 'TPS_TEMP_EVIDENCE.dbf'
size 100M
autoextend on
next 50m maxsize 2048m
extent management local;
创建用户
create user 用户名 identified by 密码
default tablespace 表空间
temporary tablespace 临时表空间;
举例:
create user evidence identified by iflytek
default tablespace tps_data_evidence
temporary tablespace tps_temp_evidence;
普通权限
grant connect,resource,unlimited tablespace to 用户名;
对用户赋予权限 dba权限 ,不建议
grant dba to 用户名;
客户端导出导入命令之前,需查看将导出的数据库中是否存在空表:
select 'alter table '||t.TABLE_NAME||' allocate extent;' from user_tables t where t.NUM_ROWS=0;
然后之后执行以上命令的所有查询记录;
客户端导出命令:(exp)
exp 数据库用户名/密码@数据库访问IP及端口 file=导出的dmp文件存放路径 log=日志文件存放路径 INDEXES=n STATISTICS=none
如:exp evidence/iflytek@10.11.118.10:1521/orcl file=F:\db_bak\evidence.dmp log=F:\db_bak\evidence_exp.log INDEXES=n STATISTICS=none
客户端对应的导入命令:(imp)
imp 需要导入数据的数据库用户名/密码@数据库访问IP及端口 file=需导入的dmp文件存放路径 log=日志文件存放路径 fromuser=原来导出的用户名 touser=需要导入的用户名 ignore=yes
如:imp evidence_wdx/iflytek@10.11.118.10:1521/orcl file=F:\db_bak\evidence.dmp log=F:\db_bak\evidence_imp.log fromuser=evidence touser=evidence_wdx ignore=yes
服务端导出命令:(expdp)
expdp 需要导出数据的数据库用户名/密码@数据库访问IP及端口 schemas=scott dumpfile=expdp.dmp directory=dump_dir;
如:expdp evidence/iflytek@10.11.118.10:1521/orcl schemas=scott dumpfile=expdp.dmp directory=dump_dir;
(PS:导出的dmp文件自动保存到Oracle的安装路径:/opt/oracle/admin/orcl/dpdump/)
服务端导入命令:
impdp 需要导入数据的数据库用户名/密码@数据库访问IP及端口 directory=DATA_PUMP_DIR dumpfile=文件名称 REMAP_TABLESPACE=现有表空间:原有表空间 logfile=日志文件;
如:impdp evidence_wdx/iflytek@10.11.118.10:1521/orcl directory=DATA_PUMP_DIR dumpfile=expdp.dmp REMAP_TABLESPACE=USERS:USERS logfile=20170429flws.log
;
实际举例
ps:还原一套数据库的具体步骤(还原数据库的名称为:evidence_yangjiao)
1、先创建一个用户名为evidence_yangjiao 的数据库
create user evidence_yangjiao identified by iflytek
default tablespace USERS
2、给该用户赋相关权限
grant dba to evidence_yangjiao;
3、备份一套现有的测试库的dmp文件
打开window系统的控制台,在控制台输入一下命令:
exp evidence21/iflytek@10.11.118.10:1521/orcl file=F:\db_bak\evidence.dmp log=F:\db_bak\evidence_exp.log INDEXES=n STATISTICS=none
4、将步骤3导出的dmp文件导出到evidence_yangjiao的数据库中
imp evidence_yangjiao/iflytek@10.11.118.10:1521/orcl file=F:\db_bak\evidence.dmp log=F:\db_bak\evidence_imp.log fromuser=evidence21 touser=evidence_yangjiao ignore=yes
至此,一套完整的数据库还原成功
还原后检查索引是否全(与原库对比)
在数据库还原过程中最容易丢失的数据就是索引,所以我们得校验一下索引数据是否完整。
select count(*) from user_indexes t;