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:向其他用户进行任意存储程序上权限的授权
本文使用markdown.com.cn排版