远程访问数据库需要关闭防火墙
[root@localhost ~]# systemctl status firewalld
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld一、 规划路径建立安装位置文件夹 [root@localhost /]# mkdir -p /dm8
2.3 安装用户(建议不要使用 root)
[root@localhost /]# groupadd dinstall
[root@localhost /]# useradd -g dinstall dmdba
[root@localhost /]# passwd dmdba
[root@localhost /]# chown dmdba:dinstall /dm8 -R给权限
[root@localhost /]# ls -ld /dm8 查看读写权限
配置 dmdba 用户环境变量(可选项)[dmdba@localhost ~]$ source .bash_profile 环境变量生效:
[root@localhost /]# vi /etc/security/limits.conf设置最大文件打开数
dmdba soft nofile 4906
dmdba hard nofile 65536临时生效:ulimit -n 65536
图形化安装
[root@localhost home]# mount -o loop /home/dm8_setup_rh7.iso /mnt mount: /dev/loop0 写保护,将以只读方式挂载
[root@localhost mnt]# export DISPLAY=192.168.128.1:0.0 XSHELL下调出图形化安装
[root@localhost mnt]# xhost +
[root@localhost mnt]# export DISPLAY=192.168.164.100:0.0
[root@localhost mnt]# xhost +
access control disabled, clients can connect from any host
xhost: must be on local machine to enable or disable access control.
[dmdba@localhost ~]$ export DISPLAY=192.168.128.1:0.0
[dmdba@localhost ~]$ xhost +
access control disabled, clients can connect from any host
[dmdba@localhost mnt]$ ./DMInstall.binCLI:命令行的交互式安装
[dmdba@localhost mnt]$ ./DMInstall.bin –i卸载数据库软件(在卸载数据库之前,需要将数据库备份,然后关闭实例、删除
数据库及卸载数据库软件)
[dmdba@localhost dm8]$ ./uninstall.sh -i创建数据库实例:一个数据库软件是可以安装多个实例,通过端口号来区分
[dmdba@localhost tool]$ ./dbca.sh[root@localhost tool]# ./dmservice.sh 看服务
[dmdba@localhost ~]$ ps -ef|grep dmserver 判断是否启动
[dmdba@localhost ~]$ netstat -ntl|grep 5236 看端口是否被占用
[dmdba@localhost bin]$ ./DmServiceDMSERVER status
看数据库实例服务
[root@localhost tool]# systemctl status DmServiceDMSERVER.service看数据库实例服务4、DM8 数据库实例管理
4.1 数据库的状态
Shutdown:关闭状态
Mount:配置状态
Open:数据库打开状态,数据库对外提供服务
Suspend:挂起状态
4.2 数据库状态的切换
在bin下面用 cd 查询脚本
select instane_name from V from V$instance; 查询状态
alter database mount; 切换为编辑模式
alter database open;Shutdown -mount
Shutdown -open
Open-shutdown
Mount-open
Open-mount(oracle 不支持)
Open-suspend
Suspend-openDm 数据库不支持 mount-suspend 状态,suspend-mount 状态Exit退出
4.4 数据库和关闭
.
[dmdba@localhost bin]$ ./DmServiceDMSERVER stop
[dmdba@localhost bin]$ ./DmServiceDMSERVER start
exit在前端启停数据库
[dmdba@localhost bin]$ ./dmserver /dm8/data/DAMENG/dm.ini5、数据库工具
5.1 disql
[dmdba@localhost bin]$ ./disql SYSDBA/dameng123:5239[dmdba@localhost bin]$ cd /dm8/tool/
[dmdba@localhost tool]$ ./disql
disql V8
SQL> conn SYSDBA/SYSDBA:5239在tool下面用需要使用连接数据库5.2 管理工具 manager
./manager
5.3 性能监控工具 monitor
./monitor
5.4 迁移工具 dts
./dts
5.5console 工具
查看和调整参数
6、DMSQL
结构化查询语言,提供了应用程序到数据库的一个接口。
6.1DMSQL 分类
DML(数据操作语言):insert update delete select
DDL(数据定义语言):create table,drop table,alter table ,truncate
DCL(数据控制语言):权限的授予或撤回,grant,revoke
TCL(事务控制语言):commit, rollback ,save moint6.2SQL 语句规范
SQL 不区分大小写,除了’’ “”除外
关键字是不能被拆分,不能缩写
可以换行,可以缩进,提高阅读性6.3 简单查询
语法:
Select () from ();
单列查询
select employee_id from dmhr.employee;
查询多列
select * from dmhr.employee;
表达式:select
employee_id,employee_name,salary,salary+500 from dmhr.employee;
起别名:(方便识别,计算)
select
employee_id,employee_name,salary,salary+500 tol from dmhr.employee;
去重复:(隐含排序 升序)
select distinct department_id from dmhr.department;
连接||
“xxx 的工资是:xxx”
select employee_name || ‘的工资是:’ || salary from dmhr.employee;6.4 过滤查询
语法:
Select () from () where ()
比较运算符、逻辑运算符、
in、between*** and、is null/is not null、like
比较运算符:> >= < <= <> != =
select employee_name,salary from dmhr.employee where salary>=30000;
逻辑运算符:and or not
And 同时满足:
select employee_name,department_id,salary from dmhr.employee
where department_id=101 and salary>15000;or 满足一个条件即可:
select employee_name,department_id,salary from dmhr.employee
where department_id=101 or salary>15000;
Is null/is not null null 为空但是不等于 0
select employee_name,job_id from dmhr.employee where job_id is null;
select employee_name,job_id from dmhr.employee where job_id is not
null;
IN
select employee_name,department_id from dmhr.employee where department_id in (101,104);
Between*** and
select employee_name,department_id,salary from dmhr.employee where salary between 20000 and 30000;
模糊查询:like % _
%匹配 0 个或多个字符
匹配 1 个字符
select employee_name,salary from dmhr.employee where employee_name like ‘李%’;
select employee_name,salary from dmhr.employee where employee_name like '李’;6.5 排序
升序 asc
select employee_name,salary from dmhr.employee order by salary asc;
降序 desc
select employee_name,salary from dmhr.employee order by 2 desc;
分组函数
Count max min avg sum
语法:
Select () from () group by () having ();
除了聚合函数不用跟在 group by 后面,其他 select 列必须在 group by 后面,having 是对 group by 进一步过滤,having 不能单独使用。
求部门工资和小于 8 万的部门
select department_id,sum(salary) from dmhr.employee group by department_id having sum(salary) <80000;6.7 多表连接
内连接
结果集只显示满足条件的记录
交叉连接(迪卡集)
两个表记录数的乘积
select count() from dmhr.employee cross join
dmhr.department;–39376
select count() from dmhr.employee;
select count(*) from dmhr.department;
自然连接
根据列名自己过滤,两个表连接的列名和数据类型要一致
select employee_name,department_name from dmhr.employee natural
join dmhr.department;
USING
在满足多个连接列时,可以指定某一个列做连接,一般是和NATURAL
JOIN 使用,连接的列前面不能加表名或者是前缀。
select employee_name,department_name from dmhr.employee join dmhr.department using (department_id);
ON 子句
select c.city_name,l.street_address from dmhr.city c join dmhr.location
l on c.city_id=l.city_id;
HASH JOIN
优化器CBO 根据小表连接列做运算生成hash 值,根据hash 值去连接
大表,扫描大表
select e.employee_name,d.department_name from dmhr.employee einner hash join dmhr.department d
on e.department_id=d.department_id;
外连接
结果集除了显示满足条件的记录,不满足的用null 代替
左外连接
把left join 左边的全部显示出来,右边只显示满足条件的,不满足条
件的用null 补齐
select a.employee_name,b.department_name from dmhr.employee a
left join dmhr.department b
on a.department_id=b.department_id;
右外连接
把right join 右边的全部显示出来,左边只显示满足条件的,不满足
条件的用null 补齐
select a.employee_name,b.department_name from dmhr.employee a
right join dmhr.department b
on a.department_id=b.department_id;
全外连接
左外连接+右外连接
select a.employee_name,b.department_name from dmhr.employee a
full join dmhr.department b
on a.department_id=b.department_id;
6.8 子查询
当一个查询是另一个查询条件时,就叫子查询。子查询先运行,子查
询的结果是外部查询(主查询)的条件
单行子查询
= > >= < <= <>
找出和金纬在一个部门的员工
select employee_name,department_id from dmhr.employee where department_id=
(select department_id from dmhr.employee where employee_name=‘金纬’)
多行子查询
In any all
查询比104 部门工资都高的人
select department_id,employee_name,salary from dmhr.employee where salary > all
(select salary from dmhr.employee where department_id=104);
Exists
一旦有记录满足条件,就立马返回值SELECT E.EMPLOYEE_ID , E.EMPLOYEE_NAME FROM DMHR.EMPLOYEE
E
WHERE EXISTS
( SELECT * FROM DMHR.JOB_HISTORY J
WHERE E.EMPLOYEE_ID = J.EMPLOYEE_ID );7、DM8 体系结构
DMSERVER:C/S 架构,客户端+服务器构成
DMSERVER=数据库文件+实例
实例=共享内存+后台进程/线程
非DSC 架构是一个实例对应一个数据库,DSC 架构是一个数据库可以对应多个实例7.1DM8 存储结构
物理结构
配置文件
以.ini 结尾的文件
查询视图:
select para_name,para_value from v$dm_ini where para_name like
‘COMPAT%’;
SYS 系统级:影响全局
Session 会话级:针对当前会话有效
Infile:静态参数,实例重启才能生效
sp_set_para_value(2,‘COMPATIBLE_MODE’,2);
1 等于both,会改变内存和参数文件中的值。
2 等于infile,会改变参数文件中的值,重启才能生效。
数据文件
以.DBF 结尾的文件控制文件
以.ctl 结尾的文件
select para_name,para_value from v ./dmctlcvt TYPE=1
SRC=/dm8/data/DAMENG/dm.ctl DEST=/tmp/dmctl.txt
注意:不要随便修改控制文件
重做日志文件
查询重做日志文件:
重做日志文件记录的是数据库发生变更信息。重做日志文件的特点是
可覆盖,循环写。重做日志文件频繁切换会对数据库产生较大的性能
影响。
resize 重做日志文件
alter database resize logfile ‘/dm8/data/DAMENG/DAMENG01.log’ TO
300;
alter database resize logfile ‘/dm8/data/DAMENG/DAMENG02.log’ TO
300;
新增重做日志文件:
alter database add logfile ‘/dm8/data/DAMENG/DAMENG03.log’ size
300;
注意:重做日志文件不能被删除,所有日志文件大小需要一致。
归档日志文件
就是重做日志文件的副本,用来做数据库恢复。
开启归档:
开启归档:
co命令行开归档
SQL> alter database mount;
SQL> alter database add archivelog ‘type=local,dest=/dm8/arch,file_size=100,space_limit=0’;
SQL> alter database archivelog;
SQL> alter database open;
SQL> select name,arch_mode from v$database;
行号NAME ARCH_MODE1 DAMENG Y
图形化归档
备份文件
以.bak 为扩展名的文件,备份文件就是数据库在某一个时间点的副
本。.meta 元数据文件(备份集的信息),.bak 数据备份文件(真实
的数据)
跟踪日志文件
跟踪日志文件记录的是系统各会话执行的sql 语句的信息,主要是错
误的信息、性能问题。跟踪日志文件默认是关闭的。SVR_LOG事件日志文件
记录的是数据库运行期间产生的关键性事件:数据库的启动、关闭、
IO 错误、内存申请失败。
逻辑结构
页(块):默认为8k(8192 字节),支持4k、8k、16k、32k。数据
页是数据库最小的分配单元。包含了页头信息,数据,空闲空间,行
偏移数组。Filefactor
簇:簇是一组连续的数据页组成,默认为16 个页,支持16、32 个页,
总是在一个数据文件中。
段:是簇的上级逻辑单元,段是可以跨多个数据文件的。段分为数据
段(表段、索引段),临时段,回滚段。
select * from user_segments;
表空间:可以拥有一个或多个数据文件,一个数据文件只能属于一个
表空间。
8.1 查看表空间脱机状态
联机或脱机用户管理分为三块:用户、权限、角色
select username,account_status from dba_users;
9.3.1 命名原则字符开头,a-z,0-9,$#_ ;长度为 128 个字符 ;权限分配:系统权限、对象权限、角色 ;存储位置:表空间(默认main) ;密码策略:
PWD_POLICY 设置系统默认口令策略。PWD_POLICY: 设置系统默认口令策略。0: 无策略;1: 禁止与用户名相同;2: 口令长度不小于9;4: 至少包含一个大写字母(A-Z);8 :至少包含一个数字(0-9);16:至少包含一个标点符号(英文输入法状态下,除“和空格外的所有符号;若为其他数字,则表示配置值的和,如3=1+2,表示同时启用第1项和第2项策略。当COMPATIBLE_MODE=1时,PWD_POLICY的实际值均为0
3=1+2 7=4+2+1
PWD_POLICY 值数据库重启生效图形console 工具更改
COMPATIBLE_MODE 是否兼容其他数据库模式(静态参数)
。0:不兼容,1:兼容SQL92标准,2:兼容ORACLE,3:兼容MS SQL SERVER,4:兼容MYSQL。9.4创建 test 表空间
注意:表空间名要用大写(建用户一样)
路径 /dm8/data/DAMENG/TESST01.DBF 大小默认 自动扩展开启 扩展尺寸(MB)1 上限(MB )5009.5.1 图形建用户
密码不小于9位,表空间选择TEST表空间,可以修改。更改用户的默认表空间、更改密码、查看用户的状态 、锁定 test 用户、解锁 test 用户、撤回权限、删除用户。
创建用户会自动创建一个与用户名同名的模式,一个用户可以对应多
个模式。大写
DM 数据库执行 sql 脚本:
先建test1表; exit
授权start /home/dmdba/test1.sql
start /home/dmdba/test1.sql清空表
主键约束:非空+唯一,一个表只能有一个主键,设计主键尽量的避
开业务逻辑的列
外键约束:
SQL> create table test4 (id int foreign key references test3(id));
SQL> drop table test3;
检查约束
SQL> create table test5(id int check(id>=5));查看约束:
启用约束 禁用
创建简单的视图:
create view test5.emp_v as
select
employee_id,employee_name,salary,department_id
from
dmhr.employee where department_id=1005;查询视图
通过 manager 工具
也可以查看视图 all_views创建索引
查看索引信息:
select * from user_indexes;查看 sql 执行计划
备份主要有:物理备份和逻辑备份 ,物理备份:分为联机备份和脱机备份;完全备份和增量备份。
物理备份:冷备:不需要开启归档,针对整库做备份
需要开启 dmap 服务,需要关闭数据库实例1、 console 工具备份
2、 用 dmrman 工具备份 只支持冷备
RMAN> backup database ‘/dm8/data/DAMENG/dm.ini’ backupset
‘/dm8/bakcup’;检查备份集
RMAN> check backupset ‘/dm8/backup’;
热备:需要开启归档,数据库需要联机
可以备份数据库、表空间、表、归档日志文件
查看数据库归档模式:SQL> select arch_mode from v$database;行号 归档模式
ARCH_MODE1
Y
利用 manager 工具做热备增量备份:Disql 工具:
整库备份:
backup database full to “full02” backupset ‘/dm8/backup/rb’;增量备份:
手动指定工作目录就能看的到了
表空间备份:
表备份:
归档日志备份:
物理还原:
新建作业 1,每周三,每周日 22:00 做全备call
增备
选目录基于哪一个全备做的
Linux 环境配置 odbc
解压缩
用 root 配置
[root@localhost home]# tar -xvf unixODBC-2.3.0.tar.gz解压缩
[root@localhost home]# cd unixODBC-2.3.0/
[root@localhost unixODBC-2.3.0]# ./configure
[root@localhost unixODBC-2.3.0]# make 编译
[root@localhost unixODBC-2.3.0]# make install 安装
[root@localhost unixODBC-2.3.0]# odbcinst -j 看版本Cat
配置/usr/local/etc/odbcinst.ini /usr/local/etc/odbc.ini测试连接
[dm8]
description = DM ODBC DSND
Driver = DM8 ODBC DRIVER
SERVER = localhost
UID = SYSDBA
PWD = dameng123
TCP_PORT = 5236[DM8 ODBC DRIVER]
Description = ODBC DRIVER FOR DM8
DRIVER = /dm8/bin/libdodbc.so
用 dmdba 账户isql dm8