Fork me on GitHub

Oracle导入数据

新建表空间

表空间名字可以先打开sql文件搜索tablespace查看表空间名是什么
image

#在oracle服务器上以sysdba身份登录
sqlplus / as sysdba
#永久表空间创建,datafile可以指定表空间物理文件位置
#大小 500M,每次 5M 自动增大,最大不限制
create tablespace test_tablespace datafile 'testfile.dbf' size 100M autoextend on next 5M maxsize unlimited;
#临时表空间创建
create temporary tablespace test_template_tablespace tempfile 'test_tempfile.dbf' size 10m;

image

新建用户

用户名可以先打开sql文件搜索table查看用户名是什么
image

#新建用户并指定登录密码,同时指定表空间
create user test identified by 123456 default tablespace test_tablespace temporary tablespace test_template_tablespace;

image

高版本的oracle普通用户前面要价c##,如果不带c##可以执行如下命令

alter session set "_ORACLE_SCRIPT"=true;
#新建完用户后再给改回来
alter session set "_ORACLE_SCRIPT"=false;

给用户赋予权限

#给用户赋予权限
grant connect,resource,dba to test;

#给用户赋予sysdba权限,imp命令需要sysdba身份导入

image

也可以手动给用户指定表空间

# 可以将tablespace表空间分配给指定用户来管理
ALTER USER test QUOTA UNLIMITED ON test_tablespace;
# 指定默认表空间
ALTER USER test DEFAULT TABLESPACE test_tablespace;

登录

#登录测试
conn test/123456;

#查看当前登录用户sql: select user from dual;或者命令
show user
#查看当前用户的表空间
select username,default_tablespace from user_users;
#查看当前实例名
select name from v$database;

#退出登录
exit

image

导入sql

导入sql表结构文件

#解决中文报错ORA-01756: quoted string not properly terminate问题
set nls_lang=american_america.ZHS16GBK
#sqlplus登录账户
sqlplus test/123456
#导入sql文件,@后面跟着sql文件的路径,回车,导入数据;
@D:/test.sql;
#提交数据
commit;

image
如果导入中文报错ORA-01756: quoted string not properly terminated,参考https://www.cnblogs.com/aeolian/p/16935269.html

导入dmp数据文件

imp命令需要用户是sysdba权限。

imp "'test/123456  as sysdba'"  file=D:\test.dmp fromuser=username touser=username ignore=y;

不用touser参数用full=y时dmp数据导入到了sys下面原因未知。
image

imp命令要求用户有sysdba权限。

conn sys/orcl@orcl as sysdba
grant sysdba to test container=all;

因为dmp是sys导出的,所以导入时导入了sys用户下面,没有导入到test用户下面(即使表空间相同,表是属于各自的用户的,所以内容看到不一致)。

清除刚才导入的表和数据

https://www.cnblogs.com/aeolian/p/16935456.html

导出数据

PLSQL导出库结构

Tools(工具)–Export User Objects(导出用户对象)
导出用户对象可以导出当前用户拥有的所有对象,包括表、视图、触发器、同义词等等,对于表,只能导出表结构,不能导出数据,选中要导出的对象,设置好导出的路径和各个参数后,点击Export.
(这种方式还可以导出其他用户的对象,在user下拉框中选择要用户就可以,默认是系统当前登录用户)

PLSQL导出表数据

Tools–Export Tables,这种方式导出的文件,将表中数据一起导出(本身就带着创建表结构的sql语句)
选中要导出的表(可选多个),导出方式有三种:
Oracle Export,Sql Insert,pl/sql developer
第一种是导出为.dmp的文件格式,.dmp文件是二进制的,可以跨平台,还能包含权限,效率也很不错,用得最广。
第二种是导出为.sql文件的,可用文本编辑器查看,通用性比较好,但效率不如第一种,适合小数据量导入导出。要注意的是表中不能有大字段(blob,clob),如果有,会提示不能导出,可以用第一种和第三种方式导出。
第三种是导出为.pde格式的,.pde为Pl/sql developer自有的文件格式,只能用Pl/sql developer自己导入导出;不能用编辑器查看,效率未知。

EXP命令导出

Table模式导出

将指定表的数据导出,备份某个用户模式下指定的表

#exp导出指定的表
exp test/123456@127.0.0.1/orcl rows=y indexes=n compress=n buffer=50000000 file=exp_table.dmp log=exp_table.log tables=USER_INFO,ROLE_INFO

#imp导入指定的表
imp test/123456@127.0.0.1/orcl fromuser=test touser=test2 rows=y indexes=n commit=y buffer=50000000 ignore=n file=exp_table.dmp log=exp_table.log tables=USER_INFO,ROLE_INFO

Usere模式导出

将指定用户的所有对象及数据导出

#exp备份某个用户模式下的所有对象
exp test/123456@127.0.0.1/orcl owner=test rows=y indexes=n compress=n buffer=50000000 file=exp_table.dmp log=exp_table.log

#imp导入备份的全部内容,也可以指定tables导入指定的表
imp test/123456@127.0.0.1/orcl fromuser=test touser=test2 rows=y indexes=n commit=y buffer=50000000 ignore=n file=exp_table.dmp log=exp_table.log

Full模式导出

将数据库中的所有对象导出

#备份完整的数据库
exp test/123456@127.0.0.1/orcl rows=y indexes=n compress=n buffer=50000000 full=y file=exp_table.dmp log=exp_table.log

#导入完整数据库
imp test/123456@127.0.0.1/orcl rows=y indexes=n commit=y buffer=50000000 ignore=y full=y file=exp_table.dmp log=exp_table.log

tables = (tbl1, tbl2) 导出指定的表
owner = (user1, user2) 导出指定的用户,owner和full参数只能存在一个
full = y 全库导出

增量导出

完全增量导出

完全增量导出(Complete Export) 把整个数据库文件导出备份;

exp system/密码@数据库名 inctype=complete file=\backup\yyyymmdd_complete.dmp

增量型增量导出

增量型增量导出(Incremental Export)只会备份上一次备份后改变的结果;

exp system/密码@数据库名 inctype=incremental file=\backup\yyyymmdd_incremental.dmp

累积型增量导出

累积型增量导出(Cumulate Export),导出自上次完全增量导出后数据库变化的信息;

exp system/密码@数据库名 inctype=cumulative file=\backup\yyyymmdd_cumulative.dmp

备份节点

各节点备份类型

Mon:完全备份(A)
Tue:增量导出(B)
Wed:增量导出(C)
Thu:增量导出(D)
Fri:累计导出(E)
Sat:增量导出(F)
Sun:增量导出(G)
这样可以保证每周数据的完整性,以及恢复时的快捷和最大限度的数据损失。

恢复备份节点

恢复数据方式: 先恢复最近完全备份、再恢复最近累计增量导入、再恢复累计增量到当前时间点的多有曾辽导入

第一步:用命令CREATE DATABASE重新生成数据库结构;
第二步:创建一个足够大的附加回滚。

#最近完全备份导入A:
imp system/密码@数据库名 inctype=RESTORE FULL=Y FILE=A
#最近累计增量导入E:
imp system/密码@数据库名 inctype=RESTORE FULL=Y FILE=E
#增量导入F:
imp system/密码@数据库名 inctype=RESTORE FULL=Y FILE=F

命令优缺点

EXP/IMP优点

●简单易行;
●可靠性高;
●不影响数据库的正常运行。

EXP/IMP缺点

●只能提供到“某一时间点上”的恢复,不能最大可能的恢复数据;
●数据量大时,恢复较慢。

参考:
https://blog.csdn.net/Aria_Miazzy/article/details/96477912

posted @ 2022-11-29 15:00  秋夜雨巷  阅读(758)  评论(0编辑  收藏  举报