注册
DCA学习时对一些命令的简单总结
培训园地/ 文章详情 /

DCA学习时对一些命令的简单总结

就是你了 2023/09/04 1048 0 0
  1. ldd --version 达梦对GLIBC的版本有要求,需要在2.3以上,这个命令可以查看GLIBC的版本
  2. gcc --version 安装odbc的时候,需要gcc包依赖,这个命令可以查看GCC的版本
  3. cat /proc/version 查看操作系统版本
  4. v$parameter 这个视图可以查看数据库当前的参数值,可以通过以下命令进行修改
    sp_set_para_value scope: 0 memory 1 both 2 spfile
    SP_SET_PARA_VALUE:修改整型参数。
    SP_SET_PARA_DOUBLE_VALUE:修改浮点型参数:
    SP_SET_PARA_STRING_VALUE:修改字符型参数:
    DM 数据库参数的类型:
    READ ONLY:只读参数,只能通过修改 dm.ini 文本文件修改此参数(需要重启数据库才能生效)。
    SYS:动态(系统级)参数。可以即可以修改内存中的值,也可以修改参数文件中的值。可以在数据库运行时修改。
    SESSION:动态(会话级)参数,可以即可以修改内存中的值,也可以修改参数文件中的值。可以在数据库运行时修改,且可以只针对当前会话生效。
    IN FILE:静态参数,可以在数据库运行时修改,只能修改配置文件中的值,不能修改内存中的值;需要重启数据库才能生效。
  5. v$ifun 这个视图查看系统所有的函数,v$ifun_arg 这个视图可以查看函数的参数
  6. SQL 缓冲区 对应 INI 参数 CACHE_POOL_SIZE,是用来存储包信息(PACKAGE)、执行计划、结果集缓存的一片专用缓存区域,使用SP_CLEAR_PLAN_CACHE(PLAN_ID); 可以清理执行计划
  7. 主内存池(共享内存池)
    服务器启动时从操作系统申请的一大片内存,后续服务器运行过程中,一般情况下,很多需要内存分配的地方都是从该池分配,如果需要的内存大于配置值(MEMORY_POOL),共享内存池也可进行自动扩展,INI 参数 MEMORY_EXTENT_SIZE 指定了共享内存池每次扩展的大小,参数 MEMORY_TARGET 则指定了共享内存池能扩展到的最大大小。
    当其他内存池(比如运行时内存池:虚拟内存池 vm pool 和会话池 session pool 等)不够时,会先向主内存池申请空间。
    v$mem_pool
    creator--线程ID
    MEMORY_POOL:初始大小
    MEMORY_EXTENT_SIZE:扩展大小
    MEMORY_TARGET:目标大小
    MEMORY_N_POOL:共享内存池个数,默认为 1,高并发时可设置多个。
  8. 运行时的内存池
    特点:使用时申请,用完即释放。包含:虚拟内存池 vm pool、会话池 session pool、排序区、HASH 区等。
    排序区:SORT_BUF_SIZE
    HASH 区:HJ_BUF_SIZE
    HASH 区和排序区都属于虚拟缓冲区,实际申请时使用虚拟内存池或会话内存池。
  9. v$dynamic_tables 这个视图可以查看动态视图,记不清视图的具体名称时可以在这里查找。
  10. 每个会话 session 对应一个会话线程,会话多时该线程会多,会话对应的线程 id 可以在 v$sessions 中查询。
    select sess_id,sql_text,state,thrd_id,trx_id from v$sessions
  11. ps -T -p dmserver的pid 可以查看dmserver对应的线程
    top -H -p dmserver的pid 按线程查看dmserver进程
    11.关于用户权限
    查看当前用户拥有的权限:
    select * from session_privs;
    查询用户权限:
    select * from dba_sys_privs t where t.GRANTEE= 'HRTEST';
    select * from dba_role_privs t where t.GRANTEE= 'HRTEST';
    select * from dba_tab_privs t where t.GRANTEE= 'HRTEST';
    角色是权限的集合,角色使权限管理更加方便。
    DBA:具有几乎所有权限(除审计和强制访问控制之外),默认赋给 SYSDBA 用户。
    PUBLIC:具有对当前模式下对象的 DML 数据操作权限。
    RESOURCE:具有在当前模式下对象定义权限(创建表、索引、视图等),
    SOI:具有查询 sys 开头系统表的权限
    VTI:具有查询 v$开头的动态视图权限(没有此权限,DM 管理工具上会报没有查询 v$视图
    权限)
    sp_set_role('R1',0) --角色禁用和启用,禁用后角色权限将不在生效。
    12.关于模式
    DM 中用户和模式是一对多的关系,一个用户可以拥有多个模式,
    一个模式仅能归属于一个用户。Oracle 中用户和模式是一对一的关系。
    select * from SYSOBJECTS t where t."TYPE$" ='SCH'; --查看模式
    select * from SYSOBJECTS t where t."SUBTYPE$" ='USER'; --查看用户
    --查询模式和用户的对应关系:
    select a.id scheid, a.name schename, b.id userid, b.name username
    from SYS.SYSOBJECTS a, SYS.SYSOBJECTS b
    where a."TYPE$" = 'SCH' and a.pid = b.id;

--查询用户拥有的模式:
SELECT B.USERNAME,A.NAME SCHEMA_NAME
FROM SYSOBJECTS A,DBA_USERS B
WHERE A.PID=B.USER_ID AND A.TYPE$='SCH'
ORDER BY B.USERNAME;
---或者
SELECT B.USERNAME,listagg(A.NAME,',') within group (order by B.USERNAME) as SCHEMAS
FROM SYSOBJECTS A,DBA_USERS B
WHERE A.PID=B.USER_ID AND A.TYPE$='SCH'
GROUP BY B.USERNAME;

--在用户hrtest下再创建一个模式hrtest01
create schema hrtest01 AUTHORIZATION HRTEST;
--查看当前模式和当前用户
select sys_context('USERENV','CURRENT_SCHEMA');
select sys_context('USERENV','CURRENT_USER');
--切换模式(仅对当前会话生效)
set SCHEMA dmhr;
13.关于索引
DM 默认创建的索引组织表,由参数 LIST_TABLE 指定。
select * from v$parameter t where name ='LIST_TABLE';
DM 创建表时如果指定了主键,则主键为聚簇索引键;如果创建表示未指定主键,则 rowid为聚簇索引键(由参数 PK_WITH_CLUSTER 指定),rowid 是逻辑 rowid,占用存储空间;
select * from v$parameter t where name ='PK_WITH_CLUSTER';
14. 一些视图的使用
dba_tables --查看当前数据库中的所有表信息
dba_tab_columns --查看所有表对应的列信息
dba_constraints --查看前数据库中的所有约束
DBA_CONS_COLUMNS --查看前数据库中的所有约束对应的列
dba_indexes --查看前数据库中的所有索引
dba_ind_columns --查看前数据库中的所有索引列信息
SELECT * FROM SYSOBJECTS; 系统中所有对象的信息
SELECT * FROM SYSINDEXES; 系统中所有索引定义信息
SELECT * FROM SYSCOLUMNS; 系统中所有列定义的信息
select * from sys."v$trxwait"; 查询所有的等待事务
select * from v$lock t where t.blocked =1; 查看是否有锁等待
15.关于JOB
创建代理环境后会创建 sysjob 模式,DM兼容oracle的DBMS_JOB和DBMS_SHCEDULER系统包。
call SP_INIT_DBMS_SCHEDULER_SYS(1); --创建 DMBS_SCHEDULER
call SP_CREATE_JOB('JOB01',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('JOB01');
call SP_ADD_JOB_STEP('JOB01', 'FULLBAK', 6,
'00000000/dm8/backup/full', 0, 0, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('JOB01', 'FULLBAK', 1, 2, 1, 1, 0,
'22:00:00', NULL, '2021-12-22 16:32:21', NULL, '');
call SP_JOB_CONFIG_COMMIT('JOB01');

JOB 运行和日志查看
--查看job
select * from sysjob.sysjobs;
--运行job
dbms_job.run(1640162093);
--查看job运行日志
select * from SYSJOB.SYSJOBHISTORIES2;

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服