暂无图片
暂无图片
7
暂无图片
暂无图片
暂无图片

国产数据库学习-达梦篇-DM8与Oracle相遇

原创 布衣 2023-12-17
2015

数据库环境:

name value
数据库 DAMENG
实例名称 DMSERVER
服务名 DmServiceDMSERVER
端口 5236
数据库目录 /home/dmdba/dm8/data/DAMENG

一、数据库启停

  • DM 数据库包含以下几种状态:
  1. 配置状态(MOUNT):不允许访问数据库对象,只能进行控制文件维护、归档配置、
    数据库模式修改等操作;
  2. 打开状态(OPEN):不能进行控制文件维护、归档配置等操作,可以访问数据库对
    象,对外提供正常的数据库服务;
  3. 挂起状态(SUSPEND):与 OPEN 状态的唯一区别就是,限制磁盘写入功能;一旦
    修改了数据页,触发 REDO 日志、数据页刷盘,当前用户将被挂起。

OPEN 状态与 MOUNT 和 SUSPEND 能相互转换,但是 MOUNT 和 SUSPEND 之间不能相互
转换。

  • 命令
    dmserver [ini_file_path] [-noconsole] [mount]
  • 说明:
  1. Dmserver 命令行启动参数可指定 dm.ini 文件的路径,非控制台方式启动及指定
    数据库是否以 MOUNT 状态启动。
  2. Dmserver 启动时可不指定任何参数,默认使用当前目录下的 dm.ini 文件,如果
    当前目录不存在 dm.ini 文件,则无法启动;
  3. Dmserver 启动时可以指定-noconsole 参数。如果以此方式启动,则无法通过在
    控制台中输入服务器命令。
# 关库:
[dmdba@localhost bin]$ service DmServiceDMSERVER stop
或:
SQL> shutdown normal;  关闭数据库
SQL> shutdown immediate;  正常方式关闭数据库
SQL> shutdown abort;  立即方式关闭数据库。数据库并不立即关闭,而是在执行某些清除工作后才关闭(终止会话、释放会话资源),需要10到20S。

# 启库:启动窗口不能关闭,若窗口关闭,则DM实例也就停止,后台执行加:&
[dmdba@localhost bin]$ /home/dmdba/dm8/bin/dmserver path=/home/dmdba/dm8/data/DAMENG/dm.ini -noconsole

lock -->打印锁系统信息
----------------- object lock info ---------------
    addr       objid       mode      trx      wait
>> 0 object locks.

------------------- tid lock info ----------------
    addr       objid       mode      trx      wait
>> 0 object locks.

-----------------outer object lock info (dbms_lock)---------------
    addr       objid       mode      sess      wait_sess

session -->打印连接个数
sessions number: 0
msessions number: 0
esessions number: 0
n_freeing: 0
max_concurrent_trx: 0
concurrent_trx_mode: 0
curr_concurrent_trx: 0
n wait trx: 0

mem -->打印服务器占用内存大小
os reserved: 3031322351
mem pool:866246392 reserved: 497402872  reserved from os: 140451704
hio rlog_flush use time:0(us), io use time:0(us)

TRX  -->打印等待事件
------------ trx info ------------
   addr    id    active_ids      state        iso_level  read_only   session
>> 0 transactions, 0 active.

CKPT -->设置检查点
checkpoint requested, rlog free space[536688640], used space[174080]
checkpoint generate by user cmd
checkpoint begin, used_space[174080], free_space[536688640]...
checkpoint end, 0 pages flushed, used_space[175104], free_space[536687616].

BUF -->打印内存池中缓冲区的信息
total pages = 287872
 total = 1024
 free = 1024
 fixed = 0
 update = 0
 clear = 0
 lru = 0, lrds = 0
 total = 10240
 free = 10239
 fixed = 0
 update = 1
 clear = 0
 lru = 1, lrds = 0
 total = 3000
 free = 2911
 fixed = 0
 update = 3
 clear = 86
 lru = 89, lrds = 16
 total = 23000
 free = 22947
 fixed = 0
 update = 0
 clear = 53
 lru = 53, lrds = 2
 total = 128
 free = 128
 fixed = 0
 update = 0
 clear = 0
 lru = 0, lrds = 0
 total = 23000
 free = 22953
 fixed = 0
 update = 0
 clear = 47
 lru = 47, lrds = 0
 total = 23000
 free = 22954
 fixed = 0
 update = 0
 clear = 46
 lru = 46, lrds = 2
 total = 23000
 free = 22953
 fixed = 0
 update = 0
 clear = 47
 lru = 47, lrds = 0
 total = 23000
 free = 22954
 fixed = 0
 update = 0
 clear = 46
 lru = 46, lrds = 0
 total = 23000
 free = 22950
 fixed = 0
 update = 0
 clear = 50
 lru = 50, lrds = 0
 total = 23000
 free = 22951
 fixed = 0
 update = 0
 clear = 49
 lru = 49, lrds = 0
 total = 23000
 free = 22954
 fixed = 0
 update = 0
 clear = 46
 lru = 46, lrds = 1
 total = 23000
 free = 22953
 fixed = 0
 update = 0
 clear = 47
 lru = 47, lrds = 3
 total = 23000
 free = 22951
 fixed = 0
 update = 0
 clear = 49
 lru = 49, lrds = 0
 total = 23000
 free = 22951
 fixed = 0
 update = 0
 clear = 49
 lru = 49, lrds = 4
 total = 10240
 free = 10238
 fixed = 0
 update = 2
 clear = 0
 lru = 2, lrds = 0
 total = 10240
 free = 10239
 fixed = 0
 update = 1
 clear = 0
 lru = 1, lrds = 0

rlog4_log_get call: 0
rlog4_log_write call: 0
rfil_grp_space_info call: 0
fast rw lock mode: 1

exit -->退出服务器并关闭数据库
Server is stopping...
listener closed  and all sessions disconnected
adjust undo_retention & wakeup purge thread...full check point starting...
generate force checkpoint, rlog free space[536667648], used space[195072]
checkpoint begin, used_space[195072], free_space[536667648]...
checkpoint end, 0 pages flushed, used_space[195584], free_space[536667136].
full check point end.
shutdown audit subsystem...OK
shutdown schedule subsystem...OK
shutdown timer successfully.
pre-shutdown MAL subsystem...OK
shutdown worker threads subsystem...OK
shutdown local parallel threads pool successfully.
shutdown replication subsystem...OK
shutdown sequence cache subsystem...OK
wait for mtsk link worker to exit..OK
shutdown mpp session subsystem...OK
wait for rapply is all over... OK
rapply worker threads exit successfully.
pre ending task & worker threads...OK
shutdown dblink subsystem...OK
shutdown pthd_pools...OK
shutdown session subsystem...OK
shutdown rollback segments purging subsystem...OK
shutdown rps subsystem...OK
shutdown transaction subsystem...OK
shutdown locking subsystem...OK
shutdown dbms_lock subsystem...OK
ending tsk and worker threads...OK
ckpt2_exec_immediately begin.
checkpoint begin, used_space[195584], free_space[536667136]...
checkpoint end, 0 pages flushed, used_space[9216], free_space[536853504].
checkpoint begin, used_space[9216], free_space[536853504]...
checkpoint end, 0 pages flushed, used_space[0], free_space[536862720].
checkpoint begin, used_space[0], free_space[536862720]...
checkpoint end, 0 pages flushed, used_space[0], free_space[536862720].
shutdown archive subsystem...OK
shutdown redo log subsystem...OK
shutdown MAL subsystem...OK
shutdown message compress subsystem successfully.
shutdown task subsystem...OK
shutdown trace subsystem...OK
shutdown svr_log subsystem...OK
shutdown plan cache subsystem...OK
shutdown database dictionary subsystem...OK
shutdown file subsystem...OK
shutdown mac cache subsystem...OK
shutdown dynamic login cache subsystem...OK
shutdown ifun/bifun/sfun/afun cache subsystem...OK
shutdown crypt subsystem...OK
shutdown pipe subsystem...OK
shutdown compress component...OK
shutdown slave redo subsystem...OK
shutdown kernel buffer subsystem...OK
shutdown SQL capture subsystem...OK
shutdown control file system...OK
shutdown dtype subsystem...OK
shutdown huge buffer and memory pools...OK
close lsnr socket
DM Database Server shutdown successfully.
  • Oracle的启停
-- 启库: SQL> startup ORACLE instance started. Total System Global Area 2.0176E+10 bytes Fixed Size 2237048 bytes Variable Size 2483031432 bytes Database Buffers 1.7650E+10 bytes Redo Buffers 41488384 bytes Database mounted. Database opened. -- 关库 SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down.
  • 小结:
    Oracle 启停命令简单输出简洁
    DM 启库相对复杂一点,增加了一些交互的查询功能,刚接触稍微不适。停库命令方便。

二、数据库结构

  • DM 逻辑存储结构
    image.png

  • Oracle 逻辑结构
    Oracle的逻辑存储结构包括数据块(data block)、段(segment)、连续数据块(extent)、表空间(tablespace)。

  • DM&Oracle存储的层次结构如下:

  1. 数据库由一个或多个表空间组成;
  2. 每个表空间由一个或多个数据文件组成;
  3. 每个数据文件由一个或多个簇组成;
  4. 段(Oracle:Segment)是簇的上级逻辑单元,一个段可以跨多个数据文件;
  5. 簇(Oracle:Extent)由磁盘上连续的页组成,一个簇总是在一个数据文件中;
  6. 页(Oracle :block)是数据库中最小的分配单元,也是数据库中使用的最小的 IO 单元。
  • 小结:
    逻辑定义基本上是一致的,只是簇与Extent、页与block的叫法不一样,作用一样。

三、表空间管理

  • 表空间
DM Oracle 作用
SYSTEM System 用于存储系统表、数据字典和其他系统对象
ROLL Undo 回滚表空间是用于存储事务回滚信息的表空间
MAIN User 用户默认的表空间
TEMP Temporary 用于存储临时数据和排序结果的表空间
LOB LOB表空间是用于存储大型对象(LOB)数据的表空间
HMAIN 当用户在创建 HUGE 表时,未指定 HTS 表空间的情况下
  • 命令
    SYSTEM、ROLL、MAIN 和 TEMP 表空间查看视图:V$TABLESPACE
    HMAIN 表空间查看视图: V$HUGE_TABLESPACE
    image.png
  • DM表空间使用率查询SQL
SELECT a.tablespace_name "名称", round(total / (1024 * 1024 * 1024),2) "表空间_GB", round(free / (1024 * 1024 * 1024),2) "剩余_GB", round((total - free) / (1024 * 1024 * 1024),2) "使用_GB", round((total - free) / total, 4) * 100||'%' "使用率" FROM (SELECT tablespace_name, SUM(bytes) free FROM dba_free_space GROUP BY tablespace_name) a, (SELECT tablespace_name, SUM(bytes) total FROM dba_data_files GROUP BY tablespace_name) b WHERE a.tablespace_name = b.tablespace_name;

image.png

  • Oracle表空间使用率查询SQL
set linesize 150; set pagesize 80; --查询表空间使用情况  SELECT UPPER(F.TABLESPACE_NAME) "表空间名",   D.TOT_GROOTTE_MB "表空间大小(M)",   D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",   TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') || '%' "使用比",   F.TOTAL_BYTES "空闲空间(M)",   F.MAX_BYTES "最大块(M)"   FROM (SELECT TABLESPACE_NAME,   ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,   ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES   FROM SYS.DBA_FREE_SPACE   GROUP BY TABLESPACE_NAME) F,   (SELECT DD.TABLESPACE_NAME,    ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB   FROM SYS.DBA_DATA_FILES DD   GROUP BY DD.TABLESPACE_NAME) D   WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME   ORDER BY 4;
  • 常用表空间管理语句
-- 创建表空间 CREATE TABLESPACE bookshop DATAFILE 'd:\bookshop1.dbf' SIZE 128, 'd:\bookshop2.dbf' SIZE 128; -- 创建自增表空间:Oracle相同 CREATE TABLESPACE bookshop DATAFILE 'd:\book.dbf' SIZE 32 AUTOEXTEND ON NEXT 10 MAXSIZE 100; -- 修改数据文件的路径 ALTER TABLESPACE bookshop RENAME DATAFILE 'd:\book.dbf' TO 'e:\book.dbf'; -- 删除表空间:Oracle相同 DROP TABLESPACE bookshop; -- 修改表空间名称:Oracle相同 ALTER TABLESPACE bookshop RENAME TO books; -- 修改表空间状态:Oracle 相同 ALTER TABLESPACE bookshop OFFLINE; ALTER TABLESPACE bookshop ONLINE; -- 表空间增加文件:Oracle 相同 ALTER TABLESPACE bookshop ADD DATAFILE 'd:\book.dbf' SIZE 64; -- 扩展文件大小:差异 ALTER TABLESPACE bookshop RESIZE DATAFILE 'd:\book.dbf' TO 128; -- oracle ALTER DATABASE DATAFILE 'd:\book.dbf' RESIZE 30G; --查看表空间文件位置:差异 SELECT ts.NAME, df.PATH FROM V$TABLESPACE AS ts, V$DATAFILE AS df WHERE ts.ID = df.GROUP_ID;

image.png

  • 小结:
    表空间管理命令操作基本相同,需要注意的部分差异。系统表空间除(Oracle:LOB,DM:HMAIN )表空间,其它表空间都有相对应的表空间。

四、物理存储结构

  • 物理存储结构包括:
    用于进行功能设置的配置文件:配置文件以 ini 为扩展名
    DM:/home/dmdba/dm8/data/DAMENG/dm.ini
    Oracle:/u01/oracle/11.2.0.3/product/dbs/init.ora
    用于记录文件分布的控制文件:
    DM:
    image.png
    oracle:
    image.png
    用于保存用户实际数据的数据文件、重做日志文件、归档日志文件、备份文件;
    DM:重做日志文件:
    image.png
    Oracle:redo
    image.png
    归档日志文件
    DM:SQL>select * from SYS.“V$ARCH_FILE”;
    Oracle:SQL> show parameter log_archive_dest;
    用来进行问题跟踪的跟踪日志文件等
    DM:image.png
    Oracle:$ORACLE_HOME/diag/rdbms/<database_name>/<instance_name>/trace
  • 小结
    DM与Oracle都有:参数文件、控制文件、数据文件、重做日志、归档日志。DM特别增加备份文件。

五、开启/关闭归档模式

  • DM 开启归档流程
# 将数据库状态设置为mount alter database mount; # 打开归档 alter database archivelog; # 归档配置,配置归档路径,归档文件大小,归档文件总的大小 alter database add archivelog 'type=local,dest=/home/dmdba/dm8/arch,file_size=64,space_limit=10240'; # 将数据库状态设置为open alter database open;
  • DM 关闭归档流程
# 将数据库状态设置为mount alter database mount; # 关闭归档 alter database noarchivelog; # 删除归档文件 alter database delete archivelog 'type=local,dest=/home/dmdba/dm8/arch'; # 将数据库状态设置为open alter database open;
  • DM:查看归档:
# 查询归档状态 select arch_mode from v$database; # 查看归档文件 select * from SYS."V$ARCH_FILE"; # 查询归档配置 select * from v$dm_arch_ini;
  • Oracle
#启动到mount模式下 alter database mount; # 打开归档 alter database archivelog; #关闭归档: alter database noarchivelog; #设置归档路径 alter system set log_archive_dest_1='location=/u01/backup/archivelog'#启库: alter database open;
  • 小结:
    归档的开启与关闭流程基本都一样,都需要将数据库到mount状态。DM增加了设置文件大小(超出限制,切新日志)及归档文件总的大小(超出限制删除旧日志)的功能。

总结

通过DM与Oracle的启停库、逻辑结构、物理结构以及归档模式的开启关闭,从运维管理来讲的话相似度还是很高的,按着Oracle的运维经验来学习和管理DM会事半功倍。

最后修改时间:2023-12-18 10:31:53
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论