暂无图片
暂无图片
3
暂无图片
暂无图片
暂无图片

DM数据库日常运维命令总结(三)

热衷于分享各种干货知识,大家有想看或者想学的可以评论区留言,秉承着“开源知识来源于互联网,回归于互联网”的理念,分享一些日常工作中能用到或者频率比较的内容,希望大家能够喜欢,并提出宝贵地意见,我们一起提升,守住自己的饭碗。

1、查看数据库进程是否存在

查看数据库服务进程
ps -ef|grep dmserver|grep -v grep
查看数据库守护服务进程(主备环境)
ps -ef|grep dmwatcher|grep -v grep
查看监视器服务进程(主备环境)
ps -ef|grep dmmonitor|grep -v grep

2、数据库登录

[dmdba@mydm ~]$ disql SYSDBA/SYSDBA@192.168.59.198:5236
若密码中含有特殊字符则需要使用双引号进行屏蔽即
[dmdba@mydm ~]$ SYSDBA/‘“SYSDBA”’@192.168.59.198:5236

3、查看数据库基础信息

包含是否是集群环境,数据库名,最后启动时间、DSC集群节点数、主备节点等
SQL> select * from V$DATABASE t;

SQL>select name,total_size from v$database; #查看数据库的数据量

4、查看归档状态和数据库当前模式

SQL> select
(case arch_mode when 'Y' then '归档已开启' when 'N' then '归档未开启' end)
归档状态,(select MODE$ from v$instance) 数据库模式 from v$database;
SQL> SELECT * FROM V$DM_ARCH_INI; #查看归档配置
SQL> SELECT PATH,STATUS,LEN/1024.0/1024,FREE/1024.0/1024,ARCH_LSN,ARCH_SEQ,NEXT_SEQ,
CREATE_TIME,DB_MAGIC,PMNT_MAGIC FROM V$ARCH_FILE; #查看归档路径
SQL> SELECT * FROM V$ARCHIVED_LOG ORDER BY FIRST_CHANGE# DESC; #归档文件是否在持续生成
SQL> alter SYSTEM ARCHIVE LOG CURRENT; #手动切换归档
SQL> alter SYSTEM SWITCH LOGFILE;
SQL> alter DATABASE ARCHIVELOG CURRENT;
SQL> select SF_ARCHIVELOG_DELETE_BEFORE_TIME(sysdate-10); #归档日志的删除,删除10天前的归档

5、查看数据文件

SQL> SELECT FILE_NAME,STATUS,TABLESPACE_NAME,BYTES/1024/1024/1024.0 AS SIZE_GB,
MAXBYTES/1024/1024/1024.0 AS MAX_SIZE_GB,AUTOEXTENSIBLE,ONLINE_STATUS FROM DBA_DATA_FILES;

6、查看表空间

SQL> SELECT F.TABLESPACE_NAME,
(T.TOTAL_SPACE - F.FREE_SPACE) 1024 "USED (GB)",
F.FREE_SPACE 1024 "FREE (GB)",
T.TOTAL_SPACE 1024 "TOTAL (GB)",
(ROUND((F.FREE_SPACE T.TOTAL_SPACE),4)* 100) || '%' PEC_FREE,
(ROUND((T.TOTAL_SPACE - F.FREE_SPACE) T.TOTAL_SPACE, 4) * 100)||'%' PEC_USED
FROM (SELECT TABLESPACE_NAME,
ROUND(SUM(BLOCKS * (SELECT PARA_VALUE 1024 FROM V$DM_INI
WHERE PARA_NAME = 'GLOBAL_PAGE_SIZE') 1024)) FREE_SPACE
FROM DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) F,
(SELECT TABLESPACE_NAME, ROUND(SUM(BYTES 1048576)) TOTAL_SPACE
FROM DBA_DATA_FILES
GROUP BY TABLESPACE_NAME) T
WHERE F.TABLESPACE_NAME = T.TABLESPACE_NAME;


7、查看所有的schema

SQL> select t.name, t.id from sysobjects t where t.type$='SCH';

8、查看数据库中所有schema分别归属于哪个用户

SQL> select t.name schname, t.id, t.pid, b.name username
from sysobjects t, sysobjects b
where t.pid = b.id
and t.type$='SCH';

9、查询某模式下的所有数据库对象

SQL> sselect t.object_id, t.object_name, t.object_type
from dba_objects t
where t.owner='SYSDBA';

10、查询DMHR模式下的所有表信息

SQL> select t.table_name, t.owner, t.tablespace_name
from dba_tables t
where t.owner='SYSDBA';

11、查询数据库的实例及模式

SQL> SELECT "NAME" "实例名称" , "MODE$" "数据库模式" FROM V$INSTANCE;

12、查看redo日志大小及位置

SQL> select * from v$rlogfile;

13、查看正在使用的联机日志

SQL> select * from v$rlog; 

14、查看数据库的上次启动时间

SQL> select START_TIME from v$instance;

15、查看慢sql

SQL> SELECT * FROM (
SELECT SESS_ID,SQL_TEXT,DATEDIFF(SS,LAST_SEND_TIME,SYSDATE) SS,
SF_GET_SESSION_SQL(SESS_ID) FULLSQL
FROM V$SESSIONS WHERE STATE='ACTIVE')
WHERE SS>=100;

16、查看session对应的用户名

SQL> select user_name from v$Sessions where SESS_ID='140123710761240';

17、查看会话登陆情况,当前执行sql

SQL> select * from v$sessions;

18、查询行锁情况

SQL> SELECT 
s.sess_id sid,
s.sess_seq,
l.lmode 锁模式,
s.user_name 登录用户,
s.osname 机器名,
s.clnt_host 终端用户名,
o.object_name 被锁对象名,
s.create_time 登录数据库时间
FROM sys.v$lock l, sys.all_objects o, sys.v$sessions s
WHERE l.table_id = o.object_id
AND l.trx_id = s.trx_id
ORDER BY l.trx_id, s.sess_seq;

19、查看当前活跃会话执行sql

SQL> select * from v$sessions where state ='ACTIVE';

20、查看主库日志号

SQL> select file_lsn,cur_lsn from v$rlog;

21、查看内存总量

SQL> SELECT
(SELECT SUM(N_PAGES * PAGE_SIZE)/1024/1024 FROM V$BUFFERPOOL)||'MB' AS BUFFER_SIZE,
(SELECT SUM(TOTAL_SIZE)/1024/1024 FROM V$MEM_POOL)||'MB' AS MEM_POOL,
(SELECT SUM(N_PAGES * PAGE_SIZE)/1024/1024 FROM V$BUFFERPOOL)+
(SELECT SUM(TOTAL_SIZE)/1024/1024 FROM V$MEM_POOL)||'MB' AS TOTAL_SIZE
FROM DUAL;

22、查看最占用内存的SQL

SQL>SELECT "SESSID", MAX_MEM_USED||'KB',SQL_TXT FROM V$SQL_STAT 
ORDER BY MAX_MEM_USED DESC;

23、总体内存使用情况

SQL>SELECT  NAME ,STAT_VAL/1024.0/1024.0 FROM  V$SYSSTAT WHERE CLASSID=11;

24、表空间与数据文件对应关系

SQL>SELECT TS.NAME, DF.PATH FROM V$TABLESPACE AS TS, V$DATAFILE 
AS DF WHERE TS.ID = DF.GROUP_ID;

25、查看待 PURGE 的事务

SQL>SELECT * FROM V$PURGE;

26、查看用户的口令策略

SQL> select * from v$dm_ini t where t.para_name ='PWD_POLICY';
SQL> select t.ACCOUNT_STATUS, t.USERNAME, t.USER_ID,t.PASSWORD_VERSIONS from dba_users t;


27、查看用户的资源限制

SQL> select * from sysusers;

28、查看当前用户拥有的权限信息

SQL>select * from session_privs;

29、查看系统所有角色信息

SQL>select * from dba_roles;

30、查询某个用户的权限

SQL>select * from dba_role_privs where grantee='SYSDBA';

31、检查是否用户设置了最大空闲时间参数

SQL>select b.username 账号,b.password_versions 密码策略,a.sess_per_user 同时拥有的会话数,
a.conn_idle_time 会话访问服务器的时间上限 from sysusers a,dba_users b where a.id=b.user_id;

32、创建用户

SQL> create user test identified by 123456 limit failed_login_attemps 3, 
password_lock_time 5; #创建用户失败的登录次数达到3次被锁定5分钟
SQL> create user test identified by 123456 allow_ip "192.168.59.*" allow_datetime mon
"8:30:00" to fri "17:30:00"; #创建允许的IP段和工作时间段可以访问的用户

33、将某个模式下的所有对象权限赋给某个特定用户

SQL>SELECT 'GRANT ALL PRIVILEGES ON '||OWNER||'.'||TABLE_NAME||' TO SYSDBA;'
FROM DBA_TABLES
WHERE OWNER IN ('SYS'); #执行完后复制权限去批量执行即可。
SQL>grant
SELECT TABLE
,SELECT ANY TABLE
,SELECT VIEW
,SELECT ANY VIEW
,SELECT SEQUENCE
,SELECT ANY SEQUENCE
,SELECT ANY DICTIONARY
,SELECT MATERIALIZED VIEW
,SELECT ANY MATERIALIZED VIEW to "test"; #授予用户只读权限

34、修改用户密码

SQL>alter user test identified by 123456;

35、修改用户默认表空间

SQL> select file_name, tablespace_name from dba_data_files;
SQL>alter user test default tablespace test;

36、修改用户资源限制

SQL>alter user test LIMIT FAILED_LOGIN_ATTEMPS 5,PASSWORD_LOCK_TIME 15 ;

37、锁定/解锁用户

SQL>alter user test account unlock;
SQL>alter user test account lock;
SQL>drop user test cascade; #删除用户

38、赋予某个用户特定schema一张表的读取权限

SQL>grant select on test.test to test;
SQL>grant select (employee_id, employee_name) on SYSDBA.test to test;
#赋予查询对象权限,精确到列
SQL>revoke select on test.test from test;#回收select权限

39、角色管理

SQL>create role man; 创建角色
SQL>SP_SET_ROLE(‘man’,0) #角色禁用和启用,角色禁用后,对应的权限也不再生效。
SQL>grant man to test; #赋予角色权限(可以是对象权限、系统权限,也可以是角色权限)
SQL>grant create table to test;
SQL>grant select on SYSDBA.test to test;
SQL>create user test IDENTIFIED by 123456;

40、切换模式

SQL>set schema test

41、常用的数据库权限

CREATE VIEW: 在自己的模式中创建视图的权限
CREATE USER: 创建用户的权限
CREATE TRIGGER: 在自己的模式中创建触发器的权限
ALTER USER: 修改用户的权限
ALTER DATABASE: 修改数据库的权限
CREATE TABLE:创建表
CREATE ANY TABLE:在任意模式下创建表
ALTER ANY TABLE:修改任意表
DROP ANY TABLE:删除任意表
INSERT TABLE:插入表记录
INSERT ANY TABLE:向任意表插入记录
UPDATE TABLE:更新表记录
UPDATE ANY TABLE:更新任意表的记录
DELETE TABLE:删除表记录
DELETE ANY TABLE:删除任意表的记录
SELECT ANY TABLE:查询任意表的记录
REFERENCES TABLE:引用表
REFERENCES ANY TABLE:引用任意表
DUMP TABLE:导出表
DUMP ANY TABLE:导出任意表
GRANT TABLE:向其他用户进行表上权限的授权
GRANT ANY TABLE:向其他用户进行任意表上权限的授权
--存储程序对象,其相关的数据库权限则包括:
CREATE PROCEDURE:创建存储程序
CREATE ANY PROCEDURE:在任意模式下创建存储程序
DROP PROCEDURE:删除存储程序
DROP ANY PROCEDURE:删除任意存储程序
EXECUTE PROCEDURE:执行存储程序
EXECUTE ANY PROCEDURE:执行任意存储程序
GRANT PROCEDURE:向其他用户进行存储程序上权限的授权
GRANT ANY PROCEDURE:向其他用户进行任意存储程序上权限的授权


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

欢迎关注公众号:小周的数据库进阶之路,一起交流数据库、中间件和云计算等技术。如果觉得读完本文有收获,可以转发给其他朋友,大家一起学习进步!感兴趣的朋友可以加我微信,拉您进群与业界的大佬们一起交流学习。


文章转载自小周的数据库进阶之路,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论