Linux教程

LINUX系统下DM企业版的使用

本文主要是介绍LINUX系统下DM企业版的使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、DM8企业版安装

图形化安装

设置图形化:(第一次开机登录,需要执行 xhost +)

[root@localhost ~]# xhost +

[root@localhost ~]# su - dmdba

上一次登录: 三 8 月 24 11:25:37 CST 2022 pts/0 上

[dmdba@localhost ~]$ echo $DISPLAY

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

[dmdba@localhost ~]$ echo $DISPLAY

:0.0

执行安装命令:

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

[dmdba@localhost dm]$ ll

总用量 931825

-r-xr-xr-x 1 root root 2802237 5 月 25 15:31 'DM8 Install.pdf'

-r-xr-xr-x 1 root root 951385360 5 月 25 15:37 DMInstall.bin

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

 

二、创建数据库及数据库实例管理

DBCA 数据库配置助手

进入数据库安装目录 tool 下,执行 dbca.sh

[dmdba@localhost dm]$ cd /dm8/tool

[dmdba@localhost tool]$ ./dbca.sh

 

 

 

 

 

按照图形化操作教程后

 

执行命令

[root@localhost tmp]# mv

/dm8/bin/DmServiceDMOASERVER.service

/usr/lib/systemd/system/DmServiceDMOASERVER.service

[root@localhost tmp]# systemctl enable DmServiceDMOASERVER.service

[root@localhost tmp]# systemctl start DmServiceDMOASERVER.service 

 

执行以下命令注册数据库服务

[root@localhost root]# ./dm_service_installer.sh -t dmserver -p DMOASERVER -dm_ini

/dm8/data/DMOA/dm.ini

Created symlink /etc/systemd/system/multi-user.target.wants/DmServiceDMOASERVER.service

→ /usr/lib/systemd/system/DmServiceDMOASERVER.service.

创建服务(DmServiceDMOASERVER)完成

[root@localhost root]# ./dm_service_uninstaller.sh -h

Usage: dm_service_uninstaller.sh [-n service_name]

-n 服务名,删除指定服务

-h 帮助

[root@localhost root]# ./dm_service_uninstaller.sh -n DmServiceDMOASERVER

是否删除服务(DmServiceDMOASERVER)?(Y/y:是 N/n:否): y

Removed /etc/systemd/system/multi-user.target.wants/DmServiceDMOASERVER.service.

删除服务文件(/usr/lib/systemd/system/DmServiceDMOASERVER.service)完成

删除服务(DmServiceDMOASERVER)完成

 

使用disql 命令行方式连接数据库

[dmdba@localhost bin]$ ./disql sysdba/SYSDBA:5236

[dmdba@localhost bin]$ ./disql sysdba/SYSDBA@192.168.88.4:5236服务器[192.168.88.4:5236]:处于普通打开状态

登录使用时间 : 15.096(ms)

disql V8

SQL> exit

 

root 用户管理数据库:

(1) linux 服务管理方式(systemctl 命令)

[root@localhost data]# systemctl start DmServiceDMOASERVER.service

[root@localhost data]# systemctl status DmServiceDMOASERVER.service

[root@localhost data]# systemctl restart DmServiceDMOASERVER.service

[root@localhost data]# systemctl stop DmServiceDMOASERVER.service

 

dmdba 用户管理数据库:

(1) DmServiceDMSERVER(DMSERVER 为实例名)文件启动

(注意:此启动方式不会更新 DM 服务查看器)。

[dmdba@localhost ~]$ ./DmServiceDMSERVER status

DmServiceDMSERVER (pid 42522) is running.[dmdba@localhost ~]$ ./DmServiceDMSERVER stop

Stopping DmServiceDMSERVER: [ OK ]

[dmdba@localhost ~]$ ./DmServiceDMSERVER status

DmServiceDMSERVER is stopped

[dmdba@localhost ~]$ ./DmServiceDMSERVER start

可以启动数据库到 mount 状态:

[dmdba@localhost ~]$ ./DmServiceDMSERVER start mount

2) dmserver 前台启动方式(不管是否注册 linux 服务都可以使用)

dmserver 不管是否注册 linux 服务都可以使用,其他方式只适用于注册 linux 服务的数据库。

可以将数据库启动到 mount 状态。

[dmdba@localhost ~]$ cd /dm8/bin

[dmdba@localhost bin]$ ./dmserver path=/dm8/data/DMOA/dm.ini mount

 

表空间管理

管理数据文件

修改数据文件大小:

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

添加数据文件:

alter tablespace tbs ADD DATAFILE 'TBS02.DBF' SIZE 128 AUTOEXTEND ON NEXT 4

MAXSIZE 10240;

修改数据文扩展尺寸:

alter tablespace tbs DATAFILE 'TBS01.DBF' AUTOEXTEND ON NEXT 4 MAXSIZE 10240;

数据文件的迁移:

alter tablespace tbs offline;

alter tablespace tbs RENAME DATAFILE 'TBS01.DBF'

to '/dm8/data/DAMENG/TBS/TBS01.DBF';

alter tablespace tbs RENAME DATAFILE 'TBS02.DBF'

to '/dm8/data/DAMENG/TBS/TBS02.DBF';

alter tablespace tbs online;

 

管理重做日志文件

What?重做日志文件用于保存 redo 日志。包含联机日志文件和归档日志文件(开归档时才

会产生)。联机日志文件是循环使用,内容不断覆盖。

Why?联机日志文件用于故障重启的数据恢复。归档日志文件主要用于数据库还原与恢复。

When?如果业务数据量大,可以将联机日志设置的更大,或者添加联机日志文件。如果业

务数据量大,而联机日志过小,会造成频繁的日志切换,频繁的日志切换会降低数据库的性

能。达梦联机日志由数据库自动切换。

how?alter database add/resize/rename logfile

数据字典:

select * from "V$RLOGFILE";

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

添加联机日志文件:alter DATABASE add LOGFILE 'DAMENG03.log' size 256;

修改联机日志文件大小:

alter database resize LOGFILE 'DAMENG03.log' to 300;

迁移联机日志文件:

alter database mount;

alter database RENAME LOGFILE 'DAMENG03.log'

to '/dm8/data/DAMENG/REDO/DAMENG03.log';

alter database RENAME LOGFILE 'DAMENG02.log'

to '/dm8/data/DAMENG/REDO/DAMENG02.log';

alter database RENAME LOGFILE 'DAMENG01.log'

to '/dm8/data/DAMENG/REDO/DAMENG01.log';

alter database open;

 

归档管理

What?归档是什么,归档是对重做日志 redo 信息的归档。数据库默认运行在非归档模式下,

开启归档可以更好的保证数据的安全性。

Why?用于数据库的还原与恢复。

比如,昨天凌晨数据库备份,今天下午 14:00 故障,

利用备份可以还原和恢复到昨天备份的时间点,利用归档可以恢复到故障的前一刻(完全恢

复)或者任意的时间点(不完全恢复)。

When?生产环境不能接受数据丢失都应该开归档。

how?SQL 方式/图形化界面/修改配置文件

(1) SQL 方式

select arch_mode from v$database;

开启归档:

alter database mount;

alter database ARCHIVELOG;

alter database add ARCHIVELOG 'type=local, dest=/dm8/arch,

file_size=64,space_limit=10240';alter database open;

查看归档配置:

select * from "V$DM_ARCH_INI";

关闭归档:

alter database mount;

alter database NOARCHIVELOG;

alter database delete ARCHIVELOG 'type=local, dest=/dm8/arch,

file_size=64,space_limit=10240';

alter database open;

管理模式 模式与用户之间的关系: 当系统建立一个用户时,会自动生成一个对应的模式 用户还可以建立其他模式 [dmdba@localhost DAMENG]$ disql dmtest/dameng123 服务器[LOCALHOST:5236]:处于普通打开状态 登录使用时间 : 2.765(ms) disql V8 SQL> create table t_test(id int); 操作已执行 已用时间: 7.118(毫秒). 执行号:1100. SQL> select sys_context('USERENV','CURRENT_SCHEMA'); 行号 SYS_CONTEXT('USERENV','CURRENT_SCHEMA') ---------- --------------------------------------- 1 DMTEST 已用时间: 1.218(毫秒). 执行号:1101. SQL> select user; 行号 USER() ---------- ------ 1 DMTEST create SCHEMA DMTES01 AUTHORIZATION dmtest; select * from SYS.SYSOBJECTS t where t."TYPE$" ='SCH'; select a.id schid, a.name schname, a."TYPE$", b.id userid, b.name, b."TYPE$" username from SYSOBJECTS a, SYSOBJECTS b where a."TYPE$" ='SCH' and a.pid = b.id; SQL> create table dmtes01.t_test01(id int); 操作已执行 已用时间: 4.300(毫秒). 执行号:1103. SQL> select * from dmtes01.t_test01; SQL> set schema dmtes01; 操作已执行 已用时间: 0.665(毫秒). 执行号:0. SQL> create table t_test(id int); 操作已执行 已用时间: 7.915(毫秒). 执行号:919. SQL> select table_name, owner from all_tables; 用户默认模式不能删除,模式下有对象时不能直接删除(可以增加 cascade 级联删除用户模 式及模式下对象,生产环境慎用 cascade,防治误删) drop schema DMTES01 CASCADE; drop SCHEMA dmtest;  管理表 DM 中的表默认是索引组织表。Oracle 默认是堆表。 两者的区别和优势: (1) 索引组织表数据是有序的,有且仅有一个聚簇索引键,数据按照聚簇索引键排序。 插入有序;创建表时可以指定聚簇索引键,如果不指定,默认 ROWID 为聚簇索引 键,索引组织表 rowid 是逻辑 rowid,占用存储空间,所以索引组织表占用更大空间。 DM 中 老 的 版 本 创 建 表 时 指 定 主 键 , 则 主 键 是 聚 簇 索 引 键 ( 由 参 数 PK_WITH_CLUSTER) SQL> select name, value, type from v$parameter t where t.name like '%PK_WITH%';行号 NAME VALUE TYPE ---------- --------------- ----- ------- 1 PK_WITH_CLUSTER 0 SESSION ( 2)堆表数据是无序的,插入无序,所以堆表的插入效率高,并发插入效率也高。堆表的 rowid 是物理 rowid,rowid 不占用存储空间,所以堆表更节约空间。 索引组织表的聚簇索引键的范围查询效率较高。 创建表的方法: create table dmtest.t_testpid (pid int, pname varchar(30), sex bit, email varchar(50)) tablespace tbs; create table t_emp as select * from dmhr.EMPLOYEE; create table t_emp01 like dmhr.EMPLOYEE; create table t_emptab as select * from dmhr.EMPLOYEE where 1=0; 数据导入:oracle 用@,DM 使用 start 或者` SQL> start /dm8/backup/t_emp.sql SQL> `/dm8/backup/t_emp.sql 相关数据字典: select * from dba_tables t where t.OWNER = 'DMTEST'; select * from DBA_tab_COLUMNS t where t.OWNER = 'DMTEST'; 管理约束 约束类型: NOT NULL:非空 UNIQUE:唯一 PRIMARY KEY:一个表只能由一个主键,主键唯一且非空。 FOREIGN KEY:外键引用另一张表的主键或者唯一键。 CHECK:数据检验 alter table dmtest.t_testpid modify pname not null; alter table dmtest.t_testpid ADD CONSTRAINT pk_testpid_pid PRIMARY KEY(pid); alter table dmtest.t_testpid ADD CONSTRAINT uk_testpid_email UNIQUE (email); alter table DMTEST.T_TESTPID add salary int; alter table dmtest.t_testpid ADD CONSTRAINT ck_testpid_salary CHECK(salary>3000); drop table if EXISTS dmtest.t_testchild; create table dmtest.t_testchild ( childid int, childname varchar(20),pid int) TABLESPACE tbs; alter table dmtest.t_testchild ADD CONSTRAINT fk_testchild_pid FOREIGN KEY(pid) REFERENCES dmtest.t_testpid(pid); select * from DBA_CONSTRAINTS t where T.OWNER='DMTEST'; select * from DBA_CONS_COLUMNS t where T.OWNER='DMTEST'; SQL> desc t_testpid; 行号 NAME TYPE$ NULLABLE ---------- ------ ----------- -------- 1 PID INTEGER N 2 PNAME VARCHAR(30) N 3 SEX BIT Y 4 EMAIL VARCHAR(50) Y 5 SALARY INTEGER Y 已用时间: 11.444(毫秒). 执行号:1109. SQL> insert into t_testpid(pid, pname, sex, email, salary) values(1, null, null,null,null); insert into t_testpid(pid, pname, sex, email, salary) values(1, null, null,null,null); [-6609]:违反列[PNAME]非空约束. 已用时间: 2.966(毫秒). 执行号:0. SQL> insert into t_testpid(pid, pname, sex, email, salary) values(1, 'aaa', null,null,null);影响行数 1 已用时间: 0.774(毫秒). 执行号:1111. SQL> insert into t_testpid(pid, pname, sex, email, salary) values(1, 'aaa', null,null,null); insert into t_testpid(pid, pname, sex, email, salary) values(1, 'aaa', null,null,null); [-6602]:违反表[T_TESTPID]唯一性约束. 已用时间: 0.397(毫秒). 执行号:0. SQL> insert into t_testpid(pid, pname, sex, email, salary) values(2, 'aaa', null,null,null); 影响行数 1 已用时间: 0.755(毫秒). 执行号:1113. SQL> insert into t_testpid(pid, pname, sex, email, salary) values(3, 'bbb', null,'123@qq.com',null); 影响行数 1 已用时间: 0.952(毫秒). 执行号:1114. SQL> insert into t_testpid(pid, pname, sex, email, salary) values(4, 'bbb', null,'123@qq.com',null); insert into t_testpid(pid, pname, sex, email, salary) values(4, 'bbb', null,'123@qq.com',null); [-6602]:违反表[T_TESTPID]唯一性约束. 已用时间: 1.029(毫秒). 执行号:0. SQL> insert into t_testpid(pid, pname, sex, email, salary) values(5, 'bbb', null,'123@qq.com',2800); insert into t_testpid(pid, pname, sex, email, salary) values(5, 'bbb', null,'123@qq.com',2800); [-6604]:违反 CHECK 约束[CK_TESTPID_SALARY]. 已用时间: 0.866(毫秒). 执行号:0. SQL> insert into t_testpid(pid, pname, sex, email, salary) values(5, 'bbb', null,'1234@qq.com',3800); 影响行数 1 已用时间: 0.767(毫秒). 执行号:1118. 外键约束检验: SQL> desc t_testchild; 行号 NAME TYPE$ NULLABLE ---------- --------- ----------- -------- 1 CHILDID INTEGER Y 2 CHILDNAME VARCHAR(20) Y 3 PID INTEGER Y 已用时间: 10.823(毫秒). 执行号:1119. SQL> insert into t_testchild(CHILDID, CHILDNAME, PID) values(null, null, 6); insert into t_testchild(CHILDID, CHILDNAME, PID) values(null, null, 6); [-6607]:违反引用约束[FK_TESTCHILD_PID]. 已用时间: 1.024(毫秒). 执行号:0. SQL> insert into t_testchild(CHILDID, CHILDNAME, PID) values(null, null, 5); 影响行数 1SQL> select * from t_testpid; 行号 PID PNAME SEX EMAIL SALARY ---------- ----------- ----- ---- ----------- ----------- 1 1 aaa NULL NULL NULL 2 2 aaa NULL NULL NULL 3 3 bbb NULL 123@qq.com NULL 4 5 bbb NULL 1234@qq.com 3800 已用时间: 0.741(毫秒). 执行号:1122. SQL> insert into t_testchild(CHILDID, CHILDNAME, PID) values(null, null, 4); insert into t_testchild(CHILDID, CHILDNAME, PID) values(null, null, 4); [-6607]:违反引用约束[FK_TESTCHILD_PID]. 已用时间: 0.911(毫秒). 执行号:0. SQL> commit; 操作已执行 已用时间: 1.071(毫秒). 执行号:1124. SQL> delete from t_testpid where pid=5; delete from t_testpid where pid=5; [-6607]:违反引用约束[FK_TESTCHILD_PID]. 已用时间: 0.985(毫秒). 执行号:0. SQL> delete from t_testpid where pid=1; 影响行数 1 已用时间: 1.089(毫秒). 执行号:1126. SQL> select * from t_testchild; 行号 CHILDID CHILDNAME PID ---------- ----------- --------- ----------- 1 NULL NULL 5 已用时间: 0.773(毫秒). 执行号:1127. SQL>
这篇关于LINUX系统下DM企业版的使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!