机试(95 分):
安装、实例创建、参数修改、创建表空间、创建用户、角色、权限管理;
创建表、导入脚本数据、约束、索引、视图等;
物理备份还原、逻辑备份还原;DM 作业、ODBC 配置等。
4、安装 DM 数据库(图像化页面安装):
1、设置图形化界面:
(1)第一次启动虚拟机,执行下 xhost +
[root@KylinDCA03 桌面]# xhost +
access control disabled, clients can connect from any host
(2)查看 root 用户的 DISPLAY 变量值
[root@KylinDCA03 桌面]# echo $DISPLAY
:0.0
(3)切换 dmdba 用户
[root@KylinDCA03 桌面]# su - dmdba
上一次登录: 一 12 月 20 18:54:09 CST 2021 pts/1 上
(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
[root@dm1 dm]#chown dmdba:dinstall DMInstall.bin
[root@dm1 dm]#su - dmdba
用dmdba用户执行./DMInstall.bin程序,开始图形安装。
设置环境变量
[dmdba@dw1 ~ ]$vim ~/.bash_profile
[dmdba@dw1 ~ ]$cat ~/.bash_profile
…
export
LD_LIBRARY_PATH=“$LD_LIBRARY_PATH:/dm7/dmdbms/bin”
export DM_HOME=“/dm7/dmdbms”
export PATH=“$PATH:$DM_HOME/bin:$DM_HOME/tool” --重点!
alias disql=“rlwrap disql” --需要安装rlwrap后配置生效
alias dmrman=“rlwrap dmrman”
[dmdba@dw1 ~ ]$source ~/.bash_proflie
[root@dw1 ~ ]$echo DISPLAY #查看 root 用户的 DISPLAY 变量值
[dmdba@dw1 ~ ]$export DISPLAY=:0.0 #切换到dmdba用户下添加环境变量
创建数据库及配置实例(重点)
图形化(./dbca.sh)
创建数据库:
方式一 DM 数据库配置助手图形化界面方式创建数据库
运行 dbca.sh 创建数据库
[dmdba@KylinDCA03 ~]$ cd /dm8/tool
[dmdba@KylinDCA03 tool]$ ./dbca.sh
脚本
dminit PATH=/dm8/data DB_NAME=cndba INSTANCE_NAME=dave PORT_NUM=5236 sysdba_pwd=‘sysdba的密码’
注意:dbca工具创建的实例会注册到服务中,而DMINIT工具创建实例不会注册到服务中
怎么注册到服务中?
方法1:使用DBCA工具注册:
进入到tool目录下,启动DBCA工具,注册数据库服务,选择dm.ini文件
实例的切换
实例的切换:
vi /etc/dm_svc.conf
插入下面一行
dameng=(IP:实例的端口)
[dmdba@dw1 ~]$disql SYSDBA/SYSDBA@dameng
数据库的启停(两种)
1.systemctl start|status|stop|enable|disable DmServiceDMSERVER
2.在root用户下进入到tool目录./dmservice.sh
客户端管理工具(manager)—按考试要求最好先开归档
DM管理工具(manager):图形化管理数据库,联机工具,包含用户管理、角色权限管理、表空间、模式、模式下对象(表、索引、约束、函数、过程、视图等)、数据库物理联机备份、作业管理等功能
DM控制台工具(./console):提供脱机备份还原、修改数据库参数(修改后重启数据库才能生效)等功能 只能在数据库脱机状态下使用!
DMs数据迁移工具(dts)
DM性能监视工具(monitor)
DM服务查看器管理(以 root 方式打开才有启动的权限)
[root@KylinDCA04 tool]# ./dmservice.sh
***进入到DM管理工具首先打开SQL助手,窗口—>选项—>查询分析器—>编辑器—>启用SQL输入法助手
manager管理工具调起以后打开归档!!!
参数修改(console)
1.dmdba用户下使用console
2.SQL修改:
修改临时表空间大小为200M:alter system set ‘TEMP_SIZE’=200 spfile;
修改表空间的大小至100M:
alter tablespace XXX resize datafile ‘TBS01.DBF’ TO 100;
常考参数:
数据缓冲区参数:BUFFER:alter system set ‘BUFFER’= 500 spfile;
数据兼容性参数:COMPATIBLE_MODE:alter system set 'COMPATIBLE_MODE' =2 spfile;
虚拟表空间参数:TEMP_SIZE:alter system set 'TEMP_SIZE'=200 spfile;
密码策略参数:PWD_POLICY (console修改不了):alter SYSTEM set 'PWD_POLICY' = 15 BOTH;
both:表示对内存中和参数文件都修改
memory:修改内存中的值
spfile:修改参数文件中的值
============================================================
#数据库参数分为:只读参数、静态参数、动态参数、会话级参数
#只读参数只能通过修改dm.ini配置文件修改
#静态及动态参数可以通过alter system set方式进行修改,静态参数需要重启后生效
#会话级参数可以通过alter session set方式进行修改,只对当前会话生效
联机日志(重做日志)管理(尽量使用图形化页面操作)
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;
添加联机日志文件
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;
创建表空间
1、可以用manager图形化工具创建(推荐!!!)
2、可以用sql
例SQL:
创建表空间32M,打开表空间自增长,每次增长4M,表空间最大10G
create tablespace XXX datafile ‘XXX.DBF’ size 32 autoextend on next 4 MAXSIZE 10240;
修改表空间的大小至100M:
alter tablespace XXX resize datafile ‘TBS01.DBF’ TO 100;
表空间重命名:
alter tablespace tbs RENAME TO dmtbs;
删除表空间:
drop tablespace dmtbs;
查看表空间DBF文件位置信息:
select * from SYS.“V$DATAFILE”;
设置自动扩展:
alter tablespace tbs datafile ‘TBS01.dbf’ autoextend on next 1 maxsize 10240;
关闭自动扩展:
alter TABLESPACE tbs DATAFILE ‘TBS02.dbf’ AUTOEXTEND off;
增加一个数据文件:
alter tablespace tbs add datafile ‘TBS02.dbf’ size 128;
表空间脱机:
alter tablespace “HRTBS” offline;
表空间联机:
alter tablespace “HRTBS” online;
表空间的迁移实际就是修改表空间的文件路径(图形化页面操作即可!)
创建用户
1、可以用manager图形化工具创建(推荐!!!)
2、可以用sql
新建用户(默认会生成一个同名模式)
例SQL:
创建用户:SQL > create user hrtest IDENTIFIED by dameng123;
修改密码策略:alter SYSTEM set ‘PWD_POLICY’ = 15 BOTH;
创建角色
1、可以用manager图形化工具创建(推荐!!!)
2、可以用sql
例SQL:
查看所有角色:SQL > select * from dba_roles;
创建角色:create role r1;
权限管理(主要对角色授权)
1、可以用manager图形化工具创建(推荐!!!)
2、可以用sql
例SQL:
授权:SQL > grant create table to hrtest;
SQL > grant select on dmhr.department to r1;
SQL > grant r1 to tayh;
创建表(模式下创建表)—可以用图形化界面操作(表名统一大写!) 一定要注意表空间,创建在题目要求的所属表空间下!!!
表—>新建表—>存储—>表空间设置!(根据题目选择表空间)
创建表:
create table hrtest.t_testpid(
pid int,
pname varchar(20),
sex bit,
logtime datetime)
TABLESPACE dmtbs;
添加字段:
alter table hrtest.t_testpid add column email varchar(20);
修改字段类型:
alter table hrtest.t_testpid modify email varchar(50);
删除字段:
alter table hrtest.t_testpid drop logtime;
对字段添加默认值(大表不建议添加字段时给默认值,耗时很长):
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;
导入数据
SQL > start /opt/dm.sql
导入数据提示未连接需要连接数据库:
SQL > conn SYSDBA/Dameng213
约束管理(对表的约束)—尽量图形化操作
非空约束(NOT NULL):alter table hrtest.t_testpid modify pname not null;
唯一约束(UNIQUE):alter table hrtest.t_testpid add CONSTRAINT uk_testpid_email unique (email);
主键约束(PRIMARY KEY):alter table hrtest.t_testpid ADD CONSTRAINT pk_testpid_pid PRIMARY KEY(pid);
检验约束(CHECK):
alter table hrtest.t_testpid add salary number(10,2);
alter table
hrtest.t_testpid ADD CONSTRAINT ck_testpid_salary CHECK
(salary>=2100);
外键约束(FOREIGN KEY):
alter table hrtest.t_test add CONSTRAINT fk_test_id FOREIGN KEY(id) REFERENCES hrtest.t_testpid(pid);
外键约束图形化操作:manager—>模式—>找到对应的模式—>找到要修改的表—>键—>添加外键!
检验约束图形化操作:manager—>模式—>找到对应的模式—>找到要修改的表—>约束—>新建检验约束!(需要写一个检验sql)
唯一约束图形化操作:manager—>模式—>找到对应的模式—>找到要修改的表—>约束—>新建唯一约束!
索引管理(对表加索引)—尽量图形化操作
索引分类:二级索引、位图索引、唯一索引、复合索引、函数索引、分区索引等
达梦默认的表是索引组织表,利用rowid创建一个默认的索引,所以我们创建的索引,称为二级索引
#查看索引:
select table_name,index_name from dba_indexes where table_name=‘XXX’;
对表添加索引:
create index ix_emp01_employeename ON HRTEST.T_EMP01(EMPLOYEE_NAME);
创建索引表空间:
#创建索引表空间:
create table emp as select * from dmhr.employee;
create tablespace index1 datafile ‘/dm7/dmdbms/data/cndba/index01.dbf’ size 32;
create index ind_emp on emp(employee_id) tablespace index1;
select table_name,index_name from dba_indexes where table_name=‘EMP’;
#重建(索引失效时需要重建索引)
alter index IND_EMP rebuild;
#删除
drop index ind_emp;
视图管理(对模式加视图)—尽量图形化操作
manager图形化页面创建
创建普通视图:
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;
创建复杂视图
# 查询部门编号、部门名称和部门内所有工资大于9000的员工的工资总和
create view v_sal as
select department_id,department_name,sum(salary)
from dmhr.employee e join dmhr.department d using (department_id)
group by department_id
having salary>9000;
create or REPLACE view hrtest.v_emp_salary as
select a.DEPARTMENT_ID, sum(A.SALARY) SUM_SALARY
from dmhr.employee a
group by a.DEPARTMENT_ID
having sum(A.SALARY) > 100000;
select * from hrtest.v_emp_salary ;
备份与还原(物理备份和逻辑备份)
物理备份与还原
物理备份:分为完全备份、增量备份;联机备份(热备)和脱机备份(冷备)
联机备份(热备):在数据库运行状态下的备份
脱机备份(冷备):在数据库关闭状态下的备份
=联机备份(热备)=
热备支持库、表、表空间、归档备份!!!
联机备份数据库要开归档!!!
备份时 AP 服务需要为启动状态!!!
全量备份:
默认备份路径:/dm8/data/DAMENG/bak
SQL>backup database; #数据库的全量备份
SQL>backup database full to FULLBAK01 backupset ‘/dm/backup/FULLBAK01’; #数据库全库备份到指定目录
SQL>backup TABLESPACE TBS TO TBSFULLBAK backupset ‘/dm/backup/TBSFULLBAK01’; #表空间的全量备份到指定备份目录
增量备份:
SQL>backup database INCREMENT;#数据库的增量备份
SQL>backeup database INCREMENT to FULLBAK01 backupset ‘/dm/backup/FULLBAK02’; #数据库的增量备份到指定目录
SQL>backup TABLESPACE INCREMENT TBS TO TBSFULLBAK backupset ‘/dm/backup/TBSFULLBAK01’; #表空间的增量备份到指定目录
报错:备份目录冲突,需要添加备份集
#添加备份集
SF_BAKSET_BACKUP_DIR_ADD(‘DISK’,‘/dm/backup’);
#查看备份集
select * from SYS.“V$BACKUPSET”;
清理备份集
SF_BAKSET_REMOVE_BATH
=联机备份=
=归档备份=
开启归档需要在数据库mount状态下!!!
#备份所有的归档
backup ARCHIVE LOG all;
#查看归档信息
select * from SYS.“V$ARCH_FILE”;
#删除归档日志
select sf_archivelog_delete_before_lsn(ARCH_LSN的ID);
#备份报归档不连续处理办法:
checkpoint(100);
或者删除不连续的归档日志!
=归档备份======
=脱机备份(冷备)=
方法1.使用console图形化管理工具
方法2.使用sql:
冷备只支持库备份和归档备份!!!
脱机备份只能在数据库关闭的状态下进行!!!
关闭数据库:systemctl stop DmServiceDMSERVER
创建数据库完全备份:
cd /dm/dmdbms/bin
./dmrman
脱机备份下必须指定实例对应的参数文件,然后正常备份!!!
RMAN > backup database ‘/dm/dmdbms/data/cndba/dm.ini’ to db_full_bak_01 full backupset ‘/dm/dmbak/db_full_bak_01’; #脱机全量备份
注意:执行脱机备份要求数据库必须处于脱机状态
创建数据库增量备份:
RMAN > backup database ‘/dm/dmdbms/data/cndba/dm.ini’ increment with backupdir ‘/dm/dm_bak’ backupset ‘/dm/dm_bak/db_increment_bak_02’; 脱机增量备份
注意:脱机增量备份要求两次备份之间数据库必须有操作,否则备份会报错
脱机备份的还原:
RMAN > restore database ‘/dm/dmdbms/data/DAMENG/dm.ini’ from backupset ‘dm/dm_bak/db_full_bak_for_recover_dbmagic’; #脱机库级还原
RMAN >restore database ‘/dm/dmdbms/data/DAMENG/dm.ini’ tablespace czs from backupset ‘/dm/backup/CZS01’; #脱机表空间级还原
恢复数据库(更新数据库模数):
RMAN > recover database ‘/dm/dmdbms/data/dava_for_restore/dm.ini’ update db_magic;
=脱机备份=
=还原与恢复=
达梦数据库中表空间的恢复和库的恢复都需要在关库的状态下操作!!!
模拟数据库故障:
删除数据库文件—>恢复
删除完数据文件后查询表依旧可以查到,这时候要做一个数据库的文件校验:SP_FILE_SYS_CHECK
RMAN > restore database ‘/dm/dmdbms/data/DAMENG/dm.ini’ from backupset ‘/dm/dm_bak/db_full_bak_for_recover_dbmagic’; #库级还原
RMAN > recover database ‘/dm/dmdbms/data/dava_for_restore/dm.ini’ with archivedir ‘/dm/arch’;#基于归档恢复到最新
RMAN > recover database ‘/dm/dmdbms/data/dava_for_restore/dm.ini’ update db_magic; #库级还原一定要更新数据库模数
RMAN > restore database ‘/dm/dmdbms/data/DAMENG/dm.ini’ tablespace czs from backupset ‘/dm/backup/CZS01’; #表空间级还原
RMAN > recover database ‘/dm/dmdbms/data/DAMENG/dm.ini’ tablespace czs; #恢复到最新的归档配置
如果归档日志不是默认/dm8/arch路径下,需要指定归档路径
RMAN > recover database ‘/dm/dmdbms/data/DAMENG/dm.ini’ tablespace czs with archivedir ‘/dm/dmdbms/arch’;
=还原与恢复=
备份数据库关注两个参数:
select * from v$dm_ini t where t.PAPA_NAME in (‘BAK_PATH’,‘BAK_USE_AP’);
恢复:
基于备份级恢复:恢复备份文件的内容
基于归档级恢复:可以恢复到任意时间
注意:
表只有还原 只还原到备份的那一刻
表空间和库先还原,后恢复
库级还原和恢复后需要更新数据库模数!!!
逻辑备份与还原
逻辑导出(dexp)和逻辑导入(dimp)支持如下四种级别操作:
数据库级(FULL):导出或导入整个数据库中的所有对象
用户级(OWNER):导出或导入一个或多个用户所拥有的所有对象
模式级(schemas):导出或导入一个或多个模式下的所有对象
表级(TABLE):导出或导入一个或多个指定的表或表分区
###注意:导出或导入过程数据库要保持OPEN状态
按表导出、导入
导出:
[dmdba@dm ~]$ dexp dexp/dameng123 file=tables_01.dmp log=tables01.log directory=/dm/dmbak tables=表名1,表名2
导入:
导入原用户dexp下:
[dmdba@dm ~]$ dimp dexp/dameng123 file=tables_01.dmp log=tables02.log directory=/dm/dmbak
tables=表名1,表名2 table_exist_action=replace
导入dimp用户下:
[dmdba@dm ~]$ dimp dexp/dameng123 file=tables_01.dmp log=tables03.log directory=/dm/dmbak tables=表名1,表名2 table_exist_action=replace remap_schema=DEXP:DIMP
作业
推荐使用图形化页面!!!
manager—>代理—>右键创建代理环境—>作业—>新建作业(按考试要求新建作业)
全量备份
增量备份
查看作业:
select * from SYSJOB.SYSJOBS;
手动执行作业
dbms_JOB.run(1668229920);
查看作业执行日志
select * from SYSJOB.SYSJOBHISTORIES2; --ERRINFO是NULL时为作业执行正常!
常见报错:ERRINFO是缺少本地或远程归档
处理办法:数据库没有开归档(右键—>管理服务器—>系统管理—>配置—>归档配置—>打开—>确定—>管理服务器—>系统管理—>打开—>确定)
常见报错:ERRINFO是归档日志不连续
处理办法:执行检查点:checkpoint(100);
ODBC 配置
odbcinst -t #查看是否安装odbc
odbcinst -j #查看odbc安装路径
make uninstall #进入到unixODBC-2.3.0路径下,执行该命令卸载
安装(在root用户下操作):
将unixODBC-2.3.0.tar.gz安装包上传到opt下:
tar -zxvf unixODBC-2.3.0.tar.gz #解压
cd unixODBC-2.3.0 #进入到该目录下
./configure #配置
make #编译
make install #安装
odbcinst -j #查看odbc安装路径
unixODBC 2.3.0
DRIVERS…: /usr/local/etc/odbcinst.ini
SYSTEM DATA SOURCES: /usr/local/etc/odbc.ini
FILE DATA SOURCES…: /usr/local/etc/ODBCDataSources
USER DATA SOURCES…: /root/.odbc.ini
SQLULEN Size…: 8
SQLLEN Size…: 8
SQLSETPOSIROW Size.: 8
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
切户到dmdba用户下:
[dmdba@dm ~]$ isql dm8 -v #测试是否安装成功
报错:[01000][unixODBC][Driver Manager]Can’t open lib ‘/dm8/bin/libdodbc.so’ : file not found
[ISQL]ERROR: Could not SQLConnect
原因:odbcinst.ini中的驱动路径与达梦数据库的安装路径不符合,修改成正常的路径即可!
附录
联机日志管理:
注意:联机日志文件添加成功后没办法删除!!!
修改联机日志文件大小
alter database RESIZE LOGFILE ‘/dm8/data/DM/DM01.log’ TO 300;
alter database RESIZE LOGFILE ‘/dm8/data/DM/DM02.log’ TO 300;
添加联机日志文件
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;
文章
阅读量
获赞