达梦基本操作汇总指南

数据库安装
达梦安装
groupadd dinstall
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
echo “oracle”|passwd --stdin dmdba
mkdir -p /dm8/tmp
chown -R dmdba:dinstall /dm8

vi .bash_profile
export DM_INSTALL_TMPDIR=/dmdb/tmp
export LD_LIBRARY_PATH=“$LD_LIBRARY_PATH:/dmdb/dmdbms/bin”
export DM_HOME=“/dmdb/dmdbms”
export PATH=/dmdb/dmdbms/bin:/dmdb/dmdbms/tool:$PATH

vim /etc/security/limits.conf

  • soft nproc 2047
  • hard nproc 16384
  • soft nofile 655366
  • hard nofile 655366
  • soft data unlimited
  • hard data unlimited
  • soft fsize unlimited
  • hard fsize unlimited
  • soft memlock unlimited
  • hard memlock unlimited

systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld

sed -i ‘s/^ *SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config
setenforce 0
getenforce

./DMInstall.bin

odbc 安装
tar -zxvf unixODBC-2.3.0.tar.gz
./configure
make
make install

cd /usr/local/etc/

vi odbcinst.ini
[DM8 ODBC DRIVER]
Description = ODBC DRIVER FOR DM8
Driver = /dm8/bin/libdodbc.so

vi odbc.ini
[DM8]
Description = DM ODBC DSN
Driver = DM8 ODBC DRIVER
SERVER = localhost
UID = SYSDBA
PWD = Dameng123
TCP_PORT = 5236

isql dm8 -v

数据库相关查询:
1、查询数据库版本:
l 查询数据库大版本号:
Select * from v$version;
l 查询小版本号:
Select id_code;

2、表空间相关信息查询
l 查询数据文件和联机日志文件信息
select b.tablespace_name, b.file_name, b.bytes/1024/1024 size_m from dba_data_files b union all select ‘RLOG’, a.path, a.rlog_size/1024/1024 from v$rlogfile a;
l 查询表空间占用率
select b.file_name, b.tablespace_name, b.bytes/1024/1024 size_m, (b.bytes-(nvl(a.bytes,0)))/1024/1024 used_m, round((b.bytes-(nvl(a.bytes,0)))/(b.bytes)*100,2) usedrate from dba_free_space a,dba_data_files b where a.file_id(+) = b.file_id and a.tablespace_name(+) = b.tablespace_name order by b.tablespace_name;

3、模式相关信息查询
l 查看模式和用户的对应关系
select a.NAME schname, a.ID schid, b.id userid, b.NAME username from sysobjects a, sysobjects bwhere a.“TYPE$”=‘SCH’ and a.pid = b.id;
l 查看模式下所有对象信息
select a.object_name, a.object_id, a.object_type, a.created, a.status from dba_objects a where a.owner=‘DMHR’; – 用户/模式名

l 批量禁用某个用户/模式下所有外键约束
将查询出的拷贝执行即可禁用外键约束。
select ‘alter table ‘|| t.owner||’.’||t.table_name ||’ disable constraint ‘||t.constraint_name||’;’ from dba_constraints t where t.owner = ‘DMHR’ – 用户/模式名 and t.constraint_type = ‘R’;

l 查看系统外键约束的引用关系
查询某个用户或模式下外键约束的引用关系:
select t1.owner,t1.table_name, t2.table_name as “TABLE_NAME®”, t1.constraint_name, t1.r_constraint_name as “CONSTRAINT_NAME®”, a1.column_name, a2.column_name as "COLUMN_NAME®"from dba_constraints t1, dba_constraints t2, dba_cons_columns a1, dba_cons_columns a2where t1.owner = t2.owner and a1.owner = a2.OWNER and t1.owner = ‘DMHR’ and t1.r_constraint_name = t2.constraint_name and t1.constraint_name = a1.constraint_name and t1.r_constraint_name = a2.constraint_name;

4、作业相关
l 查看系统中的作业信息:
select t.job, t.schema_user, t.last_date, t.last_sec, t.next_date, t.next_sec, t.“INTERVAL”, t.broken, t.failures,t.what from dba_jobs t;
l 运行作业
call dbms_job.run(1637544901); --参数为jobid
l 历史作业运行情况
select * from sysjob.SYSJOBHISTORIES2;

5、会话/事务相关
l 查看会话信息
select t.SESS_ID, t.SQL_TEXT, t.STATE, t.TRX_ID, t.THRD_ID from v s e s s i o n s t ; l 查 看 当 前 会 话 s e l e c t s e s s i d ; l 事 务 等 待 使 用 如 下 s q l 查 询 数 据 库 中 的 事 务 等 待 信 息 , 如 果 为 空 , 则 表 示 当 前 无 事 务 等 待 。 s e l e c t ∗ f r o m v sessions t; l 查看当前会话 select sessid; l 事务等待 使用如下sql查询数据库中的事务等待信息,如果为空,则表示当前无事务等待。 select * from v sessionst;lselectsessid;l使sqlselectfromvtrxwait;

select b.name, t.* from v$lock t, SYSOBJECTS b where t.BLOCKED = 1 and t.TABLE_ID = b.ID;
l 某个会话的历史sql信息
select * from V$SQL_HISTORY t where T.SESS_ID = ‘140577090115912’; --会话id

一、数据库信息查询

1.1、查看数据库信息(是否开启归档等):

l 查询数据库是否开启归档(Y表示开启归档)

select t.name, t.arch_mode from V$DATABASE t;

l 其他数据库信息也可在此视图查询,用来区分是否集群环境等。包含数据库名,最后启动时间、DSC集群节点数、主备节点等:

select * from V$DATABASE t;

1.2、查询实例信息
l 查询数据库实例启动状态:

select name, status$ from v$instance;

l 其他实例信息包含实例名、状态、DSC集群节点、主备集群等也可在此视图中查询:

select * from V$INSTANCE;

1.3、查询license信息
l 查询license信息,EXPIRED_DATE表示过期时间。License到期后,数据库将自动关闭。

select * from V$LICENSE;

1.4、归档配置查询
l 查询v$dm_arch_ini动态视图可获取归档目录等配置信息,也可以查看dmarch.ini配置文件。

select * from v$dm_arch_ini;

二、当前模式/用户/会话信息查询

2.1、查看当前用户
l 查看当前的连接用户,如下三个语句均可查看:

select sys_context(‘USERENV’,‘CURRENT_USER’);

select current_user;

select user;

2.2、查看当前模式/切换当前模式
l sys_context是DM提供的获取环境上下文信息的预定义函数。USERENV为系统默认的上下文名字空间,保存了用户的上下文信息,可以从此函数中获取当前用户、模式、当前会话等信息。

select sys_context(‘USERENV’,‘CURRENT_SCHEMA’);

l 使用set schema语句可以切换当前模式到其他模式(DM8新版本支持不同用户下模式的切换)。

set schema hr;

2.3、查询当前会话ID
l 如下两个语句都可查询当前会话ID。

select sys_context(‘USERENV’,‘SID’);

select sessid;

三、表相关
3.1、某模式/用户下表占用空间大小排序:
l 在生成环境中,如果表数据过大,可能造成查询较慢,使用此sql可查询出占用空间较大的表信息及占用大小。如果要查询某张表的空间占用,可以增加segment_name条件。

select t.segment_name, t.segment_type, t.tablespace_name, t.owner, t.bytes, t.bytes/1024 byte_kb, t.bytes/1024 byte_mb from dba_segments t where t.owner = ‘DMHR’ – 用户/模式名 and t.SEGMENT_TYPE = ‘TABLE’ order by t.bytes desc;

3.2、查询某个模式/用户下表的记录数:
l 此sql查询前需收集表的统计信息 (LAST_ANALYZED字段在DM8新版本中支持):

select t.owner, t.table_name, t.tablespace_name, t.num_rows, t.last_analyzed from dba_tables t where t.owner = ‘DMHR’ – 用户/模式名 order by t.num_rows desc;

3.3、修改表的存储空间(表空间):
l 修改表的存储空间是DM8数据库的新特性;如果某张表存储的表空间已满,可以将表的存储空间(表空间)转移到另一个表空间下。如下将T_EMP迁移到MAIN表空间(注意:不要在业务繁忙时间操作;DM8表转移表空间不会导致索引失效,因此不需要手工重建该表上的索引)。

alter table t_emp move tablespace main;

3.4、查看表字段信息:
l 如果要查看表的列详细信息,比如列名、列类型、是否非空、列默认值等信息,可查询如下数据字典:

select t.TABLE_NAME, t.COLUMN_NAME, t.COLUMN_ID, t.DATA_TYPE, t.DATA_LENGTH, t.DATA_PRECISION, t.DATA_SCALE, t.NULLABLE, t.DATA_DEFAULT from user_tab_columns t where t.TABLE_NAME = ‘EMPLOYEE’ – 表名 order by t.COLUMN_ID;

四、索引相关
4.1、某用户索引占用空间大小排序:
l 表越大,其表上索引空间占用也越大,使用如下sql可以查看索引的空间占用大小:

select t.segment_name, t.segment_type, t.tablespace_name, t.bytes, t.bytes/1024 byte_kb, t.bytes/1024 byte_mb from user_segments t where t.segment_type = ‘INDEX’ order by t.bytes desc;

4.2、查看索引信息:
l 查看某张表上的索引信息:

select t.INDEX_NAME, t.TABLE_OWNER, t.INDEX_TYPE, t.TABLE_NAME, t.UNIQUENESS, t.TABLESPACE_NAME from user_indexes t where t.TABLE_NAME = ‘DEPARTMENT’; – 表名

l 查询某张表的索引列信息:

select * from user_ind_columns twhere t.table_name =‘EMPLOYEE’; – 表名

4.3、开启/关闭索引监控:
l DM8新版本支持索引监控的功能,可以单独对某个索引开启监控,监控一段时间后,如果系统用到该索引,则索引可保留,如果索引没有使用,则可以考虑删除该索引。执行如下语句打开DMHR模式下ix_emp_empid索引的监控功能:

alter index dmhr.ix_emp_empid monitoring usage;

l 开启索引监控后,查询动态视图v$object_usage,可以看到索引的监控信息。其中,USED字段表示索引是否使用,YES表示已使用,NO表示未使用。

select * from v$object_usage;

l 索引开启监控一段时间后,可关闭其监控,避免不必要的性能消耗:

alter index dmhr.ix_emp_empid nomonitoring usage;

一、数据库对象信息

1.1、查询数据库中动态视图:

DM8新版本动态视图信息保存在v$dynamic_tables中,查询该视图可以获取所有动态视图:

select * from v$dynamic_tables a;

可以使用名称模糊匹配要查找的动态视图信息,比如使用如下语句查询备份相关动态视图:

select * from v d y n a m i c t a b l e s t w h e r e t . n a m e l i k e ′ V dynamic_tables t where t.name like 'V dynamictablestwheret.namelikeVBACKUP%';

1.2、查询系统函数:
DM提供v$ifun视图可查询数据库中的系统函数:

select * from v$ifun t;

如果要获取系统函数的参数信息可查询v$ifun_args:

select a.name, b.* from v i f u n a , v ifun a, v ifuna,vifun_arg b where a.id = b.id and a.name like ‘SF_ARCHIVELOG_%’; --系统函数名

1.3、查询函数/存储过程/包源码信息:
查看某个PACKAGE包(例如P_TEST)的源码信息,可以使用下列语句查询:

select * from DBA_SOURCE t where name = ‘P_TEST’; --查询对象名

二、对象依赖关系

2.1、查询某张表/视图被哪些对象依赖:
在我们清理某张表或修改某张表时,想要了解这张表对哪些视图或对象有影响,可以使用语句查询。

select a.owner, a.name, a.type from dba_dependencies awhere a.referenced_name =‘P_TEST’; --查询的依赖对象

2.2、查询某对象依赖哪些表/视图等对象:
查看某个PACKAGE包(例如DBMS_METADATA)用到了哪些表、视图、包、同义词等,可以使用下列语句查询:

SELECT a.referenced_owner, a.referenced_name, a.referenced_type, a.referenced_link_name FROM dba_dependencies aWHERE a.NAME =‘DBMS_METADATA’ --查询的依赖对象 and a.type = ‘PACKAGE’; --查询的依赖对象类型

三、用户相关信息查询
3.1、查询所有用户信息
查询系统中所有用户信息(包含用户默认表空间、索引表空间等,用户状态等):

select t.username, t.user_id, t.account_status, t.default_tablespace, t.default_index_tablespace, t.password_versions from dba_users t;

查询系统中用户资源限制信息(包含用户最大登录失败次数、密码有效期、会话连接限制等):

select b.USERNAME, a.* from sysusers a,dba_users b where a.id = b.user_id;

3.2、管理用户资源限制
资源限制用于限制用户对DM数据库系统资源的使用。DM8新版本支持创建或修改用户时直接使用limit <资源设置>语句和创建PROFILE(兼容Oracle)的方式设置资源设置项。

比如使用limit语句直接修改HR用户的最大登录失败次数为5次,密码输入错误超过5次将锁定3分钟:

alter user hr limit failed_login_attemps 5, password_lock_time 3;

DM8新版本支持使用PROFILE设置资源设置项,命令参考如下:

create profile profile1 limit failed_login_attemps 5, password_lock_time 3; alter user hr profile profile1;

3.3、用户锁定/解锁

默认情况下,DM数据库用户密码输入错误超过3次,用户即会被锁定。

查询系统中锁定的用户及对应的锁定时间:

select t.username, t.user_id, t.account_status, t.lock_date from dba_users t where t.account_status = ‘LOCKED’;

对于被锁定的用户,可以使用SYSDBA或者具有alter user权限的用户解锁。

alter user hruser ACCOUNT UNLOCK; --解锁用户alter user hruser ACCOUNT LOCK; --锁定某用户

3.4、用户密码策略
DM普通版本只支持设置系统的口令测试,安全版本可以支持设置用户的口令策略。系统的口令策略由参数PWD_POLICY指定,其参数值说明如下,可组合设置。

使用如下命令可以设置系统口令策略,比如修改为1+2+4+8=15(包含大写字母、数字、且口令与用户名不同,且长度不小于9),不需要重启数据库即可生效。

alter system set ‘PWD_POLICY’=15 both;

四、权限相关
4.1、当前用户权限:
查询当前用户拥有的权限:

select * from SESSION_PRIVS;

4.2、角色信息:
查询数据库中角色信息:

select * from dba_roles;

4.3、用户/角色权限:
查看某用户/角色拥有的系统权限信息:

select * from dba_sys_privs t where t.GRANTEE= ‘HRTEST’; – 用户/角色名或者使用该用户登录,直接查询user_sys_privs。select * from user_sys_privs t;

查看某用户/角色拥有的对象权限信息:

select * from dba_tab_privs t where t.GRANTEE= ‘HRTEST’; – 用户/角色名

或者使用该用户登录,直接查询user_tab_privs。

查看某用户/角色拥有的角色权限信息:

select * from dba_role_privs t where t.GRANTEE= ‘HRTEST’; – 用户/角色名

或者使用该用户登录,直接查询user_role_privs。

查看某用户/角色拥有的列权限信息:

select * from dba_col_privs t where t.GRANTEE= ‘HRTEST’; – 用户/角色名

或者使用该用户登录,直接查询user_col_privs。

五、归档日志/备份文件管理
5.1、归档日志文件查询
select * from v$arch_file t;

或:

select * from v$archived_log t;

5.2、归档日志文件删除
删除N天前的归档日志文件(这里以十天为例):

select sf_archivelog_delete_before_time(trunc(sysdate) -10);

删除指定LSN之前的归档日志文件(LSN在归档日志中可查询到):

select SF_ARCHIVELOG_DELETE_BEFORE_LSN(33769);

5.3、备份信息查询
DM数据库备份时如果没有指定备份集路径,则备份集保存至数据库默认备份路径下,默认备份路径由参数BAK_PATH指定:

select * from v$parameter t where name = ‘BAK_PATH’;

查询数据库中的备份信息(默认查询数据库默认备份路径下的备份信息):

select * from v$backupset;

该视图不包含备份集的数据库魔数信息,如果要查询数据库魔数信息,可查询如下视图:

select * from v$backupset_dbinfo;

如果要查询其他目录下的备份集,需要添加备份目录,使用如下语句添加/dm8/backup目录(只针对当前会话生效):

select sf_bakset_backup_dir_add(‘DISK’, ‘/dm8/backup’);

5.4、备份文件删除
批量删除30天前的备份文件。

select sf_bakset_remove_batch (‘DISK’,sysdate-30,null,null);

更多备份相关函数可查询v$ifun视图:

select * from v$ifun t where t.name like ‘SF_BAKSET%’;

awr报告生成
使用方法:
1、启用系统包和AWR包:
CALL SP_INIT_AWR_SYS(1);
CALL SP_CREATE_SYSTEM_PACKAGES(1);
2、查询AWR快照:
select * from SYS.WRM S N A P S H O T ; 3 、 清 理 之 前 的 所 有 快 照 记 录 C A L L D B M S W O R K L O A D R E P O S I T O R Y . A W R C L E A R H I S T O R Y ( ) ; 4 、 设 置 快 照 间 隔 , 如 果 不 设 置 快 照 间 隔 , 手 动 执 行 快 照 后 S Y S . W R M _SNAPSHOT; 3、清理之前的所有快照记录 CALL DBMS_WORKLOAD_REPOSITORY.AWR_CLEAR_HISTORY(); 4、设置快照间隔,如果不设置快照间隔,手动执行快照后SYS.WRM SNAPSHOT;3CALLDBMSWORKLOADREPOSITORY.AWRCLEARHISTORY();4SYS.WRM_SNAPSHOT视图中没有记录:
CALL DBMS_WORKLOAD_REPOSITORY.AWR_SET_INTERVAL(60);
#每60分钟生成一次快照
5、可在两个时间点分别手动创建快照,或者等待系统自动生成:手动创建快照:
CALL DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();
6、查询AWR快照:
SELECT * FROM SYS.WRM$_SNAPSHOT;
7、创建AWR报告,
SYS.AWR_REPORT_HTML(快照ID1,快照ID2,‘AWR报告存放路径’,‘AWR报告名称.HTLM’);:
例如:SYS.AWR_REPORT_HTML(1,2,‘/home/dmdba’,‘AWR1.HTML’);
8、AWR报告生成后关闭AWR包CALL SP_INIT_AWR_SYS(0);
例1删除id在22~32之间的snapshot。
CALL DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(22,32);
例2修改snapshot的间隔时间为30分钟、保留时间为1天。
CALL DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(1440,30);
查询设置后快照参数。
SELECT * FROM SYS.WRM$_WR_CONTROL;
例3 创建一次snapshot。
CALL DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();
例4 清理全部snapshot。
CALL DBMS_WORKLOAD_REPOSITORY.AWR_CLEAR_HISTORY();
例5 设置snapshot的间隔为10分钟。
CALL DBMS_WORKLOAD_REPOSITORY.AWR_SET_INTERVAL(10);

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值