1
)当前数据库中的模式名:
select distinct object_name TABLE_SCHEMA from all_objects where object_type = 'SCH';
2
)查出各模式对应的用户:
select
SCH_OBJ.NAME ,
SCH_OBJ.ID ,
SCH_OBJ.CRTDATE,
USER_OBJ.NAME
from
(
select NAME, ID, PID, CRTDATE from SYS.SYSOBJECTS where TYPE$='SCH'
)
SCH_OBJ,
(
select NAME, ID from SYS.SYSOBJECTS where TYPE$='UR' and SUBTYPE$='USER'
)
USER_OBJ
where
SCH_OBJ.PID=USER_OBJ.ID
ORDER BY
SCH_OBJ.NAME
3
)查看数据库使用内存
SELECT
name ,--
内存池描述名称
sum(org_size) ,--
内存池原始大小,sum
函数:总数
sf_get_ep_seqno(rowid) ,--rowid
数据对象编号
sum(total_size)/1024.0/1024/1024 G,--
内存池目前大小
sum(reserved_size) ,--
内存池内已经分配掉的空间
count( *) ,
avg(total_size)/1024.0/1024 --
内存池目前大小,avg
函数:平均值
FROM
V$MEM_POOL
group by
name,
sf_get_ep_seqno(rowid)
order by
4 desc;
4
)定时删除作业
call SP_CREATE_JOB('countall_bakall_delbakall',1,0,'',0,0,'',0,'
每天晚上00
点收集统计信息、全库备份、删除30
天前的全库备份文件');
call SP_JOB_CONFIG_START('countall_bakall_delbakall');
call SP_ADD_JOB_STEP('countall_bakall_delbakall', 'countall', 0, 'CALL SP_DB_STAT_INIT ();', 1, 2, 0, 0, NULL, 0);
call SP_ADD_JOB_STEP('countall_bakall_delbakall', 'bakall', 6, '01000900', 1, 2, 0, 0, NULL, 0);
call SP_ADD_JOB_STEP('countall_bakall_delbakall', 'delbakall', 0, 'sp_db_bakallset_remove_batch(null,sysdate-30);', 1, 2, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('countall_bakall_delbakall', 'countall_bakall_delbakall_time01', 1, 1, 1, 0, 0, '00:01:00', NULL, '2019-02-28 10:37:43', NULL, '');
call SP_JOB_CONFIG_COMMIT('countall_bakall_delbakall');
5
)根据表查看锁超时
select * from systexts where upper(cast(txt as varchar)) like '%MID.CUS_CREDIT%'
6
)监控表空间使用情况
select
t.name tablespace_name,
d.free_size*SF_GET_PAGE_SIZE()/1024/1024
||'M' free_space,
d.total_size*SF_GET_PAGE_SIZE()/1024/1024
||'M' total_space,
d.free_size*100/d.total_size "% FREE"
from
v$tablespace t,
v$datafile d
where
t.id=d.group_id;
select
tablespace_name ,
file_name ,
bytes/1024/1024||'M' total_space,
user_bytes/1024/1024||'M' user_space,
user_bytes*100/bytes "% FREE"
from
dba_data_files
7
)批量编译存储过程
create or replace procedure compile_invalid_procedures(
p_owner varchar2 --
所有者名称,即 SCHEMA
) as
--
编译某个用户下的无效存储过程
str_sql varchar2(200);
begin
for invalid_procedures in (select object_name from all_objects
where status = 'INVALID' and object_type = 'PROCEDURE' and owner=upper(p_owner))
loop
str_sql := 'alter procedure '||p_owner||'.'||invalid_procedures.object_name || ' compile';
begin
execute immediate str_sql;
exception
--When Others Then Null;
when OTHERS Then
dbms_output.put_line(sqlerrm);
end;
end loop;
end;
8
)清空模式下所有表数据
declare
begin
for RS in (select * from all_tables where "OWNER" in ('MID','BAS'))LOOP DECLARE
BEGIN
EXECUTE IMMEDIATE 'TRUNCATE TABLE '||RS.OWNER||'.'||RS.TABLE_NAME;
EXCEPTION WHEN OTHERS THEN
PRINT ('TRUNCATE TABLE'||RS.OWNER||'.'||RS.TABLE_NAME);
END;
end loop;
end;
9
)统计存储过程数量
select sch.name,proc.name,proc.crtdate from sysobjects sch,sysobjects proc where proc.schid=sch.id
and sch.name IN('MID','APP') AND PROC.SUBTYPE$='PROC'; and proc.CRtDATE>SYSDATE-1;
10
)已知表被锁:解锁
SELECT ID as "TABLE_ID" from SYSOBJECTS WHERE NAME = 'CITY';--
根据表名查TABLE_ID
SELECT TRX_ID,LTYPE,LMODE,TABLE_ID FROM V$LOCK WHERE TABLE_ID 1199;--
根据TABLE_ID
查TRX_ID
SELECT * FROM V$SESSIONS WHERE TRX_ID = 50702145;--
根据TRX_ID
查看SESS_ID
SP_CLOSE_SESSION(140165318846264);--
根据SESS_ID
解锁
11
)与oracle
比对表顺序
SELECT * FROM DBA_TAB_COLUMNS--
查看达梦信息
SELECT * FROM ALL_TAB_COLS --
查看ORACLE
信息
CREATE TABLE TAB_1 AS SELECT * FROM DBA_TAB_COLUMNS
CREATE TABLE TAB_2 AS SELECT * FROM ALL_TAB_COLS --ORACLE
不能导出所有列
达梦端比对
SELECT
DISTINCT
A.OWNER
,A.TABLE_NAME
FROM SYSDBA.TABLE_2 A LEFT JOIN SYSDBA.TXT_1 B
ON A.OWNER|| A.TABLE_NAME = B.OWNER|| B.TABLE_NAME AND B.COLUMN_NAME = A.COLUMN_NAME AND
B.COLUMN_ID=A.COLUMN_ID
WHERE A.OWNER='XJNX' AND B.OWNER IS NULL
ORDER BY A.TABLE_NAME
12
)执行计划缓存
CALL SP_CREATE_SYSTEM_PACKAGES(1);--
创建系统包
DBMS_STATS.GATHER_SCHEMA_STATS('SYSDBA',100,FALSE,'FOR ALL COLUMNS SIZE AUTO');
--
收集SYSDBA
模式下
所有索引的统计信息
清理执行计划缓存 CALL SP_CLEAR_PLAN_CACHE();