##1、数据库挂载和安装
1.1、查看磁盘容量 df -h
至少需要20G,推荐给25G以上
如果tmp容量小于1G,使用以下命令扩容
--使用root用户执行
mount -o remount,size=2G /tmp
1.2、查看内存
free -m
cat /proc/meminfo
1.3、安装规划
1.3.1、创建用户组和用户
-- 创建用户组
groupadd dinstall
-- 创建用户
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
-- 创建完成后使用以下命令查看是否成功
id dmdba
-- 设置密码
passwd dmdba
1.3.2、规划安装目录
1.3.3、设置最大可打开文件数
dmdba soft nofile 102400
dmdba hard nofile 102400
root soft nofile 102400
root hard nofile 102400
1.4、挂载镜像文件
-查看更改是否生效
cat /dm8/data/DAMENG/dm.ini |grep TEMP_SIZE
#5、重做日志文件
5.1、重做日志命令行方式
当前正在使用的联机日志
select * from v$rlog;
select * from v$logfile;
-创建联机日志、修改联机日志大小(达梦只支持往大了改)
alter database add logfile '日志名称' size 日志大小(单位MB);
alter database add logfile 'DAMENG03.log' size 128
-修改联机日志
alter database resize logfile '日志路径' to 日志大小(单位MB);
alter database resize logfile '/dm8/data/DAMENG/DAMENG03.log' to 256;
5.2、重做日志迁移
alter database mount;
alter database rename logfile '/dm8/data/DAMENG/DAMENG01.log' to '/dm8/data/DAMENG/REDO/DAMENG01.log';
alter database rename logfile '/dm8/data/DAMENG/DAMENG02.log' to '/dm8/data/DAMENG/REDO/DAMENG02.log';
alter database rename logfile '/dm8/data/DAMENG/DAMENG03.log' to '/dm8/data/DAMENG/REDO/DAMENG03.log';
alter database open;
#6、归档管理
6.1开启归档
-将数据库状态设置为mount
alter database mount;
-打开归档
alter database archivelog;
-归档配置,配置归档路径,归档文件大小(超过就新建一个文件),归档文件总的大小(超过限制,就会删除老的)
alter database add archivelog 'type=local,dest=/dm8/arch,file_size=64,space_limit=10240';
-将数据库状态设置为open
alter database open;
-查询归档状态
select arch_mode from v$database;
-查看归档文件
select * from SYS."V$ARCH_FILE";
-查询归档配置
select * from v$dm_arch_ini;
6.2、关闭归档
alter database mount;
关闭归档
alter database noarchivelog;
删除归档文件
alter database delete archivelog 'type=local,dest=/dm8/arch';
将数据库状态设置为open
alter database open;
查询归档状态
select arch_mode from v$database;
#7、用户角色权限
7.1用户管理
7.1.1 用户类型
SYS:内置用户,不能直接登陆
SYSDBA:系统管理员,拥有DBA角色(除了安全、审计其他都管)
SYSAUDITOR:系统审计管理员
SYSSSO:系统安全管理员
SYSDBO:系统安全操作员(达梦安全版才有)
7.1.2 创建用户
create user 用户名 identified by 密码 default tablespace 表空间名;
create user hrtest identified by "Dmeng123";
select * from v$parameter where name = 'PWD_POLICY'; 查密码策略
alter system set 'PWD_POLICY' = 下图策略相加 both;

将密码输错锁定次数改为5次,锁定时间为3分钟
alter user 用户名 limit FAILED_LOGIN_ATTEMPS 5,PASSWORD_LOCK_TIME 3;
手动解锁
alter user 用户名 account unlock;
手动锁定
alter user 用户名 account lock;
查看用户资源限制,例如最大并发数
select * from dba_users a,sysusers b where a.user_id = b.id;
7.1.3 查询指定用户所有用的权限
select * from SESSION_PRIVS;
select * from dba_sys_privs WHERE grantee ='HRTEST';
select * from dba_tab_privs WHERE grantee ='HRTEST';
select * from dba_role_privs WHERE grantee ='HRTEST';
select * from dba_col_privs WHERE grantee ='HRTEST';
7.2、角色管理
7.2.1、角色类型
DBA:系统管理员角色,拥有除审核、安全外的所有权限
RESOURCE:具有在当前用户模式下定义对象的权限,例如create table等
PUBLIC:具有在当前用户模式下数据操作的权限,例如insert table等
SOI:系统表(SYS为前缀)的访问权限
SVI:系统视图(VSYS为前缀)的视图权限
VTI:动态视图(V为 前 缀 , 存 在 于 V 为前缀,存在于V为前缀,存在于Vdynamic_tables中的视图)的访问权限
-创建角色,并授予角色权限
create role 角色名;
grant 权限 to 角色名;
create role r1;
grant select to r1;
-赋予用户角色
grant 角色名 to 用户名;
grant r1 to dmtest;
-设置指定用户最大并发量
-- 设置用户名为hrtest的用户,最大连接数为3
alter user hrtest limit SESSION_PER_USER 3;
7.2.2、添加查询权限
grant select on 模式名.表名 to 用户名;
grant select on dmhr.department to hrtest;
不能只授予修改、删除权限,还要授予查询权限
grant select on 模式名.表名 to 用户名;
grant update on 模式名.表名 to 用户名;
grant delete on 模式名.表名 to 用户名;
7.2.3、回收权限
revoke 角色名 from 用户名;
revoke 具体权限 from 用户名;
revoke r1 from dmtest;
revoke create table from dmtest;
7.3 转授
系统权限转授,with admin option
对象权限转授,with grant option
grant select on sysdba.t_test to hrtest with grant option;
回收权限注意
如果回收的角色,带有转授权限,那么需要加关键字,对其转授出去的角色一并级联回收
revoke select on sysdba.t_test from hrtest CASCADE;
#8、模式对象管理
select * from SYSOBJECTS t where t."TYPE$" ='SCH'; --查看模式
select user;
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 sys_context('USERENV','CURRENT_SCHEMA');
select sys_context('USERENV','CURRENT_USER'); 或 select user;
--切换模式(仅对当前会话生效)
set SCHEMA dmhr;
--删除模式
drop SCHEMA IF EXISTS HRTEST01;
drop SCHEMA IF EXISTS HRTEST01 CASCADE; --级联删除模式下对象,生产环境慎
用。
#9、表管理
DM 默认创建的索引组织表,由参数 LIST_TABLE 指定。
select * from v$parameter t where name ='LIST_TABLE';
DM 创建表时如果指定了主键,则主键为聚簇索引键(部分版本是这样,由参数
PK_WITH_CLUSTER 指定);如果创建表示未指定主键,则 rowid 为聚簇索引键;
select * from v$parameter t where name ='PK_WITH_CLUSTER';
9.1、创建表
create table dmtest.t_testpid(
pid int,
pname varchar(10),
logtime datetime DEFAULT sysdate,
sex bit
) tablespace HRTBS;
9.2 复制表
只复制表结构(不带约束信息)
create table t_emp03 as select * from dmhr.employee where 1=0;
复制表结构+表数据
create table t_emp01 as select * from dmhr.employee;
create table t_emp02 like dmhr.employee;
9.3 调整字段
添加字段
alter table dmtest.t_testpid add email varchar(20);
修改字段
alter table dmtest.t_testpid modify email varchar(30);
删除字段
alter table dmtest.t_testpid drop email;
-修改字段类型:
alter table hrtest.t_testpid modify email varchar(50);
-对字段添加默认值(大表不建议添加字段时给默认值,耗时很长):
alter table hrtest.t_testpid add column logtime datetime default sysdate;
-重命名表或字段:
alter table t_test rename to t_testoa;
alter table t_testoa rename column id to pid;
-数据字典:
select * from dba_tables t where t.owner='HRTEST';
select * from dba_tab_columns t where t.owner='HRTEST';
select t.TABLE_NAME, t.TABLESPACE_NAME from user_tables t;
select t.TABLE_NAME, t.COLUMN_NAME, t.NULLABLE from USER_TAB_COLS t;
-对表和字段添加注释:
comment on column t_testpid.sex is 'sex. 0:female 1: male';
comment on table t_testpid is 'this is a test table';
select * from user_tab_comments;
select * from user_col_comments;
-修改表的表空间(DM 会自动重建该表上的索引)
alter table hrtest.T_TESTPID move tablespace main;
select * from dba_tables t where t.TABLE_NAME like 'T_TEST%';
-数据的导入
DM 在 DISQL 下用 start 或都可以, Oracle 用@: SQL> start /dm8/backup/dts/t_department.sql SQL>
/dm8/backup/dts/t_department.sql
-或者 disql 可以直接调用脚本:
[dmdba@KylinDCA04 backup]$ disql hr/'"Dameng@123"' '`city.sql'
#10、约束管理
10.1、约束类型
NOT NULL:非空约束
alter table hrtest.t_testpid modify pname not null;
UNIQUE:唯一约束,可以为空,简写为UK_表名_字段名
alter table hrtest.t_testpid add CONSTRAINT uk_testpid_email unique (email);
PRIMARY KEY:主键约束(唯一约束+非空约束),简写为PK_表名_字段名
alter table hrtest.t_testpid ADD CONSTRAINT pk_testpid_pid PRIMARY KEY(pid);
FOREIGN KEY:外键引用约束,引用的是另一张表(父表)的主键或唯一键。简写为FK_表名_字段名
alter table hrtest.t_test add CONSTRAINT fk_test_id FOREIGN KEY(id) REFERENCES
hrtest.t_testpid(pid);
CHECK:检验约束,用户校验数据的准确性,简写为CK_表名_字段名
alter table hrtest.t_testpid add salary number(10,2);
alter table hrtest.t_testpid ADD CONSTRAINT ck_testpid_salary CHECK(salary>=2100);
主键约束和唯一约束的区别:一张表只能有一个主键,但是可以有多个唯一约束。
10.2、添加约束
注意:字段如果为小写需要小写并且加上双引号,字段为大写不需要加双引号
添加主键约束
alter table dmtest.t_testpid add CONSTRAINT pk_testpid_pid PRIMARY key("pid");
添加外键约束,注意REFERENCES表里的字段必须是主键或者是添加了唯一索引的字段
alter table dmtest.t_testchild add CONSTRAINT fk_testchild_pid FOREIGN key("pid") REFERENCES dmtest.t_testpid("pid");
添加校验约束
alter table dmtest.t_testchild add CONSTRAINT ck_testchild_salary CHECK ("salary">=3000);
10.3、禁用和启用、删除约束
alter table 模式名.表名 disable constraint "约束名"
alter table 模式名.表名 enable constraint "约束名"
alter table hrtest.t_test drop CONSTRAINT fk_test_id;
-相关数据字典:
select * from dba_constraints t where t.owner='HRTEST';
select * from DBA_CONS_COLUMNS t where t.owner='HRTEST';
-批量禁用外键约束:
select 'alter table '||owner||'.'||table_name||' disable constraint '|| t.CONSTRAINT_NAME ||';'
from DBA_CONSTRAINTS t
where t.OWNER ='DMTEST' and t.CONSTRAINT_TYPE = 'R';
10.4、索引管理
10.4.1、创建索引
create index idx_表名_字段名 ON 表名 (字段名,字段名);
explain select * from hrtest.t_emp01 t where T.EMPLOYEE_NAME = '马学铭';
create index ix_emp01_employeename ON HRTEST.T_EMP01(EMPLOYEE_NAME);
create table t_EMP like DMHR.EMPLOYEE;
create index ix_emp_employeename ON T_EMP(EMPLOYEE_NAME);
10.4.2、索引的监控:
alter index HRTEST.IX_EMP01_EMPLOYEENAME MONITORING USAGE; --开启索引监控
alter index HRTEST.IX_EMP01_EMPLOYEENAME NOMONITORING USAGE; --关闭索引监控
select * from v$object_usage; --查看索引的监控信息
10.4.3、索引的重建(生产环境建议使用 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;
10.5、视图管理
create or replace view 视图名称 as select * from aaa where age > 10
create view hrtest.v_emp
as
select a.EMPLOYEE_ID, a.EMPLOYEE_NAME, a.EMAIL, a.PHONE_NUM
from dmhr.employee a
where a.DEPARTMENT_ID = 1001;
10.6、数据字典和动态性能视图
10.6.1、数据字典
存储在 SYSTEM 表空间中,包含对象定义、权限、用户角色等信息。
USER_* 用户所拥有的对象信息
ALL_* 用户能访问的对象信息
DBA_* 整个数据库中的对象信息
系统中所有对象的信息
SELECT * FROM SYSOBJECTS;
系统中所有索引定义信息
SELECT * FROM SYSINDEXES;
系统中所有列定义的信息
SELECT * FROM SYSCOLUMNS
select * from sysstats;
select * from SYSOBJECTS t where id = 1058;
select * from SYSCONS;
10.6.2、动态性能视图
动态性能视图是从内存中或控制文件中读取的数据
SELECT * FROM V$BUFFERpool; --数据缓冲区
SELECT * FROM V$mem_pool;
显示数据文件、表空间信息
SELECT * FROM V$DATAFILE;
SELECT * FROM V$tablespace;
显示当前进程、线程信息
SELECT * FROM V$PROCESS;
SELECT * FROM V$threads;
#11、数据库备份与还原
备份还原两个重要参数:
select * from v$parameter t where name in ('BAK_PATH', 'BAK_USE_AP');
BAK_PATH:DM 默认的备份路径,生成环境不要和源库数据文件放在同一磁盘上。避免磁
盘损坏,数据文件和备份文件同时损坏的情况。
BAK_USE_AP:备份还原策略,默认使用 DMAP 辅助进程。
查看 AP 服务是否启动:
[dmdba@KylinDCA04 bak]$ ps -ef|grep dmap

一、使用 dmrman 工具可以脱机备份
进入dm8的bin目录 cd /dm8/bin ;进入dmrman工具 ./dmrman
backup database '/dm8/data/DMTEST/dm.ini';
查数据库服务状态
DmServiceDMTEST status
关闭数据库服务(root)
DmServiceDMTEST stop/systemctl stop DmServiceDMTEST.service
(1)数据库还原
restore database to '/dm8/data/DMTEST/' overwrite from backupset '/dm/backup/full_test/ONLINEBAK_01';
(2)数据库恢复
recover database '/dm8/data/DMTEST/dm.ini' with archivedir '/dm8/arch2';
(3)更新数据库魔数
recover database '/dm8/data/DMTEST/dm.ini' update db_magic;
开启数据库服务(root)
DmServiceDMTEST start/systemctl start DmServiceDMTEST.service
#12、作业管理
--查看job
select * from sysjob.sysjobs;
--运行job
dbms_job.run(1640162093); --有部分版本不支持
SP_DBMS_JOB_RUN(1683881634);
--查看job运行日志
select * from SYSJOB.SYSJOBHISTORIES2;
checkpoint(100); --执行完全检查点,解决刚开归档备份,报错归档日志不连续的问题
#13、ODBC的安装和配置
13.1、root用户进入opt目录解压
cd /opt
tar -zxvf unixODBC-2.3.0.tar.gz
13.2、源码安装三部曲(配置、编译、安装)
[root@KylinDCA03 opt]# cd unixODBC-2.3.0/
[root@KylinDCA03 unixODBC-2.3.0]# ./configure
注:configure 时可以使用--prefix 参数指定安装路径,不指定使用默认安装路径/usr/local
[root@KylinDCA03 unixODBC-2.3.0]# make
[root@KylinDCA03 unixODBC-2.3.0]# make install
13.3、 配置驱动信息 odbcinst.ini 和数据源信息 odbc.ini
[root@KylinDCA04 unixODBC-2.3.0]# odbcinst -j
[root@KylinDCA03 unixODBC-2.3.0]# cd /usr/local/etc/
[root@KylinDCA03 etc]# ll
[root@KylinDCA03 etc]# vim odbcinst.ini
[root@KylinDCA03 etc]# vim odbc.ini
[root@KylinDCA03 etc]# cat odbcinst.ini
[DM8 ODBC DRIVER]
Description = ODBC DRIVER FOR DM8
Driver = /dm8/bin/libdodbc.so
[root@KylinDCA03 etc]# cat odbc.ini
[DM8]
Description = DM ODBC DSN
Driver = DM8 ODBC DRIVER
SERVER = localhost
UID = SYSDBA
PWD = Dameng123
TCP_PORT = 5236
[DM8]
Description = DM ODBC DSN
Driver = DM8 ODBC DRIVER
SERVER = localhost
UID = SYSDBA
PWD = Dameng123
TCP_PORT = 5237
13.4、连接ODBC出现[01000][unixODBC][Driver Manager]Can't open lib '/dm8/bin/libdodbc.so' : file not found
[ISQL]ERROR: Could not SQLConnect
去根目录修改环境变量
[dmdba@localhost tool]$ cd
[dmdba@localhost ~]$ vim .bashrc
———————————————————————————————————
export PATH
export DISPLAY=:0
export DM_HOME=/dm8
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/dm8/bin"
export PATH=$PATH:/$HOME/bin:$/HOME/.local/bin:$DM_HOME/bin
———————————————————————————————————
完成参数修改够,执行一些命更新环境变量:
source .bashrc
文章
阅读量
获赞