备份和还原(导入)数据库目录

文章目录

  • 备份和还原(导入)数据库目录
  • 详细说明
  • 理解
  • 实操——具体步骤
  • 1、cmd连接数据库并新建用户
  • 2、导入数据库
  • 3、导出数据库
  • 完整参考代码:
  • 导入
  • 导出

详细说明

理解

oracle和其它数据库有一些不一样,权限这块非常严格

我们可以这么理解,首先我们要有一个用户,这个用户拥有哪些数据库

Oracle_003_导入(还原)数据库、备份、还原数据库_表空间


比如下图,root是管理员,只有这个管理员下才有这些数据库

Oracle_003_导入(还原)数据库、备份、还原数据库_用户名_02


所以我们习惯性的操作就是,用户名密码以及数据库三者都一样

并不是说要强制这样操作,这样只是为了简洁和方便自己记忆

实操——具体步骤

1、cmd连接数据库并新建用户

根据上面的理解,所以我们首先要做的是新建用户

Oracle_003_导入(还原)数据库、备份、还原数据库_数据库_03


Oracle_003_导入(还原)数据库、备份、还原数据库_数据库_04


Oracle_003_导入(还原)数据库、备份、还原数据库_数据库_05


Oracle_003_导入(还原)数据库、备份、还原数据库_oracle_06


Oracle_003_导入(还原)数据库、备份、还原数据库_oracle_07

Oracle_003_导入(还原)数据库、备份、还原数据库_用户名_08

Oracle_003_导入(还原)数据库、备份、还原数据库_数据库_09


注意所有的操作都是在登录了管理员才执行的,比如我们常用的就是system这个管理员账号

先登录数据库

Oracle_003_导入(还原)数据库、备份、还原数据库_oracle_10


注意账号密码不要输错

Oracle_003_导入(还原)数据库、备份、还原数据库_用户名_11


Oracle_003_导入(还原)数据库、备份、还原数据库_数据库_12


然后就可以导入了

2、导入数据库

Oracle_003_导入(还原)数据库、备份、还原数据库_oracle_13

3、导出数据库

第一种方式是利用navicate或者其它客户端连接工具

Oracle_003_导入(还原)数据库、备份、还原数据库_数据库_14


Oracle_003_导入(还原)数据库、备份、还原数据库_用户名_15

第二种方式是通过万能的cmd,也是一般我们在oracle里面用的一种方式

Oracle_003_导入(还原)数据库、备份、还原数据库_oracle_16

参考文档:建用户并授权

完整参考代码:

//建用户并授权查询用户连接情况:SELECT SID,SERIAL# FROM V$SESSION WHERE USERNAME=‘GFCDPCS’;
删除连接:ALTER SYSTEM KILL SESSION ‘223,83’;
删除用户和数据sql命令:drop user username(用户名) cascade;
sqlplus system/321 as sysdba //连接数据库 在cmd里面输入这段代码
 sqlplus system/system as sysdbaGRANT READ,WRITE ON DIRECTORY DATA_PUMP_DIR TO GFCCS01; //给LIANSU用户赋导入的权利
 GRANT READ,WRITE ON DIRECTORY DATA_PUMP_DIR TO HONGFA_CS;
 GRANT READ,WRITE ON DIRECTORY DATA_PUMP_DIR TO HONGFACS;

导入

//imp和impdp 就是导入,导入要看导出是什么方式如果导出是exp,导入就用imp 如果导出是expdp 那么导入也要带上dp即impdp
远程:
 imp user/password@IP:1521/ORCL full=y file=F:\xxx.dmp
 本地:
 imp user/password@orcl full=y file=F:\xxxdmp ignore=yimp GUOYAO/GFCCS@orcl file=“D:\Oracle\admin\orcl\dpdump\backup20201010092910.dmp” full = y
 //用户名/密码@服务名=============导入文件的路径和名字imp GFCCS01/GFCCS01@orcl file=D:\Oracle\admin\orcl\dpdump\aaa.dmp fromuser=gfcw touser=GFCCS01 ignore=y
impdp GFCCS01/GFCCS01@orcl directory=DATA_PUMP_DIR dumpfile=EXPDAT.DMP REMAP_SCHEMA=gfcw:GFCCS01
impdp HONGFA_CS/HONGFA_CS@orcl directory=DATA_PUMP_DIR dumpfile=HONGFACS.DMP REMAP_SCHEMA=gfcw:HONGFA_CS
 impdp HONGFACS/HONGFACS@orcl directory=DATA_PUMP_DIR dumpfile=HONGFACS.DMP REMAP_SCHEMA=gfcw:HONGFACS

导出

远程:
 exp user/password@IP:1521/orcl file=d:/zyoa0809.dmp full=y //不用加full=y,加上的意思是连同系统表一起导出本地:
 exp user/password@orcl file=d:/zyoa0809.dmp full=y //不用加full=y,加上的意思是连同系统表一起导出exp HONGFACS/HONGFACS@orcl file=D:\Oracle\admin\orcl\dpdump\HONGFACS.dmp full=y; //不用加full=y
expdp GFCCS/GFCCS@ORCL dumpfile=GFCCS.dmp DIRECTORY=DATA_PUMP_DIR schemas=GFCCS
expdp HONGFACS/HONGFACS@ORCL dumpfile=HONGFACS.dmp DIRECTORY=DATA_PUMP_DIR schemas=HONGFACS (成功案例)
3.用户名不一致情况
 imp user/password@IP:1521/ORCL full=y file=F:\xxx.dmp fromuser=xxx touser=yyy//创建序列
 CREATE SEQUENCE SEQ_DEMO
 INCREMENT BY 1
 START WITH 1
 NOMAXvalue
 NOCYCLE
 NOCACHE;//恢复delete的数据
 insert into 表名(
 select * from 表名
 – 需要恢复到哪个时间戳
 as of timestamp to_timestamp(‘2020.08.04 10:08:11’,‘yyyy.mm.dd hh24:mi:ss’)
 – 删除时的条件
 where id=55
 )– 查看表空间大小
 select b.file_id  文件ID,
   b.tablespace_name  表空间,
   b.file_name     物理文件名,
   b.bytes       总字节数,
   (b.bytes-sum(nvl(a.bytes,0)))   已使用,
   sum(nvl(a.bytes,0))        剩余,
   sum(nvl(a.bytes,0))/(b.bytes)*100 剩余百分比
   from dba_free_space a,dba_data_files b
   where a.file_id=b.file_id
   group by b.tablespace_name,b.file_name,b.file_id,b.bytes
   order by b.tablespace_name创建表空间:create tablespace 表空间名 datafile ‘路径+名称’ size 大小;
 create tablespace DPTEST datafile ‘D:\ORACLE\ORADATA\ORCL\DPTEST.DBF’ size 2000M;扩展表空间:alter database datafile ‘路径+名称’ resize 大小
 alter database datafile ‘D:\ORACLE\ORADATA\ORCL\DPTEST.DBF’ resize 5096M;