注册
达梦DCP考试指南
培训园地/ 文章详情 /

达梦DCP考试指南

桥耶不凡 2025/06/20 387 1 0

考前须知

  • 考试所有的操作都是用dmdba用户
  • dmdba如何使用图形化:使用root 执行 echo $DISPALY 在dmdba用户终端执行 export DISPALY=:2.0
  • 可以退出操作系统使用dmdba登录用户

一、创建资源

1.1 建实例

按照考试要求,可选择使用命令或者图行化

# 使用命令 dminit PATH=/dm8/data PAGE_SIZE=8 CASE_SENSITIVE=1 CHARSET=0 BLANK_PAD_MODE=1 DB_NAME=DAMENG INSTANCE_NAME=DMSERVER SYSDBA_PWD=aaa123...A SYSAUDITOR_PWD=aaa123...A PORT_NUM=5236 # 使用图形化 # 自动调整数据库性能参数不要勾选 ./dbca.sh # 配置环境变量 vim .bash_profile export PATH="$PATH:$DM_HOME/bin:$DM_HOME/tool"

1.2 创建表空间

-- 使用命令 CREATE TABLESPACE "TEST" DATAFILE 'TEST-01.DBF' SIZE 500 AUTOEXTEND ON NEXT 10 MAXSIZE UNLIMITED; -- 使用图形化 使用manager工具 sysdba用户创建即可

1.3 创建用户

-- 使用命令 CREATE USER TEST IDENTIFIED BY "aaa123...A" DEFAULT TABLESPACE TEST; -- 使用图形化 使用manager工具 sysdba用户创建即可

1.4 分配权限

GRANT RESOURCE, PUBLIC, VTI TO TEST; GRANT SELECT ANY TABLE TO TEST; GRANT SELECT ANY VIEW TO TEST;

二、分区表

2.1 公共操作

-- 查看表定义 sp_tabledef('TEST','T1'); select dbms_metadata.get_ddl('TABLE','T1','TEST'); -- LIST_TABLE 参数,创建默认表是否为堆表:0 1 select * from v$dm_ini where para_name ='LIST_TABLE'; -- 查看数据库有哪些分区表 select TABLE_NAME,TABLESPACE_NAME,PARTITIONED from SYS.USER_TABLES where PARTITIONED='YES'; -- 查看分区表的分区信息 select TABLE_NAME,PARTITION_NAME,TABLESPACE_NAME,HIGH_VALUE from SYS.USER_TAB_PARTITIONS where TABLE_NAME='T_F1';

2.2 范围分区表

  • 每一个分区都必须有一个 VALUES LESS THAN 子句, 它指定了一个不包括在该分区中的上限值。 分区键的任何值等于或者大于这个上限值的记录都会被加入到下一个高一些的分区中。
  • 所有分区, 除了第一个, 都会有一个隐式的下限值, 这个值就是此分区的前一个分区的上限值。
  • 在最高的分区中, MAXVALUE 被定义。
  • MAXVALUE 代表了一个不确定的值。 这个值高于其它分区中的任何分区键的值, 也可以理解为高于任何分区中指定的 VALUE LESS THAN 的值, 同时包括空值。
  • 分区列是数字或者是日期时间类型。
-- 创建三个表空间(TEST用户可以创建) CREATE TABLESPACE TBS1 DATAFILE 'TBS1.DBF' SIZE 32; CREATE TABLESPACE TBS2 DATAFILE 'TBS2.DBF' SIZE 32; CREATE TABLESPACE TBS3 DATAFILE 'TBS3.DBF' SIZE 32; -- 创建范围分区表使用上述三个表空间 CREATE TABLE T_F1 ( ID INT, NAME VARCHAR(50) ) STORAGE (ON TEST) PARTITION BY RANGE(ID) ( PARTITION P1 VALUES LESS THAN (1001) TABLESPACE TBS1, PARTITION P2 VALUES LESS THAN (2001) TABLESPACE TBS2, PARTITION P3 VALUES LESS THAN (3001) TABLESPACE TBS3 ); -- 都使用默认表空间创建 CREATE TABLE T_F1 ( ID INT, NAME VARCHAR(50) ) PARTITION BY RANGE(ID) ( PARTITION P1 VALUES LESS THAN (1001), PARTITION P2 VALUES LESS THAN (2001), PARTITION P3 VALUES LESS THAN (3001) ); -- 插入数据 BEGIN for i in 1..2800 LOOP insert into T_F1 values(i,'AAA'||i); end LOOP; commit; end; -- 查看p3分区的记录 select * from T_F1 PARTITION (P3); select * from T_F1_P3; -- 添加默认分区 ALTER TABLE T_F1 ADD PARTITION PM VALUES LESS THAN (MAXVALUE);

2.3 列表分区表

  • 通过指定表中的某个列的离散值集, 来确定应当存储在一起的数据。
  • 分区的特点是某列的值只有几个, 基于这样的特点我们可以采用列表分区。
  • 列表分区适合字符串类型 。
-- 创建列表分区 CREATE TABLE T_SALES ( SALE_ID INT, SALEMAN VARCHAR(30), SALEDATE DATETIME, SALECITY VARCHAR(30) ) PARTITION BY LIST(SALECITY) ( PARTITION P1 VALUES ('北京','天津','石家庄'), PARTITION P2 VALUES ('上海','南京'), PARTITION P3 VALUES ('武汉','长沙'), PARTITION P4 VALUES ('广州','深圳') ); -- 插入值 insert into t_sales values(1,'AAA','2008-01-08','石家庄'); insert into t_sales values(2,'BBB','2001-07-05','上海'); insert into t_sales values(3,'CCC','2009-02-10','武汉'); insert into t_sales values(4,'DDD','2018-01-08','深圳'); insert into t_sales values(5,'DER','2018-03-06','广州'); commit; -- 增加默认分区 ALTER TABLE T_SALES ADD PARTITION PM VALUES(DEFAULT);

2.4 哈希分区

  • 分区是在列值上使用散列算法, 以确定将行放入哪个分区中。 当列的值没有合适的条件时, 建议使用 hash 分区。
  • 散列分区为通过指定分区编号来均匀分布数据的一种分区类型, 因为通过在 I/O 设备上进行散列分区, 使得这些分区大小一致。
  • 建议分区的数量采用 2 的 n 次方, 这样可以使得各个分区间数据分布更加均匀。
  • 数据随机存储非常快, 读取数据比较慢, 各个分区数据是均匀存放。
  • 如果 hash 分区不指定分区名, 通过 hash 的分区数量自己创建。
-- 创建分区:第一种:指定分区名 CREATE TABLE 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 T_HASH1 values(i,'AAA'||i); end LOOP; commit; END; -- 查询数据 select count(*) from t_hash1; select count(*) from t_hash1_p1; select count(*) from t_hash1_p2; select count(*) from t_hash1_p3; -- 创建分区:第二种:不指定分区名 CREATE TABLE T_HASH2(ID INT, NAME VARCHAR(150)) PARTITION BY HASH(ID) PARTITIONS 4;

2.5 维护分区

-- 删除分区 ALTER TABLE T_SALES DROP PARTITION PM; -- 增加分区: ALTER TABLE T_SALES ADD PARTITION PM VALUES(DEFAULT); -- 合并分区: ALTER TABLE T_F1 MERGE PARTITIONS P1,P2 INTO PARTITION P_1_2; -- 拆分分区: ALTER TABLE T_F1 SPLIT PARTITION P_1_2 AT (1000) INTO (PARTITION P1,PARTITION P2); create table t5 (id int,name varchar(50)); insert into t5 values(1,'1000AA'); insert into t5 values(4000,'4000AA'); insert into t5 values(5000,'5000AA'); insert into t5 values(7000,'7000AA'); commit; -- 交换分区: ALTER TABLE T_F1 EXCHANGE PARTITION P2 WITH TABLE T5;

三、外部表

外部表的使用限制:

  • 不能对外部表做 DDL 操作 alter
  • 不能对外部表做 DML 操作, insert,update,delete
  • 不能对外部表建索引, 约束
  • 不能对外部表做 TRUNCATE

创建相关目录

-- 在服务上创建目录 mkdir -p /home/dmdba/data -- 在数据库中创建目录 CREATE DIRECTORY DMDIR AS '/home/dmdba/data'; -- 给 test 用户在该目录上读写的权限: GRANT READ,WRITE ON DIRECTORY DMDIR TO TEST;

3.1 将控制文件写在建表语句中

-- 编辑数据文件 cat > /home/dmdba/data/T_F1.txt << 'EOF' id|name 1|aaa 2|bbb 3|ccc 4|ddd EOF -- 创建外部表 CREATE EXTERNAL TABLE T_EXT1( ID INT, NAME VARCHAR(50) ) FROM DATAFILE DEFAULT DIRECTORY DMDIR LOCATION('T_F1.txt') PARMS(FIELDS '|', SKIP 1); -- 查询 SELECT * FROM T_EXT1;

3.2 建外部表时指定控制文件

-- 编辑数据文件 cat > /home/dmdba/data/T_F2.txt << 'EOF' 1,aaa 2,bbb 3,ccc 4,ddd EOF -- 编写控制文件 cat > /home/dmdba/data/T_F2.ctl << 'EOF' LOAD DATA INFILE 'T_F2.txt' INTO TABLE T_EXT2 FIELDS ',' EOF -- 创建外部表 CREATE EXTERNAL TABLE T_EXT2( ID INT, NAME VARCHAR(50) ) FROM DEFAULT DIRECTORY DMDIR LOCATION('T_F2.ctl'); -- 验证数据 SELECT * FROM T_EXT2; -- 删除外部表 DROP TABLE T_EXT2;

四、序列

序列: 在内存中预先申请的一段地址空间

DM 序列的取值范围:-9223372036854775808 —— 9223372036854775807

-- 创建序列 CREATE SEQUENCE SEQ1 START WITH 10 -- 起始值 INCREMENT by 10 -- 增量值 MINVALUE 1 -- 最小值 MAXVALUE 100 -- 最大值 CACHE 5 -- 是否开启缓存,如果开启缓存,数据库重启后,缓存的序列值会被丢弃,从 LAST_NUMBER 值开始 NOCYCLE; -- 不循环 -- 查看序列的当前值 SELECT SEQ1.CURRVAL; -- 查看序列的下个值 SELECT SEQ1.NEXVAL; -- 修改序列的 maxvalue ALTER SEQUENCE SEQ1 MAXVALUE 120; -- 删除序列 DROP SEQUENCE SEQ1; -- 查询序列: SELECT * FROM USER_SEQUENCES;

五、同义词

同义词特点

  • 易于引用其他用户所拥有的表
  • 缩短冗长的对象名
  • 同义词支持创建的对象: 表、 视图、 序列、 函数、 存储过程和触发器

普通同义词: 自己模式下的同义词

公共同义词: 所有用户都可以使用,不用加模式名

-- 创建普通同义词 CREATE SYNONYM FS FOR T_SALES; -- 创建公共同义词 CREATE PUBLIC SYNONYM F1 FOR T_F1; -- 查看普通同义词 SELECT * FROM USER_SYNONYMS; -- 查看公共同义词 SELECT * FROM DBA_SYNONYMS WHERE OWNER='PUBLIC' AND TABLE_OWNER='TEST'; -- 删除同义词 DROP SYNONYM FS; -- 删除公共同义词需要授权 DROP PUBLIC SYNONYM F1;

注意: 普通同义词和公共同义词可以同名, 不能在一个模式下创建相同的普通同义词。

六、物化视图

特点:

  • 物化视图会占用存储空间, 数据是来自于基表。 基表发生变化时, 可以通过手动刷新或者自动刷新的方式更新数据;
  • 物化视图主要运用于数据仓库场景;

数据填充类型:

  • BUILD IMMEDIATE:为立即填充数据, 默认为立即填充;
  • BUILD DEFERRED:为延迟填充,使用这种方式要求第一次刷新必须为;
  • COMPLETE:完全刷新;

物化视图刷新时机:

  • ON COMMIT:在相关表上视图提交时进行快速刷新;
  • START WITH … NEXT:START WITH 用于指定首次刷新物化视图的时间, NEXT 指定自动刷新的间隔;
  • ON DEMAND:由用户通过 REFRESH 语法进行手动刷新。refresh materialized view mv_emp;
  • NEVER REFRESH:物化视图从不进行刷新;

物化视图刷新模式:

  • FAST:根据相关表上的数据更改记录进行增量刷新。 普通 DML 操作生成的记录存在于物化视图日志。 使用 FAST 刷新之前, 必须先建好物化视图日志;
  • COMPLETE:通过执行物化视图的定义脚本进行完全刷新;
  • FORCE:默认选项。 当快速刷新可用时采用快速刷新, 否则采用完全刷新;

案例一:手动刷新物化视图

-- 创建测试表 T6 CREATE TABLE T6(ID INT, NAME VARCHAR(50)); -- 插入数据 BEGIN for i in 1..3000 LOOP insert into T6 values(i,'AAA'||i); end LOOP; commit; END; -- 创建物化视图 CREATE MATERIALIZED VIEW MV_T6 AS SELECT * FROM T6; -- 查询视图 SELECT * FROM MV_T6; -- 更新数据 UPDATE T6 SET NAME='AAA111' WHERE ID=1; COMMIT; -- 手动刷新物化视图: REFRESH MATERIALIZED VIEW mv_t6; -- 查看创建的物化视图: 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; -- 查询物化视图 SELECT * FROM MV_EMP;

案例三:创建物化视图, 自动-快速刷新--基于主键

-- 建表添加主键 CREATE TABLE DEPT AS SELECT * FROM DMHR.DEPARTMENT; ALTER TABLE DEPT ADD PRIMARY KEY(DEPARTMENT_ID); -- 创建物化视图日志 CREATE MATERIALIZED VIEW LOG ON DEPT; -- 创建物化视图 CREATE MATERIALIZED VIEW MV_DEPT REFRESH FAST ON COMMIT AS SELECT * FROM DEPT; -- 或者 CREATE MATERIALIZED VIEW MV_DEPT REFRESH FORCE ON COMMIT AS SELECT * FROM DEPT;

案例四: 创建物化视图, 自动刷新-快速刷新-基于 rowid

-- 创建表 CREATE TABLE EMPINFO AS SELECT EMPLOYEE_ID,EMPLOYEE_NAME,SALARY FROM DMHR.EMPLOYEE; -- 创建物化视图日志 CREATE MATERIALIZED VIEW LOG ON EMPINFO WITH ROWID(EMPLOYEE_ID,EMPLOYEE_NAME,SALARY); -- 创建物化视图 CREATE MATERIALIZED VIEW MV_EMPINFO REFRESH FAST ON COMMIT WITH ROWID AS SELECT A.ROWID EMPROWID, A.EMPLOYEE_ID,A.EMPLOYEE_NAME,A.SALARY FROM EMPINFO A; -- 查询数据 SELECT * FROM MV_EMPINFO; -- 修改物化视图永不刷新: ALTER MATERIALIZED VIEW MV_EMPINFO NEVER REFRESH; -- 删除物化视图日志: DROP MATERIALIZED VIEW LOG ON EMPINFO; -- 删除物化视图 DROP MATERIALIZED VIEW MV_EMPINFO;

七、权限与审计

7.1 自主访问控制

系统权限转授: with admin option

对象权限转授: with grant option

操作系统认证

Select para_name,para_value,para_type from v$dm_ini where PARA_NAME like '%ENABLE_LOCAL%'; sp_set_para_value(2,'ENABLE_LOCAL_OSAUTH',1); [dmdba@localhost ~]$ ./DmServiceDMSERVER restart

基 于 操 作 系 统 的 身 份 验 证 需 要 首 先 将 操 作 系 统用 户 加 入 到 操 作 系 统 的 dmdba|dmsso|dmauditor 用 户 组 ,分 别 对 应 数 据 库 的SYSDBA|SYSSSO|SYSAUDITOR用户

资源限制

CREATE PROFILE "PROFILE1" LIMIT FAILED_LOGIN_ATTEMPS 5 PASSWORD_LIFE_TIME 180 PASSWORD_REUSE_TIME 3 PASSWORD_GRACE_TIME 10; alter user "TEST" PROFILE "PROFILE1";

7.2 审计

达梦的审计分为三种:系统审计, 语句级审计, 对象审计

-- 查看数据库是否开启审计 0 关闭 1 普通 2 普通和实时审计 SELECT * FROM SYS.V$DM_INI WHERE PARA_NAME LIKE '%ENABLE_AUDIT%'; -- 开启审计 需要使用:SYSAUDITOR SP_SET_ENABLE_AUDIT(1); SELECT * FROM SYS.V$DM_INI WHERE PARA_NAME='ENABLE_AUDIT'; -- 达梦数据库审计记录文件存放在/dm8/data/DAMENG -- 语句及审计 SP_AUDIT_STMT( TYPE VARCHAR(30), USERNAME VARCHAR (128), WHENEVER VARCHAR (20) ) TYPE:审计选项 USERNAME:用户名, null 表示不限制 WHENEVER:审计的时机 ALL: 所有的 ; - SUCCESSFUL:操作成功时 ; - FAIL:操作失败时 -- 审计 TEST 用户对表的建表、 修改表、 清空表、 删除表操作: SP_AUDIT_STMT('TABLE','TEST','ALL') -- 审计任何用户对表的 DDL 操作: SP_AUDIT_STMT('TABLE','NULL','ALL'); -- 取消审计 SP_NOAUDIT_STMT('TABLE','NULL','ALL'); -- 对象级审计 SP_AUDIT_OBJECT ( TYPE VARCHAR(30), USERNAME VARCHAR (128), SCHNAME VARCHAR (128), TVNAME VARCHAR (128),WHENEVER VARCHAR (20) ) SP_AUDIT_OBJECT ( TYPE VARCHAR(30), USERNAME VARCHAR (128), SCHNAME VARCHAR (128), TVNAME VARCHAR (128), COLNAME VARCHAR (128), WHENEVER VARCHAR (20) ) -- 审计 TEST 用户删除 TEST.T6 表记录的操作 SP_AUDIT_OBJECT('DELETE','TEST','TEST','T6','ALL'); -- 审计任何用户插入 TEST.T6 表记录的操作 SP_AUDIT_OBJECT('INSERT','NULL','TEST','T6','ALL'); -- 查看审计记录 SELECT USERNAME,OPERATION,SUCC_FLAG,SQL_TEXT,DESCRIPTION,OPTIME from V$AUDITRECORDS; -- 关闭审计 SP_SET_ENABLE_AUDIT(0); -- 查看审计策略: select sf_get_audit_levelname(level) level, sf_get_audit_typename(type) type, sf_get_audit_whenevername("WHENEVER") whenerver1, sf_get_tablename_by_id(decode(tvpid,-1,null,tvpid)) tablename, sf_get_username_by_id (uid) uname from sysaudit;

八、数据快速装载

考试给的数据文件可能有四五十行,会配合分区一起考,如果有表头,则需要

OPTIONS(
  SKIP=1
)
LOAD DATA
INFILE '/home/dmdba/test.txt'
INTO TABLE FLDRTEST
FIELDS ','

案例一:数据导入

根据数据文件, 创建表和编写控制文件

-- 数据文件 cat > test.txt << 'EOF' 1,'joe',2001-01-09 1,'maria' 1,'tom',2009-07-09 1,'jack', EOF -- 创建表 CREATE TABLE FLDRTEST(ID INT, NAME VARCHAR(50), BIR DATE); -- 控制文件 vim fldrtest.ctl LOAD DATA INFILE '/home/dmdba/test.txt' INTO TABLE fldrtest FIELDS ',' -- 数据装载 [dmdba@localhost ~]$ dmfldr TEST/Dameng123 control=\'/home/dmdba/fldrtest.ctl\'

案例二:大字段导出

-- 创建表 CREATE TABLE CLOB1(ID INT, ADDR CLOB); -- 插入数据 insert into clob1 values(1,'ADKJAKDFSEEIEEEEEEEEEEEIIIIOOODADKFJASLKDFJALKSDHFSALKJFDKSADJF'); insert into clob1 values(2,'dakfsaejdsakjfdugeasdkfksadfdadsdkadas289299292992'); insert into clob1 values(3,'dakdak89912929392929929299929'); commit; -- 编写控制文件 vim clob1.ctl LOAD INFILE '/home/dmdba/clob1.txt' INTO TABLE CLOB1 FIELDS ',' ( ID, ADDR ) -- 导出大字段 [dmdba@DMDW-P ~]$ dmfldr TEST/aaa123...A control=\'/home/dmdba/clob1.ctl\' mode=\'OUT\'

案例三:大字段导入

-- 建表 CREATE TABLE CLOB2 AS SELECT * FROM CLOB1 WHERE 1=2; -- 创建控制文件 vim clob2.ctl LOAD INFILE '/dm8/backup/clob1.txt' INTO table clob2 fields ',' ( ID, ADDR ) -- 导入 [dmdba@DMDW-P ~]$ dmfldr TEST/aaa123...A control=\'/home/dmdba/clob2.ctl\' lob_directory=\'/home/dmdba\' mode=\'IN\'

九、索引和全文索引

9.1 创建索引

-- 唯一索引 CREATE UNIQUE INDEX IND_ID ON T_F1(ID); -- 复合索引(注意列的前后顺序) CREATE INDEX IND_EMP ON EMPINFO(EMPLOYEE_ID, EMPLOYEE_NAME); -- 位图索引 OLAP 系统 CREATE BITMAP INDEX IND_SEX ON T5(SEX); -- 创建函数索引 CREATE INDEX IND_NAME ON T_F1(UPPER(NAME)); -- 创建局部索引 CREATE INDEX IND_F1_ID ON T_F1(ID); -- 创建全局索引 CREATE INDEX IND_F1_ID ON T_F1(ID) GLOBAL; -- 查看索引的类型 YES 局部 SELECT a.TABLE_NAME,a.INDEX_NAME,a.PARTITIONED from SYS.USER_INDEXES a WHERE a.TABLE_NAME='T_F1';

9.2 维护索引

  • 索引的状态: 可见, 不可见, 有效, 无效
  • 有效性/无效性: 索引无效,DML 操作不会维护索引的信息, 执行计划不会走索引
-- 查看索引信息 SELECT a.TABLE_NAME,a.INDEX_NAME,a.STATUS,a.VISIBILITY from SYS.USER_INDEXES a; -- 设置有效性 alter INDEX IND_EMP_ID UNUSABLE; alter INDEX ind_emp_id REBUILD; -- 设置可见性 ALTER INDEX IND_ID INVISIBLE; ALTER INDEX IND_ID VISIBLE; -- 开启索引监控 ALTER INDEX IND_ID MONITORING USAGE; -- 关闭索引监控 ALTER INDEX IND_ID NOMONITORING USAGE; -- 查看索引监控信息 SELECT * FROM SYS.V$OBJECT_USAGE; -- 删除索引 DROP INDEX IND_ID;

十、统计信息

自动收集统计信息

  • 在 INI 参 数 AUTO_STAT_OBJ 为 1 或 2 前 提 下 , 执 行SP_CREATE_AUTO_STAT_ TRIGGER 过程实现自动收集;
  • 创 建 定 时 作 业 更 新 统 计 信 息 (该 JOB 实 际 调 用 的 是SP_DB_STAT_INIT 过程)

1750068952799

手动收集统计信息

-- 搜集表的统计信息,包括列和索引的 dbms_stats.gather_table_stats('TEST','T_F1'); -- 搜集表的统计信息,不会搜集列的统计信息, 列的统计信息需要单独搜集 sp_tab_stat_init ('TEST','T_F1'); -- 搜集列的统计信息 sp_col_stat_init ('TEST','T_F1','ID'); -- 查看统计信息 dbms_stats.table_stats_show('TEST','T_F1'); -- 查看列的统计信息和列的直方图信息 dbms_stats.column_stats_show('TEST','T_F1','ID'); -- 删除统计信息 dbms_stats.delete_table_stats('TEST','T_F1');

收集统计信息,并输出到文件中去:

SQL> spool /home/dmdba/gather.txt SQL> dbms_stats.table_stats_show('TEST','T_F1'); SQL> spool off

十一、备份还原

脱机全量备份,脱机全量恢复。非常简单,届面操作即可。

十二、作业管理

图形管理工具操作即可

十三、实时主备

删除15天之前的备份(可能需要以作业管理的形式去做):SP_DB_BAKSET_REMOVE_BATCH('DISK',NOW()-15)
实时主备具体细节我另写了一篇文章

十四、修改性能参数

性能优化设置参数

  • 数据缓冲区:sp_set_para_value(2,'BUFFER',1500);
  • SQL缓冲区:sp_set_para_value(2,'CACHE_POOL_SIZE',110);
  • 字典缓冲区:sp_set_para_value(2,'DICT_BUF_SIZE',60);
-- 查看共享内存池 select para_name,para_value from v$dm_ini where para_name like '%MEMORY%'; -- 查看数据缓冲区 select para_name,para_value from v$dm_ini where para_name ='BUFFER'; -- 查看重做日志缓区 select para_name,para_value from v$dm_ini where para_name ='RLOG_BUF_SIZE'; -- 查看字典缓冲区 select para_name,para_value from v$dm_ini where para_name ='DICT_BUF_SIZE'; -- 查看sql缓冲区 select para_name,para_value from v$dm_ini where para_name ='CACHE_POOL_SIZE'; -- 查看内存池信息 select name,ORG_SIZE,TOTAL_SIZE,RESERVED_SIZE,N_EXTEND_EXCLUSIVE from SYS.V$MEM_POOL; -- 查看数据缓冲区的信息 select name,FREE,N_LOGIC_READS,RAT_HIT from SYS.V$BUFFERPOOL; -- 检查内存是否存在泄露 select * from v$dm_ini where para_name like '%MEMORY_LEAK%';select * from V$MEM_REGINFO; -- 查看 dm 数据库的动态性能视图 select * from SYS.V$DYNAMIC_TABLES where name like '%WAIT%';
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服