DCP培训博文
通过本次培训,对达梦数据库的基本操作和数据库运维更熟练,以下是我个人总结:
1、创建表(分区表、临时表、外部表)
范围分区:
CREATE TABLE Sales( Product_ID varchar2 (5),Sales_Cost
number (10))PARTITION BY RANGE (Sales_Cost)(PARTITION P1
VALUES LESS THAN (1000),PARTITION P2 VALUES LESS THAN
(2000),PARTITION P3 VALUES LESS THAN (3000));
哈希分区:
create table t_hash (id int) partition by hash(id)
(partition p1, partition p2);
列表分区:
create table t_list1 (id int,city varchar(20)) partition by
list(city)
(partition p1 values (‘aaa’), partition p2 values (‘bbb’));
组合分区:
CREATE TABLE SALE1(
SALES_ID INT, SALEMAN CHAR(20), SALEDATE DATETIME, CITY CHAR(10)
)
PARTITION BY LIST(CITY)
SUBPARTITION BY RANGE(SALEDATE) SUBPARTITION TEMPLATE(
SUBPARTITION P11 VALUES LESS THAN (‘2012-04-01’), SUBPARTITION P12 VALUES LESS THAN (‘2012-07-01’), SUBPARTITION P13 VALUES LESS THAN (‘2012-10-01’), SUBPARTITION P14 VALUES EQU OR LESS THAN (MAXVALUE))
(
PARTITION P1 VALUES (‘北京’, ‘天津’)
(
SUBPARTITION P11_1 VALUES LESS THAN (‘2012-10-01’), SUBPARTITION P11_2 VALUES EQU OR LESS THAN (MAXVALUE)
),PARTITION P2 VALUES (‘上海’, ‘南京’, ‘杭州’), PARTITION P3 VALUES (DEFAULT)
);
外部表:准备外部数据+写控制文件+创建表
准备数据
cat t1.txt
1,aaa
2,bbb
3,ccc
写控制文件
LOAD DATA
INFILE ‘/home/dmdba/t1.txt’ INTO TABLE T1
FIELDS ‘,’ 创建外部表
SQL> create external table tab3 (c1 int,c2 varchar(20)) from
‘/home/dmdba/t1.ctl’;
2、创建索引
唯一索引:
create unique index ind_test on test(id);
复合索引:
create index ind_test on test (id,name) tablespace tbs;
函数索引:
create index ind_test on test (lower(name));
分区索引:
create index ind_test1 on test1(c1) global;
全文索引:
Select * from “CTISYS”,”SYSCONTESTINDEXES”;
Create context indes “IND_TEST” on “SYSDBA”.”TEST”(“NAME”) lexer DEFAULT_LEXER select * from cti$ind_test$i;
3、序列,同义词,视图
序列:
create sequence s1;
视图:
create table test as select id,name from sysobjects where
rownum<=20;
create materialized view mv1 as select * from test;
创建物化视图日志:
create materialized view log on test;
alter table test add constraint test_pri primary key(id);
create materialized view mv3 refresh fast start with sysdate next sysdate+1 as select * from test;
4、安全管理(审计):
- 打开审计开关(默认审计关闭)
sp_set_enable_audit();
0 关闭
1 普通审计
2 实时审计
SQL> SELECT USER;
行号 USER() ---------- ---------- 1 SYSAUDITOR
SQL> sp_set_enable_audit(1);
- 审计方式
(1.系统审计(数据库启动关闭 log)2.对象审计 3.语句审计 2
和 3 记录到审计日志中)
Oracle:audit noadudit dbms_fga
达梦:对象 SP_AUDIT_OBJECT
审计向表中录入数据
SQL>sp_audit_object(‘insert’,‘SYSDBA’,‘SYSDBA’,‘TEST’,‘ALL’); – 细 粒
度
SQL> select username,sql_text from v$auditrecords;
5、优化
改写 SQL(开发 sql 语句写的烂) 等价改写
select * from abc where id in (1,20);
select * from abc where id=1 or id=20;
配置 SQL 日志 (注意参数 SVR_LOG 分析 SQL)
课后练习(配置 sql 日志)
- 分析执行计划 优化器是 CBO
执行计划:访问路径
参数优化
内存
数据缓冲区 buffer
字典缓冲区 DICT_BUF_SIZE
SQL 缓冲区(执行计划,结果集合(服务器,客户端))
CACHE_POOL_SIZE
USE_PLN_POOL
结果集
客户端
dm_svc.conf
ENABLE_RS_CACHE 是否开启
RS_CACHE_SIZE 缓存大小
RS_REFRESH_FREQ 刷新的频率
服务器
RS_CAN_CACHE 启用服务器端缓存
RS_CACHE_TABLES 缓存基表清单
RS_CACHE_MIN_TIME 执行时间的下限
Oracle 固定 SQL 执行计划 10g outline 11g SPM
排序区
Sort_buf_size
哈希区
Hj_buf_size
Memoty pool 公共池,减少系统调用
Memory target 共享内存总数
线程
WORKER_THREADS
TASK_THREADS
V$MEM_POOL(内存池) ,v$buffer(缓冲区)
6、数据快速加载/数据迁移
dmfldr 数据快速装载 文本文件中数据装载到数据库
准备文本文件
cat a.txt
1,aaa
2,abc
3,bbb
写控制文件
LOAD DATA
INFILE ‘/home/dmdba/a.txt’ INTO TABLE T1
FIELDS ‘,’ SQL> create table t1 (id int,name varchar(20));
装载
[dmdba@node1 bin]$ ./dmfldr SYSDBA/SYSDBA
CONTROL=‘/home/dmdba/a.ctl’ dmfldr V8
控制文件输入参数出错,请确认以符号’作为首尾字符
./dmfldr SYSDBA/SYSDBA
CONTROL=‘/home/dmdba/a.ctl’ cat /home/dmdba/a.txt
id,name
1,qqq
2,qwe
./dmfldr SYSDBA/SYSDBA
CONTROL=‘/home/dmdba/a.ctl’ skip=1
大字段:
SQL> desc t2
/dmfldr SYSDBA/SYSDBA
CONTROL=‘/home/dmdba/a.ctl’ skip=1
DTS 数据迁移
方法
同步 (源端和目的端都要正常使用,源端变换,目标
端实时跟着变化)
异步 (源端和目的端都要正常使用,可能迁移一次源
端没有数据更新,数据都更新在目标端。可能源端也正常增
加数据,定期把源端数据迁移到目标端)
工具
DTS
ETL (DMETL KETTLE…)
实时同步(DMHS ogg …)
导出导入
数据快速加载
实施
ORACLE—DM
准备工作
Oracle 打开监听,启动数据,查看 ORACLE_SID,注
意 JDBC 驱动(尝试更换驱动)
7、DBLINK (数据库之间的连接)
- 配置参数
MAL_INI = 1
- 配置 mal
[dmdba@node1 bin]$ cat /dm8/data/DAMENG/dmmal.ini
[MAL_INST1]
MAL_INST_NAME = DMSERVER
MAL_HOST = 192.168.10.61
MAL_PORT = 5256
MAL_INST_HOST = 192.168.10.61
MAL_INST_PORT = 5236
[MAL_INST2]
MAL_INST_NAME = DM2
MAL_HOST = 192.168.10.62
MAL_PORT = 5256
MAL_INST_HOST = 192.168.10.62
MAL_INST_PORT = 5236
重启数据库
- 创建 dblink
用法:
- 把 dblink*.zip 复制到/lib64 目录下。
- 解压:unzip dblink*.zip
- 运行:cd /lib64; ./run.sh
- cd /lib64; ln -s libnsl-2.17.so libnsl.so.1
dblink 环境即部署成功了,在 DM8 上创建 dblink 吧。
在 DM8 上通过下述语句创建 dblink:
create or replace public LINK test connect ‘ORACLE’ with system
identified by “oracle” using ’ (DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.233)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = orcl )
)
)';
DEM 部署说明
- 创建一个数据库作为 DEM 后台数据库, 数据库 dm.ini 参
数配置进行优化, 推荐配置:
MEMORY_POOL = 200
BUFFER = 1000
KEEP = 64
SORT_BUF_SIZE = 50
- 在该数据库中执行以下 SQL 脚本 dem_init.sql,重启数据
库实例;
SQL>set define off
SQL>set char_code utf8
SQL>start /dm8/web/dem_init.sql
[dmdba@localhost bin]$./DmServiceDMSERVER restart
- 配置 tomcat
(1)解压 tomcat
[dmdba@localhost ~]$unzip apache-tomcat-8.0.20.zip
(2) 在 conf/server.xml 中 <Connector port=“8080” protocol=“HTTP/1.1”… 追加属性字段 maxPostSize=“-1” <Connector port=“8080” protocol=“HTTP/1.1” maxThreads=“150” connectionTimeout=“20000”
redirectPort=“8443” maxPostSize=“-1”
/>
(3)修改 jvm 启动参数,在 catalina.sh 加入如下内容:
JAVA_OPTS=“-server -Xms512m -Xmx1024m
-XX:MaxPermSize=512m -Djava.library.path=/dm8/bin” 4. 配置后台数据库的连接信息:ip、port、用户名、密码信
息等,在文件 WEB-INF/db.xml(dem.war 中)配置如下:
(1)配置 JAVA 环境变量到 dmdba 用户的.bash_profile
中,拷贝 dem.war 到 apache 的 webapps 中。
export
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.272.b10-7.k
y10.x86_64/jre
export PATH=$JAVA_HOME/bin:$PATH
[dmdba@localhost bin]$ cp /dm8/web/dem.war
/home/dmdba/apache-tomcat-8.0.20/webapps/
(2)启动 tomcat。
[dmdba@localhost bin]$./startup.sh
(3)修改 db.xml,IP,端口,用户名密码等信息,根据
时间进行调整。
<?xml version=“1.0” encoding=“UTF-8”?>
<ConnectPool>
<Dbtype>dm8</Dbtype>
<Server>192.168.10.65</Server>
<Port>5236</Port>
<User>SYSDBA</User>
<Password>SYSDBA</Password>
<InitPoolSize>50</InitPoolSize>
<CorePoolSize>100</CorePoolSize>
<MaxPoolSize>500</MaxPoolSize>
<KeepAliveTime>60</KeepAliveTime>
<DbDriver></DbDriver>
<DbTestStatement>select 1</DbTestStatement>
<SSLDir>…/sslDir/client_ssl/SYSDBA</SSLDir>
<SSLPassword></SSLPassword>
</ConnectPool>
(4)关闭 tomcat
[dmdba@localhost bin]$ ./shutdown.sh
- 启动 tomcat 并且访问
(1)启动 tomcat。
[dmdba@localhost bin]$./startup.sh
(2)假设本机 ip 为 192.168.10.65,开启浏览器访问 url
(http://192.168.10.65:8080/dem),登录(admin/888888)
如何利用 DEM 维护和管理网络中的数据库,要在数据库的
机器上安装代理。
/dm8/tool/dmagent
编译 config.properties
[root@node1 dmagent]# cat config.properties
##[General]
##run_mode values:
##0 - assist process
##1 - assist process & monitor
##2 - assist process & monitor & deployer
run_mode=2
##id_gen_policy values:
##0: mac&ip, mac preferred
##1: ip
id_gen_policy=0
ap_port=6363
rmi_port=6364
##[DEM]
center.url=http://192.168.10.61:8080/dem
center.agent_servlet=dem/dma_agent
[root@node1 dmagent]# ./DMAgentService.sh start (启动)
==================================================== 11. 数据守护(对数据库做冗余)
主备机器
主机 读写
备机 只读
备机的数据是应用主机的 redolog。把主机传输的 redolog
在备机应用。
最好配置 NTP
要求:3 台机器 (主 备 监视器)
主机配置:
dm.ini ----------
INSTANCE_NAME = DM1
PORT_NUM = 5236
DW_INACTIVE_INTERVAL = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
RLOG_SEND_APPLY_MON = 64
dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = DM1
MAL_HOST = 192.168.10.61
MAL_PORT = 5238
MAL_INST_HOST = 192.168.10.61
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT =5240
[MAL_INST2]
MAL_INST_NAME = DM2
MAL_HOST = 192.168.10.62
MAL_PORT = 5238
MAL_INST_HOST = 192.168.10.62
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT =5240
dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DM2
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 453331
INST_INI = /dm8/data/DAMENG/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm8/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0
关闭主库利用 dmrman 做备份,把备份传输到备机,在备机
进行还原。
备库
dm.ini
INSTANCE_NAME = DM2
PORT_NUM = 5236
DW_INACTIVE_INTERVAL = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
RLOG_SEND_APPLY_MON = 64
dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = DM1
MAL_HOST = 192.168.10.61
MAL_PORT = 5238
MAL_INST_HOST = 192.168.10.61
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT =5240
[MAL_INST2]
MAL_INST_NAME = DM2
MAL_HOST = 192.168.10.62
MAL_PORT = 5238
MAL_INST_HOST = 192.168.10.62
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT =5240
dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DM1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 453331
INST_INI = /dm8/data/DAMENG/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm8/bin/dmserver
RLOG_APPLY_THRESHOLD = 0
启动主库:
./dmserver /dm8/data/DAMENG/dm.ini mount
SQL>SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 1);
SQL>sp_set_oguid(453331);
SQL>alter database primary;
SQL>SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 0);
启动备库:
以 Mount 方式启动备库
./dmserver /dm8/data/DAMENG/dm.ini mount
SQL>SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 1);
SQL>sp_set_oguid(453331);
SQL>alter database standby;
SQL>SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 0);
启动守护:
主库
[dmdba@node1 bin]$ ./dmwatcher
/dm8/data/DAMENG/dmwatcher.ini
备库
[dmdba@node2 bin]$ ./dmwatcher
/dm8/data/DAMENG/dmwatcher.ini
dmmonitor.ini
MON_DW_CONFIRM = 1
MON_LOG_PATH = /dm8/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0
[GRP1]
MON_INST_OGUID = 453331
MON_DW_IP = 192.168.10.61:5239
MON_DW_IP = 192.168.10.62:5239
启动监视器:
[dmdba@node3 bin]$ ./dmmonitor /dm8/dmmonitor.ini
- 读写分离
读写分级集群把数据守护集群
ARCH_TYPE = TIMELY
配置客户端:
JDBC
<DRIVER>dm.jdbc.driver.DmDriver</DRIVER>
<URL>jdbc:dm://192.168.10.61:5236?rwSeparate=1&rwPerce
nt=1</URL>
ODBC
RW_SEPARATE
是否配置读写分离:TRUE,FALSE
RW_SEPARATE_PERCENT
读写分离的比例:0~100
总结:分区表,临时表,外部表,索引,序列,物化视图,
同义词,SQL 优化,数据装载,DTS,DBLINK,数据守护,
审计 DEM