欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

使用dexp、dimp和disql的指南

最编程 2024-01-09 19:00:31
...

       DM数据库的备份还原包括物理备份还原和逻辑备份还原这两种类型,物理备份还原是对数据库的操作系统物理文件(如数据文件、控制文件和日志文件等)的备份还原;逻辑备份还原是对数据库逻辑组件(如表、视图和存储过程等数据库对象)的备份还原。而dexp和dimp就是逻辑备份还原。

       逻辑导出(dexp)和逻辑导入(dimp)是DM数据库的两个命令行工具,分别用来实现对DM数据库的逻辑备份和逻辑还原,且都在联机方式下完成(即数据库服务器正常运行过程中进行的备份和还原)。

       dexp和dimp的数据库对象分为四种级别:数据库级、用户级、模式级和表级。四种级别独立互斥,不能同时存在。

  • 数据库级(FULL):导出或导入整个数据库中的所有对象。
  • 用户级(OWNER):导出或导入一个或多个用户所拥有的所有对象。
  • 模式级(SCHEMAS):导出或导入一个或多个模式下的所有对象。
  • 表级(TABLES):导出或导入一个或多个指定的表或表分区。

一、dexp

       dexp备份的内容可以选择是否备份索引、数据行和权限,是否忽略各种约束(外键约束、非空约束、唯一约束等),在备份前还可以选择生成日志文件,记录备份的过程以供查看。dexp的工具有两种dexp和dexpdp,两者的语法完全相同,但dexp导出的文件必须存放在客户端,dexpdp导出的文件必须存放在服务器端。

       dexp工具需要从命令行启动,语法如下:

       针对数据库对象,又FULL、OWNER、SCHEMAS、TABLES四种导出方式可供选择。一次导出只能指定一种方式。可选参数,缺省为SCHEMAS。它们的语法如下:

  1. FULL:FULL=Y
  2. OWNER:OWNER=<用户名>{,<用户名>}
  3. SCHEMAS:SCHEMAS=<模式名>{,<模式名>}
  4. TABLES:TABLES=<表名>{,<表名>}

       一般情况下,OWNER与SCHEMAS导入导出是相同的。但是用户可以包含多个模式,在这种情况下SCHEMAS的导入导出是OWNER导入导出的一个子集。

      注意:对于输入的用户名、模式名和表名,工具都会自动转换为大写。所以对于小写的用户名、模式名和表名,为了不转换为大写需要转义。如果用户名、模式名和表名中含有特殊字符(双引号、单引号、空格、逗号等),则也需要转义。

二、dimp

       dimp工具是利用dexp工具生成的备份文件对本地或远程的数据库进行联机逻辑还原,它是与dexp相反的过程。还原方式可以灵活选择,如是否忽略对象存在而导致的创建错误、是否导入约束、是否导入索引、导入时是否需要编译、是否生成日志等。与dexp一样,dimp工具也有两种dimp和dimpdp。

       dimp工具需要从命令行启动,语法如下:

       数据库对象的四种导入方式的语法与上述dexp介绍的相同,这里不再赘述。

三、disql

      disql是DM数据库的一个命令行客户端工具,用来与DM数据库服务器进行交互。它可以识别用户输入,将用户输入的SQL语句打包发送给DM数据库服务器执行,并接受服务器的执行结果,并按用户的要求将执行结果展示给用户。为了更好地与用户交互和展示执行结果,用户也可以在disql中执行disql命令,这些命令由disql工具自身进行处理,不被发送给数据库服务器。

       SQL语句在disql中执行完后都被保存在一个特定的内存区域中,用户可以通过上下键查找到这些保存在内存中的SQL语句(某些操作系统可能不支持此操作),并可以进行修改然后再次执行。

1.disql的登录

       disql的登录方式如下:

       说明:文中的<>内的内容是必选项;{}内的内容可以出现一次或多次;|为或者;::=为定义符。

[-L] [-S]:-L表示只尝试登录一次;-S表示设置disql界面为隐藏模式,隐藏<SQL>标识符。

<option>:为扩展选项,用法为<exetend_option>=<value>。所有value值不能包含空格,不能包含特殊的符号,如引号等。书写扩展选项时需要用引号#”{}”进行封装。

/NOLOG:表示在未登录DM服务器的情况下启动disql。此时可以进行disql的显示设置和本地变量操作。如果没有/NOLOG选项必须登录服务器,不带参数的时候提示输入用户名和密码,登录三次失败后退出disql。

<’运行脚本>:’符号运行sql脚本文件。如果在linux环境下使用<’运行脚本>外需要加上单引号。

<start 运行脚本>:使用START命令运行sql脚本文件。

<start>命令中<’运行脚本>既可以在disql启动时使用,也可以在进入disql界面之后使用,而<start 运行脚本>只能在进入disql界面之后才能使用。

2.password中特殊字符的书写规范

       Windows系统

  •     disql的关键字符,disql的要求对连接串的特殊字符需要使用双引号括起来,操作系统的要求需要再在最外加双引号和转义。例如:用户名为user01,密码为aaaa/aaaa,那么连接串要写成:disql user01/"""aaaa/aaaa"""。
  •     空格,需要使用双引号括起来作为一个整体。例如:用户名为user01,密码为aaaa aaaa,那么连接串要写成:disql user01/"aaaa aaaa"。
  •     双引号,disql要求对双引号需要使用双引号括起来,同时需要转义;操作系统要求再对双引号转义和最外层加双引号。例如:用户名为user01,密码为aaaa"aaaa,那么连接串要写成:disql user01/"""aaaa"""aaaa""""。

      Linux系统

       在Linux操作系统当中bash的引号设计为:在单引号中,所有的特殊字符都失去其特殊含义;如果密码中没有单引号的,只要外面加单引号就可以解决了;如果密码只有单引号,那么可以将单引号用双引号括起来;如果既有单引号又有特殊字符,那么在特殊字符之前全部加\转义就好了。

       那么加上disql对关键字和双引号的要求就有:

  •        disql的关键字符,disql的要求对连接串的特殊字符需要使用双引号括起来。例如:用户名为user01,密码为aaaa/aaaa,那么连接串要写成:./disql user01/'"aaaa/aaaa"'。
  •        双引号,disql要求对双引号需要使用双引号括起来,同时双引号需要转义。例如:用户名为user01,密码为aaa"\aaaa,那么连接串要写成:

./disql user01/'"aaa""\aaaa"'。

  •        单引号,根据操作系统的要求,只能将单引号放入双引号中。例如:用户名为 user01,密码为aaaa'aaaa,那么连接串要写成:./disql user01/"aaaa'aaaa"。
  •        单引号+操作系统下的特殊字符,根据操作系统的要求,因为单引号只能放在双引号内,同时双引号中还有一些特殊字符不能被识别需要加反斜杠转义。例如: 用户名为user01,密码为 aaa'$aaaa,使用双引号括起来,同时对$加反斜杠转义。那么连接串要写成:./disql user01/"aaa'\$aaaa"。
  •        单引号+双引号,根据操作系统的要求,单引号需要放在双引号中,在双引号中表 示双引号则使用反斜杠转义双引号。例如: 用户名为 user01,密码为 aaa"'aaaa,根据DIsql 的要求双引号作为特殊字符,需要使用双引号在括起来,同时使用双引号对双引号转义"aaa""'aaaa";同时考虑操作系统的要求,因为含有单引号,只能将整个密码放入双 引号中,同时对双引号使用反斜杠转义,那么连接串要写成:./disql user01/"\"aaa\"\"'aaaa\""。

       总之,disql要求使用双引号对双引号内的双引号转义,Windows使用双引号或者反斜杠对双引号内的双引号转义,Linux使用反斜杠对双引号内的双引号转义。

达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台 (dameng.com) 

推荐阅读