注册
DCA培训总结
专栏/培训园地/ 文章详情 /

DCA培训总结

XP pang 2024/06/24 438 0 0
摘要

一、安装数据库软件(虚拟机共享文档 mnt hgfs)
1.建立用户
创建组 groupadd dinstall
创建用户 useradd -g dinstall dmdba
设置密码 passwd dmdba
2.建立软件安装位置
创建文件夹 cd /
mkdir 目录名称(按照考试的来数据库最后安装的目录名称)
分配文件夹权限 chown -R dmdba:dinstall /目录名称
chown 775 目录名称 -R
3.给dmdba用户分配安装文件权限
进入DMInstall.bin目录 cd /opt
分配权限 chown dmdba:dinstall DMInstall.bin
扩展空间 mount -t tmpfs -o size=4G none /tmp
查看空间 df -h
4.安装不使用图形化即可
切换用户 su - dmdba
进入安装目录 cd /目录
安装 ./DMInstall.bin -i 和 注册

二、创建实例
1.启用实例
切换用户 su - root
查看端口号 echo $DISPLAY
启用图形 xhost +
切换用户 su - dmdba
设定端口 export DISPLAY=:0.0
启用图形 xhost +
进入目录 cd /目录名称/tool
启动图形化 ./dbca.sh
(每次启用图形都要设定端口启用图形)
按考试要求安装

三、启停实例
1.实例启停命令
切换用户 su - dmdba
启停命令 ./DmServiceDMSERVER start开启stop停止restart重启
(实例名称可通过图形化查看 切换用户 su - dmdba
设定端口 export DISPLAY=:0.0
启用图形 xhost +
进入目录 cd /目录名称/tool
启动图形化 ./dmservice.sh)

四、表空间创建、管理
1.创建表空间
切换用户 su - dmdba
设定端口 export DISPLAY=:0.0
启用图形 xhost +
进入目录 cd /目录名称/tool
打开工具 ./manager
建空间 表空间右键,新建表空间,按题目要求新建,文件类型TEST_01.DBF
2.表空间扩大
manager图形化界面操作--选中表空间--右键修改--增加文件(按题目要求)--文件配置都必须保持一致
3.表空间迁移
manager图形化界面操作--选中表空间--右键脱机--右键修改--修改文件位置(按题目要求)--右键联机
4.修改TEMP临时表空间
manager图形化界面操作
相关参数查询临时表空间 select para_name,para_value, para_type
from v$dm_ini
where para_name like ‘%TEMP%’;
修改空间大小 sp_set_para_value(2,’TEMP_SIZE’,20);
(临时压缩办法 alter tablespace temp resize datafile
‘/目录位置/data/DAMENG/TEMP.DBF’ to 20;)
打开终端
切换用户 su - dmdba
重启服务 ./实例服务名称 restart
5.修改ROLL表空间
manager图形化界面操作
相关参数查询临时表空间 select para_name,para_value, para_type
from v$dm_ini
Where para_name like‘%undo_retention%’;
修改空间大小 alter tablespace temp resize datafile
‘/目录位置/data/DAMENG/ROLL.DBF’ to 20;
打开终端
切换用户 su - dmdba
重启服务 cd /dm/bin
./实例服务名称 restart
6.System系统表空间不要随意操作
7.只有空表才可以删除

五、角色创建管理
1.一组权限的集合,查询角色
manager图形化界面操作--查询用户有哪些角色select grantee,
granted_role from SYS.DBA_ROLE_PRIVS where GRANTEE=’用户名’
查询权限--select * from SYS.DBA_SYS_PRIVS where GRANTEE=’用户名’
查询数据、对象权限--select * from dba_tab_privs where grantee=’用户名’
查询资源--select * from dba_users where username=’用户名’
查询密码等用户信息--select * from sysusers where id=’select USER_ID from dba_users where username=’用户名’’
2.新建角色
manager图形化界面操作--角色--右键新建角色--常规给SOI表SVI视图VTI存储
--系统权限给CREATE TABLE创建表CREATE INDEX创建索引
--对象权限给表EMPLOYEE的select--建立好角色后右键角色分发,可分配给不同的用户,也可回收用户的角色

六、用户创建、管理
1.创建用户
manager图形化界面操作--用户--管理用户--右键新建(用户名必须大写
必须包含英文)
查看密码级别参数--select para_name,para_value, para_type
from v$dm_ini
where para_name like ‘%PWD_POLICY%’;
查看密码长度参数--select para_name,para_value, para_type
from v$dm_ini
where para_name like ‘%PWD_MIN_LEN%’;
修改密码参数办法-- sp_set_para_value();
常规--密码策略、存储加密密钥、表空间(选自己新建的表)、索引表空间(选
自己新建的表)
所属角色--PUBLIC、SOI
系统权限--针对数据库管理
对象权限--针对数据管理(例如xx表的权限)
资源设置项--最大会话数1000、登录失败次数3、口令有效期90、
连接限制--控制哪个ip可以连接,控制时间访问限制,(ifconfig查ip)
表空间配额--控制占空间大小,默认无限制
2.用户可有多个模式1对n,模式只能属于一个用户1对1(新建用户会生成同名模式)。一个表空间可对应多用户1对n(新建用户,表空间如果不选择,默认MAIN)。角色可以对应多用户n对n。系统权限可以对应多个角色1对n。

七、权限管理(系统权限+对象权限)

八、表的创建和管理(主外键,各种约束,索引)
默认索引组织表(表右键属性DDL关键字CLUSTERBTR)、支持堆表(选中对应模式--表右键--新建表--存储--堆表选项--指定并发和非并发分支,DDL关键字BRANCH NOBRANCH)、临时表、分区表、外部表
1.存储位置
在模式下新建的表,会存储到默认表空间main中,如创建模式时指定表空间,则会存到用户默认表空间中。
2.数据类型
DEC(3,1)一共三位数字,包括小数点后。99.9为最大值。
3.表创建
选择模式右键新建表,注意名称全部大写,备注大小写都可以,存储位置注意选择。
4.数据导入
Insert into方式
不能丢列,数据类型不能错,char类型加单引号,长度不能超过。
SQL数据文件导入
切换用户 Su - dmdba
进入目录 cd /数据库目录
创建文件 vi a.sql(回车再点击一下变insert)
输入语句 insert into..........
保存 点击esc ,输入:wq,回车
查看 cat a.sqlcd
导入语句 新开终端切换用户,进入bin目录 su - dmdba
cd /目录/bin
进入./disql工具 ./disql sysdba/密码:数据库端口号
执行导入 start /目录/a.sql
迁移工具
图形化启动./dts
5.删除修改列
Alter table A add column (b,int)
Alter table A drop column b
6.创建约束
非空约束(图形化界面勾选)
唯一约束(UNIQUE,可为空,空可多个) create table test.t7(id int, name varchar(20) UNIQUE);
主键约束(会自动创建唯一约束,不为空) create table test.t8(id int primary key);
外键约束 create table test.t10 (sid int PRIMARY key ,pid int);
create table test.t11(id int PRIMARY key , sid int FOREIGN key
REFERENCES test.t10(sid));
检查约束 create TABLE test.t12(id int CHECK(id>=5));
insert into test.t12 values (3);---必须大于等于5才能插入
7.清空表
1、DELETE 写日志
2、TRUNCATE 不写日志
3、DROP 表结构也会被删
8.索引
新建索引 模式--选择表--右键新建索引--填写名称--选择表空间
触发索引
BEGIN
dbms_stats.gather_table_stats(‘DM1’,’EMP’);
End;
(校验EXPLAIN select * from TEST.EMP where employee_id<20;)

九、数据导入

十、开归档
1.开启
服务器右键管理服务器--系统管理选择配置状态--归档配置--选择归档模板--文件大小--确定--服务器右键管理服务器--系统管理选择open

十一、物理备份
1.冷备
关闭示例服务--创建文件夹(su - dmdba mkdir /dm/backup )--启动console工具--新建备份--完全备份、备份名称、选择备份目录--增量备份
2.热备
备份--库备份右键--全备--增量备

十二、逻辑备份
选择要导出的表,右键导出,选择目录,修改导出文件名称。
选择要导入的模式,右键导入,选择目录,选择文件。

十三、还原操作
1.模拟表空间损坏
Dmdba用户进入表空间文件存放位置后,修改存储文件名称
[dmdba@localhost DAMENG]$ mv TEST01.DBF TEST01.DBF.BAK
重启数据库实例 进入bin目录./DmServiceDMSERVER restart
进入./disql工具 ./disql sysdba/密码
打开 alter database open;(exit退出)
2.恢复表空间
Console工具使用方法
选择右侧还原--

关闭服务 ./DmServiceDMSERVER stop
进入 ./dmrman
检查 check backupset ‘dm/backup/backup’
恢复 restore database '/dm8/data/DAMENG/dm.ini' tablespace TEST01 from backupset ' /dm8/backup/fullbak';
recover database '/dm8/data/DAMENG/dm.ini' tablespace test01;

卫宁健康

十四、修改参数
1.查看参数
切换用户 su - dmdba
设定端口 export DISPLAY=:0.0
启用图形 xhost +
进入目录 cd /目录名称/tool
打开工具 ./manager
输入查询语句 select para_name,para_value, para_type from v$dm_ini where para_name like ‘%%’;
(para_type,IN_FILE静态参,SYS动态参数,静态参数修改需要重新启动服务)
2.图形化修改参数
切换用户 su - dmdba
设定端口 export DISPLAY=:0.0
启用图形 xhost +
进入目录 cd /目录名称/tool
打开工具 ./console
修改题目要求参数

十五、创建作业
1.开启代理
代理右键--创建代理环境--新建作业--作业名自己创建--备份路径
2.建立作业
右键新建作业--选择备份作业--全备记得选择目录--增量记得选择基目录

十六、视图
1.创建视图(简单视图、复杂视图是虚表,没有实际数据,只有物化视图有数据存放)
create /replace view() as select () from () where();
COMMIT;
2.简单视图 单表查询
3.复杂视图 两表以上复杂视图
create /replace view() as
select department_name,avg1 from
(Select department_id,avg(e.salary) as avg1 from dmhr.employee e
Group by e.department_id
Having avg(e.salary)>10000) a
Join dmhr.department d
On a.department_id=d.department_id;
Commit;
4.如何查询
SELECT DBMS_METADATA.GET_DDL(‘类型’(VIEW),’名’,’模式名’);
SELECT SYS.DBMS_METADATA.GET_DDL(‘类型’(TBALE),’名’,’模式名’);

十七、ODBC配置(root操作)
1.检查 gcc 包
[root@localhost ~]# rpm -aq|grep gcc
2.解压安装包
[root@localhost opt]# tar -xzvf unixODBC-2.3.0.tar.gz
3.进入ODBC目录
cd unixODBC-2.3.0/
4.配置
./configure --enable-gui=no
5.编译安装 ODBC
make && make install
6.查看 odbc 版本
odbc_config --version
有2.3.0 就对了
7.查看 odbc 配置文件路径
odbcinst -j

8.切换目录进入配置文件(vi odbc.ini、vi odbcinst.ini)

9.切换用户dmdba启动dm8
su - dmdba
isql dm8

十八、DMSQL
1.连接符||用法
Select department_id,employee_name||’的工资是’||salary from dmhr.employee;
2.条件过滤
Select * from dmhr.employee where DEPARTMENT_ID=’104’
3.函数
select lower(‘ABC’); → abc 转换小写
select upper(‘abc’); → ABC 转换大写
select initcap(‘aBc’); → Abc 第一个字母转换大写其他小写
Select CONCAT('Hel1o','World'); →HelloWorld 拼接
Select SUBSTR('HelloWorld',1,5); →Hello 取前5个
Select LENGTH('HelloWorld'); →10 算长度
Select INSTR('HelloWorld',’W’); →6 从第几个字符算长度
Select LPAD(salary,10,’’); →*****24000 从前填充到多少长度
Select RPAD(salary,10,’
'); →24000***** 从后填充到多少长度
Select TRIM('H'FROM ‘HelloWorld'); →elloWorld 去掉字符
Select LAST_DAY(SYSDATE); →当前月份的最后一天
Select NEXT_DAY(SYSDATE,5); →当前时间的下一个周五(下一个周的第五天),时间周期按周日到周六轮回
Select ROUND(3.49,1); →四舍五入保留一位
Select TRUNC(3.49,1); →保留一位余下舍去
Select 1.0/2; →0.5 Select 1/2; →0(CALC_AS_DECIMAL 为0 整数除以整数,输出必须整数。输出小数就把分子或分母改为小数即可输出小数)
4.分组函数
AVG平均 COUNT求个数 MAX最大值 MIN最小值 SUM求总数
算部门工资超过10000
select department_id,sum(salary) as tsal,avg(salary) as asal,max(salary) as msal,min(salary) as minsal
from dmhr.employee
group by department_id
HAVING avg(salary)>10000 (分组条件只能having不能where)
5.CUBE语法
算部门工资聚合:Select department_id,job_id,sum(salary)as tsal,avg(salary) as asal,max(salary) as msal,min(salary) as minsal
from dmhr.employee
group by department_id,job_id
order by department_id
加cube可以算两列总计(department_id,job_id都可以算统计):select department_id,job_id,sum(salary) as tsal,avg(salary) as asal,max(salary) as msal,min(salary) as minsal
from dmhr.employee
group by cube(department_id,job_id)
order by department_id
6.ROLLUP语法
算部门工资聚合两列:select department_id,job_id,sum(salary) as tsal,avg(salary) as asal,max(salary) as msal,min(salary) as minsal
from dmhr.employee
group by department_id,job_id
order by department_id
加ROLLUP可以算总计(只算第一列department_id):select department_id,job_id,sum(salary) as tsal,avg(salary) as asal,max(salary) as msal,min(salary) as minsal
from dmhr.employee
group by ROLLUP(department_id,job_id)
order by department_id
7.连接查询
内连接
算城市
Select c.city_name,l.street_address
from dmhr.city c join dmhr.Location l
On c.city id=l.city id
算工资显示出部门名称
Select d.department_name,a.tsal,a.asal,a.msal,a.minsal
from dmhr.department d join
(select department_id,job_id,sum(salary) as tsal,avg(salary) as asal,max(salary) as msal,min(salary) as minsal
from dmhr.employee
group by department_id
HAVING avg(salary)>10000) a
On d.department_id=a.department_id
算员工名称加部门名称
Select e.employee_name,d.department_name
From dmhr.employee e
Join dmhr.department d
On e.department_id=d.department_id
外连接
将左边表数据全部展示出
Select e.employee_name,d.department_name
From dmhr.employee e
Left Join dmhr.department d
On e.department_id=d.department_id
将右边表数据全部展示出
Select e.employee_name,d.department_name
From dmhr.employee e
Right Join dmhr.department d
On e.department_id=d.department_id
将表数据全部展示出
Select e.employee_name,d.department_name
From dmhr.employee e
Full Join dmhr.department d
On e.department_id=d.department_id
子查询
查员工所在部门的其他人工资(多行)
select employee_name,salary
from dmhr.employee
where department_id=(select department_id from dmhr.employee where employee_name='马学铭)
查大于员工所在部门工资的其他人(多行)
select employee_name,salary
from dmhr.employee
where salary>=all
(select salary from dmhr.employee where department id='103')
order by salary asc
8.插入
Insert into table_name values (.........), (.........), (.........);
Commit; (加这个才能写入磁盘)
MERGE INTO DM1.t1 USING DM1.t2 ON(DM1.t1.c1=DM1.t2.c3)
---将t2.c3等于t1.c1的值插入t1表
when MATCHED then UPDATE set DM1.t1.c2=DM1.t2.c4
---当t1.c2不等于t2.c4,将t1.c2改为t2.c4
When NOT MATCHED THEN INSERT(C1,C2)VALUES(DM1.t2.c3 DM1.t2.c4)
---当t1.c1值不包含t2.c3,把t2.c3那列插入t1
Commit;
9.修改
Update dmhr.employee set salary=salary+1000 where employee_id=’1002’;
Commit; (加这个才能写入磁盘)
Delete from ....;
Commit; (加这个才能写入磁盘)
10.达梦执行计划
EXPLAIN select * from table_name
返回查询结果集,多层拆分

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服