dexp和dimp使用
逻辑导出和逻辑导入数据库对象分为四种级别:数据库级、用户级、模式级和表级。四 种级别独立互斥,不能同时存在。四种级别所提供的功能:
数据库级(FULL):导出或导入整个数据库中的所有对象。
用户级(OWNER):导出或导入一个或多个用户所拥有的所有对象。
模式级(SCHEMAS):导出或导入一个或多个模式下的所有对象。
表级(TABLES):导出或导入一个或多个指定的表或表分区
逻辑备份
逻辑备份是指利用 dexp 导出工具,将指定对象(库级、模式级、表级)的数据导出到
文件的备份方式。逻辑备份针对的是数据内容,并不关心这些数据物理存储在什么位置。
逻辑还原
逻辑还原是逻辑备份的逆过程,逻辑还原就是使用 dimp 工具,把 dexp 导出的备份数
据重新导入到目标数据库。
使用dexp
dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log FULL=Y
USERID 用于指定数据库的连接信息。必选参数。
FILE 用于明确指定导出的文件(可以包含路径),可以包含多个文件,用逗号分隔。
LOG 用于明确指定导出的日志文件名称(可以包含路径),可以包含多个文件,用逗号分 隔。
LOG 用于明确指定导出的日志文件名称(可以包含路径),可以包含多个文件,用逗号分 隔。
文件也可以在生成过程中自动扩展成多个。首先,文件名需要包含通配符%U,用于作为自动 扩充文件的文件名模板。%U 表示为 2 个字符宽度的数字,由系统自动生成,起始为 01。其 次,使用 FILESIZE 参数来指定文件的大小。
FUZZY_MATCH 用于指定 TABLES 选项是否支持模糊匹配。可选参数,缺省为 N。
FILE 和 LOG 中指定的路径,优先级高于 DIRECTORY 中指定的路径。 当 FILE 和 LOG 不指定路径时,才使用 DIRECTORY 指定的路径。 如果都没有指定路径,则使用系统当前路径
QUERY 用于指定过滤条件来对表数据进行导出
PARALLEL 用于指定导出的过程中所使用的线程数目。可选参数,缺省为单线程。如果 CPU 核心数为 N 的话,那一般来说 PARALLEL 为 N 或者 N+1 最合适。
TABLE_PARALLEL 用于指定导出每张表所使用的线程数。可选参数,缺省为单线程。 如果 CPU 核数为 N 的话,那一般来说 TABLE_PARALLEL 为 N 或者 N+1 最合适。在 MPP 模 式下会转换成单线程
针对数据库对象,有 FULL、OWNER、SCHEMAS、TABLES 四种导出方式可供选择。一 次导出只能指定一种方式。可选参数,缺省为 SCHEMAS。
TABLES 方式导出和导入一个或多个指定的表或表分区。导出所有数据行、约束、索引 等信息。
其实log和file写绝对路径时,DIRECTORY可以不写
准备工作
创建模式SYSDBA2属于SYSDBA2,创建角色 AAA,分别建立以下表
导出
1.FULL 导出
dexp USERID=SYSDBA/SYSDBA@127.0.0.1:5236 FILE=C:\Users\47390\Desktop\导出1\db_str.dmp LOG=C:\Users\47390\Desktop\导出1\db_str.log
dexp USERID=SYSDBA/SYSDBA@127.0.0.1:5236 FILE=C:\Users\47390\Desktop\导出1\db_str.dmp LOG=C:\Users\47390\Desktop\导出1\db_str.log FULL=Y
DIRECTORY=C:\Users\47390\Desktop\导出1
再次导出时会提示是否覆盖先前导出文件
2.OWNER导出
dexp USERID=SYSDBA/SYSDBA@127.0.0.1:5236 FILE=C:\Users\47390\Desktop\导出2\db_str.dmp LOG=C:\Users\47390\Desktop\导出2\db_str.log OWNER=SYSDBA
DIRECTORY=C:\Users\47390\Desktop\导出2
3.SCHEMAS导出
dexp USERID=SYSDBA/SYSDBA@127.0.0.1:5236 FILE=C:\Users\47390\Desktop\导出3\db_str.dmp
LOG=C:\Users\47390\Desktop\导出3\db_str.log
SCHEMAS=SYSDBA2 DIRECTORY=C:\Users\47390\Desktop\导出3
4.TABLES导出
dexp USERID=SYSDBA/SYSDBA@127.0.0.1:5236 FILE=C:\Users\47390\Desktop\导出4\db_str.dmp
LOG=C:\Users\47390\Desktop\导出4\db_str.log TABLES=AAA1 DIRECTORY=C:\Users\47390\Desktop\导出4
清空数据库表
1.Full导入
dimp USERID=SYSDBA/SYSDBA FILE=C:\Users\47390\Desktop\导出1\db_str.dmp LOG=C:\Users\47390\Desktop\导出1\db_str.log full=Y DIRECTORY=C:\Users\47390\Desktop\导出1
导入成功,删除的表重新创建
2.OWNER导入
dimp USERID=SYSDBA/SYSDBA@127.0.0.1:5236 FILE=C:\Users\47390\Desktop\导出2\db_str.dmp LOG=C:\Users\47390\Desktop\导出2\db_str.log
OWNER=SYSDBA DIRECTORY=C:\Users\47390\Desktop\导出2 DIRECTORY=C:\Users\47390\Desktop\导出2
属于SYSDBA的表创建
3.dimp USERID=SYSDBA/SYSDBA@127.0.0.1:5236 FILE=C:\Users\47390\Desktop\导出3\db_str.dmp
LOG=C:\Users\47390\Desktop\导出3\db_str.log
SCHEMAS=SYSDBA.SYSDBA2 DIRECTORY=C:\Users\47390\Desktop\导出3
这里报错是因为SCHEMAS不同
dimp USERID=SYSDBA/SYSDBA@127.0.0.1:5236 FILE=C:\Users\47390\Desktop\导出3\db_str.dmp
LOG=C:\Users\47390\Desktop\导出3\db_str.log
SCHEMAS=SYSDBA.SYSDBA2 DIRECTORY=C:\Users\47390\Desktop\导出3
应该直接写模式名
dimp USERID=SYSDBA/SYSDBA@127.0.0.1:5236 FILE=C:\Users\47390\Desktop\导出1\db_str.dmp
LOG=C:\Users\47390\Desktop\导出1\db_str.log TABLES=AAA.AAA1 DIRECTORY=C:\Users\47390\Desktop\导出1
不要选择覆盖,默认为SYSDBA模式下所以要加AAA
创建表成功
每次导入时会提示是否覆盖log,根据需求选择
Window图形化进行归档
先切换配置模式
配置归档文件地址
切换回归档打开状态
此处注意,处于配置模式并设置好归档配置后确认再修改为打开模式,因为如果直接配置后就打开归档配置语句没有生效
或者运行
ALTER DATABASE MOUNT;配置模式
ALTER DATABASE ADD ARCHIVELOG
‘归档日志地址’, TYPE = local, FILE_SIZE = 1024, SPACE_LIMIT = 2048’;
ALTER DATABASE ARCHIVELOG;开启归档日志
ALTER DATABASE OPEN;打开模式
添加备份
使用disql或者新建查询进行建表
create table hh(uid int,uname varchar(10));
insert into hh values(1,‘new’);
commit;
alter system switch logfile;
select file_lsn from v$rlog;
此时FILE_LSN号为29291 归档时要用到
insert into hh values(2,‘test’);
commit;
select file_lsn from v$rlog;
每次操作FILE_LSN号会改变
启动DM服务查看器关闭服务
达梦控制台工具和dmrman对库,归档,表空间还原需要关闭服务
启动DM控制台工具,备份还原,配置指定搜索目录,默认在实例bak目录,
获取备份
或者还原到具体时间
进行还原操作每次都需要更新DM_Magic
重新启动服务还原到了指定LSN
使用Linux 进行归档
进入dm8 tool目录
./manager启动图形化管理工具
或者
./disql SYSDBA/SYSDBA@127.0.0.1:5237
连接到数据库实例
执行以下操作
ALTER DATABASE MOUNT;配置模式
ALTER DATABASE ADD ARCHIVELOG
‘归档日志地址’, TYPE = local, FILE_SIZE = 1024, SPACE_LIMIT = 2048’;
ALTER DATABASE ARCHIVELOG;开启归档日志
ALTER DATABASE OPEN;打开模式
和使用图形化效果一样,图形化操作时必须先在配置模式下,修改归档或非归档模式,
最后转换为打开模式
backup database full to 全量备份名 backupset ‘全量备份地址’ parallel 并发线程数;
create table hh(uid int,uname varchar(10));
insert into hh values(1,‘new’);
commit;
创建表
alter system switch logfile;
select file_lsn from v
r
l
o
g
;
查
看
L
S
N
1
i
n
s
e
r
t
i
n
t
o
h
h
v
a
l
u
e
s
(
2
,
′
t
e
s
t
′
)
;
c
o
m
m
i
t
;
s
e
l
e
c
t
f
i
l
e
l
s
n
f
r
o
m
v
rlog; 查看LSN1 insert into hh values(2,'test'); commit; select file_lsn from v
rlog;查看LSN1insertintohhvalues(2,′test′);commit;selectfilelsnfromvrlog;
查看LSN2
Systemctl stop DmServiceDMSERVER
关闭服务
./dmrman ctlstmt="’dm.ini文件’
from backupset ‘’ 全量备份文件地址"
./dmrman ctlstmt="recover database ‘dm.ini文件’ With archivedir ‘归档文件地址’
UNTIL LSN 归档LSN1 "
UNTIL TIME ‘创建归档文件后的时间’
或者指定时间归档
./dmrman ctlstmt=“recover database ‘ini文件地址’ update db_magic”
每次都需要更新魔数
Systemctl start DmServiceDMSERVER
开启服务
select * from hh ; #此时表中只有一条记录“new”,没有“误操作”加入的“test”值。
使用disql查询
社区地址:https://eco.dameng.com