DM8数据库安装及操作

  1. 安装
    1. 安装用户和用户组:

说明:#:为root账户,$:为普通账号,不推荐使用 root 安装

#groupadd dinstall --添加组
#useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba --添加用户

#passwd dmdba --更改用户 dmdba 的密码

    1. 安装目录

#mkdir /dm8 --新建目录

#ls -ld /dm8

#chown dmdba:dinstall /dm8 --转为普通用户权限

#ls -ld /dm8

    1. 挂载 iso 镜像

#mkdir /mnt/dm

#mount /opt/dm8_20210818_x86_rh6_64_ent_8.4.2.18_pack14.iso /mnt/dm

#su - dmdba

$cd /mnt/dm

安装时报 tmp 不足的解决方法

#mkdir tmp

#chown dmdba:dinstall /opt/tmp

$export DM_INSTALL_TMPDIR=/opt/tmp

    1. 安装 DM 数据库

$./DMInstall.bin -i

请选择安装语言(C/c:中文 E/e:英文) [C/c]:

是否输入 Key 文件路径? (Y/y:N/n:) [Y/y]:n

是否设置时区? (Y/y:N/n:) [Y/y]:

请选择设置时区 [21]:

请选择安装类型的数字序号 [1 典型安装]:

请选择安装目录 [/home/dmdba/dmdbms]:/dm8

是否确认安装路径(/dm8)? (Y/y:N/n:) [Y/y]:y

是否确认安装? (Y/y:N/n:):y

转为root账号:/dm8/script/root/root_installer.sh

  1. 注册数据库

$cd /dm8/tool

$./dbca.sh

如果报如下错误,原因是图形化界面没有设置好,需要设置图形化。

$export DISPLAY=:0.0

$./dbca.sh

界面提示使用 root 用户执行脚本:

#mv /dm8/bin/DmServiceDMSERVER.service /usr/lib/systemd/system/DmServiceDMSERVER.service

#systemctl enable DmServiceDMSERVER.service

#systemctl start DmServiceDMSERVER.service

    1. DM 管理工具图形化界面连接数据库

$cd /dm8/tool

$./manager

    1. DM 数据库启动方式:
      1. dmdba 用户启动

前台启动方式

#cd /dm8/tool

#./dmservice.sh

后台启动方式(DmServiceDMSERVER

$cd /dm8/bin

$./DmServiceDMSERVER start

      1. Root 启动:

#systemctl start|status|stop|enable|disable DmServiceDMSERVER

  1. DM 的客户端工具
    1. 改变数据库的状态

mount状态

SQL>alter database mount;

查看状态

SQL>select status$ from v$instance;

    1. DM 管理工具(manager)

$:cd /dm8/tool

$./manager

在窗口—查询分析器—编辑器上面勾选对应选项(如启用SQL语法查询)。

    1. DM 控制台工具(console)

$./console

    1. DM 数据迁移工具(dts)

$./dts

    1. DM 性能监视工具(monitor):

$./monitor

  1. DMSQL

$cd /dm8/bin

$./disql

输入账号:SYSDBA

密码:SYSDBA

设置数据库兼容性,数据迁移之前修改。(只改内存中的值,数据库重启之后以参数文件的值为准)

SQL:alter system set 'COMPATIBLE_MODE'=4 spfile;

修改动态参数

SQL:alter system set 'UNDO_RETENTION'=180 both;

修改会话参数,测试中应用。

SQL:alter session set 'LIST_TABLE'=1;

参数化修改

SQL:SP_SET_PARA_VALUE(0,'LIST_TABLE',1);

0表示内存,1表示修改后的值。

转换控制文件为文本文件

$/dm8/bin

$./dmctlcvt type=1 src=/dm8/data/DAMENG/dm.ctl  dest=/dm8/data/DAMENG/dmctl.tx

配置环境变量

$cd /home/dmdba

$vi .bash_profile

输入:export PATH="$PATH:$DM_HOME/bin:$DM_HOME/tool"

$source .bash_profile

    1. 防火墙

开启防火墙

#systemctl start firewalld.service

查看开启的端口

#:firewall-cmd --list-all

开放端口

#firewall-cmd --add-port=5238/tcp --permanent

生效需要

#:firewall-cmd --reload

  1. DM 的体系结构

登录sysdba

$cd /dm8/bin

$./disql sysdba/SYSDBA

exit;如果输入错误,可以退出,还是sql状态

查看启动数据库:ps -ef | grep dmserver

Sql上面连接另个数据库:conn sysdba/damemg@123:5236

连接服务:

$cd /dm8/bin

$./disql sysdba/SYSDBA@192.168.88.8:5238

网络配置助手:

$cd /dm8/tool

$./nca.sh

$cd /dm8/bin

$./disql sysdba/SYSDBA@DMOA

    1. 数据缓冲区

查看数据缓冲区大小

SQL>select name,value,type,description from v$parameter t where t.name ='BUFFER';

SQL>select name,value,sys_value,file_value,type,description from v$parameter t where t.name in('BUFFER','FAST_POOL_PAGES','RECYCLE','KEEP');

修改数据缓冲区大小

SQL>alter system set 'BUFFER'=1000 spfile;

关闭数据库

SQL>shutdown immediate;

SQL>exit;

重启数据库

$DmServiceDMSERVER

达梦是单进程多线程

查进程

$:ps -ef | grep dmserver

查线程

$ps -T -p 1582

查看占用内存和CPU情况

$:top -H -p 1582

  1. 表空间

创建空间表数据文件

create tablespace dmtbs DATAFILE 'DMTBS01.DBF' SIZE 32;

创建指定大小文件

create tablespace dmtest datafile '/dm8/data/TBS/DMTEST04.DBF'

 SIZE 64 AUTOEXTEND ON NEXT 4 MAXSIZE 10240,'/dm8/data/TBS/DMTEST03.DBF'

 SIZE 64 AUTOEXTEND ON NEXT 4 MAXSIZE 10240;

查看空间表

 select * from dba_tablespaces;

查看数据文件

select * from dba_data_files;

在表空间dmtest中新建t_test01

create table t_test01 (id int,name varchar2(20)) tablespace dmtest;

查看t_test01

select t.TABLESPACE_NAME,t.TABLE_NAME from user_tables t;

插入信息

insert into t_test01(id,name) values(1,'111');

insert into t_test01(id,name) values(1,'111');

insert into t_test01(id,name) values(1,'111');

关闭表空间

 alter tablespace dmtest offline;

打开表空间

alter tablespace dmtest online;

修改数据文件大小

alter tablespace dmtest resize DATAFILE '/dm8/data/TBS/DMTEST01.DBF' TO 128;

关闭自动扩展

alter tablespace dmtest DATAFILE '/dm8/data/TBS/DMTEST01.DBF' AUTOEXTEND OFF;

查看文件是否关闭自动扩展

select * from DBA_DATA_FILES;

表空间剩余内存

 select * from DBA_FREE_SPACE;

添加数据文件

alter TABLESPACE DMTBS ADD DATAFILE 'DMTBS02.DBF' SIZE 32;

    1. 数据文件迁移

先脱机表空间,然后联机

alter TABLESPACE DMTBS OFFLINE;

 alter TABLESPACE DMTBS RENAME DATAFILE 'DMTBS01.DBF' TO '/dm8/data/TBS/DMTBS01.DBF';

 alter TABLESPACE DMTBS RENAME DATAFILE 'DMTBS02.DBF' TO '/dm8/data/TBS/DMTBS02.DBF';

 alter TABLESPACE DMTBS online;

    1. 查询记录过旧的错误

 alter system set 'UNDO_RETENTION'= 300 both;

    1. 修改TEMP空间为100M

 alter system SET 'TEMP_SIZE'=100 spfile;

查看是否改为100M

 select * from v$parameter t where name like 'TEMP%';

    1. 重做日志

查看联机日志

select * from v$rlogfile;

增加联机日志

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;

查看是否开启归档

select arch_mode FROM SYS."V$DATABASE";

Mount状态开始归档

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 sys."V$DM_ARCH_INI";

切换归档,三种命令都行

alter SYSTEM SWITCH LOGFILE;

alter SYSTEM ARCHIVE LOG CURRENT;

alter DATABASE ARCHIVELOG CURRENT;

查看归档

select * FROM sys."V$ARCH_FILE";

删除归档

SF_ARCHIVELOG_DELETE_BEFORE_LSN(554341);

  1. 用户管理
    1. 设置口令策略

alter SYSTEM SET 'PWD_POLICY'=14 both;

PWD_POLICY(隐含参数,不在 dm.ini 中)参数指定系统的口令策略,默认为 2

系统支持的口令策略有:

0 无策略

1 禁止与用户名相同

2 口令长度需大于等于 INI 参数 PWD_MIN_LEN 设置的值

4 至少包含一个大写字母(

A-Z

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

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

    1. 创建用户

create user dmtest IDENTIFIED BY Dameng123 DEFAULT TABLESPACE DMTBS;

查看用户

select * from SYS.DBA_USERS;

进入创建用户

SQL> conn dmtest/Dameng123

SQL> select * from session_privs;

修改sysdba口令策略

alter user sysdba PASSWORD_POLICY 15;

查看当前(单个)用户的口令策略

select * from dba_users;

设置用户有有效期

alter user dmtest LIMIT PASSWORD_LIFE_TIME 180;

查看结果

select a.USERname,t.*

from dba_users a, sysusers t where a.USER_ID  = t.ID;

创建profile1的资源限制(在左侧的资源限制也可设置)

create PROFILE profile1 LIMIT PASSWORD_LIFE_TIME 180,FAILED_LOGIN_ATTEMPS 5,PASSWORD_LIFE_TIME 3,SESSION_PER_USER 3;

创建hrtest

create user hrtest IDENTIFIED BY "Dameng@123" PASSWORD_POLICY 31

DEFAULT TABLESPACE DMTBS DEFAULT INDEX TABLESPACE DMTBSIDX;

alter user hrtest PROFILE PROFILE1;

解锁账号

alter user HRTEST ACCOUNT UNLOCK;

账号登录

$  disql hrtest/'"Dameng@123"'

    1. 角色权限

grant create table to dmtest;

grant CREATE INDEX to dmtest;

grant SELECT on dmhr.department to dmtest;

执行操作系统命令

host clear

创建表

create table t_test02(id int);

查看表

select * from dmhr.department limit 5;

授予部分权限

grant SELECT(employee_id,employee_name,email) on dmhr.employee TO dmtest;

回收权限

revoke SELECT ON dmhr.employee FROM dmtest;

查看

select employee_id,employee_name,email from dmhr.employee limit 5;

回收创建表权限

revoke CREATE TABLE FROM dmtest;

赋予创建任意表权限,创建完成把ENABLE_DDL_ANY_PRIV0

select * FROM sys."V$PARAMETER" t WHERE name LIKE '%DDL%';

alter SYSTEM set 'ENABLE_DDL_ANY_PRIV'=1 MEMORY;

grant create any table to dmtest;

revoke create any table from dmtest;

创建角色

create role r1;

grant CREATE table to r1;

grant SELECT on dmhr.employee to r1;

grant r1 to dmtest;

对象权限转售

grant SELECT on dmhr.department to dmtest WITH GRANT OPTION;

系统权限转售

grant create table to dmtest with ADMIN OPTION;

查看用户名称

SQL> select user;

在DMTEST下转售权限

grant create table to hrtest;

查看拥有的权限

SQL> select * from session_privs;

在DMTEST下转售表的权限

SQL>grant select on dmhr.department to hrtest;

转售之前后的权限回收

revoke SELECT ON dmhr.department FROM dmtest CASCADE;

    1. 模式

创建模式

create SCHEMA hr01 AUTHORIZATION hrtest;

模式和用户的对应关系

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;

查看当前模式属于那个用户

SQL> select sys_context('userenv','current_schema');

访问其他模式的表(用户下有同名模式,只有模式名.对象名)

SQL> select * from dmhr.employee limit 3;

切换到dmhr模式(只针对当前会话有效)

SQL> set schema dmhr;

    1. 表和约束

删除表

drop TABLE if EXISTS DMTEST.t_testpid;

创建表

create TABLE if NOT EXISTS DMTEST.t_testpid

(pid int PRIMARY KEY,

pname VARCHAR(20) UNIQUE,

sex bit)

tablespace DMTBS;

创建子表

create TABLE IF NOT EXISTS DMTEST.t_testchild

(childid INT,

childname VARCHAR(30),

salary INT NOT NULL,

createtime DATETIME DEFAULT sysdate 

 ) TABLESPACE DMTBS;  

插入数据

 insert into dmtest.t_testchild(childid,childname,salary)

 values(1,'aaa',100);

查看插入数据

select * from DMTEST.T_TESTCHILD;

增加约束

 alter TABLE DMTEST.T_TESTCHILD ADD CONSTRAINT ck_testchild_salary

 CHECK(salary>=2000);

修改数值,右键浏览数据,修改数值,然后保存。

插入一列

alter TABLE DMTEST.T_TESTCHILD ADD COLUMN pid int;

创建外键

 alter TABLE DMTEST.T_TESTCHILD ADD CONSTRAINT pk_testchild FOREIGN KEY(pid)

 references dmtest.T_TESTPID(pid);

插入数据

 insert into dmtest.t_testchild(childid,childname,salary,pid)

 values(1,'aaa',100000,1);

创建表(只拷贝表结构)

create TABLE DMTEST.t_emp AS SELECT * FROM dmhr.EMPLOYEE;

查看数据的行数

cat t_emp.sql  | wc -l

导出数据

select * from DMTEST.T_EMP;

在表格上面右键,选择导出所有

删除表数据

truncate TABLE DMTEST.T_EMP;

导入数据

$disql dmtest/'"Dameng123"'

SQL>start t_emp.sql

或者用SQL>`/dm8/backup/data/t_emp.sql

如果在管理工具上记得提交√

select * from DMTEST.T_EMP;

查看行数

select count(*) from DMTEST.T_EMP;

关掉回显

SQL>set echo off;

SQL>set feedback off;

SQL>set timing off

赋予查询权限

grant vti to dmtest;

    1. 创建视图

在dmdba上赋予创建视图权限

grant CREATE VIEW to dmtest;

创建视图(dmtest)

create VIEW v_empnum as 

select a.department_id,b.department_name,COUNT(*)empnum

from t_emp a, t_dept b

where a.DEPARTMENT_ID = b.department_id

group BY a.DEPARTMENT_ID,b.department_name;

查视图

select * from v_empnum;

查找大于15

create or REPLACE VIEW v_empnum as 

select a.department_id,b.department_name,COUNT(*)empnum

from t_emp a, t_dept b

where a.DEPARTMENT_ID = b.department_id

group BY a.DEPARTMENT_ID,b.department_name

Having count(*)>15;

查看索引

explain select * FROM t_emp t WHERE t.EMPLOYEE_ID=1001;

创建索引

create INDEX ix_emp ON t_emp(employee_id);

create INDEX ix_emp ON t_emp(employee_id) TABLESPACE DMTBSIDX;

收集统计信息及展示

dbms_stats.gather_table_stats('DMTEST','T_EMP');

dbms_stats.table_stats_show('DMTEST','T_EMP');

    1. 索引

查看索引

select * from USER_INDEXES;

查看索引字段

select * from USER_IND_COLUMNS;

监控索引

alter INDEX DMTEST.IX_EMP MONITORING USAGE;

alter INDEX ix_emp_name MONITORING USAGE;

查看监控的索引

select * from sys."V$OBJECT_USAGE";

关闭监控

alter INDEX DMTEST.IX_EMP noMONITORING USAGE;

alter INDEX ix_emp_name noMONITORING USAGE;

清除测试数据

SP_DYNAMIC_VIEW_DATA_CLEAR('V$OBJECT_USAGE');

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值