学习笔记:掌握 dexp 和 dimp 使用手册
1、概述
DM 数据库的备份还原包括两种类型:物理备份还原和逻辑备份还原。
物理备份还原是 对数据库的操作系统物理文件(如数据文件、控制文件和日志文件等)的备份还原;逻辑备份还原是 对数据库逻辑组件(如表、视图和存储过程等数据库对象)的备份还原。例如使用 dexp 和 dimp 进行的备份还原。
逻辑导出(dexp)和逻辑导入(dimp)是 DM 数据库的两个命令行工具,分别用来实 现对 DM 数据库的逻辑备份和逻辑还原。逻辑备份和逻辑还原都是在联机方式下完成,联机方式是指数据库服务器正常运行过程中进行的备份和还原。
逻辑导出和逻辑导入数据库对象分为四种级别:数据库级、用户级、模式级和表级。四种级别独立互斥,不能同时存在。四种级别所提供的功能:
数据库级(FULL):导出或导入整个数据库中的所有对象。
用户级(OWNER):导出或导入一个或多个用户所拥有的所有对象。
模式级(SCHEMAS):导出或导入一个或多个模式下的所有对象。
表级(TABLES):导出或导入一个或多个指定的表或表分区。
2、dexp 逻辑导出
作用:dexp 工具可以对本地或者远程数据库进行数据库级、用户级、模式级和表级的逻辑备 份。备份的内容非常灵活,可以选择是否备份索引、数据行和权限,是否忽略各种约束(外键约束、非空约束、唯一约束等),在备份前还可以选择生成日志文件,记录备份的过程以供 查看。(dexp 工具名称有两种写法 dexp 和 dexpdp。区别在于, dexp 导出的文件必须存放在客户端,dexpdp 导出的文件必须存放在服务器端。)
使用
dexp 工具需要从命令行启动。在 cmd 命令行工具中找到 dexp 所在安装目录 /dmdbms/bin,输入 dexp 和参数后回车。
语法:dexp PARAMETER= <value> { PARAMETER= <value> }
PARAMETER:dexp 参数。多个参数之间排列顺序无影响,参数之间使用空格间隔。
例:将用户名和密码均为 SYSDBA,IP 地址为 192.168.0.111,端口号为 8888 的数 据库采用FULL方式完全导出。/user/data为数字证书路径。导出文件名为db_str.dmp, 导出的日志文件名为 db_str.log,导出文件的路径为/mnt/dexp/data。
./dexp USERID=SYSDBA/SYSDBA@192.168.0.111:8888#/user/data FILE=db_str.dmp DIRECTORY=/mnt/dexp/data LOG=db_str.log FULL=Y
常用参数:
USERID: 用于指定数据库的连接信息。必选参数。
FILE :FILE 用于明确指定导出的文件(可以包含路径),可以包含多个文件,用逗号分隔。可选参数。
LOG:LOG 用于明确指定导出过程产生的日志文件名称(可以包含路径),可以包含多个文件, 用逗号分隔。可选参数。
DIRECTORY:DIRECTORY 用于指定导出文件及日志文件生成的路径。可选参数,缺省为导出到 dexp 所在路径。
导出方式的级别:针对数据库对象,有 FULL、OWNER、SCHEMAS、TABLES 四种导出方式可供选择。
3、dimp 逻辑导入
dimp 逻辑导入工具利用 dexp 工具生成的备份文件对本地或远程的数据库进行联机逻 辑还原。dimp 导入是 dexp 导出的相反过程。还原的方式可以灵活选择,如是否忽略对象 存在而导致的创建错误、是否导入约束、是否导入索引、导入时是否需要编译、是否生成日 志等。 dimp 工具名称有两种写法 dimp 和 dimpdp。区别在于, dimp 导入的文件必须存放在客户端,dimpdp 导入的文件必须存放在服务器端。
例:将逻辑备份采用 FULL 方式完全导入到用户名和密码为 SYSDBA,IP 地址为 192.168.0.248,端口号为 8888 的数据库。导入文件名为 db_str.dmp,导入的日志文 件名为 db_str.log,路径为/mnt/data/dexp。 ./dimp USERID=SYSDBA/SYSDBA@192.168.0.248:8888 FILE=db_str.dmp DIRECTORY=/mnt/data/dexp LOG=db_str.log FULL=Y
其余同dexp类似。
DM8_DIsql 使用手册
1、概述
DIsql 是 DM 数据库的一个命令行客户端工具,DM 数据库自带的,用来与 DM 数据库服务器进行交互。
2、DIsql入门
在 DIsql 中 SQL 语句应以分号“;”结束。对于执行语句 块,创建触发器、存储过程、函数、包以及模式等时需要用“/”结束。
3、登录
disql[ [<option>] [<logon> | /NOLOG] [<start>] ]
<option>::=-S|-L
<logon>::=<username>/<password>@<server>?{UDP|TCP}
<start>::=<运行脚本>|<start 运行脚本>|<直接执行语句>|<直接执行 SET 命令>
<运行脚本>::=<file_path> [<PARAMETER_VALUE>{ <PARAMETER_VALUE>}]
<start 运行脚本>::=START <file_path> [<PARAMETER_VALUE>{ <PARAMETER_VALUE>}]
<直接执行语句>::= -E “<SQL 语句>{;<SQL 语句>}”
(文中语法符号规定:<> 内的内容是必选项; [] 内的内容是可选项;{} 内的内容可以出现一次或多次; | 为或者; ::= 为定义符。后文语法用法与此相同。)
password中特殊字符的书写规范:
- DIsql 的要求使用双引号对双引号内的双引号转义。
- WINDOWS 命令行,使用双引号或者反斜杠对双引号内的双引号转义。
- LINUX 命令行,使用反斜杠对双引号内的双引号转义。
4、切换登录
有两种实现方式:一是 使用 LOGIN 命令;二是使用 CONN 命令。登录到远程数据库,必须在服务名处使用 IP 地址或网络服务名。
LOGIN /LOGOUT。
CONN[ECT] /DISCONN[ECT](使用 CONN[ECT] 命令建立新会话时,会自动断开先前会话 。)
CONN[ECT] <logon>
<logon>::={<username>/<password>[@<connect_identifier>]}|{/ AS <SYSDBA|SYSSSO|SYSAUDITOR|AUTO>}
<connect_identifier>::=[<server>]|{<host>[:<port>]} |<unixsocket_file>
<password>:密码。如果密码中有特殊字符,需要特别处理。
5、使用DIsql
只需要输入一条SQL语句,回车即可。DIsql将SQL语句发送给DM数据库服务器并显示服务器返回结果。
6、退出DIsql
使用EXIT/QUIT命令
7、DIsql常用命令
HELP:DIsql 帮助命令,可以帮助用户查看其他命令的具体用法。
7.1、HELP|? [topic]:topic:命令名称或者命令名称的首字母,查询某一命令用法或者某一字母开头的所 有命令用法。
7.2、SPOOL:将查询结果输出到指定文件。
SPOOL { | OFF }:
<file>::= <file_path> [CRE[ATE]|REP[LACE]|APP[END]]
<file_path>:指定文件的绝对路径
CRE[ATE]:创建指定的文件,若指定的文件已存在,则报错,默认方式
REP[LACE]:创建指定的文件,若指定的文件已存在,则替换它
APP[END]]:将输出内容追加到指定文件的末尾
OFF:关闭 SPOOL 输出
7.3、HOST:切换到操作系统命令 ,使用 HOST 命令可以不用退出 DIsql 就能执行操作系统命令。
HOST[<command>]
<command>:操作系统命令。
7.4、DESCRIBE:获取对象结构信息,具体指获取表或视图、存储过程、函数、包、记录、类的结构描述。
DESC[RIBE] <table>|<view>|<proc>|<fun>|<pkg>|<record>|<class> ;
desc是用于查询出结果时对结果进行排序,是降序排序;
设置describe的显示方式中的depth、linenum、indent可显示列的结构信息。linenum 为 ON 时,显示行号 ID、PID 信息;反之,行号 ID、PID 信息不显示;indent为 ON 时,name 的显示方式发生了缩进;反之,不发生缩进。
table/view:表或者视图名,可以查看其列名、列数据类型、列表是否可以取空值。
proc/fun/class:获取的内容为:1、存储函数/过程名、函数/过程类型,函数返回值类型;2、参数名、参数数据类型、参数输入输出属性、参数缺省值。
pkg:获取内容为:1、包内存储函数/过程名,函数/过程类型,函数返回值类型;2、包内参数名,参数数据类型、参数输入输出属性、参数缺省值。
record:获取的内容为:参数名、参数数据类型,参数是否可以取空值。
7.5、定义本地变量 define 和 column:
define:define DEF[INE] [<VARIABLE=text>|< VARIABLE >]
定义一个本地变量的替代变量,并重新赋值;或者输出该变量的值和类型。
def varlable = text ;申明一个变量,如果该变量存在则重新赋值,否则生成一个新的变量,并进行赋值。
DEF[INE] VARLABLE ;若该变量存在,则输出该变量的值和类型,否则报错。
DEF[INE] :输出DIsql中所有变量的值和类型。
当使用该命令定义变量时,如果变量值包含空格或区分大小写,则用引号引注。另外,使用“DEFINE 变量名”可以检查变量是否已经定义。DEFINE 定义的变量会保存在环境 DIsql 环境中,可以在 SQL 语句中使用。默认的变量前缀是&。
关闭变量替换:set define off
打开变量替换:set define on
column:定义一个本地列或者表达式。
用法:COL[UMN] [<column | expr> [<option>]]
COL[UMN]:列举出所有的 COLUMN 变量信息。
COL[UMN] column | expr:列举出某个 column 或 expr,如果存在,则输出信息,否则报错。
COL[UMN] column | expr option:option 目前仅支持 NEW_VALUE,表示该column|expr的 值,同时作为变量存在。但如果该变量未赋值,通过 DEFINE 查询时,不会显示该变量。
COL[UMN] column <OFF|ON(默认值)>
将变量 VARIABLE 与列名 column 之间的关联,默认值为 ON,表示已关联。
7.6、EXPLAIN:用EXPLAIN命令来查看查询语句的执行计划。
用法:EXPLAIN <sql_clause>
7.7、WHENEVER:用 WHENEVER 命令可以设置异常处理方式,继续执行或退出 DIsql。
WHENEVER SQLERROR
CONTINUE [ COMMIT | ROLLBACK | NONE ] |
EXIT [ SUCCESS | FAILURE | WARNING | n | <variable> | : <bindvariable> ]
[ COMMIT | ROLLBACK ]
7.8、MORE:当结果过多,屏幕只能显示一个时,用户可以使用MORE命令切换到下一个结果集。
用法:MORE | MR
7.9、LIST:显示最近执行的SQL语句或者PL/SQL块信息。不显示DISQL命令。
用法:L[IST] [n | n m | n * | n LAST | * | * n | * LAST | LAST] 或者;
n,m:数值SQL行号
*:当前行号
LAST:最后一行
7.10:@,当插入语句中包含大对象数据文件时使用@。
用法:@'path'
7.11、CLEAR:清理指定操作本地缓存。
COL[UMNS]:清理所有的 COLUMN 变量信息。
SQL:清理本地 SQL 缓存信息。
SCR[EEN]:清理 DIsql 终端屏幕信息。
BUFF[ER]:同 SQL 功能一样,清理本地 SQL 缓存信息。
8、使用脚本
用户不必在每次使用数据库的时候都编写常用的 SQL 语句和 PL/SQL 程序块,而是可以将它们保存到称为脚本的文件中。
1、编写脚本
2、使用start命令运行脚本:
<start>::=<`运行脚本>|<start 运行脚本>|<直接执行语句>
<运行脚本>::=<file_path> [<PARAMETER_VALUE>{ <PARAMETER_VALUE>}]
<start 运行脚本>::=START <file_path> [<PARAMETER_VALUE> {<PARAMETER_VALUE>}]
<直接执行语句>::= -E “<SQL 语句>{;<SQL 语句>}”
脚本可以在启动 DIsql 时就运行,或者在进入 DIsql 之后再运行。如果在启动时运行,只能使用<运行脚本>;如果在进入DISQL之后,使用<运行脚本>或者<start 运行脚本>来运行脚本都都可以。在linux环境下运行脚本的话,特殊符号记得用反斜杠\或者‘进行转义。
3、DIsql 中使用 EDIT 命令来编辑指定的脚本文件。用法:EDIT [file_name]
达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台
推荐阅读
-
Linux设备驱动开发详解——学习笔记-设备驱动来联系。在没有操作系统的情况下,工程师可以根据硬件设备的特点自行定义接口。而在有操作系统的情况下,驱动的架构则由相应的操作系统来定义。驱动存在的意义就是给上层应用提供便利。 驱动针对的对象是存储器和外设。Linux将存储器和外设分为 3 个基础大类:字符设备、块设备、网络设备。 字符设备和块设备都被 Linux 映射到文件系统的文件和目录中,通过文件系统的接口(open、read、write、close等)来访问。其中,块设备可以通过类似 dd 命令对应的原始块设备来访问,也可以通过建立文件系统,以文件路径来访问。 学习 Linux 设备驱动,要求非常好的硬件基础、非常好的软件基础、一定的 Linux 内核基础和非常好的多任务并发控制和同步的基础。学习 Linux 设备驱动要将学习的函数、数据结构等放到整体架构中去理解,才能理清驱动中各组成部分之间的关系。 驱动设计的硬件基础 驱动工程师需要掌握 处理器、存储器、接口和总线、可编程门电路、原理图、硬件时序、芯片手册、仪器使用 等方面的内容。 处理器
-
Linux下DM达梦数据库实操演示:dmp文件的导入和导出技巧解析,全面掌握dexp和dimp命令的使用步骤
-
【DM8】学习使用dimp和dexp命令-导出逻辑使用Dexp
-
学习笔记:掌握 dexp 和 dimp 使用手册