- 初始化环境
-
-
- 规划用户并修改密码
-
[root@localhost ~]# groupadd dinstall
[root@localhost ~]# useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
[root@localhost ~]# passwd dmdba
(echo “dmdba123” passwd –stdin dmdba)
-
-
- 创建DM_HOME
-
[root@localhost ~]# mkdir /dm7
[root@localhost ~]# chown -R dmdba:dinstall /dm7
-
-
- 设置用户环境变量
-
[dmdba@localhost ~]$ vim /home/dmdba/.bash_profile
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/dm7/bin"
export DM_HOME="/dm7"
export PATH=$DM_HOME/bin:$DM_HOME/tool:$PATH:$HOME/bin
[dmdba@localhost ~]$ source /home/dmdba/.bash_profile
- 安装达梦数据库
-
- 安装软件
[root@localhost zhangay]# unzip dm7rh720190312.zip
[root@localhost zhangay]# mount -o loop -t iso9660 dm7_setup_rh6_64_ent_20190717.iso /mnt
[root@localhost zhangay]# su - dmdba
[dmdba@localhost ~]$ /mnt/DMInstall.bin -i
*****************
[root@localhost ~]# /dm7/script/root/root_installer.sh
-
- 初始化数据库
[dmdba@dbserver ~]$ dminit path=/dm7/data/ DB_NAME= DAMENG INSTANCE_NAME=zhangay PORT_NUM=5236 UNICODE_FLAG=0 PAGE_SIZE=16 EXTENT_SIZE=16 CASE_SENSITIVE=1
-
- 实例注册及自动启动设置
[root@localhost root]# cd /dm7/script/root
[root@localhost root]# ./dm_service_installer.sh -t dmserver -i /dm7/data/DAMENG/dm.ini -p DAMENG
[root@localhost root]# chkconfig --list |grep Dm
[root@localhost root]# service DmServiceDAMENG status
[root@localhost root]# service DmServiceDAMENG start
- 数据库常规创建
表空间是由一个或多个数据文件构成的,表空间是数据库的一个容器,存放数据库中的数据对象(表,索引等)。
[dmdba@localhost ~]$ disql sysdba/zhangay.0044@127.0.01:5236
SQL> select tablespace_name,status from dba_tablespaces;
SQL> select
d.GROUP_ID,
t.NAME ,
d.PATH
from
v$datafile d
INNER JOIN v$tablespace t
on
d.GROUP_ID=t.ID
order BY
d.GROUP_ID ;
System:数据字典和全局的系统数据。
Roll:存放了数据库运行过程中产生的回滚记录。
Temp:临时表空间
Main:数据库默认表空间,创建数据对象的时候,如果不指定存放的位置,默认存放在该表空间。
HMAIN:huge表空间
#数据表空间
SQL> select path,CLIENT_PATH,CREATE_TIME from v$datafile;
SQL> CREATE TABLESPACE TS_TYYW DATAFILE ' TS_TYYW_01.DBF' SIZE 50 autoextend on maxsize 10240;
SQL> ALTER TABLESPACE TS_TYYW ADD DATAFILE 'TS_TYYW_02.DBF' SIZE 50 autoextend on maxsize 10240;
#undo表空间
SQL> select path,CLIENT_PATH,CREATE_TIME, TOTAL_SIZE from v$datafile;
SQL>select
t1.NAME tablespace_name,
t2.FREE_SIZE*SF_GET_PAGE_SIZE()/1024/1024
||'M' free_space,
t2.TOTAL_SIZE*SF_GET_PAGE_SIZE()/1024/1024
||'M' total_space,
t2.FREE_SIZE*100/t2.total_size "% FREE"
from
V$TABLESPACE t1,
V$DATAFILE t2
where
t1.ID=t2.GROUP_ID;
SQL> Alter tablespace roll resize datafile '/dm7/data/DAMENG/ROLL.DBF' TO 256;
-
- 删除表空间
SQL> drop tablespace TEST;
SQL> select t.OWNER,t.TABLE_NAME,t.TABLESPACE_NAME,t.STATUS,t.TABLE_LOCK from SYS.DBA_TABLES t where t.TABLESPACE_NAME='TEST';
SQL> DROP USER TEST CASCADE;
SQL> select du.username,du.default_tablespace from SYS.dba_users du where du.default_tablespace='TS_TYYW';
SQL> select 'drop user ' || du.username || ' CASCADE;' from SYS.dba_users du where du.default_tablespace='TS_TYYW';
-
- 用户管理
在dm数据库中用户管理主要涉及到三块:用户,权限,角色
权限:执行特定类型sql或是访问其他模式对象的权利。
系统权限:数据库对象的创建,删除,修改等等
对象权限:对数据库对象的数据的操作权限。
角色:是将具有相同权限的用户组织在一起,这一组具有相同权限的用户称为角色。角色是一组权限的集合,一个权限可以赋给不同的角色。
数据库预定义角色有三个,DBA,PUBLIC,RESOURCE
三权分立和四权分立
三权分立:
数据库管理员(sysdba)
数据库安全员(syssso)
数据库审计员(sysauditor)
四权分立:
数据库管理员(sysdba)
数据库安全员(syssso)
数据库审计员(sysauditor)
数据库对象操作员(sysdbo)
所有账号的默认口令都与用户名大写一致。
Syssso:安全员
Sysdba:数据库管理员
Sys:数据库内置管理账号(不能登录数据库)
Sysauditor:审计员
-
-
- 规划用户
-
名字:字母开头,a-z,0-9,$#_
位置:对应的表空间
密码:口令策略
0:无策略
1:禁止与用户名相同
2:口令长度不小于9
4:至少包含一个大写字母
8:至少包含一个数字
16:至少包含一个标点符号(英文的状态下输入 除空格和“”)
口令可以单独使用,也可以组合使用。比如说:要求口令策略禁止用户名相同,并且口令长度不小于9,则设置口令策略为3:
创建用户语句password policy 子句来指定口令策略,用户密码最长为48个字节。
Faild_login_attemps:密码尝试登录次数
Password_lock_time:密码失败后锁定时间
Password_life_time:密码过期时间
SQL> select para_name,para_value from v$dm_ini where para_name='PWD_POLICY';
SQL> sp_set_para_value(1,'PWD_POLICY',0);
案例1:建立用户test,用户可以创建自己的表,有属于自己的表空间,用户密码要求每60天变更一次。
SQL> create user test identified by dameng123 limit password_life_time 60 default tablespace test;
SQL> select grantee,granted_role from dba_role_privs where grantee='TEST';
SQL> select grantee,privilege from dba_sys_privs where grantee='PUBLIC';
案例2:规划一个用户test1,用户每60天变更一次密码,密码尝试连接2次失败,账号锁定5分钟,用户能查询dmhr.employee表。
SQL> create user test11 identified by dameng123 limit password_life_time 60,failed_login_attemps 2,password_lock_time 5;
//尝试登录2次后
SQL> select username,account_status,lock_date from dba_users;
SQL>alter user test1 account unlock;
操作已执行
已用时间: 17.614(毫秒). 执行号:1856.
SQL> select username,account_status,lock_date from dba_users;
-
-
- 分配权限
-
SQL> grant dba to TEST1;
SQL> select grantee,granted_role from dba_role_privs where grantee='TEST1';
SQL> revoke dba from TEST1;
-
- 视图的管理
视图分类:简单视图,复杂视图,物化视图
注意:简单视图和复杂视图不占磁盘空间,物化视图占磁盘空间。
SQL> CREATE VIEW TEST.V_T11 AS SELECT * FROM TEST.T1;
SQL> SELECT * FROM SYS.DBA_VIEWS WHERE DBA_VIEWS.OWNER='TEST';
SQL> drop view "TEST"."V_T11" restrict;
-
-
- 创建索引
-
规划索引表空间:表的数据是无序的,索引的数据是有序的。
创建索引表空间。
SQL> create tablespace idx_data datafile '/dm7/data/DAMENG/idx_data_01.dbf' size 32;
SQL>grant select on SYS.DBA_VIEWS to test;
SQL> create table test.v1 as select * from SYS.DBA_VIEWS;
SQL>create index test.idx_v1_name on test.v1(view_name) tablespace idx_data;
- 备份恢复
-
- 备份准备
--备份前数据库要处于归档模式
ALTER DATABASE MOUNT;
ALTER DATABASE ARCHIVELOG;
--添加归档,指定最大大小为200G
ALTER DATABASE ADD ARCHIVELOG 'DEST=/dm7/arch,TYPE=LOCAL,FILE_SIZE=256,SPACE_LIMIT=204800';
ALTER DATABASE OPEN;
-
- 备份准备
[root@localhost BACKUP_FILE_02]# grep BAK_PATH /dm8/data/PROD/dm.ini
CTL_BAK_PATH = /dm8/data/PROD/ctl_bak #dm.ctl backup path
BAK_PATH = /dm8/backup #backup file path
[root@localhost BACKUP_FILE_02]#
- 配置ODBC
-
- 备份准备
root@dca01 installdoc]# tar -xzvf unixODBC-2.3.0.tar.gz
配置 odbc
[root@enmoedu1 unixODBC-2.3.0]# cd unixODBC-2.3.0/
[root@enmoedu1 unixODBC-2.3.0]# ./configure --enable-gui=no
编译 ODBC
[root@enmoedu1 unixODBC-2.3.0]# make
[root@enmoedu1 unixODBC-2.3.0]# make install
查看 odbc 的版本
[root@enmoedu1 unixODBC-2.3.0]# odbc_config --version
查看 ODBC 配置文件的路径
[root@enmoedu1 unixODBC-2.3.0]# odbc_config --odbcini
[root@enmoedu1 unixODBC-2.3.0]# odbcinst -j
[root@enmoedu1 ~]# cat /usr/local/etc/odbc.ini
[dm7]
description = DM ODBC
DRIVER = DM7 ODBC DRIVER
SERVER = localhost
UID = SYSDBA
PWD = Dameng123
TCP_PORT = 5237
[root@enmoedu1 ~]# cat /usr/local /etc/odbcinst.ini
[DM8 ODBC DRIVER]
Description = ODBC DRIVER FOR DM8
DRIVER = /dm7/bin/libdodbc.so
isql dm7