注册
DCP培训博文
技术分享/ 文章详情 /

DCP培训博文

Qin 2022/10/11 2799 0 0

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、安全管理(审计):

  1. 打开审计开关(默认审计关闭)
    sp_set_enable_audit();
    0 关闭
    1 普通审计
    2 实时审计
    SQL> SELECT USER;
    行号 USER() ---------- ---------- 1 SYSAUDITOR
    SQL> sp_set_enable_audit(1);
  2. 审计方式
    (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 日志)
  3. 分析执行计划 优化器是 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 (数据库之间的连接)
  4. 配置参数
    MAL_INI = 1
  5. 配置 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
    重启数据库
  6. 创建 dblink
    用法:
  7. 把 dblink*.zip 复制到/lib64 目录下。
  8. 解压:unzip dblink*.zip
  9. 运行:cd /lib64; ./run.sh
  10. 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 部署说明
  11. 创建一个数据库作为 DEM 后台数据库, 数据库 dm.ini 参
    数配置进行优化, 推荐配置:
    MEMORY_POOL = 200
    BUFFER = 1000
    KEEP = 64
    SORT_BUF_SIZE = 50
  12. 在该数据库中执行以下 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
  13. 配置 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
  14. 启动 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
  15. 读写分离
    读写分级集群把数据守护集群
    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
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服