栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

达梦数据库学习笔记

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

达梦数据库学习笔记

操作系统 银河麒麟 V10 数据库 DM8 企业版 VMware workstation 15 Pro

1.安装前注意检查一下空间,看看/tmp的空间是否大于2G

否则修改/etc/fstab添加:

tmpfs /tmp tmpfs defaults,size=2G 0 0

2.新建操作系统和数据库用户的时候尽量不要使用特殊字符@,不然在登录的时候很麻烦;

3.新建数据库步骤:

查看内存

[root@KylinDCA03 opt]# free -m

查看磁盘空间

[root@KylinDCA03 opt]# df -h

查看/tmp 空间,/tmp 建议至少 1.5G 以上

[root@KylinDCA03 opt]# df -h /tmp

1、规划安装用户和用户组:

[root@KylinDCA03 opt]# groupadd dinstall

[root@KylinDCA03 opt]# useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba

[root@KylinDCA03 opt]# passwd dmdba

更改用户 dmdba 的密码 。

新的 密码:

重新输入新的 密码:

passwd:所有的身份验证令牌已经成功更新。

1. 创建安装用户组 dinstall。

groupadd -g 12349 dinstall

2. 创建安装用户 dmdba。

useradd -u 12345 -g dinstall -m -d /home/dmdba -s /bin/bash dmdba

3. 初始化用户密码。

passwd dmdba

4. 之后通过系统提示进行密码设置。

2、规划安装目录:

创建安装目录/dm8,并修改安装目录的所属组给 dmdba 用户和该用户所属组

[root@KylinDCA03 opt]# mkdir /dm8

[root@KylinDCA03 opt]# ls -ld /dm8

drwxr-xr-x 2 root root 6 12 月 20 18:50 /dm8

[root@KylinDCA03 opt]# chown dmdba:dinstall /dm8

[root@KylinDCA03 opt]# ls -ld /dm8

drwxr-xr-x 2 dmdba dinstall 6 12 月 20 18:50 /dm8

3、挂载 iso 镜像文件:

[root@KylinDCA03 opt]# mkdir /mnt/dm

[root@KylinDCA03 opt]# mount /opt/dm8_20210818_x86_rh6_64_ent_8.4.2.18_pack14.iso /mnt/dm

mount: /mnt/dm: WARNING: source write-protected, mounted read-only.

[root@KylinDCA03 opt]# su - dmdba

[dmdba@KylinDCA03 ~]$ cd /mnt/dm

[dmdba@KylinDCA03 dm]$ l

1、设置图形化界面:

(1)第一次启动虚拟机,执行下 xhost +

[root@KylinDCA03 桌面]# xhost +

(2)查看 root 用户的 DISPLAY 变量值

[root@KylinDCA03 桌面]# echo $DISPLAY

:0.0

(3)切换 dmdba 用户

[root@KylinDCA03 桌面]# su - dmdba

(4)设置 dmdba 用户的 DISPLAY 变量值为步骤(1)中的值(仅对当前会话生效)

[dmdba@KylinDCA03 ~]$ export DISPLAY=:0.0

[dmdba@KylinDCA03 ~]$ cd /mnt/dm

[dmdba@KylinDCA03 dm]$ ll

总用量 739440

-r-xr-xr-x 1 root root 2784248 8 月 23 14:36 'DM8 Install.pdf'

-r-xr-xr-x 1 root root 754402133 8 月 23 14:40 DMInstall.bin

2、图形化界面方式安装 DM 数据库

[dmdba@KylinDCA03 dm]$ ./DMInstall.bin

修改参数:vim /etc/security/limits.conf

dmdba soft nofile 102400

dmdba hard nofile 204800

root soft nofile 102400

root hard nofile 204800

3、图形化界面安装全部按照默认安装即可,注意最后root用户执行3个脚本;

4、启动关闭数据库:

systemctl start|status|stop|enable|disable DmServiceDMSERVER    --注意使用root用户

[dmdba@localhost bin]$ ./dmserver /dm8/data/DAMENG/dm.ini --注意使用的是dadba用户

[dmdba@localhost bin]$ ./DmServiceDMSERVER stop --注意使用的是dadba用户

4、备份还原:

使用/dm8/tool/console打开DM控制台工具,这个图形化界面备份还原应该是需要在脱机状态下。

使用dm8脱机还原数据库时需要更新dm_magic,不然会报错:

Instance DMSERVER startup failed, execute 'recover database ... update db_magic' in dmrman

解决方法:

[dmdba@localhost bin]$ ./dmrman

dmrman V8

RMAN> recover database ‘/opt/dmdbms/data/DAMENG1/dm.ini’ update db_magic^[[D^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^C

[dmdba@localhost bin]$ ./dmrman

dmrman V8

RMAN> recover database '/dm8/data/DAMENG/dm.ini' update db_magic;

recover database '/dm8/data/DAMENG/dm.ini' update db_magic;

file dm.key not found, use default license!

Database mode = 0, oguid = 0

Normal of FAST

Normal of DEFAULT

Normal of RECYCLE

Normal of KEEP

Normal of ROLL

EP[0]'s cur_lsn[30861], file_lsn[30861]

recover successfully!

time used: 00:00:01.703

RMAN> exit

time used: 1.400(ms)

[dmdba@localhost bin]$ ./DmServiceDMSERVER start

Starting DmServiceDMSERVER:                                [ OK ]

[dmdba@localhost bin]$ ./DmServiceDMSERVER status

DmServiceDMSERVER (pid 26538) is running.

----------------------------------

select的相关使用:

内连接案例:

select a.DEPARTMENT_ID, b.DEPARTMENT_NAME, count(*) as empnum

 from dmhr.employee a, dmhr.DEPARTMENT b

where a.DEPARTMENT_ID = b.DEPARTMENT_ID

 group by a.DEPARTMENT_ID, b.DEPARTMENT_NAME

 having count(*) >=30

 order by empnum desc;

select a.DEPARTMENT_ID, b.DEPARTMENT_NAME, count(*) as empnum

 from dmhr.employee a join dmhr.DEPARTMENT b

 on a.DEPARTMENT_ID = b.DEPARTMENT_ID

group by a.DEPARTMENT_ID, b.DEPARTMENT_NAME

having count(*) >=30

 order by empnum desc;

 DM 支持执行计划的清理和绑定:

select * from v$ifun t where name like '%PLN%'; 

select t.name, b.* from v$ifun t, SYS."V$IFUN_ARG" B

where t.name like '%SP_CLEAR_PLAN_CACHE%'

and t.id = b.id;

SP_CLEAR_PLAN_CACHE(PLAN_ID); --清理执行计划

--SP_SET_PLN_BINDED --绑定执行计划

共享内存:

一般情况下,很

多需要内存分配的地方都是从该池分配,如果需要的内存大于配置值(MEMORY_POOL),共享内

存池也可进行自动扩展,INI 参数 MEMORY_EXTENT_SIZE 指定了共享内存池每次扩展的大

小,参数 MEMORY_TARGET 则指定了共享内存池能扩展到的最大大小.

select * from V$mem_pool;

select name, type, value, sys_value, file_value from v$parameter t

where name like 'MEMORY%';

查看数据库进程:

[dmdba@KylinDCA03 DM]$ ps -ef|grep dmserver

dmdba 1750 1 0 10:33 ? 00:00:03 /dm8/bin/dmserver 

/dm8/data/DM/dm.ini -noconsole

dmdba 1756 1 0 10:33 ? 00:00:02 /dm8/bin/dmserver 

/dm8/data/DMTEST/dm.ini -noconsole

dmdba 4175 3624 0 11:59 pts/2 00:00:00 grep dmserver

查看数据库对应的线程:

[dmdba@KylinDCA03 DM]$ ps -T -p 1750

 PID SPID TTY TIME CMD

 1750 1750 ? 00:00:01 dmserver

 1750 1877 ? 00:00:00 dm_quit_thd

 1750 1882 ? 00:00:00 dm_io_thd

 1750 1883 ? 00:00:00 dm_io_thd

 1750 1884 ? 00:00:00 dm_io_thd

 1750 1885 ? 00:00:00 dm_io_thd

 1750 2070 ? 00:00:00 dm_chkpnt_thd

动态视图:

select * from V$process; --进程

select * from v$threads; --线程

工作线程 

DM 的核心线程;默认 16 个工作线程。

表空间管理,把公司的那几个语句拿下来试试

DM 中临时表空间由参数 TEMP_SIZE 指定。

select name, value, type from v$parameter t where name like 'TEMP%';

修改临时表空间的初始大小:

alter system set 'TEMP_SIZE'=100 spfile;

收缩 TEMP 表空间的方法:

1、 重启数据库,TEMP 表空间数据文件会重建。

2、 在线收缩临时表空间使用 SP_TRUNC_TS_FILE 函数。

使用 create tablespace 语句创建表空间:

create tablespace tbs DATAFILE 'TBS01.DBF' size 32;--注意dm中size之后跟的是兆,不能跟单位,默认最小应该是16M

DM 数据文件大小,最大值不能低于页大小的 4096 倍(如果页大小是 8K,最小值将不

低于 32M),最大值为页大小的 2 的 31 次方-1(如果页大小是 8K,最大值为 16T-1)。

对应 DDL 语句:

create tablespace "TBSTEST" datafile '/dm8/data/DM/TBS/TBSTEST01.DBF' size 64 

autoextend on next 2 maxsize 10240, '/dm8/data/DM/TBS/TBSTEST02.DBF' size 64 autoextend 

on next 2 maxsize 10240 CACHE = NORMAL;

修改表空间

修改表空间添加数据文件:

alter TABLESPACE tbs add DATAFILE 'TBS02.DBF' size 128 AUTOEXTEND on NEXT 2 

MAXSIZE 20480;

修改表空间数据文件的扩展属性:

alter tablespace tbs DATAFILE 'TBS01.DBF' AUTOEXTEND on NEXT 2 MAXSIZE

20480;

alter tablespace tbs DATAFILE 'TBS01.DBF' AUTOEXTEND off;

修改表空间数据文件的大小:

alter tablespace tbs RESIZE DATAFILE 'TBS01.DBF' TO 128;

迁移表空间数据文件

alter tablespace tbs offline;

alter TABLESPACE tbs RENAME DATAFILE 'TBS01.DBF' TO

'/dm8/data/DM/TBS/TBS01.DBF';

53 / 100

alter TABLESPACE tbs RENAME DATAFILE 'TBS02.DBF' TO

'/dm8/data/DM/TBS/TBS02.DBF';

alter tablespace tbs online;

联机日志数据字典:

select * from v$rlogfile;

select * from v$rlog; --cur_file表示正在使用的联机日志

修改联机日志文件大小

alter database RESIZE LOGFILE '/dm8/data/DM/DM01.log' TO 300;

alter database RESIZE LOGFILE '/dm8/data/DM/DM02.log' TO 300;

54 / 100

添加联机日志文件

alter DATABASE ADD LOGFILE '/dm8/data/DM/DM03.log' SIZE 300;

修改联机日志文件路径(迁移联机日志文件)

alter database mount;

alter database RENAME LOGFILE 'DM01.log' TO '/dm8/data/DM/REDO/DM01.log';

alter database RENAME LOGFILE 'DM02.log' TO '/dm8/data/DM/REDO/DM02.log';

alter database RENAME LOGFILE 'DM03.log' TO '/dm8/data/DM/REDO/DM03.log';

alter database open;

SQL 开启归档

SQL> alter database mount;

操作已执行

已用时间: 368.463(毫秒). 执行号:0.

SQL> alter database archivelog;

操作已执行

已用时间: 3.729(毫秒). 执行号:0.

SQL> select arch_mode from v$database;

行号 ARCH_MODE

---------- ---------

1 Y

添加归档日志:

SQL> alter database add archivelog 'type=local,dest=/dm8/arch,file_size=64,space_limit=10240';

操作已执行

已用时间: 0.966(毫秒). 执行号:0.

SQL> alter database open;

操作已执行

已用时间: 324.410(毫秒). 执行号:0.

SQL> select * from v$dm_arch_ini;

SQL 关闭归档

SQL> alter database mount;

操作已执行

已用时间: 438.355(毫秒). 执行号:0.

SQL> alter database noarchivelog;

操作已执行

已用时间: 41.445(毫秒). 执行号:0.

SQL> alter database delete archivelog 'type=local,dest=/dm8/arch';

操作已执行

已用时间: 0.519(毫秒). 执行号:0.

SQL> alter database open;

操作已执行

已用时间: 322.559(毫秒). 执行号:0.

SQL> select arch_mode from v$database;

56 / 100

行号 ARCH_MODE

---------- ---------

1 N

已用时间: 0.654(毫秒). 执行号:714.

归档日志文件的切换和删除

数据库自动完成归档的切换,DM 支持手工切换归档;

alter SYSTEM ARCHIVE LOG CURRENT;

alter SYSTEM SWITCH LOGFILE;

alter DATABASE ARCHIVELOG CURRENT;

归档文件的删除:

select * from v$ifun t where name like 'SF_ARCHIVELOG_%';

SF_ARCHIVELOG_DELETe_BEFORE_LSN

58 / 100

针对业务繁忙期间,出现磁盘 IO 不定时繁忙的情况。

因为配置了归档的空间上限(归档达到此上限),生成新的归档日志前删除旧的归档日志文

件。

配置 JOB 作业,在业务空间期定时清理 N 天之前的归档文件。

系统口令策略

PWD_POLICY 参数指定系统的口令策略,默认为 2;

系统支持的口令策略有:

⚫ 0 无策略

⚫ 1 禁止与用户名相同

⚫ 2 口令长度不小于 9

⚫ 4 至少包含一个大写字母(A-Z)

⚫ 8 至少包含一个数字(0-9)

⚫ 16 至少包含一个标点符号(英文输入法状态下,除“和空格外的所有符号)

口令策略可单独应用,也可组合应用。组合应用时,如需要应用策略 2 和 4,则设置口

令策略为 2+4=6 即可。

select * from v$parameter t where t.name = 'PWD_POLICY';

create user hr IDENTIFIED by dameng123;

修改系统口令策略:

alter SYSTEM set 'PWD_POLICY' = 15 BOTH

创建用户

create user hrtest IDENTIFIED by Dameng123 DEFAULT TABLESPACE TBSTEST;

用户锁定和解锁:

alter user hr ACCOUNT UNLOCK;

alter user hr ACCOUNT LOCK;

修改用户的默认表空间:

alter user hr DEFAULT TABLESPACE dmtbs;

修改用户密码:

alter user hrtest IDENTIFIED by "Dameng@123";

删除用户:

drop user if EXISTS hr;

drop user if EXISTS hr CASCADE; --生成环境慎用

密码带有特殊字符的登录处理

[dmdba@KylinDCA03 ~]$ disql hrtest/'"Dameng@123"'

查看当前用户拥有的权限:

select * from session_privs;

权限的回收:

SQL> revoke select on dmhr.employee from hrtest;

SQL> revoke create table from hrtest;

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;

模式管理

--创建模式

create schema hrtest01 AUTHORIZATION HRTEST;

create table hrtest01.t_test(id int, name varchar(20));

--查看当前模式和当前用户

select sys_context('USERENV','CURRENT_SCHEMA');

select sys_context('USERENV','CURRENT_USER');

--切换模式(仅对当前会话生效)

set SCHEMA dmhr;

数据的导入

DM 在 DISQL 下用 start 或`都可以, Oracle 用@:

SQL> start /dm8/backup/dts/t_department.sql

SQL> `/dm8/backup/dts/t_department.sql

可以关闭回显以提高导入效率:

SQL> set TIMING off;

SQL> set FEEDback off;

SQL> set echo off;

SQL 管理索引

explain select * from hrtest.t_emp01 t where T.EMPLOYEE_NAME = '马学铭';

create index ix_emp01_employeename ON HRTEST.T_EMP01(EMPLOYEE_NAME);

统计信息的收集:

dbms_stats.gather_table_stats('HRTEST','T_EMP01');

统计信息的查看:

dbms_stats.table_stats_show('HRTEST','T_EMP01');

dbms_stats.index_stats_show('HRTEST','IX_EMP01_EMPLOYEENAME'); 

索引的监控:

alter index HRTEST.IX_EMP01_EMPLOYEENAME MONITORING USAGE; --开启索引监控

alter index HRTEST.IX_EMP01_EMPLOYEENAME NOMONITORING USAGE; --关闭索引监控

select * from v$object_usage;

索引的重建(生产环境建议使用 online 方式重建,不影响表的 DML 操作):

alter index HRTEST.IX_EMP01_EMPLOYEENAME rebuild ONLINE;

索引的数据字典:

select * from dba_indexes t where t.OWNER ='HRTEST';

select * from dba_ind_columns t where t.index_OWNER ='HRTEST';

删除索引:

drop index HRTEST.ix_emp01_employeename;

备份数据库

backup database; --全量备份

backup database increment; --增量备份

backup database full to ONLINEBAK_01 backupset

'/dm8/backup/full/ONLINEBAK_01';

backup database increment BASE ON BACKUPSET 

'/dm8/backup/full/ONLINEBAK_01' to ONLINEBAKINCR_01 

backupset '/dm8/backup/incr/ONLINEBAK_01' ;

backup database increment with BACKUPDIR '/dm8/backup/full/' to

ONLINEBAKINCR_02 backupset '/dm8/backup/incr/ONLINEBAK_02' ;

表空间备份

backup tablespace dmtbs;

backup tablespace dmtbs INCREMENT with BACKUPDIR '/dm8/backup/full/' to

DMTBSINCR_01 backupset '/dm8/backup/incr/DMTBSINCR_01' ;

表和归档的备份

backup table dmhr.employee; --表的备份

backup ARCHIVELOG all; --归档备份

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/844305.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号