数据库目录介绍
一、数据库安装目录
/home/dmdba/dmdbms/bin 目录存放 DM 数据库的可执行文件,例如 disql 命令、dminit 命令、dmrman 工具等。
/home/dmdba/dmdbms/desktop/icons 存放 DM 数据库各个工具的桌面图标。
/home/dmdba/dmdbms/doc 存放 DM 数据库用户手册。
/home/dmdba/dmdbms/drivers 存放连接 DM 数据库的驱动文件。
/home/dmdba/dmdbms/log 存放 DM 数据库日志,包括工具的日志、数据库日志、服务日志等。
/home/dmdba/dmdbms/samples 存放 DM 数据库各类配置文件的示例文件。
/home/dmdba/dmdbms/tool 存放 DM 数据库的各个工具,例如 manager 管理工具、dbca 数据库配置助手等。
/home/dmdba/dmdbms/uninstall 目录存放卸载 DM 数据库的脚本。
/home/dmdba/dmdbms/web 目录存放 DM 数据库 dem 工具的 web 环境。
二、数据库实例目录
/dmdata/data 为数据库实例目录,该目录存放各个实例的文件。
角色的作用
PUBLIC:在自己模式下操作数据的权限,但不能创建数据库对象。
RESOURCE:具有在自己模式下创建表、视图等数据库对象的权限。
SOI:角色具有查询系统表(SYS开头的表)的权限。
SVI:具有基础视图的查询权限。
VTI:具有查询动态视图相关的权限。
查看数据库状态
su - dmdba
pa aux | grep dms
./dmmonitor dmmonitor.ini
show
同步状态
TSK:备库针对主库此节点的待重演任务个数。
TSK_MEM_USE:备库当前针对主库此节点的日志重演已经占用的内存大小(单位字节)。
LSN(Log Sequence Number)是由系统自动维护的 Bigint 类型数值,具有自动递增、
全局唯一特性,每一个 LSN 值代表着 DM 系统内部产生的一个物理事务。
FSEQ:节点实例已经写入联机日志的 RLOG_PKG 包序号。
FLSN:已经写入联机日志文件的最大 LSN 值。
CSEQ:指当前数据库最新产生的 RLOG_PKG 包的序号。
CLSN:节点实例的系统当前 LSN,指当前数据库最新产生的 LSN 值。
open database XXX
查看数据库版本:
select * from v$version;
select * from v$instance;
查看使用容量
select sum(bytes)/1024.0/1024.0/1024.0 GB from dba_data_files;
将不需要的服务器移出集群
在pa aux | grep dms 找到的目录下,编辑 dmmal.ini dmarch.ini文件,注释掉不需要的服务器的配置文件
查看监听
./dmmonitor dmmonitor.ini
show
login
数据库连接管理
查看用户数据库连接限制
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 SF_GET_PARA_VALUE(2,'MAX_SESSIONS');
select para_name,para_value from v$dm_ini where para_name='MAX_SESSIONS';
查看当前连接数
select count(*) from v$sessions where state='ACTIVE';
设置系统最大连接数
SP_SET_PARA_VALUE(2,'MAX_SESSIONS', 2000);##重启数据库生效
--已执行超过2秒的活动SQL
select * from (
SELECT sess_id,sql_text,datediff(ss,last_send_time,sysdate) Y_EXETIME,
SF_GET_SESSION_SQL(SESS_ID) fullsql,clnt_ip
FROM V$SESSIONS WHERE STATE='ACTIVE')
where Y_EXETIME>=2;
--锁查询
select o.name,l.* from v$lock l,sysobjects o where l.table_id=o.id and blocked=1
--阻塞查询
with locks as(
select o.name,l.*,s.sess_id,s.sql_text,s.clnt_ip,s.last_send_time from v$lock l,sysobjects o,v$sessions s
where l.table_id=o.id and l.trx_id=s.trx_id ),
lock_tr as ( select trx_id wt_trxid,row_idx blk_trxid from locks where blocked=1),
res as( select sysdate stattime,t1.name,t1.sess_id wt_sessid,s.wt_trxid,
t2.sess_id blk_sessid,s.blk_trxid,t2.clnt_ip,SF_GET_SESSION_SQL(t1.sess_id) fulsql,
datediff(ss,t1.last_send_time,sysdate) ss,t1.sql_text wt_sql from lock_tr s,locks t1,locks t2
where t1.ltype='OBJECT' and t1.table_id<>0 and t2.ltype='OBJECT' and t2.table_id<>0
and s.wt_trxid=t1.trx_id and s.blk_trxid=t2.trx_id)
select distinct wt_sql,clnt_ip,ss,wt_trxid,blk_trxid from res;
限制用户连接数
alter user username limit SESSION_PER_USER 100;
##查看用户连接会话数
SELECT USER_NAME AS 用户名, SUBSTR(CLNT_IP,0,INSTR(CLNT_IP,':',-1)-1) AS 会话IP,COUNT(*) AS 会话数量 FROM SYS."V$SESSIONS"
GROUP BY USER_NAME, SUBSTR(CLNT_IP,0,INSTR(CLNT_IP,':',-1)-1) ORDER BY 3 DESC;
select SESS_ID,USER_NAME,CREATE_TIME,LAST_RECV_TIME,LAST_SEND_TIME,STATE,sysdate-LAST_SEND_TIME from V$SESSIONS order by sysdate - LAST_SEND_TIME desc;
查看SQL执行时间
select * from (
SELECT 'sp_close_session('||sess_id||');',thrd_id,user_name,sql_text,create_time,datediff(ss,last_send_time,sysdate) ss,
SF_GET_SESSION_SQL(SESS_ID) fullsql
FROM V$SESSIONS WHERE STATE='ACTIVE')
order by ss desc;
查看历史SQL执行时间
SELECT * FROM V$LONG_EXEC_SQLS;
查看缓存状态
select (select sum(n_pages) * page()/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()/1024/1024 from v$bufferpool)+(select sum(total_size)/1024/1024 from v$mem_pool)||'MB' as TOTAL_SIZE from dual;
查询表空间使用状况
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 使用率,
max (AUTOEXTENSIBLE) as 自动扩展,
max (MAXBYTES)/1024.0 /1024.0 AS "最大(MB)"
FROM
(
SELECT
UPPER(T1.TABLESPACE_NAME) AS TABLESPACE_NAME,
T1.AUTOEXTENSIBLE,
MAXBYTES,
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;
开启dmsql日志跟踪
(1)配置 dm.ini 文件,设置 SVR_LOG = 1 以启用 sqllog.ini 配置,该参数为动态参数,可通过调用数据库函数直接修改,如下所示:
SP_SET_PARA_VALUE(1,'SVR_LOG',1);
(2)配置数据文件目录下的 sqllog.ini 文件。
查看日志文件存储路径:FILE_PATH = ../log
查看现在的值
select * from v$dm_ini where para_name='SVR_LOG';
1690

被折叠的 条评论
为什么被折叠?



