注册
DCP学习分享
专栏/培训园地/ 文章详情 /

DCP学习分享

XP pang 2024/06/27 675 0 0
摘要


1普通表
创建表:
create table test.t1 (id int);
获取表的定义:
sp_tabledef('TEST','T1');
2堆表
创建非并发分支
(模式下拉选择表--右键新建表--存储--堆表选项--选择不设定分支)

创建并发分支为 4,非并发分支为 2
(模式下拉选择表--右键新建表--存储--堆表选项--选择指定并发和非并发分支)

查看表是什么表
select * from dba_indexes where OWNER='TEST';
3 分区表
范围分区(Range)
(分区列是数字或者日期时间类型)
新建表空间:
create tablespace TEST1 DATAFILE 'TEST01.DBF' size 64 ;
create tablespace TEST2 DATAFILE 'TEST02.DBF' size 64;
create tablespace TEST3 DATAFILE 'TEST03.DBF' size 64;

新建表:
选择列和数据类型后,选择分区--勾选创建为分区表--添加分区,选范围分区--添加分区项,修改分区名,选择表空间

查看数据库中的分区表:
select * from dba_tables where PARTITIONED='YES' and OWNER='TEST';

查看分区表的分区信息:
select * from SYS.DBA_TAB_PARTITIONS where TABLE_NAME='T_F1' ;

插入数据:
begin
for i in 1..2900 LOOP
insert into test.t_f1 values(i,i||'AAA');
commit;
end loop;
end;

插入大数据:
ALTER TABLE TEST.T_F1 ADD PARTITION pn VALUES LESS THAN (MAXVALUE);
INSERT INTO TEST.T_F1 VALUES (3500,'3500AA');
SELECT * FROM TEST.T_F1_PN;

新建堆表加分区(主表和子表必须在同一个表空间):
选择列和数据类型后,存储选择堆表不设定分支,选择分区--勾选创建为分区表--添加分区,选范围分区--添加分区项,修改分区名,选择表空间。
列表分区
通过指定表中的某个列的离散值集,来确定应当存储在一起的数据。 列表分区适合字符串类型,例如城市、地区等。
新建表:
create table test.t_sales
(sales_id INT,
saleman char(20),
saledate DATETIME,
city char(10))
PARTITION BY LIST(city)
(PARTITION p1 VALUES ('北京', '天津'),
PARTITION p2 VALUES ('上海', '南京', '杭州'),
PARTITION p3 VALUES ('武汉', '长沙'),
PARTITION p4 VALUES ('广州', '深圳'));

插入语句:
insert into test.T_SALES values(1,'AAA','2007-01-09','北京');
insert into test.T_SALES values(2,'BBB','2006-03-19','南京');
insert into test.T_SALES values(3,'CCC','2017-04-11','武汉');
insert into test.T_SALES values(4,'DDD','2021-09-09','长沙');
COMMIT;

验证:
select * from test.T_SALES
select * from test.T_SALES_P1
select * from test.T_SALES_P2
select * from test.T_SALES_P3
select * from test.T_SALES_P4

插入不在分区范围的数据:
ALTER TABLE TEST.T_SALES ADD PARTITION PN VALUES (DEFAULT);
insert into test.T_SALES values(5,'EEE','2022-09-09','沙');
COMMIT;

Hash分区
Hash 分区数据随机存储,存取速度快,读取数据比较满,各个分区
数据是均匀存放。 如果 hash 分区不指定分区名,通过 hash 分区数量自己创建。

第一种指定分区名:
create table test.t_hash1(id int,name VARCHAR(50))
PARTITION BY hash (id)
(
PARTITION p1,
PARTITION p2,
PARTITION p3,
PARTITION p4 );

插入数据:
BEGIN
for i in 1..400 LOOP
insert into test.t_hash1 values (i,'aaa'||i);
commit;
end loop;
end;

第二种指定分区数量,创建分区表,创建 hash 分区表有 10 个分区
create table test.t_hash2(id int,name VARCHAR(50))
PARTITION BY hash (id) PARTITIONS 10;

间隔分区
间隔分区是范围分区的扩展。间隔分区是按照时间间隔自动创建分区。 时间间隔分区支持年月、时分秒创建。
查询 1 年后今天的时间:
select sysdate,sysdate+numtoyminterval(1,'YEAR');
查询 1 个月后今天的时间:
select sysdate,sysdate+numtoyminterval(1,'MONTH');
查询 1 天后现在的时间
select sysdate,sysdate+numtodsinterval(1,'DAY');
查询 1时后现在的时间
select sysdate,sysdate+numtodsinterval(1,'HOUR');
查询 1分后现在的时间
select sysdate,sysdate+numtodsinterval(1,'MINUTE');
查询 1 秒后的时间
select sysdate,sysdate+numtodsinterval(1,'SECOND');

可以按年、月、日、时、分、秒、创建间隔分区
按年创建间隔分区表
create table test.t_interval_year
( id int,
name varchar(100),
brithday date )
PARTITION BY RANGE (brithday)
INTERVAL (numtoyminterval(1,'YEAR'))
( PARTITION p2014 values less than (to_date('2015-01-01')),
PARTITION p2015 values less than (to_date('2016-01-01')) );

插入数据:
insert into test.T_INTERVAL_YEARvalues(1,'AAA','2013-02-09');
insert into test.T_INTERVAL_YEAR values(2,'BBB','2015-08-02');
insert into test.T_INTERVAL_YEAR values(3,'CCC','2018-02-19');
insert into test.T_INTERVAL_YEARvalues(4,'DDD','2019-01-29');
insert into test.T_INTERVAL_YEAR values(5,'EEE','2020-02-09');
insert into test.T_INTERVAL_YEAR values(7,'FFF','2016-07-18');
Commit;

组合分区 List_range
创建表:
create table test.t_sales2 ( ---创建表
saleman varchar(50),
saledate datetime,
city varchar(50) )
PARTITION BY list (city) --创建主分区列
SUBPARTITION by RANGE (saledate) --创建子分区列
SUBPARTITION TEMPLATE
( --创建子分区
SUBPARTITION p11 VALUES LESS than ('2010-01-01'),
SUBPARTITION p12 VALUES LESS than ('2016-01-01'),
SUBPARTITION p13 VALUES LESS than ('2021-01-01'),
SUBPARTITION p14 VALUES LESS than (MAXVALUE) --不在以上范围内的值存在此分区)
( --创建主分区
PARTITION p1 values('北京','天津'),
PARTITION p2 values ('上海','南京'),
PARTITION p3 values ('武汉','长沙'),
PARTITION p4 values (DEFAULT) );

插入数据验证:
insert into test.t_sales2 values ('AAA','2016-06-09','北京');
insert into test.t_sales2 values('BBB','2018-01-09','南京');
insert into test.t_sales2 values('CCC','2019-03-06','武汉');
insert into test.t_sales2 values('DDD','2020-04-23','北京');
insert into test.t_sales2 values('DDD','2021-08-19','南宁');
Commit;

维护分区
删除分区:
alter table "TEST"."T_F1" drop partition "PN";

合并分区:
alter table "TEST"."T_F1" merge partitions "P1","P2" into partition "p1_p2";

拆分分区:
alter table test.t_f1 SPLIT PARTITION "p1_p2" AT (1001) into (PARTITION p1,PARTITION p2);

修改字段值为不在分区数据:
开启数据库行移动 alter table test.t_f1 ENABLE ROW MOVEMENT;
update test.t_f1 set id=2005 where id=100;

选择子表节点右键可以管理分区,以上都可通过图形化处理,也可给分区更换表空间。

4外部表
第一步:创建目录( su - dmdba )
mkdir -p /dm/backup/data ---将权限分配给dmdba
Ls -ld /dm/backup/data ---看权限
rm -rf /dm/backup/data ---删除目录
第二步:在数据库创建目录
( su - dmdba 进入图形化界面)选择目录--
右键新增目录--
录入目录名称( DMDIR )和目录路径(/dm/backup/data)
第三步:给test用户新建的目录dmdir权限
Grant read,write on directory dmdir to test;
第四步:将控制文件写在建表语句中
打开目录( su - dmdba
cd /dm/backup/data )
写文本 vi ext1.txt
按insert,录入文本,再按esc退出,录入
“:wq”保存并退出编辑模式。

第五步:选择对应的模式下的外部表--
创建表的列名和数据类型--
选择数据文件目录,选择目录名,选择文件名--
分隔符可在参数列表中写“ fields ‘,’ ”,如果不显示第一行数据可在参数列表中写“ fields ‘,’,skip 1 ”

序列、同义词、物化视图
1序列
新建序列:
选择对应模式下--
序列右键模式名TEST, 序列名 SEQ1,起始值 1,增量 1,最小值 1,最大值 10,勾上高速缓冲给值5

初始化(查下一个值)
select test.seq1.nextval;

查询序列当前值
select test.seq1.currval;

修改序列最大值为 100,关闭缓存:
ALTER SEQUENCE "TEST"."SEQ1" MAXVALUE 100 NOCACHE;

删除序列:
drop SEQUENCE SEQ1;

2同义词
对表、视图、序列、函数、存储、触发器有效
把select any table
select any view两个权限给test用户(管理用户,选择用户右键修改,系统权限里面选择)

私有同义词:创建普通同义词:
create SYNONYM emp for dmhr.employee;

创建公共同义词:(图形化,选择公共同义词,右键新建 --
同义词名EMP --
对象所属模式 DMHR --
对象名 EMPLOYEE)
CREATE PUBLIC SYNONYM "EMP" FOR "DMHR"."EMPLOYEE";

查看普通同义词:
select * from user_SYNONYMS;

查看公共同义词:
select * from SYS.DBA_SYNONYMS where OWNER='PUBLIC' and SYNONYM_NAME='EMP';

3物化视图
建立物化视图
图形化方式:选模式--
物化视图右键新建--
视图名MV_T1 --
子查询 select * from T1;
命令方式:CREATE MATERIALIZED VIEW MV_T1 AS SELECT * FROM t1;

查询物化视图 select * from mv_t1;

修改表数据 update t1 set name=’AAABBBCC1’ where id=1; commit;

手动刷新视图 refresh MATERIALIZED VIEW mv_t1;

查视图信息 select * from USER_MVIEWS;

建立物化视图,自动刷新,自动完全刷新
查询建表:
create table emp as select * from dmhr.EMPLOYEE;

命令建立视图(表没有主键就用命令):
create MATERIALIZED VIEW mv_emp
REFRESH on commit force as
select * from emp ;

图形化:新建视图,视图名 MV_EMP --
子查询 select * from emp ; --
刷新--
REFRSH 选项,选择REFRSH ON COMMIT (ON DEMAND手动 ON COMMIT自动)--
选择WITH PRIMARY KEY主键 (WITH PRIMARY KEY主键 WITH ROWID)--
选 COMPLETE ( FAST快速 COMPLETE完全 FORCE默认 )

验证:select * from emp ;
select * from mv_emp;
UPDATE emp SET EMPLOYEE_NAME='马学铭1' WHERE EMPLOYEE_ID=1001;
COMMIT;

创建物化视图,自动-快速刷新-基于主键
查询建表:
create table dept as select * from dmhr.department ;

创建主键:选择表,右键修改,主键勾选 DEPARTMENT_ID
命令:alter table "TEST"."DEPT" add primary key("DEPARTMENT_ID");

创建物化视图日志:物化视图下拉,日志表右键新增,表名 DEPT
命令:create materialized view log on “TEST”.”DEPT”;

创建物化视图:新建视图,视图名 MV_DEPT --
子查询 select * from dept; --
刷新选REFRSH ON COMMIT
WITH PRIMARY KEY
FAST
命令:create materialized view "TEST"."MV_DEPT"
refresh on commit with primary key fast
as select * from dept;

验证:select * from "TEST"."MV_DEPT";
select * from "TEST"."DEPT";
UPDATE DEPT SET DEPARTMENT_NAME='总经理办1'
WHERE DEPARTMENT_ID=101;
COMMIT;

创建物化视图,自动-快速刷新-基于 rowid
创建表:
create table emp2 as
select employee_id,employee_name,salary
from dmhr.EMPLOYEE;

创建物化视图日志表
create MATERIALIZED VIEW log on emp2
with ROWID (employee_id,employee_name,salary);

创建物化视图
create MATERIALIZED VIEW mv_emp2
REFRESH fast on commit
with ROWID as SELECT
a.rowid emp2rowid,a.employee_id,a.employee_name,a.salary from emp2 a;

验证:select * from "TEST"."EMP2" where EMPLOYEE_ID=1001;
select * from "TEST"."MV_EMP2" where EMPLOYEE_ID=1001;
update EMP2 set EMPLOYEE_NAME='马学铭2' where EMPLOYEE_ID=1001;
commit;

修改物化视图不刷新:
alter materialized view "TEST"."MV_T1" never refresh;

删除物化视图日志:
drop MATERIALIZED VIEW log on dept;

删除物化视图:
drop MATERIALIZED view mv_dept;

索引
1统计信息
包含表、列、索引。
DBMS_STATS包
收集表的统计信息:dbms_stats.gather_table_stats ('TEST','T1');

查询表的统计信息:dbms_stats.table_stats_show ('TEST','T1');

查看列的统计信息:
dbms_stats.column_stats_show ('TEST','T1','ID');
(查看列之前先得搜集表的统计信息)

收集模式的统计信息
dbms_stats.GATHER_SCHEMA_STATS ('TEST');
查询模式的统计信息
dbms_stats.SCHEMA_STATS_show ('TEST');
sp_col_stat
查看达梦自带参数
select * from v$ifun where name like 'SP%_STAT';

只搜集表的统计信息,不搜集列:sp_tab_stat_init('TEST','T_F1');

查看表的统计信息:dbms_stats.table_stats_show ('TEST','T_F1');

搜集列的统计信息:
sp_col_stat_init('TEST','T_F1','ID');

查看列的统计信息
dbms_stats.column_stats_show ('TEST','T_F1','ID');

验证:
多插入一些数据
begin
for i in 1001..100000 loop
insert into t1 values (i,'BBB'||i);
commit;
end loop;
end;

新建索引:选择表T1,下拉约束右键新增,索引名称为T1_ID,选择ID。

再更新表统计信息、查看表的统计信息
dbms_stats.gather_table_stats ('TEST','T1');
dbms_stats.table_stats_show ('TEST','T1');

查看表的执行计划(SSCN代表走了索引)
explain select ID FROM T1 WHERE ID LIKE '100%';

2唯一索引
T1表下拉索引右键,新建索引名称为IND_T1_ID---
B树索引,二级索引,唯一索引--
选择ID(ID列不能有重复值)

3复合/组合索引
CREATE INDEX IND_ID_NAME ON T1(ID,NAME);

4位图索引
T_F1表下拉索引右键新增,名称为IND_T_ID,
选位图索引,选ID。
(适合OLAP系统,列上值有大量重复数据)

5函数索引
T1表下拉索引右键新增,名称为T1_ID,
B树索引,二级索引,函数索引,
表达式 UPPER(NAME) (如果数值为小写改为 lower(NAME) )

验证:EXPLAIN SELECT * FROM T1 WHERE LOWER(NAME)='AAA2';

查询索引:SELECT * FROM SYS.USER_INDEXES WHERE TABLE_NAME LIKE '% T1%';

6局部索引
创建:CREATE INDEX T_F1_ID ON T_F1(ID);

查询索引:SELECT * FROM SYS.USER_INDEXES WHERE TABLE_NAME LIKE '%T_F1%';
(分区表创建的索引默认为局部索引)

7全局索引
创建:create INDEX t_f1_name on t_f1(name) GLOBAL;

查询索引:SELECT TABLE_NAME,INDEX_NAME,PARTITIONED FROM SYS.USER_INDEXES
WHERE PARTITIONED='NO' AND TABLE_NAME='T_F1';
(PARTITIONED为NO全局,为YES分区)

8维护索引
查看索引:select table_name,INDEX_NAME,STATUS,VISIBILITY
FROM SYS.USER_INDEXES;
(表名,索引名,状态,可见情况)

索引无效 alter INDEX IND_NAME UNUSABLE;

重建索引 alter INDEX IND_NAME RENUILD;

索引不可见 ALTER INDEX IND_NAME INVISIBLE;

索引可见 ALTER INDEX IND_NAME VISIBLE;

索引监控 ALTER INDEX IND_NAME MONITORING OSAGE;

查看监控 select * from SYS.V$OBJECT_USAGE;

关闭监控 ALTER INDEX IND_NAME NOMONITORING
USAGE;

9全文索引
自动更新统计信息:创建代理环境,添加作业,右键新建作业,作业步骤的步骤类型选更新统计信息。
创建全文索引
新建:CREATE CONTEXT INDEX IND_ADDRESS ON PERSON.ADDRESS(ADDRESS1);

全量更新全文索引
ALTER CONTEXT INDEX PERSON.IND_ADDRESS ON PERSON.ADDRESS REBUILD;

查询四张表
用来保存分词结构
SELECT * FROM PERSON.CTI$IND_ADDRESS$I;
保存基表发生增量变化的数据
SELECT * FROM PERSON.CTI$IND_ADDRESS$P;
保存原纪录 rowid 和新纪录 docid 映射关系
SELECT * FROM PERSON.CTI$IND_ADDRESS$N;
保存了所有将被删除的 docid
SELECT * FROM PERSON.CTI$IND_ADDRESS$D;

执行查询计划,数据少会不走索引
EXPLAIN SELECT * FROM PERSON.ADDRESS WHERE CONTAINS(ADDRESS1,'洪山区');

增量更新全文索引
修改数据:
UPDATE PERSON.ADDRESS SET ADDRESS1='洪山区123456' WHERE ADDRESSID =15;
COMMIT;

增量更新全文索引
ALTER CONTEXT INDEX PERSON.IND_ADDRESS ON PERSON.ADDRESS INCREMENT;

查询数据
SELECT * FROM PERSON.ADDRESS WHERE CONTAINS(ADDRESS1,'洪山区' AND '123456');

创建全文索引填充更新
删除全文索引
DROP CONTEXT INDEX PERSON.IND_ADDRESS ON PERSON.ADDRESS;

创建索引
CREATE CONTEXT INDEX PERSON.IND_ADDRESS ON PERSON.ADDRESS(ADDRESS1) SYNC;

修改数据(不需更新p表有值)
UPDATE PERSON.ADDRESS SET ADDRESS1='洪山区789' WHERE ADDRESSID =15;
COMMIT;

增量更新全文索引
ALTER CONTEXT INDEX PERSON.IND_ADDRESS ON PERSON.ADDRESS INCREMENT;

查询数据
SELECT * FROM PERSON.ADDRESS WHERE CONTAINS(ADDRESS1,'洪山区' AND '789');

DEM管理
1DEM部署说明(su - dmdba 操作)
解压安装包
su - root
分配权限解压到哪个目录给哪个权限cd /opt
chown dmdba:dinstall *
su - dmdba
cd /opt
unzip 压缩文件名称.zip(DEM和TOMCAT)
cd /dm8/data/DM01/

  1. 创建一个数据库作为DEM后台数据库, 数据库dm.ini参数配置进行优化, 推荐配置:
    MEMORY_POOL= 200
    BUFFER= 1000
    KEEP= 64
    SORT_BUF_SIZE= 50
  2. 在该数据库中执行以下SQL脚本dem_init.sql,重启数据库实例;
    切换用户 su - dmdba
    进入目录 cd /dm8/bin
    登录数据库 ./disql SYSDBA/DMO1SYSDBA
    执行sql文件 start /opt/dem_init.sql
    重启实例 ./DmServiceDMSVR01 restart
  3. 配置tomcat
    (1)解压tomcat
    [dmdba@localhost ~]$unzip apache-tomcat-8.0.20.zip
    (2)在conf/server.xml中 修改字段
    进入文件夹 su - dmdba cd /opt/apache-tomcat-8.0.20
    查看文件名称 ls
    打开文件 vi server.xml
    修改数据 insert
    esc
    :/8080
    找到位置redirectPort="8443"在这之后加
    maxPostSize="-1"/>
    退出 esc
    :wq
    (3)修改jvm启动参数,在catalina.sh加入如下内容:
    JAVA_OPTS="-server -Djava.library.path=/dm8/bin"
    打开目录 cd /opt/apache-tomcat-8.0.20/bin
    打开文件 vi catalina.sh
    录入数据 insert
    esc
    定位数据 :/cygwin=false
    修改数据 insert
    cygwin=false加前如下内容JAVA_OPTS="-server-Djava.library.path=/dm8/bin"
    esc
    保存退出 :wq
  4. 配置后台数据:库的连接信息:ip、port、用户名、密码信息等,在文件WEB-INF/db.xml(dem.war中)配置如下:
    (1)配置JAVA环境变量到dmdba用户的.bash_profile中,拷贝dem.war到apache的webapps中。
    查看目录是否存在不报错即可 ll /usr/lib/jvm/java-1.8.0
    -openjdk-1.8.0.272.b10-7.ky10.x86_64/jre
    加目录 cd ~
    修改数据 vi .bash_profile
    在最后增加以下脚本不要删除之前的 insert
    Export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
    -1.8.0.272.b10-7.ky10.x86_64/jre
    export PATH=$JAVA_HOME/bin:$PATH
    保存 esc
    :wq
    分享文件 source .bash_profile
    验证java环境 echo $JAVA_HOME
    cd $JAVA_HOME
    分配权限 chmod 755 catalina.sh
    chmod 755 shutdown.sh
    chmod 755 startup.sh
    转移文件
    cp /opt/dem.war /opt/apache-tomcat-8.0.20/webapps/
    (2)启动tomcat。
    进入目录 cd /opt/apache-tomcat-8.0.20/bin
    启动 ./startup.sh
    校验打开目录cd /opt/apache-tomcat-8.0.20/webapps/
    ll
    存在dem文件即为成功
    (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
    进入目录 cd /opt/apache-tomcat-8.0.20/webapps/dem
    查看文件夹 ls
    进入文件夹 cd WEB-INF
    查看文件 ll
    修改文件 vi db.xml
    重启tomcat关 ./shutdown.sh
    开 ./startup.sh
  5. 启动tomcat并且访问
    (1)启动tomcat。
    [dmdba@localhost bin]$./startup.sh
    (2)假设本机ip为192.168.10.65,开启浏览器访问url(http://192.168.10.65:8080/dem),登录(admin/888888)
    安全管理
    1基于 SYSDBA 用户操作系统验证:
    创建 dmdba 组,将 dmdba 组加入到 dmdba 用户
    su - root
    groupadd dmdba
    Uesrmod -G dmdba dmdba
    查看用户信息 Id dmdba
    将参数 ENABLE_LOCAL_OSAUTH 值改为 1
    查看select para_name,para_value,para_type from v$dm_ini where para_name='ENABLE_LOCAL_OSAUTH';
    修改 sp_set_para_value(2,'ENABLE_LOCAL_OSAUTH',1);
    重启实例 ./DmServiceDMSVR01 restart
    验证:数据库免密登录
    su - dmdba
    ./disql / as sysdba
    Select user
    2基于 TEST 用户的操作系统验证:
    su - root
    groupadd dmusers
    useradd -G dmusers test
    su - test
    cd /dm8/bin
    ./disql / as users
    Select user
    3存储加密
    半透明
    图形化:新建表,新建列,列加密属性,选择半透,选择语法 DES_ECB

命令:create table "TEST"."T_ENC" ( "ID" INT,
"NAME" VARCHAR(50) encrypt with "DES_ECB" manual );

验证:用户只能查询自己插入的数据
TEST 用户:

SYSDBA 用户操作如下:

DM 数据库支持的加密算法:
select * from sys.V$CIPHERS;
4审计
1.开启审计
用审计操作员登录数据库:SYSAUDITOR
查看数据库是否开启审计:
select * from v$dm_ini where para_name like '%ENABLE_AUDIT%';
0 关闭审计
1 打开普通审计
2 打开普通审计和实时审计

打开数据库审计:
sp_set_enable_audit(1);
关闭审计:
sp_set_enable_audit(0);

查看审计日志文件:
su - dmdba
cd /dm8/data/DAMENG/ ( DAMENG是实例名称 )
查找日志文件 ll AUDIT*
看下文件名称 ll
2语句级审计
用审计操作员登录数据库:SYSAUDITOR
SP_AUDIT_STMT( TYPE VARCHAR(30),
USERNAME VARCHAR (128),
WHENEVER VARCHAR (20) )

参数说明:
TYPE:语句级审计选项,即上表中的第一列
USERNAME :用户名,NULL 表示不限制
WHENEVER :审计时机,可选的取值为:
ALL:所有的
SUCCESSFUL:操作成功时
FAIL:操作失败时

审计 TEST 用户对表的 DDL 操作
sp_audit_stmt('TABLE','TEST','ALL');
验证:
用test用户创建表 create table b(ID INT);
创建表后查看审计信息用SYSAUDITOR
select * from V$AUDITRECORDS;
删除表 drop table b;
删除表后查看审计信息用SYSAUDITOR
select * from V$AUDITRECORDS;

取消审计 TEST 用户对表的 DDL 操作
sp_noaudit_stmt('TABLE','TEST','ALL');
3对象审计
用审计操作员登录数据库:SYSAUDITOR
SP_AUDIT_OBJECT (
TYPE VARCHAR(30),
USERNAME VARCHAR (128),
SCHNAME VARCHAR (128),
TVNAME VARCHAR (128),
COLNAME VARCHAR (128),
WHENEVER VARCHAR (20) )

审计 TEST 用户删除 T1 表记录的操作
Sp_audit_object('DELETE','TEST','TEST','T1','ALL');
用TEST用户删除T1表 delete from T1 where ID=2;
查看审计记录 select * from V$AUDITRECORDS;

审计任何用户插入 TEST.T1 表的操作
sp_audit_object('INSERT','NULL','TEST','T1','ALL');
用TEST用户插入T1表 insert into T1 values (50000,’50000AAAAA’);
查看审计记录: select * from V$AUDITRECORDS;

通过工具查看审计记录
[dmdba@localhost tool]$ ./analyzer
通过审计日志查看器指定文件夹,选择日志文件。

迁移(DTS)
https://eco.dameng.com/document/dm/zh-cn/start/tool-dm-migrate.html
DM--SQL

指定模式

指定对象

验证:su - dmdba
cd /home/dmdba
ll
vi ddl.sql
vi DMHR_DEPARTMENT.sql
vi DMHR_EMPLOYEE.sql

Oracle--DM

达梦快速装载工具
dmfldr
查看帮助手册:
[dmdba@localhost bin]$ ./dmfldr help
1.案例 1:数据导入DM8:
根据数据文件,创建表和编写控制文件:
编写数据文件 su - dmdba cd /dm8/backup/data
vi ext2.txt
文件内容 1|AAA
2|BBB
3|CCC
4|
数据库执行新建表 create table test.fldrtest (id int,name varchar(50));
编写控制文件 vi fldrtest.ctl
文件内容 load data
infile '/dm8/backup/data/ext2.txt'
into table test.fldrtest
fields '|'
查看文件内容 cat fldrtest.ctl
执行导入 su - dmdba cd /dm8/bin
./dmfldr test/DM01SYSDBA control='/dm8/backup/data/fldrtest.ctl'
2.案例 2,大字段导出
创建表插入数据:create table test.clob1(id int,addr CLOB);
insert into test.clob1
values
(1,'ADKJEkdkdkdkDKJDIEMCKDSLAKJFKDDKJASKEJDAKSKDKDHJDFBG');
insert into test.clob1
values
(2,'MMMMMMMMMMMMMMMDDDDDDDHHHHHHEEEEEEEOOOOOA
JKSDFJSASDWAskjsdlksadlk');
commit;

编写控制文件:su - dmdba
cd /dm8/backup/data/
vi clob1.ctl
录入内容 LOAD DATA
INFILE ‘/dm8/backup/data/clob1.txt’
INTO TABLE TEST.CLOB1
FIELDS ‘,’
(ID,ADDR)

导出 cd /dm8/bin
./dmfldr test/DM01SYSDBA control=
'/dm8/backup/data/clob1.ctl' mode='OUT'

3案例 3:大字段数据导入
创建空表:create table clob2 as select * from CLOB1 where 1=2;

编写控制文件:su - dmdba cd /dm8/backup/data
vi clob2.ctl
录入数据 LOAD DATA
INFILE ‘/dm8/backup/data/clob1.txt’
INTO TABLE TEST.CLOB2
FIELDS ‘,’
(ID,ADDR)

导入数据:./dmfldr test/Dameng123
control='/dm8/backup/data/clob2.ctl'
mode='IN'
lob_directory='/dm8/backup/data'

性能优化

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服