达梦DCA学习笔记

  • 安装DM软件
  1. 确认操作系统版本

[root@test1 ~]# cat /etc/system-release

NeoKylin Linux Advanced Server release V7Update6 (Chromium)

[root@test1 ~]# cat /proc/version

[root@test1 ~]# uname -r

  1. 查看CPU、内存、磁盘

[root@test1 ~]# lscpu

[root@test1 ~]# cat /proc/cpuinfo

[root@test1 ~]# cat /proc/meminfo

[root@test1 ~]# free -m

[root@test1 ~]# df -h

  1. 检查glibc版本

要求2.6以上

[root@test1 ~]# rpm -qa |grep glibc

glibc-common-2.17-260.el7.ns7.01.x86_64

glibc-2.17-260.el7.ns7.01.x86_64

  1. 创建用户

[root@test1 ~]# groupadd -g 1002 dinstall

[root@test1 ~]# useradd -u 1002 -g dinstall dmdba

[root@test1 ~]# passwd dmdba

  1. 操作系统资源限制

[root@test1 ~]# vi /etc/security/limits.conf

dmdba soft nofile 10240

dmdba hard nofile 65536

  1. 规划安装路径

[root@test1 /]# chown -R dmdba.dinstall /dmdb

  1. 命令行安装DM软件

[root@test1 ~]# cd /dmdb

[root@test1 dmdb]# mount dm8_setup.iso dm_soft/

[root@test1 dm_soft]# su - dmdba

[dmdba@test1 ~]$ cd /dmdb/dm_soft/

[dmdba@test1 dm_soft]$ ./DMInstall.bin -i

请选择安装语言(C/c:中文 E/e:英文) [C/c]:c

解压安装程序.........

欢迎使用达梦数据库安装程序

 

是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:n

 

是否设置时区? (Y/y:是 N/n:否) [Y/y]:y

设置时区:

[ 1]: GTM-12=日界线西

[ 2]: GTM-11=萨摩亚群岛

[ 3]: GTM-10=夏威夷

[ 4]: GTM-09=阿拉斯加

[ 5]: GTM-08=太平洋时间(美国和加拿大)

[ 6]: GTM-07=亚利桑那

[ 7]: GTM-06=中部时间(美国和加拿大)

[ 8]: GTM-05=东部部时间(美国和加拿大)

[ 9]: GTM-04=大西洋时间(美国和加拿大)

[10]: GTM-03=巴西利亚

[11]: GTM-02=中大西洋

[12]: GTM-01=亚速尔群岛

[13]: GTM=格林威治标准时间

[14]: GTM+01=萨拉热窝

[15]: GTM+02=开罗

[16]: GTM+03=莫斯科

[17]: GTM+04=阿布扎比

[18]: GTM+05=伊斯兰堡

[19]: GTM+06=达卡

[20]: GTM+07=曼谷,河内

[21]: GTM+08=中国标准时间

[22]: GTM+09=汉城

[23]: GTM+10=关岛

[24]: GTM+11=所罗门群岛

[25]: GTM+12=斐济

[26]: GTM+13=努库阿勒法

[27]: GTM+14=基里巴斯

请选择设置时区 [21]:21

 

安装类型:

1 典型安装

2 服务器

3 客户端

4 自定义

请选择安装类型的数字序号 [1 典型安装]:1

所需空间: 1056M

 

请选择安装目录 [/home/dmdba/dmdbms]:/dmdb/dm8

可用空间: 17G

是否确认安装路径(/dmdb/dm8)? (Y/y:是 N/n:否)  [Y/y]:y

 

安装前小结

安装位置: /dmdb/dm8

所需空间: 1056M

可用空间: 17G

版本信息:

有效日期:

安装类型: 典型安装

是否确认安装? (Y/y:是 N/n:否):y

安装前小结

安装位置: /dmdb/dm8

所需空间: 1056M

可用空间: 17G

版本信息:

有效日期:

安装类型: 典型安装

是否确认安装? (Y/y:是 N/n:否):y

2020-10-22 18:19:15

[INFO] 安装达梦数据库...

2020-10-22 18:19:16

[INFO] 安装 基础 模块...

2020-10-22 18:19:20

[INFO] 安装 服务器 模块...

2020-10-22 18:19:21

[INFO] 安装 客户端 模块...

2020-10-22 18:19:22

[INFO] 安装 驱动 模块...

2020-10-22 18:19:26

[INFO] 安装 手册 模块...

2020-10-22 18:19:27

[INFO] 安装 服务 模块...

2020-10-22 18:19:28

[INFO] 移动ant日志文件。

2020-10-22 18:19:48

[INFO] 安装达梦数据库完成。

 

请以root系统用户执行命令:

/dmdb/dm8/script/root/root_installer.sh

 

安装结束

[root@test1 dmdb]# /dmdb/dm8/script/root/root_installer.sh

移动 /dmdb/dm8/bin/dm_svc.conf 到/etc目录

修改服务器权限

创建DmAPService服务

Created symlink from /etc/systemd/system/multi-user.target.wants/DmAPService.service to /usr/lib/systemd/system/DmAPService.service.

创建服务(DmAPService)完成

启动DmAPService服务

  1. 图形界面安装DM软件

[root@test1 ~]# /dmdb/db8/script/root/root_installer.sh

移动 /dmdb/db8/bin/dm_svc.conf 到/etc目录

修改服务器权限

创建DmAPService服务

Created symlink from /etc/systemd/system/multi-user.target.wants/DmAPService.service to /usr/lib/systemd/system/DmAPService.service.

创建服务(DmAPService)完成

启动DmAPService服务

 

  1. 配置环境变量

[dmdba@test1 ~]$ vi .bash_profile

export PATH="$PATH:$DM_HOME/bin:$DM_HOME/tool"

export DISPLAY=:0

  • 安装DM数据库实例
  1. 命令行安装

[dmdba@test1 ~]$ dminit help  --查看帮助

[dmdba@test1 ~]$ dminit path=/dmdb/data5236 db_name=test1 instance_name=test1 port_num=5236

initdb V8

db version: 0x7000a

file dm.key not found, use default license!

License will expire on 2021-04-28

 

 log file path: /dmdb/data5236/test1/test101.log

 

 

 log file path: /dmdb/data5236/test1/test102.log

 

write to dir [/dmdb/data5236/test1].

create dm database success. 2020-10-22 20:38:44

(初始化也可以修改 page_size=16 extent_size=32 log_size=1024 CASE_SENSITIVE=Y CHARSET=1

这样创建的数据库没有注册数据库服务,可以使用命令行注册,或者dbca.sh注册。

[dmdba@test1 ~]$ cd /dmdb/db8/script/root/

[dmdba@test1 root]$ ./dm_service_installer.sh help

必须以 root 身份执行此脚本!

[root@test1 root]# ./dm_service_installer.sh help

[root@test1 root]# ./dm_service_installer.sh -t dmserver -p test1 -dm_ini /dmdb/data5236/test1/dm.ini

Created symlink from /etc/systemd/system/multi-user.target.wants/DmServicetest1.service to /usr/lib/systemd/system/DmServicetest1.service.

创建服务(DmServicetest1)完成

[root@test1 root]# systemctl enable DmServicetest1.service

[root@test1 root]# systemctl start DmServicetest1.service

[root@test1 root]# systemctl status DmServicetest1.service

[dmdba@test1 test1]$ disql sysdba/SYSDBA:5236 (命令行安装密码是默认SYSDBA)

 

服务器[LOCALHOST:5236]:处于普通打开状态

登录使用时间: 3.749(毫秒)

disql V8

  1. 图形界面安装

[dmdba@test1 tool]$ pwd

/dmdb/db8/tool

[dmdba@test1 tool]$ ./dbca.sh

 

 

 

 

 

 

 

 

 

 

 

root@test1 root]# mv /dmdb/db8/bin/DmServicetest2.service /usr/lib/systemd/system/DmServicetest2.service

[root@test1 root]# systemctl enable DmServicetest2.service

Created symlink from /etc/systemd/system/multi-user.target.wants/DmServicetest2.service to /usr/lib/systemd/system/DmServicetest2.service.

[root@test1 root]# systemctl start DmServicetest2.service

 

  • 删除DM数据库实例
  1. 图形化界面删除

[root@test1 ~]# su - dmdba

[dmdba@test1 ~]$ cd /dmdb/dm8/tool/

[dmdba@test1 tool]$

[dmdba@test1 tool]$ dbca.sh

 

 

 

 

[root@test1 dmdb]# systemctl stop DmServicetest5237.service

 

 

  1. 命令删除

关掉数据库服务,删除目录即可。

  • 卸载DM软件

[dmdba@test1 dm8]$ ./uninstall.sh -i

请确认是否卸载达梦数据库(/dmdb/dm8/)? (y/Y:是 n/N:否):y

是否删除dm_svc.conf配置文件? (y/Y:是 n/N:否):y

正在删除所有数据库库服务

删除数据库服务DmAPService

删除数据库服务DmJobMonitorService

删除数据库服务DmInstanceMonitorService

删除数据库服务DmAuditMonitorService

删除所有数据库库服务完成

正在删除数据库目录

删除bin目录

删除bin目录完成

删除bin2目录

删除bin2目录完成

删除include目录

删除include目录完成

删除desktop目录

删除desktop目录完成

删除doc目录

删除doc目录完成

删除drivers目录

删除drivers目录完成

删除jdk目录

删除jdk目录完成

删除jar目录

删除jar目录完成

删除samples目录

删除samples目录完成

删除script目录

删除script目录完成

删除tool目录

删除tool目录完成

删除web目录

删除web目录完成

删除uninstall目录

删除uninstall目录完成

删除license_en.txt文件

删除license_en.txt文件完成

删除license_zh.txt文件

删除license_zh.txt文件完成

删除release_en.txt文件

删除release_en.txt文件完成

删除release_zh.txt文件

删除release_zh.txt文件完成

删除uninstall.sh文件

删除uninstall.sh文件完成

删除数据库目录完成

 

使用root用户执行命令:

/dmdb/dm8/root_uninstaller.sh

 

[root@test1 ~]# /dmdb/dm8/root_uninstaller.sh

删除DmAPService服务

Removed symlink /etc/systemd/system/multi-user.target.wants/DmAPService.service.

删除/etc/dm_svc.conf文件

  • 连接数据库
  1. 默认连接本地5236库

[dmdba@test1 ~]$ disql

disql V8

用户名:sysdba

密码:

 

服务器[LOCALHOST:5236]:处于普通打开状态

登录使用时间: 4.411(毫秒)

  1. 指定连接本地某个实例

[dmdba@test1 ~]$ disql sysdba/SYSDBA:5236

[dmdba@test1 ~]$ disql sysdba/'abcd1234!':5237

  1. 指定连接远程某个实例

[dmdba@test1 ~]$ disql sysdba/SYSDBA@192.168.230.130:5236

[dmdba@test1 ~]$ disql sysdba/'abcd1234!'@192.168.230.130:5237

  1. 配置dm_svc.cnf连接

[dmdba@test1 ~]$ vi /etc/dm_svc.conf

DM5236=(192.168.230.130:5236)

DM5237=(192.168.230.130:5237)

[dmdba@test1 ~]$ disql sysdba/SYSDBA@DM5236

[dmdba@test1 ~]$ disql sysdba/'abcd1234!'@DM5237

  • 关闭数据库

[dmdba@test1 ~]$ disql sysdba/SYSDBA:5236

SQL> shutdown immediate;

或者:

[dmdba@test1 ~]$ systemctl stop DmServicetest1.service

或者:

[dmdba@test1 bin]$ ./DmServicetest1 stop  

Stopping DmServicetest1:                                   [ OK ]

  • 开启数据库

[dmdba@test1 bin]$ ./DmServicetest1 start

Starting DmServicetest1:                                   [ OK ]

或者

[dmdba@test1 bin]$DmServicetest1 start mount

或者

[dmdba@test1 bin]$ systemctl start DmServicetest1.service

或者

nohup /dmdb/db8/bin/dmserver /dmdb/data5237/test2/dm.ini  &

或者

dmserver /dmdb/data5237/test2/dm.ini (交互模式,退出则数据库关闭)

  • 客户端工具
  • 查看达梦线程

[dmdba@test1 ~]$ ps -ef |grep dmserver |grep -v 'grep'   --先查看进程号

[dmdba@test1 ~]$ ps -T -p 2723     --通过进程号查看线程

 

select * from V$LATCHES ;  --记录当前正在等待的线程信息

select * from V$THREADS ;  --记录当前系统中活动线程的信息

select name, thread_desc,count(*) from v$threads  group by  name, thread_desc order by 3 desc;

select * from V$WTHRD_HISTORY;  --记录自系统启动以来,所有活动过线程的相关历史信息。

select * from V$PROCESS; --记录服务器进程信息

  1. dm_lsnr_thd   监听线程

监听线程主要的任务是在服务器端口上进行循环监听,一旦有来自客户的连接请求,监听线程被唤醒并生成一个会话申请任务,加入工作线程的任务队列,等待工作线程进行处理。它在系统启动完成后才启动,并且在系统关闭时首先被关闭。为了保证在处理大量客户连接时系统具有较短的响应时间,监听线程比普通线程优先级更高。

  1. dm_io_thd和dm_hio_thd   IO线程

在数据库活动中,IO操作历来都是最为耗时的操作之一。当事务需要的数据页不在缓冲区中时,如果在工作线程中直接对那些数据页进行读写,将会使系统性能变得非常糟糕,而把IO操作从工作线程中分离出来是明智的做法。IO线程的职责就是处理这些IO操作。通常情况下,DM Server需要进行IO操作的时机主要有以下三种。

(1)需要处理的数据页不在缓冲区中,此时需要将相关数据页读入缓冲区。

(2)缓冲区满或系统关闭时,需要将部分脏数据页写入磁盘。

(3)检查点到来时,需要将所有脏数据页写入磁盘。

IO线程的个数是可配置的,可以通过设置dm.ini文件中的IO_THR_GROUPS参数来设置,默认情况下,IO线程的个数是两个。同时,IO线程处理IO的策略根据操作系统平台的不同会有很大差别,一般情况下,IO线程使用异步的IO将数据页写入磁盘,此时,系统将所有的IO请求直接递交给操作系统,操作系统在完成这些请求后才通知IO线程,这种异步IO的方式使得IO线程需要直接处理的任务很简单,即完成IO后的一些收尾处理并发出IO完成通知,如果操作系统不支持异步IO,此时IO线程需要完成实际的IO操作。

  1. dm_tskwrk_thd和dm_wrkgrp_thd   工作线程

工作线程是DM服务器的核心线程,它从任务队列中取出任务,并根据任务的类型进行相应的处理,负责所有实际数据的相关操作。DM7的初始工作线程个数由配置文件指定,随着会话连接的增加,工作线程也会同步增加,以保持每个会话都有专门的工作线程处理请求。为了保证用户所有请求及时响应,一个会话上的任务全部由同一个工作线程完成,这样减少了线程切换的代价,提高了系统效率。当会话连接超过预设的阈值时,工作线程数目不再增加,转而由会话轮询线程接收所有用户请求,加入任务队列,等待工作线程一旦空闲,从任务队列依次摘取请求任务处理。

  1. dm_sched_thd 调度线程

调度线程用于接管系统中所有需要定时调度的任务。调度线程每秒轮询一次,负责的任务有以下一些。

(1)检查系统级的时间触发器,如果满足触发条件,则生成任务加到工作线程的任务队列中并由工作线程执行。

(2)清理SQL缓存、计划缓存中失效的项,或者超出缓存限制后淘汰不常用的缓存项。

(3)检查数据重演捕获持续时间是否到期,到期则自动停止捕获。

(4)执行动态缓冲区检查。根据需要动态扩展或动态收缩系统缓冲池。

(5)自动执行检查点。为了保证日志的及时刷盘,减少系统故障时恢复时间,根据INI参数设置的自动检查点执行间隔定期执行检查点操作。

(6)会话超时检测。当客户连接设置了连接超时时,定期检测是否超时,如果超时则自动断开连接。

(7)必要时执行数据更新页刷盘。

(8)唤醒等待的工作线程。

  1. dm_redolog_thd  日志FLUSH线程

任何数据库的修改,都会产生重做(REDO)日志,为了保证数据故障恢复的一致性,REDO日志的刷盘必须在数据页刷盘之前进行。事务运行时,会把生成的REDO日志保留在日志缓冲区中,当事务提交或者执行检查点时,会通知FLUSH线程进行日志刷盘。由于日志具备顺序写入的特点,比数据页分散IO写入效率更高,因此,日志FLUSH线程和IO线程分开,能获得更快的响应速度,保证整体的性能。DM的日志FLUSH线程进行了优化,在刷盘之前,对不同缓冲区内的日志进行合并,减少了IO次数,进一步提高了性能。如果系统配置了实时归档,在FLUSH线程日志刷盘前,会直接将日志通过网络发送到实时备机。如果配置了本地归档或者远程同步归档,则生成归档任务,通过日志归档线程完成。

  1. dm_rsyswrk_thd 日志归档线程

日志归档线程包含同步归档线程和异步归档线程,前者负责本地归档和远程同步归档任务,后者负责远程异步归档任务。如果配置了非实时归档,由日志FLUSH线程产生的任务会分别加入日志归档线程,日志归档线程负责从任务队列中取出任务,按照归档类型做相应归档处理。将日志FLUSH线程和日志归档线程分开的目的是减少不必要的效率损失,除了远程实时归档外,本地归档、远程同步归档、远程异步归档都可以脱离FLUSH线程来做,如果放在FLUSH线程中一起做,则会严重影响系统性能。

  1. dm_sql_thd 用户线程
  2. dm_quit_thd  执行正常关闭数据库的线程
  3. dm_purge_thd  purge线程 主要负责回滚段清理
  4. dm_trctsk_thd 日志信息记录线程,主要负责数据库告警跟踪信息写入告警日志文件中
  5. dm_audit_thd  审计线程,主要负责审计日志记录与更新
  6. dm_chkpnt_thd  检查点线程,主要负责CKPT_LSN的管理
  7. dm_sqllog_thd  Thread for writing dmsql dmserver。
  • 参数文件

select type  from v$parameter  group by type;

READ ONLY:只读(手动意思),只能改dm.ini,重启生效

SYS :系统级别的动态参数

IN FILE :静态参数

SESSION :会话级别的动态参数

  1. 分类

静态参数(可以动态修改,重启生效)

动态参数(动态修改,即时生效,分为会话级和系统级)

手动(不能动态修改,只能改dm.ini,重启生效)

  1. 动态修改参数方法(SP包修改)

SCOPE参数为1表示在内存和INI文件中都修改参数值,此时只能修改动态的配置参数。参数为2表示只在INI文件中修改配置参数,此时可以修改静态参数。

 

SP_SET_PARA_VALUE (scope int, paraname varchar(256), value int64)该过程用于修改整型静态配置参数和动态配置参数。

SP_SET_PARA_DOUBLE_VALUE (scope int, paraname varchar(8187),value double)该过程用于修改浮点型静态配置参数和动态配置参数。

SP_SET_PARA_STRING_VALUE (scope int, paraname varchar(8187),value varchar(256))该过程用于修改字符串型静态配置参数和动态配置参数。

SP_SET_SYSTEM_PARA_VALUE (paraname varchar(256), value int64\double\varchar(256), deferred int, scope int64)该过程用于修改系统整型、double、varchar的静态配置参数或动态配置参数。DEFERRED参数,为0表示当前session修改的参数立即生效,为1表示当前session不生效,后续再生效,默认为0。SCOPE参数为1表示在内存和INI文件中都修改参数值,此时只能修改动态的配置参数。参数为2表示只在INI文件中修改配置参数,此时可用来修改静态配置参数和动态配置参数。

SP_SET_SESSION_PARA_VALUE (paraname varchar(8187), value bigint) 设置某个会话级INI参数的值,设置的参数值只对本会话有效。SP_RESET_SESSION_PARA_VALUE (paraname varchar(8187)) 重置某个会话级INI参数的值,使得这个INI参数的值和系统INI参数的值保持一致。

SP_SET_PARA_VALUE(1,'SVR_LOG',1);--SVR_LOG参数类型是SYS,是否开启SQL日志,可用于分析慢SQL

SP_SET_PARA_VALUE(2,'COMPATIBLE_MODE',2);--COMPATIBLE_MODE参数类型是IN FILE,服务器兼容模式。0:none, 1:SQL92, 2:Oracle, 3:MS SQL Server, 4:MySQL, 5:DM6, 6:Teradata

SP_SET_PARA_VALUE(2,'MAX_SESSIONS',4000);--MAX_SESSION参数类型是IN FILE

SP_SET_PARA_DOUBLE_VALUE (1,'UNDO_RETENTION',1800);--UNDO_RETENTION参数类型是SYS,并且是浮点型  

  1. 动态修改参数方法(ALTER SYSTEM修改)

alter system set 'SVR_LOG'=0 ; --不改spfile

alter system set 'MAX_SESSIONS'=2000 spfile;

alter system set 'UNDO_RETENTION'=900 both;

  • 控制文件

dmctlcvt 控制文件从二进制文件到文本文件的相互转换

[dmdba@test1 test1]$ dmctlcvt help  

[dmdba@test1 test1]$ dmctlcvt TYPE=1 SRC=dm.ctl DEST=dmctl.txt

DMCTLCVT V8

convert ctl to txt success!

[dmdba@test1 test1]$ dmctlcvt TYPE=2 SRC=dmctl.txt DEST=dm.ctl

DMCTLCVT V8

convert txt to ctl success!

  • 表空间管理
  1. 查看表空间可用空间

select * from dba_data_files;

  1. 管理表空间

大小不能带单位,单位是M

select * from dba_data_files;

--创建表空间

create tablespace test datafile '/dmdb/data5236/test1/TEST01.DBF' size 1024 ;

create tablespace test2 datafile '/dmdb/data5236/test1/TEST02.DBF' size 1024 autoextend off;

create tablespace test3 datafile '/dmdb/data5236/test1/TEST03.DBF' size 1024 autoextend on maxsize 30720;

--添加数据文件

alter tablespace test add datafile '/dmdb/data5236/test1/TEST02.DBF' size 1024 ;

--数据文件扩容,无法缩小

alter tablespace test resize datafile '/dmdb/data5236/test1/TEST02.DBF' to 2048 ;

--关闭自动扩展

alter tablespace test datafile '/dmdb/data5236/test1/TEST01.DBF' autoextend off;

--开启自动扩展,设置最大值

alter tablespace test datafile '/dmdb/data5236/test1/TEST01.DBF' autoextend on maxsize 30720;

--设置扩展大小和最大值

alter tablespace test datafile '/dmdb/data5236/test1/TEST02.DBF' autoextend on next 16 maxsize 30720;

--迁移数据文件位置(保证迁移目录存在,并且dmdba有权限)system表空间的移动,需要修改控dm.ctl制文件,使用dmctlcvt工具

alter tablespace test offline;

alter tablespace test rename datafile '/dmdb/data5236/test1/TEST01.DBF' to '/dmdb/data5236/test1/datadir/TEST01.DBF';

alter tablespace test rename datafile '/dmdb/data5236/test1/TEST02.DBF' to '/dmdb/data5236/test1/datadir/TEST02.DBF';

alter tablespace test online;

 

alter tablespace MAIN offline;

alter tablespace MAIN rename datafile '/dmdb/data5236/test1/MAIN.DBF' to '/dmdb/data5236/test1/datadir/MAIN.DBF';

alter tablespace MAIN online;

 

--删除表空间,非空不能删

drop tablespace test2;

drop tablespace test3;

 

CREATE TABLE "SYSDBA"."TEST1"

(

"OWNER" VARCHAR(128),

"OBJECT_NAME" VARCHAR(128),

"SUBOBJECT_NAME" VARCHAR(1),

"OBJECT_ID" DEC,

"DATA_OBJECT_ID" DEC,

"OBJECT_TYPE" VARCHAR(15),

"CREATED" TIMESTAMP(6),

"LAST_DDL_TIME" TIMESTAMP(6),

"TIMESTAMP" TIMESTAMP(6),

"STATUS" VARCHAR(7),

"TEMPORARY" VARCHAR(1),

"GENERATED" VARCHAR(1),

"SECONDARY" VARCHAR(1),

"NAMESPACE" DEC,

"EDITION_NAME" VARCHAR(1)) STORAGE (ON "TEST") ;

insert into test1 select * from dba_objects;

drop tablespace test;

试图删除已经使用的表空间,1条语句执行失败

drop table test1;

drop tablespace test;

  1. 管理重做日志文件

联机日志不能手动切换

--查看联机日志

select

        case when s.CUR_FILE is null then 'NOT_ACTIVE' else 'ACTIVE' end "IS_ACTIVE",

        r.rlog_size/1024/1024 "SIZE_M",r.group_id,r.file_id,r.PATH

from

        v$rlogfile r

left join v$rlog s

on

        r.file_id=s.CUR_FILE;

--添加联机日志

alter database add logfile '/dmdb/data5236/test1/test103.log' size 512;

alter database add logfile '/dmdb/data5236/test1/test104.log' size 512;

--修改联机日志大小

alter database resize logfile '/dmdb/data5236/test1/test101.log' to 512;

alter database resize logfile '/dmdb/data5236/test1/test102.log' to 512;    

--重做日志文件迁移(必须在mount状态下操作)

alter database mount;

alter database rename logfile '/dmdb/data5236/test1/test101.log'  to '/dmdb/data5236/test1/datadir/test101.log';

alter database rename logfile '/dmdb/data5236/test1/test102.log'  to '/dmdb/data5236/test1/datadir/test102.log';

alter database rename logfile '/dmdb/data5236/test1/test103.log'  to '/dmdb/data5236/test1/datadir/test103.log';

alter database rename logfile '/dmdb/data5236/test1/test104.log'  to '/dmdb/data5236/test1/datadir/test104.log';

alter database open;

  1. 移动system/ROLL文件位置

[dmdba@test1 test1]$ dmctlcvt help  

[dmdba@test1 test1]$ pwd

/dmdb/data5236/test1

[dmdba@test1 test1]$ dmctlcvt TYPE=1 SRC=dm.ctl DEST=dmctl.txt

DMCTLCVT V8

convert ctl to txt success!

[dmdba@test1 test1]$ systemctl stop DmServicetest1.service

移动数据文件位置

[dmdba@test1 test1]$ pwd

/dmdb/data5236/test1

[dmdba@test1 test1]$ mv SYSTEM.DBF datadir/

[dmdba@test1 test1]$ mv ROLL.DBF datadir/

[dmdba@test1 test1]$ vi dmctl.txt

修改:

fil_path=/dmdb/data5236/test1/datadir/ROLL.DBF

fil_path=/dmdb/data5236/test1/datadir/SYSTEM.DBF

[dmdba@test1 test1]$ mv dm.ctl dm.ctl.bak

[dmdba@test1 test1]$ dmctlcvt TYPE=2 SRC=dmctl.txt DEST=dm.ctl

DMCTLCVT V8

convert txt to ctl success!

[dmdba@test1 test1]$  systemctl start DmServicetest1.service

  1. 移动temp文件位置

[dmdba@test1 test1]$  systemctl stop DmServicetest1.service

[dmdba@test1 test1]$ vi dm.ini

 TEMP_PATH                       = /dmdb/data5236/test1/datadir

[dmdba@test1 test1]$ mv TEMP.DBF datadir/

[dmdba@test1 test1]$ systemctl start DmServicetest1.service

  • 归档模式
  1. 开启归档

[dmdba@test1 test1]$ cd arc

[dmdba@test1 arc]$ pwd

/dmdb/data5236/test1/arc

SQL> alter database mount;

SQL> alter database add archivelog 'type=local,dest=/dmdb/data5236/test1/arc,file_size=512,space_limit=10240';

SQL> alter database archivelog;

SQL> select arch_mode from v$database;

SQL> alter database open;

select * from v$arch_file;

  1. 归档切换

SQL> alter SYSTEM SWITCH logfile;

SQL> alter DATABASE ARCHIVELOG CURRENT;

SQL> alter system archive log current;

  1. 归档删除
  1. 配置dmarch.ini中ARCH_SPACE_LIMIT大小限制,超过限制会删除最早的归档日志。
  2. 使用系统函数清理归档

Select sf_archivelog_delete_before_time(sysdate);

Select sf_archivelog_delete_before_lsn(109169);

  1. 使用归档的备份来清理
  • 用户管理

SQL> select para_name, para_type, para_value, description from v$dm_ini where para_name = 'PWD_POLICY';

设置系统默认口令策略。

0: 无策略;

1: 禁止与用户名相同;

2: 口令长度不小于 9;

4: 至少包含一个大写字母(A-Z);

8:至少包含一个数字(0-9);

16:至少包含一个标点符号(英文输入法状态下,除“和空格外的所有符号;

若为其他数字,则表示配置值的和,如 3=1+2,表示同时启用第 1 项和第 2 项策略, 14 为 2+4+8.

  1. 创建账户

SP_SET_PARA_VALUE(1,'PWD_POLICY',31);

create user "ZHANGGUO" identified by "xxx"

default tablespace "TEST"

default index tablespace "TEST";

grant "PUBLIC","RESOURCE","VTI" to "ZHANGGUO";

  1. 锁定/解锁账户

alter user ZHANGGUO account lock;

alter user ZHANGGUO account unlock;

  1. 资源限制

密码错误超过5次,锁定10min

alter user ZHANGGUO LIMIT FAILED_LOGIN_ATTEMPS 5, PASSWORD_LOCK_TIME 10;

修改默认表空间和默认索引表空间

alter user ZHANGGUO default tablespace "TEST" default index tablespace "TEST";

IP限制:

alter user ZHANGGUO ALLOW_IP "x.x.x.x";

  1. 权限管理

select * from dba_sys_privs;

select * from dba_role_privs;

select * from dba_tab_privs;

select * from dba_roles;

DBA:管理员角色,拥有几乎所有的权限。

RESOURCE:拥有创建表、创建视图等对数据库操作的权限,但是没有创建用户的权限。

PUBLIC:拥有数据操作权限(增删改查),没有创建表等对象定义的权限,只有数据操作的权限。

SOI:拥有查询系统表(sys 开头的)

VTI:拥有动态视图(v$开头的查询权限)。

  1. 角色禁用和启用

sp_set_role('ROLE_NAME',0);

sp_set_role('ROLE_NAME',1);

  • 模式管理

create schema test2 AUTHORIZATION zhangguo;

conn zhangguo/xxx

set schema test2;

set schema zhangguo;

drop schema test2;/drop schema test2 cascade;

select * from SYSOBJECTS t where type$ = 'SCH'; --查询所有模式

  • 约束管理

alter table ZHANGGUO.table_1 modify  SEX varchar2(2);

alter table ZHANGGUO.Table_1 add COLUMN location VARCHAR2(100);

alter table ZHANGGUO.table_1 MODIFY SEX null;

alter table ZHANGGUO.table_1 MODIFY SEX not null DEFAULT '男';

alter table ZHANGGUO.table_1 add check (age>20);

alter table ZHANGGUO.table_1 add CONSTRAINT check_age_50 check (age<50);

alter table ZHANGGUO.table_1 drop CONSTRAINT check_age_50;

alter table ZHANGGUO.table_1 drop CONSTRAINT CONS134218776 cascade;

alter table ZHANGGUO.table_1 add constraint XX primary key (column_name);

alter table ZHANGGUO.table_1 add constraint XX FOREIGN KEY (column_name) REFERENCES table(column)

alter table ZHANGGUO.table_1 disable constraint XX ;

alter table ZHANGGUO.table_1 enable constraint XX ;

  • 索引管理

create index XX on table_name(column_name);

select * from dba_indexes;

select * from DBA_IND_COLUMNS;

--创建索引需要收集统计信息

call dbms_stats.GATHER_TABLE_STATS('OWNER','TABLE_NAME');

explain select * from ……;

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值