DM日常运维高频命令总结

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: DM日常运维高频命令总结

一、基础命令

查询数据库版本

  1. SQL>SELECT * FROM V$VERSION;

查看当前有多少用户

  1. SQL> SELECT USERNAME FROM DBA_USERS;

查看当前有多少表空间

  1. SELECT * FROM DBA_TABLESPACES;

查看各表空间的数据量

  1. set pagesize 500
  2. set linesize 500
  3. SELECT
  4.    TABLESPACE_NAME AS 表空间名,
  5.    ROUND(SUM(TOTAL_SIZE) / 1024.0 / 1024.0, 2) AS "总大小(MB)",
  6.    ROUND(SUM(USED_SIZE)/ 1024.0 / 1024.0, 2) AS "已使用大小(MB)",
  7.    CAST(ROUND(SUM(USED_SIZE) * 1.0 / SUM(TOTAL_SIZE) * 100,2) AS VARCHAR) || '%' AS 使用率
  8. FROM
  9. (
  10.    SELECT
  11.        UPPER(T1.TABLESPACE_NAME) AS TABLESPACE_NAME,
  12.        T1.BYTES AS TOTAL_SIZE,
  13.        T1.BYTES - T2.BYTES AS USED_SIZE
  14.    FROM
  15.        DBA_DATA_FILES T1,
  16.        DBA_FREE_SPACE T2
  17.    WHERE
  18.        T1.TABLESPACE_NAME = T2.TABLESPACE_NAME
  19.        AND T1.FILE_ID = T2.FILE_ID
  20. )
  21. GROUP BY
  22.    TABLESPACE_NAME;
  23. --------------------查看表空间同数据文件对应关系
  24. SELECT
  25.    TS.NAME AS 表空间名,
  26.    DF.PATH AS 数据文件
  27. FROM
  28.    V$TABLESPACE AS TS,
  29.    V$DATAFILE AS DF
  30. WHERE
  31.    TS.ID = DF.GROUP_ID
  32. ORDER BY
  33.    1;

查看所有用户、创建时间、默认表空间、等基本信息

  1. SELECT
  2.    USERNAME AS 用户名,
  3.    DEFAULT_TABLESPACE AS 默认数据表空间,
  4.    DEFAULT_INDEX_TABLESPACE AS 默认索引表空间,
  5.    TEMPORARY_TABLESPACE AS 临时表空间,
  6.    DECODE(ACCOUNT_STATUS,'OPEN','正常','LOCKED','锁定','未知') AS 用户状态,
  7.    CREATED AS 创建时间
  8. FROM
  9.    DBA_USERS;
  10. --------------------查看用户数据库限制
  11. SELECT
  12.    T1.USERNAME AS 用户名,
  13.    DECODE(T2.AUTHENT_TYPE,1,'数据库密码认证',2,'操作系统认证',3,'远程认证','未知认证方式') AS 用户认证方式,
  14.    T2.SESS_PER_USER AS 用户最大会话数,
  15.    T2.CONN_IDLE_TIME AS "用户空闲期(分钟1-1440)",
  16.    T2.FAILED_NUM AS 用户登录失败次数限制,
  17.    T2.LIFE_TIME AS "口令有效期(天0-365)",
  18.    T2.REUSE_TIME AS "口令等待期(天0-365)",
  19.    T2.REUSE_MAX AS 口令变更次数,
  20.    T2.LOCK_TIME AS "用户锁定时间(分1-1440)",
  21.    T2.GRACE_TIME AS "口令宽限期1-30",
  22.    T2.PASSWORD AS 密码策略,
  23.    T2.RN_FLAG AS 只读,
  24.    T2.ALLOW_ADDR AS 允许访问的IP,
  25.    T2.NOT_ALLOW_ADDR AS 不允许访问的IP,
  26.    T2.ALLOW_DT AS 允许访问的时间,
  27.    T2.NOT_ALLOW_DT AS 不允许访问的时间,
  28.    T2.LAST_LOGIN_DTID AS 上次登录时间,
  29.    T2.LAST_LOGIN_IP AS 上次登录IP,
  30.    T2.FAILED_ATTEMPS AS 自上一次登录成功以来失败次数
  31. FROM
  32.    DBA_USERS T1,
  33.    SYSUSERS T2
  34. WHERE
  35.     T1.USER_ID = T2.ID;
  36. --------------------查看用户对象统计信息
  37. SELECT  
  38.    S2.NAME AS 模式名,
  39.    S1.TYPE$ AS 主类型,
  40.    S1.SUBTYPE$ AS 子类型,
  41.    COUNT(*) AS 对象数量
  42. FROM
  43.    SYSOBJECTS S1,
  44.    SYSOBJECTS S2
  45. WHERE
  46.    S1.SCHID = S2.ID
  47.    AND S2.TYPE$ = 'SCH'
  48. GROUP BY
  49.    S2.NAME,
  50.    S1.TYPE$,
  51.    S1.SUBTYPE$
  52. ORDER BY
  53.    S2.NAME,
  54.    S1.TYPE$,
  55.    S1.SUBTYPE$;
  56. --------------------查看用户占用空间大小
  57. SELECT
  58.    USERNAME AS 用户名,
  59.    USER_USED_SPACE(USERNAME) * PAGE / 1024.0 / 1024.0 AS "用户占用空间(MB)"
  60. FROM
  61.    DBA_USERS
  62. ORDER BY
  63.    2 DESC;

统计所有用户表行数

  1. SELECT
  2.    T2.NAME AS 模式名,
  3.    T1.NAME AS 表名,
  4.    TABLE_ROWCOUNT(T2.NAME,T1.NAME) AS 行数
  5. FROM
  6.    SYSOBJECTS T1,
  7.    SYSOBJECTS T2
  8. WHERE
  9.    T1.SCHID = T2.ID
  10.    AND T1.SUBTYPE$ = 'UTAB'
  11.    AND T2."TYPE$" = 'SCH'
  12. ORDER BY 3 DESC;
  13. --------------------统计所有用户表行数以及筛查某行数级别以上表行数 输入参数1:百万,千万,亿...等等,也可以共存,复制一行
  14. SELECT
  15.    模式名,
  16.    COUNT(表名) AS 表数量,
  17.    COUNT(CASE WHEN 行数 > ? THEN 行数 ELSE NULL END) AS 百万表数量
  18. FROM
  19. (
  20.    SELECT
  21.        T2.NAME AS 模式名,
  22.        T1.NAME AS 表名,
  23.        TABLE_ROWCOUNT(T2.NAME,T1.NAME) AS 行数
  24.    FROM
  25.        SYSOBJECTS T1,
  26.        SYSOBJECTS T2
  27.    WHERE
  28.        T1.SCHID = T2.ID
  29.        AND T1.SUBTYPE$ = 'UTAB'
  30.        AND T2."TYPE$" = 'SCH'
  31.    --ORDER BY 3 DESC
  32. )
  33. GROUP BY 模式名
  34. --------------------获取所有用户表定义
  35. SELECT
  36.    T2.NAME AS 模式名,
  37.    T1.NAME AS 表名,
  38.    T1.CRTDATE AS 创建时间,
  39.    DBMS_LOB.SUBSTR(DBMS_METADATA.GET_DDL('TABLE',T1.NAME,T2.NAME)) AS 表定义
  40. FROM
  41.    SYSOBJECTS T1,
  42.    SYSOBJECTS T2
  43. WHERE
  44.    T1."SUBTYPE$" = 'UTAB'
  45.      AND T1.SCHID = T2.ID
  46.      AND T2."TYPE$" = 'SCH';
  47. --------------------统计用户表列信息
  48. SELECT
  49.    S1.NAME AS 表名,
  50.    S2.NAME AS 列名,
  51.    S2."TYPE$" AS 字段类型,
  52.    S2."LENGTH$" AS 字段长度
  53. FROM
  54.    SYSOBJECTS S1,
  55.    SYSCOLUMNS S2
  56. WHERE
  57.    S1."SUBTYPE$" = 'UTAB'
  58.    AND S1.ID = S2.ID;
  59. --------------------查看表占用空间大小
  60. SELECT
  61.    S2.NAME AS 模式名,
  62.    S1.NAME AS 表名,
  63.    TABLE_USED_SPACE(S2.NAME,S1.NAME) * PAGE /1024.0/1024.0 AS "表占用空间(MB)"
  64. FROM
  65.    SYSOBJECTS S1,
  66.    SYSOBJECTS S2
  67. WHERE
  68.    S1.SCHID = S2.ID
  69.    AND S1."SUBTYPE$" = 'UTAB'
  70.    AND S2."TYPE$" = 'SCH'
  71. ORDER BY
  72.    3 DESC;

查询当前会话数和数量

  1. SQL>SELECT * FROM V$SESSIONS;

  2. SQL>SELECT  COUNT(*)  FROM V$SESSIONS;

查询当前的事务数

  1. SQL>SELECT COUNT(*) FROM V$TRX;

查询等待事件

  1. SQL>SELECT * FROM V$TRXWAIT;

查询内存池

  1. SQL>SELECT  *FROM V$MEM_POOL;

查看实例的运行状态

  1. SQL>SELECT * FROM V$INSTANCE;

守护集群启动/停止命令

  1. [dmdba@~]$ /home/dmdba/dmdbms/bin/DmWatcherServiceWatcher start#A/B机器

  2. [dmdba@~]$ /home/dmdba/dmdbms/bin/DmWatcherServiceWatcher stop#A/B机器

  3. [dmdba@~]$/home/dmdba/dmdbms/bin/DmMonitorServiceMonitor start #监控机器

实例启动/停止命令

  1. [dmdba@~]$ /home/dmdba/dmdbms/bin/DmServiceGRP1_RT_01 start#A/B机器

  2. [dmdba@~]$ /home/dmdba/dmdbms/bin/DmServiceGRP1_RT_01 stop#A/B机器
  3. 查看进程是否存在
  4. ps -ef | grep dmwatcher

  5. ps -ef | grep dmserver

  6. ps -ef | grep dmmonitor

归档日志的连续性检查:

  1. SELECT SF_REMOTE_ARCHIVE_CHECK('GRP1_RT_02'); #GRP1_RT_02代表实例名

查看主备库的状态:

  1. SELECT CASE WHEN "STATUS$" = '1' THEN 'Startup' WHEN "STATUS$" = '2' THEN 'After Redo' WHEN "STATUS$" = '3' THEN 'MOUNT' WHEN "STATUS$" = '4' THEN 'OPEN' WHEN "STATUS$" = '5' THEN 'SUSPEND' END "库状态" , CASE        WHEN "ROLE$" = '0' THEN 'Normal'        WHEN "ROLE$" = '1' THEN 'Parmary'        WHEN "ROLE$" = '2' THEN 'Standby'    END "模式" FROM    v$database;

查看主备库的SCN是否一致:

  1. select file_LSN, cur_LSN from v$rlog;

查看主备库的permanent值是否一致:

  1. select permanent_magic;

查看所有的系统表

SELECT * FROM DBA_TABLES;

查看DDL:

  1. select owner, table_name from dba_tables where owner = 'SYSDBA' and table_name like 'DMHS%' and status ='VALID';

查看归档是否开启:

  1. select name,arch_mode from v$database;

查看归档文件

  1. select * from sys.v$arch_file;

查看归档配置

  1. select * from v$dm_arch_ini;

二、运维小技巧

添加disql环境变量

  1. vi ~/.bash_profile
  2. export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool
  3. source ~/.bash_profile

DM重做主从

A机器:

  1. SQL> ALTER DATABASE MOUNT;

  2. SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);

  3. SQL> SP_SET_OGUID(45331);

  4. SQL> ALTER DATABASE PRIMARY;

  5. SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

B机器:

  1. SQL> ALTER DATABASE MOUNT;

  2. SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);

  3. SQL> SP_SET_OGUID(45331);

  4. SQL> ALTER DATABASE STANDBY;

  5. SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

A/B机器:

  1. SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);

  2. SQL> alter database normal;#单机模式,主从不用执行

  3. SQL> alter database open force;

A/B机器监控启动

  1. /home/dmdba/dmdbms/bin/dmwatcher /dmdata/data/DMTEST/dmwatcher.ini &
  2. 查看服务自启动
  3. systemctl list-unit-files --type=service | grep enable |grep Dm

  4. systemctl disable DmXXX.service #关闭服务自启动

查看DB当前正在适用的Redo log:

  1. SQL>select cur_file from V$RLOG;

查看当前Redo log 信息:

  1. SQL>select file_id,path,rlog_size/1024/1024 as "Size" from V$RLOGFILE;

删除归档日志:

可以通过系统函数SF_ARCHIVELOG_DELETE_BEFORE_TIME删除指定时间之前的归档文件,该函数返回删除的归档日志文件个数。如下命令为删除系统当前时间10天前的归档日志文件

  1. selectsf_archivelog_delete_before_time(sysdate -10);

手动切换归档命令:

  1. alter system switch logfile;

开启主备集群的逻辑日志参数:

修改开启在主、备RLOG_APPEND_LOGIC逻辑追加日志参数,0为关闭,1为开启,注意参数PARA_TYPE为SYS类型可动态修改;其它参数类型详见管理员手册。如下为参数查询及修改:

  1. SQL> SELECT PARA_NAME,PARA_VALUE,DEFAULT_VALUE,SESS_VALUE,FILE_VALUE,PARA_TYPE FROM V$DM_INI WHERE PARA_NAME LIKE 'RLOG_APPEND_LOGIC';

  2. SQL> call sp_set_para_value(1,'RLOG_APPEND_LOGIC',1);

  3. SQL> SELECT PARA_NAME,PARA_VALUE,DEFAULT_VALUE,SESS_VALUE,FILE_VALUE,PARA_TYPE FROM V$DM_INI WHERE PARA_NAME LIKE 'RLOG_APPEND_LOGIC';

主备切换演练:

进入监控机器:

  1. [dmdba@localhost bin]$ ./dmmonitor ./dmmonitor.ini
  2. login
  3. SYSDBA/SYSDBA
  4. 执行switchover GRP1_RT_02,进行主备切换
  5. switchover GRP1_RT_02
  6. 切换状态正常后,可以进行回切。
  7. switchover GRP1_RT_01

监视器使用命令如下:

备份与恢复

数据量小的可以使用dexp和dimp

1、dexp逻辑导出

数据库级

  1. ./dexp USERID=SYSDBA/SYSDBA@localhost:5237 FILE=dbbak.dmp LOG=dbbak.log FULL=Y DIRECTORY=/backup/databak

用户级

  1. ./dexp USERID=SYSDBA/SYSDBA@localhost:5237 FILE=db_users.dmp LOG=db_users.log
  2. OWNER=TEST1,TEST2,...,TESTN DIRECTORY=/backup/FULL_BAK

模式级

  1. ./dexp USERID=SYSDBA/SYSDBA@localhost:5237 FILE=db_users.dmp LOG=db_users.log
  2. SCHEMAS=TEST1,TEST2,...,TESTN DIRECTORY=/backup/FULL_BAK

表级

  1. ./dexp USERID=SYSDBA/SYSDBA@localhost:5237 FILE=db_users.dmp LOG=db_users.log
  2. TABLES=模式.表名,...,模式.表名 DIRECTORY=/backup/FULL_BAK

2、dimp逻辑导入

数据库级

  1. ./dimp USERID=SYSDBA/SYSDBA@localhost:5237 FILE=/backup/FULL_BAK/db_bak.dmp LOG=db_recover.log FULL=Y DIRECTORY=/backup/IMP_BAKDIR

模式级

  1. ./dimp USERID=SYSDBA/SYSDBA@localhost:5237 FILE=/backup/FULL_BAK/db_bak.dmp LOG=db_recover.log SCHEMAS=TEST1,...,TESTN DIRECTORY=/backup/IMP_BAKDIR
  2. 不同schema需要加个参数
  3. ./dimp USERID=SYSDBA/SYSDBA@localhost:5236 FILE=/backup/FULL_BAK/db_bak.dmp LOG=db_recover.log REMAP_SCHEMA=MODE01:MODE02 DIRECTORY=/backup/IMP_BAKDIR

用户级

  1. ./dimp USERID=SYSDBA/SYSDBA@localhost:5237 FILE=/backup/FULL_BAK/db_bak.dmp LOG=db_recover.log OWNER=TEST1,...,TESTN DIRECTORY=/backup/IMP_BAKDIR
  2. 不同用户需要加参数,与shcema一致。
  3. ./dimp USERID=SYSDBA/SYSDBA@localhost:5237 FILE=/backup/FULL_BAK/db_bak.dmp LOG=db_recover.log FROMUSER=USER01 TOUSER=USER02  DIRECTORY=/backup/IMP_BAKDIR

表级

  1. ./dimp USERID=SYSDBA/SYSDBA@localhost:5237 FILE=/backup/FULL_BAK/db_bak.dmp LOG=db_recover.log TABLES=模式.表名,...,模式.表名 DIRECTORY=/backup/IMP_BAKDIR


文中的概念来源于网络,如有侵权,请联系我删除。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
24天前
|
运维 监控 网络协议
|
10天前
|
缓存 运维 监控
【运维必备知识】Linux系统平均负载与top、uptime命令详解
系统平均负载是衡量Linux服务器性能的关键指标之一。通过使用 `top`和 `uptime`命令,可以实时监控系统的负载情况,帮助运维人员及时发现并解决潜在问题。理解这些工具的输出和意义是确保系统稳定运行的基础。希望本文对Linux系统平均负载及相关命令的详细解析能帮助您更好地进行系统运维和性能优化。
29 3
|
3月前
|
图形学 开发者 存储
超越基础教程:深度拆解Unity地形编辑器的每一个隐藏角落,让你的游戏世界既浩瀚无垠又细节满满——从新手到高手的全面技巧升级秘籍
【8月更文挑战第31天】Unity地形编辑器是游戏开发中的重要工具,可快速创建复杂多变的游戏环境。本文通过比较不同地形编辑技术,详细介绍如何利用其功能构建广阔且精细的游戏世界,并提供具体示例代码,展示从基础地形绘制到植被与纹理添加的全过程。通过学习这些技巧,开发者能显著提升游戏画面质量和玩家体验。
151 3
|
3月前
|
运维 Oracle 前端开发
Oracle 11g RAC集群日常运维命令总结
Oracle 11g RAC集群日常运维命令总结
96 2
|
3月前
|
SQL 运维 调度
DM8日常运维命令总结(二)
DM8日常运维命令总结(二)
88 2
|
3月前
|
SQL 运维 Oracle
入门级Oracle 11g日常运维命令总结
入门级Oracle 11g日常运维命令总结
121 1
|
3月前
|
SQL 运维 数据库
DM8日常运维必须要懂的几个命令
DM8日常运维必须要懂的几个命令
73 1
|
3月前
|
移动开发 运维 网络协议
运维必备 | Linux netstat命令详解
运维必备 | Linux netstat命令详解
100 8
|
4月前
|
存储 运维 Linux
|
3月前
|
数据采集 运维 监控
运维笔记:流编辑器sed命令用法解析
运维笔记:流编辑器sed命令用法解析
57 5