Oracle导入数据
新建表空间
表空间名字可以先打开sql文件搜索tablespace查看表空间名是什么
#在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;
新建用户
用户名可以先打开sql文件搜索table查看用户名是什么
#新建用户并指定登录密码,同时指定表空间
create user test identified by 123456 default tablespace test_tablespace temporary tablespace test_template_tablespace;
高版本的oracle普通用户前面要价c##,如果不带c##可以执行如下命令
alter session set "_ORACLE_SCRIPT"=true;
#新建完用户后再给改回来
alter session set "_ORACLE_SCRIPT"=false;
给用户赋予权限
#给用户赋予权限
grant connect,resource,dba to test;
#给用户赋予sysdba权限,imp命令需要sysdba身份导入
也可以手动给用户指定表空间
# 可以将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
导入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;
如果导入中文报错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下面原因未知。
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

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
2019-11-29 编译型语言解释型语言
2019-11-29 软件设计师07-程序设计语言与语言处理程序基础
2019-11-29 著作权和专利权的区别