DM8日常运维命令总结

SQL> set pagesize 500

SQL> set linesize 500

查询数据库版本

SELECT * FROM V$VERSION;

select BUILD_VERSION from v$instance ; #查看小版本

查看当前有多少用户

SQL> SELECT USERNAME FROM DBA_USERS;

查看当前有多少表空间

SELECT * FROM DBA_TABLESPACES;

查看各表空间的数据量

set pagesize 500

set linesize 500

SELECT

    TABLESPACE_NAME AS 表空间名,

    ROUND(SUM(TOTAL_SIZE) / 1024.0 / 1024.0, 2) AS "总大小(MB)",

    ROUND(SUM(USED_SIZE)/ 1024.0 / 1024.0, 2) AS "已使用大小(MB)",

    CAST(ROUND(SUM(USED_SIZE) * 1.0 / SUM(TOTAL_SIZE) * 100,2) AS VARCHAR) || '%' AS 使用率

FROM

(

    SELECT

        UPPER(T1.TABLESPACE_NAME) AS TABLESPACE_NAME,

        T1.BYTES AS TOTAL_SIZE,

        T1.BYTES - T2.BYTES AS USED_SIZE

    FROM

        DBA_DATA_FILES T1,

        DBA_FREE_SPACE T2

    WHERE

        T1.TABLESPACE_NAME = T2.TABLESPACE_NAME

        AND T1.FILE_ID = T2.FILE_ID

)

GROUP BY

    TABLESPACE_NAME;

--------------------查看表空间同数据文件对应关系

SELECT

    TS.NAME AS 表空间名,

    DF.PATH AS 数据文件

FROM

    V$TABLESPACE AS TS,

    V$DATAFILE AS DF

WHERE

    TS.ID = DF.GROUP_ID

ORDER BY

    1;

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

SELECT

    USERNAME AS 用户名,

    DEFAULT_TABLESPACE AS 默认数据表空间,

    DEFAULT_INDEX_TABLESPACE AS 默认索引表空间,

    TEMPORARY_TABLESPACE AS 临时表空间,

    DECODE(ACCOUNT_STATUS,'OPEN','正常','LOCKED','锁定','未知') AS 用户状态,

    CREATED AS 创建时间

FROM

    DBA_USERS;

--------------------查看用户数据库限制

SELECT

    T1.USERNAME AS 用户名,

    DECODE(T2.AUTHENT_TYPE,1,'数据库密码认证',2,'操作系统认证',3,'远程认证','未知认证方式') AS 用户认证方式,

    T2.SESS_PER_USER AS 用户最大会话数,

    T2.CONN_IDLE_TIME AS "用户空闲期(分钟1-1440)",

    T2.FAILED_NUM AS 用户登录失败次数限制,

    T2.LIFE_TIME AS "口令有效期(天0-365)",

    T2.REUSE_TIME AS "口令等待期(天0-365)",

    T2.REUSE_MAX AS 口令变更次数,

    T2.LOCK_TIME AS "用户锁定时间(分1-1440)",

    T2.GRACE_TIME AS "口令宽限期1-30",

    T2.PASSWORD AS 密码策略,

    T2.RN_FLAG AS 只读,

    T2.ALLOW_ADDR AS 允许访问的IP,

    T2.NOT_ALLOW_ADDR AS 不允许访问的IP,

    T2.ALLOW_DT AS 允许访问的时间,

    T2.NOT_ALLOW_DT AS 不允许访问的时间,

    T2.LAST_LOGIN_DTID AS 上次登录时间,

    T2.LAST_LOGIN_IP AS 上次登录IP,

    T2.FAILED_ATTEMPS AS 自上一次登录成功以来失败次数

FROM

    DBA_USERS T1,

    SYSUSERS T2

WHERE

    T1.USER_ID = T2.ID;

--------------------查看用户对象统计信息

SELECT 

    S2.NAME AS 模式名,

    S1.TYPE$ AS 主类型,

    S1.SUBTYPE$ AS 子类型,

    COUNT(*) AS 对象数量

FROM

    SYSOBJECTS S1,

    SYSOBJECTS S2

WHERE

    S1.SCHID = S2.ID

    AND S2.TYPE$ = 'SCH'

GROUP BY

    S2.NAME,

    S1.TYPE$,

    S1.SUBTYPE$

ORDER BY

    S2.NAME,

    S1.TYPE$,

    S1.SUBTYPE$;

--------------------查看用户占用空间大小

SELECT

    USERNAME AS 用户名,

    USER_USED_SPACE(USERNAME) * PAGE / 1024.0 / 1024.0 AS "用户占用空间(MB)"

FROM

    DBA_USERS

ORDER BY

    2 DESC;

统计所有用户表行数

SELECT

    T2.NAME AS 模式名,

    T1.NAME AS 表名,

    TABLE_ROWCOUNT(T2.NAME,T1.NAME) AS 行数

FROM

    SYSOBJECTS T1,

    SYSOBJECTS T2

WHERE

    T1.SCHID = T2.ID

    AND T1.SUBTYPE$ = 'UTAB'

    AND T2."TYPE$" = 'SCH'

ORDER BY 3 DESC;

--------------------统计所有用户表行数以及筛查某行数级别以上表行数 输入参数1:百万,千万,亿...等等,也可以共存,复制一行

SELECT

    模式名,

    COUNT(表名) AS 表数量,

    COUNT(CASE WHEN 行数 > ? THEN 行数 ELSE NULL END) AS 百万表数量

FROM

(

    SELECT

        T2.NAME AS 模式名,

        T1.NAME AS 表名,

        TABLE_ROWCOUNT(T2.NAME,T1.NAME) AS 行数

    FROM

        SYSOBJECTS T1,

        SYSOBJECTS T2

    WHERE

        T1.SCHID = T2.ID

        AND T1.SUBTYPE$ = 'UTAB'

        AND T2."TYPE$" = 'SCH'

    --ORDER BY 3 DESC

)

GROUP BY 模式名

--------------------获取所有用户表定义

SELECT

    T2.NAME AS 模式名,

    T1.NAME AS 表名,

    T1.CRTDATE AS 创建时间,

    DBMS_LOB.SUBSTR(DBMS_METADATA.GET_DDL('TABLE',T1.NAME,T2.NAME)) AS 表定义

FROM

    SYSOBJECTS T1,

    SYSOBJECTS T2

WHERE

    T1."SUBTYPE$" = 'UTAB'

      AND T1.SCHID = T2.ID

      AND T2."TYPE$" = 'SCH';

--------------------统计用户表列信息

SELECT

    S1.NAME AS 表名,

    S2.NAME AS 列名,

    S2."TYPE$" AS 字段类型,

    S2."LENGTH$" AS 字段长度

FROM

    SYSOBJECTS S1,

    SYSCOLUMNS S2

WHERE

    S1."SUBTYPE$" = 'UTAB'

    AND S1.ID = S2.ID;

--------------------查看表占用空间大小

SELECT

    S2.NAME AS 模式名,

    S1.NAME AS 表名,

    TABLE_USED_SPACE(S2.NAME,S1.NAME) * PAGE /1024.0/1024.0 AS "表占用空间(MB)"

FROM

    SYSOBJECTS S1,

    SYSOBJECTS S2

WHERE

    S1.SCHID = S2.ID

    AND S1."SUBTYPE$" = 'UTAB'

    AND S2."TYPE$" = 'SCH'

ORDER BY

    3 DESC;

查询会话数

SELECT * FROM V$SESSIONS;

SELECT  COUNT(*)  FROM V$SESSIONS;

查看数据库的创建日期和归档方式

select create_time,arch_mode from v$database;

在某个用户下找所有的索引

select user_indexes.table_name,

user_indexes.index_name,

uniqueness,

column_name

from user_ind_columns, user_indexes

where user_ind_columns.index_name = user_indexes.index_name

and user_ind_columns.table_name = user_indexes.table_name

order by user_indexes.table_type,

user_indexes.table_name,

user_indexes.index_name,

column_position;

查看字符集

返回建库时,指定的字符集。返回值:0 表示 GB18030,1 表示 UTF-8。

SELECT SF_GET_UNICODE_FLAG ();

查看数据库对象

select owner, object_type, status, count(*) count#

from all_objects

 group by owner, object_type, status;

查看日志文件

select * from v$rlogfile;

查询事务数

SELECT COUNT(*) FROM V$TRX;

查询等待事件

SELECT * FROM V$TRXWAIT;

查询内存池

SELECT  *FROM V$MEM_POOL;

查看实例的运行状态

SELECT * FROM V$INSTANCE;

守护集群启动/停止命令

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

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

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

##实例启动/停止命令

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

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

查看进程是否存在

ps -ef | grep dmwatcher

ps -ef | grep dmserver

添加disql环境变量

vi ~/.bash_profile

export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool

source ~/.bash_profile

DM重做主从

A机器:

SQL> ALTER DATABASE MOUNT;

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

SQL> SP_SET_OGUID(45331);

SQL> ALTER DATABASE PRIMARY;

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

B机器:

SQL> ALTER DATABASE MOUNT;

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

SQL> SP_SET_OGUID(45331);

SQL> ALTER DATABASE STANDBY;

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

A/B机器:

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

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

SQL> alter database open force;

A/B机器监控启动

/home/dmdba/dmdbms/bin/dmwatcher /dmdata/data/DMTEST/dmwatcher.ini &

查看服务自启动

systemctl list-unit-files --type=service | grep enable |grep Dm

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

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

SQL>select cur_file from V$RLOG;

查看当前Redo log 信息:

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

删除归档日志:

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

select sf_archivelog_delete_before_time(sysdate -10);

手动切换归档命令

alter system switch logfile;

归档日志的连续性检查

SELECT SF_REMOTE_ARCHIVE_CHECK('GRP1_RT_02');

查看主备库的状态:

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是否一致:

select file_LSN, cur_LSN from v$rlog;

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

select permanent_magic;

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

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

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';

SQL> call sp_set_para_value(1,'RLOG_APPEND_LOGIC',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';

查看所有的系统表

SELECT * FROM DBA_TABLES;

查看DDL

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

查看归档的模式

select name,arch_mode from v$database;

#查看归档文件

select * from sys.v$arch_file;

#查看归档配置

select * from v$dm_arch_ini;

主备切换

[dmdba@localhost bin]$ ./dmmonitor ./dmmonitor.ini

login

SYSDBA/SYSDBA

switchover GRP1_RT_02

查看可切换的列表

choose switchover GRP1_RT_01

分裂后,需要删掉分裂库生成的守护进程控制文件,守护进程在检测到本地库分裂时,自动创建 dmwatcher.ctl 文件.

rm -rf dmwatcher.ctl 

然后主备备份后数据传给备份,依次启动数据库和守护进程。

备份与恢复

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

dexp逻辑导出

数据库级

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

用户级

./dexp USERID=SYSDBA/SYSDBA@localhost:5237 FILE=db_users.dmp LOG=db_users.log

OWNER=TEST1,TEST2,...,TESTN DIRECTORY=/backup/FULL_BAK

模式级

./dexp USERID=SYSDBA/SYSDBA@localhost:5237 FILE=db_users.dmp LOG=db_users.log

SCHEMAS=TEST1,TEST2,...,TESTN DIRECTORY=/backup/FULL_BAK

表级

./dexp USERID=SYSDBA/SYSDBA@localhost:5237 FILE=db_users.dmp LOG=db_users.log

TABLES=模式.表名,...,模式.表名 DIRECTORY=/backup/FULL_BAK

dimp逻辑导入

数据库级

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

模式级

./dimp USERID=SYSDBA/SYSDBA@localhost:5237 FILE=/backup/FULL_BAK/db_bak.dmp LOG=db_recover.log SCHEMAS=TEST1,...,TESTN DIRECTORY=/backup/IMP_BAKDIR

不同schema需要加个参数

./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

用户级

./dimp USERID=SYSDBA/SYSDBA@localhost:5237 FILE=/backup/FULL_BAK/db_bak.dmp LOG=db_recover.log OWNER=TEST1,...,TESTN DIRECTORY=/backup/IMP_BAKDIR

不同用户需要加参数,与shcema一致。

./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

表级

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

创建某个schema模式下只读用户

select 'grant select on 模式名.'||table_name||' to 只读账号;' from user_tables;

查看schema对应的用户

select a.id scheid, a.name schename, b.id userid, b.name username

from SYS.SYSOBJECTS a, SYS.SYSOBJECTS b

where a."TYPE$" = 'SCH' and a.pid = b.id;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,137评论 6 511
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,824评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,465评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,131评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,140评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,895评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,535评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,435评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,952评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,081评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,210评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,896评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,552评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,089评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,198评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,531评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,209评论 2 357

推荐阅读更多精彩内容