注册
DM7 对 Oracle 兼容之 SQL 运维实战攻略(下篇)
专栏/金的探索记录/ 文章详情 /

DM7 对 Oracle 兼容之 SQL 运维实战攻略(下篇)

2021/03/31 3225 6 0
摘要 DM7 对 Oracle 兼容之 SQL 运维实战攻略(下篇)

环境准备

  • Oracle 环境

Oracle Database 11g 企业版 11.2.0.3.0 版-64 位生产

Linux 系统:2.6.32-220.el6.x86_64

  • DM7 环境

DM 数据库服务器 x64 V7.1.5.95-Build(2016.06.28-70305)ENT

Linux 系统:2.6.32-220.el6.x86_64

查看对象分类数量

  • Oracle 11g

选择解码(t1.TYPE#,1,‘INDEX’,2,‘TABLE’,3,‘CLUSTER’,4,‘VIEW’,5,
‘SYNONYM’,6,‘SEQUENCE’,‘OTHER’)object_type,count(1)个
SYS.OBJ $ t1,其中t1.TYPE#> 1组通过解码(t1.TYPE#,1,‘INDEX’,2,‘TABLE’,3
,‘CLUSTER’,4,‘VIEW’,5,‘SYNONYM’,6,‘SEQUENCE’,‘OTHER’)
联盟
从SYS.COL $中选择’COLUMN’,count(1);

  • DM7

选择SUBTYPE $ object_type,从SYSOBJECTS中计算(1)个数量,其中SUBTYPE $ <>'‘按SUBTYPE $分组
联盟
从 SYSCOLUMNS 中选择’column’,count(1);

按用户查看 object 种类(可查每个模式下的各对象数目)

  • Oracle 11g

选择 t2.NAME 模式,sum(decode(t1.TYPE#,1,1,NULL))索引,
sum(decode(t1.TYPE#,2,1,NULL))表,sum(decode(t1.TYPE#,3,1,NULL))
群集,sum(decode(t1.TYPE#,4,1,NULL))视图,sum(decode(t1.TYPE#,5,1,NULL)
NULL))同义词,sum(decode(t1.TYPE#,6,1,NULL))序列,
sum(解码(t1.TYPE#,1,NULL,2,NULL,3,NULL,4,NULL,5,NULL,6,NULL,1))
来自 SYS.OBJ $ t1,SYS.USER $ t2 的其他对象,其中 t1.TYPE#> = 1 和 t2.USER#=
t1.OWNER#和 t2.NAME <>“ P​​UBLIC”按 t2.NAME 分组;

  • DM7

选择 syssch.NAME“ schema”,sum(decode(t.SUBTYPE $,‘VIEW’,1,0))视图,sum(decode(t.SUBTYPE $,‘PROC’,1,0))过程,
sum(decode(t.SUBTYPE $,‘STAB’,1,0))stab,sum(decode(t.SUBTYPE $,‘UTAB’,1,0))utabs,
sum(decode(t.SUBTYPE $,‘SYNOM’,1,0))语法,sum(decode(t.SUBTYPE $,‘CONS’,1,0))简而言之,
sum(decode(t.SUBTYPE $,‘INDEX’,1,0))索引
FROM SYSOBJECTS t,(从SYSOBJECTS中选择ID,NAME,其中TYPE $ =‘SCH’)syssch
其中 syssch.ID = t.SCHID 按 syssch.NAME分组;

查看有哪些数据库实例在运行

  • Oracle 11g

从 V $ ACTIVE_INSTANCES 中选择 INST_NAME;

  • DM7

从 V $ INSTANCE 中选择 NAME inst_name;

查看及修改最大会话数

  • Oracle 11g

显示参数过程;

修改方法:更改系统设置进程= 100 作用域= spfile;

此处 100 为修改后的数量,重启数据库服务后生效。

  • DM7

从 V $ DM_INI中 选择 PARA_VALUE,其中 PARA_NAME =‘MAX_SESSIONS’;

修改方法:修改数据/实例名称/下 dm.ini 中 max_sessions 的数值,重启数据库服务后生效。

为指定的表的列添加注释

Oracle 11g 和 DM 的方法一样:

对列 tablename.colname 的注释为“注释内容”;

查看逐步,过程,函数的创建脚本

  • Oracle 11g

从 USER_SOURCE 中选择*;
从 USER_TRIGGERS 中选择*;

这里因为 Oracle 不是一行显示完一个对象的所有定义,而是分行显示,所以要特别注意下线路字段的行号。

  • DM7

从 SYSTEXTS t1,SYSOBJECTS t2 中选择 t1.TXT,t2.SUBTYPE $,t2.NAME,其中 t2.id = t1.id ;

查看表定义

  • Oracle 11g

从双中选择 DBMS_METADATA.GET_DDL(‘TABLE’,‘表名’,‘用户名’);

  • DM7

需要先启用工具包 dbms_metadata,如下:

调用SP_CREATE_SYSTEM_PACKAGES(1,DBMS_METADATA );

然后执行查询:

选择DBMS_METADATA.GET_DDL(‘TABLE’,‘TEST’,‘GUOQI’);

强制关闭用户连接

  • Oracle 11g

从V $ SESSION中选择SID,SERIAL#,其中USERNAME =‘ERP’;

使用此语句会返回一个进程列表,每行有两个数字,然后用数字替代下面的 sid 和 serial

更改系统终止会话“sid,serial”;

例如:

更改系统终止会话’222,123’;

  • DM7

选择 SESS_ID,CURR_SCH,SQL_TEXT,USER_NAME,TRX_ID,CLNT_HOST,CLNT_IP ,OSNAME ,VPOOLADDR

从 SYS.v $ sessions 其中 SQL_TEXT <>‘’;

直接报告错误 SQL 中使用对象的会话,然后记录 SESSION_ID,然后使用系统过程 SP_CLOSE_SESSION(SESSION_ID);

尽管 DM7 做了扩展的 Oracle 兼容性工作,但运维所用 SQL 或有不同,希望本次的对比总结分享能对大家有所帮助。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服