| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 达梦数据库使用shell脚本维护数据库方法概览 -> 正文阅读 |
|
[大数据]达梦数据库使用shell脚本维护数据库方法概览 |
????????通常我们要在LINUX系统,进行DM达梦数据库维护的时候,最常用的方法就是使用disql 连接数据库,查询相关的系统系统和表的信息。 比如: ./disql sysdba/SYSDBA12345@localhost:52380 SQL>SELECT * FROM V$DATABASE;? ?--查询信息 NAME?? ?CREATE_TIME?? ?ARCH_MODE?? ?LAST_CKPT_TIME?? ?STATUS$?? ?ROLE$?? ?MAX_SIZE?? ?TOTAL_SIZE?? ?DSC_NODES?? ?OPEN_COUNT?? ?STARTUP_COUNT?? ?LAST_STARTUP_TIME ------------------------------------------------------------------------------------------------------------------------- ????????但是,通常运维管理员在维护系统时最常用的方法,是在操作系统的命令行提示符下,执行命令或者脚本进行操作。 ? ? ? ? 比如正在操作系统命令行下修改某些配置文件内容,需要配置数据库的库名,实例名,端口等,需要连接数据库查看,然后还要再回到操作系统命令行。要么进入disql模式查询,要么再开一个窗口连接数据库后,查询后再另一个窗口继续操作,略显麻烦。 ? ? ? ? 把数据库操作脚本化,既符合操作使用习惯,又能为了完成特定的工作,把命令保存为常用脚本也能提高效率,比较方便。 ????????达梦数据库进行数据库系统维护时,可以采用命令行、和SHELL脚本的方式,通常可以有几种方式: (1)在操作系统命令行,类似执行一个命令的操作形式; dmdba> disql? sysdba/SYSDBA12345@localhost:52380<<! dmdba> disql? sysdba/SYSDBA12345@localhost:52380? -e "SELECT * FROM V\$DATABASE;" ????????通常这种命令行的方式,用来在查询的信息不多的情况下,比如管理员只想知道数据库的某个状态,配置等,不适合查询很多数据结果要保存的情况。 ????????注意:这个执行的SQL语句,其中有$符号的时候,会被shell 直接默认为一个变量,因此要加反斜杠进行转义,达梦数据库的很多系统视图是使用V$开头的,要查询系统视图的信息,执行这种命令行的方式一定要写成 V\$开头的形式,比如:V\$INSTANCE ,V\$DM_INI 等。 (2)在操作系统命令行,,调用SQL文件的形式; 使用这个命令可以执行sql脚本 dmdba> disql sysdba/SYSDBA12345@localhost:52380? \`test.sql? 结果如下: SQL> SELECT * FROM V$INSTANCE; 行号 ? ? NAME ? ? INSTANCE_NAME INSTANCE_NUMBER HOST_NAME SVR_VERSION ? ? ? ? ? ? ? ?DB_VERSION ? ? ? ? ?START_TIME ? ? ? ? ?STATUS$ MODE$ ?OGUID ? ? ? DSC_SEQNO ? DSC_ROLE 已用时间: 0.324(毫秒). 执行号:4000. 行号 ? ? NAME ? CREATE_TIME ? ? ? ? ARCH_MODE LAST_CKPT_TIME ? ? ?STATUS$ ? ? ROLE$ ? ? ? MAX_SIZE ? ? ? ? ? ? TOTAL_SIZE ? ? ? ? ? DSC_NODES ? OPEN_COUNT ?STARTUP_COUNT ? ? ? ?LAST_STARTUP_TIME ? 已用时间: 4.002(毫秒). 执行号:4001. SQL文件的内容示例: vi? test.sql? SELECT * FROM V$INSTANCE; 2、或者觉得disql 在命令行使用密码和端口等,显示输入密码不安全且输入太多,可以: disql? /NOLOG? \`test.sql? dmdba@kong:~> disql /NOLOG ?\`test.sql 服务器[localhost:5238]:处于普通打开状态 行号 ? ? NAME ? ? INSTANCE_NAME INSTANCE_NUMBER HOST_NAME SVR_VERSION ? ? ? ? ? ? ? ?DB_VERSION ? ? ? ? ?START_TIME ? ? ? ? ?STATUS$ MODE$ ?OGUID ? ? ? DSC_SEQNO ? DSC_ROLE 已用时间: 0.324(毫秒). 执行号:4000. 行号 ? ? NAME ? CREATE_TIME ? ? ? ? ARCH_MODE LAST_CKPT_TIME ? ? ?STATUS$ ? ? ROLE$ ? ? ? MAX_SIZE ? ? ? ? ? ? TOTAL_SIZE ? ? ? ? ? DSC_NODES ? OPEN_COUNT ?STARTUP_COUNT ? ? ? ?LAST_STARTUP_TIME ? 已用时间: 4.002(毫秒). 执行号:4001. SQL文件的内容示例: vi? test.sql? CONN sysdba/SYSDBA123@localhost:52380 SELECT * FROM V$INSTANCE; sysdba/SYSDBA12345@localhost:52380 但需注意 1、在命令行执行SQL文件,只能使用“`”,并且前面需要添加转义字符“\”。 2、在sql文件内容的结尾处必须添加:exit; ?否则这个脚本执行完sql语句,会停留在sql执行,加上exit 执行完成返回命令行。 3、进入disql交互命令行下,可以使用start调用脚本,但是不是在操作系统命令行下,使用方法较为简单,这里不做介绍; 3、执行SHELL脚本访问数据库; 使用shell脚本查询库信息是比较快捷和效率的方法,编写访问数据库的脚本和普通脚本一样,都是使用#!/bin/sh开头,脚本可以批量执行查询命令和操作系统命令,并保存查询结果和执行日志。 比如脚本的名称是: dm_testshell.sh 使用方法:sh?dm_testshell.sh>dm_testshell.sh.log 2>dm_testshell.err 脚本的内容如下: cat? ?dm_testshell.sh? 查看: !/bin/sh ############################################ export V_dmuser="sysdba" export V_dmpasswd="SYSDBA23" export V_dmip="127.0.0.1" export V_dmport="52380" disql ${V_dmuser}/${V_dmpasswd}@${V_dmip}:${V_dmport} <<InptOver SET LINESIZE 1000 SET PAGESIZE 1000 SET TIMING OFF select * from v\$instance; select * from v\$database; SELECT * FROM V\$OPTION; exit; InptOver ####以下可以使用操作系统命令 date pwd whoami df -h ############################################ 总结: 在命令行查询数据库信息的方法: 1、disql命令,直接查询; 2、disql命令,配合SQL文件执行查询; 3、shell脚本,执行查询; 方式: 方法1、适合只进行一次简单查询 disql? sysdba/SYSDBA12345@localhost:52380? -e "SELECT * FROM V\$DATABASE;" disql? sysdba/SYSDBA12345@localhost:52380<<! 方法2、利于批量输出DM数据库信息; disql? /NOLOG? \`test.sql? ?? 方法3、脚本利于配合操作系统命令,和DM数据库信息,综合实现复杂维护功能; sh?dm_testshell.sh >dm_testshell.sh.log 提醒: 如果要想在操作系统命令行下,执行将disql作为一个命令执行,那么就要配置PATH变量,以及LD_LIBRARY_PATH变量; 以下是dm软件安装在/dm 目录下的一个示例。配置完后,就可以像使用其他命令一样使用disql 命令了。 export DM_HOME="/dm8" export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DM_HOME/bin" export PATH=$PATH:$DM_HOME/bin 以上变量通常保存在?.bash_profile? 文件中。 参考 : disql 命令语法说明:
DISQL 用法:?? disql? ? ?[? ? [<option>]? ? ? [{<logon> | /NOLOG}]? ? ? ?[<start>]? ? ? ? ? ?] ---------------------------------------------------------------------------------------------------------------------- ?<option> 为: [-L]? [-S]? ? -L 只尝试登录一次 ---------------------------------------------------------------------------------------------------------------------- ?/NOLOG , 选项能在未登录DM服务器的情况下,启动disql ?<logon> 为: {<username> [/<password>]? [*<MPP_TYPE>]? [@<connect_identifier>]} |? ?{/[:<port>] AS <SYSDBA|SYSSSO|SYSAUDITOR|USERS|AUTO>}
{[<server>][:<port>][?{UDP|TCP|IPC|RDMA|UNIXSOCKET}][#<sslpath>@<sslpwd>]} -----------?<server>如果是IPv6的地址,需要用[]指明是IPv6地址,例如[fe80::1e6f:65ff:fed1:3724%6] ---------------------------------------------------------------------------------------------------------------------- ?<start> : `<filename>[<parameter> ...]? ?<direct cmd>? ?<direct sql>? ?,运行disql脚本 ?<direct sql>:-e "<SQL语句>[;<SQL语句>]" ?<direct cmd>:-c "<set 命令>" ---------------------------------------------------------------------------------------------------------------------- |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 20:12:06- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |