达梦8 DCA认证笔记
接公司領(lǐng)導(dǎo)圣旨,參加達(dá)夢數(shù)據(jù)庫DCA課程培訓(xùn)。培訓(xùn)三天的時(shí)間收獲很多,因疫情原因有點(diǎn)擔(dān)心是線下培訓(xùn),但又擔(dān)心線上課程效果不好。總之糾結(jié)。聽了半天的課程后就打消我的顧慮,感謝達(dá)夢大學(xué)和我的授課老師,耐心的幫助和仔細(xì)的講解,效果非常好。順便幫助國產(chǎn)數(shù)據(jù)庫達(dá)夢宣傳一下 ,有想學(xué)習(xí)的 請加唯一官方QQ:2908982381(達(dá)夢大學(xué))
三天時(shí)光充實(shí),短暫。
本文重點(diǎn)介紹命令行式操作,圖形化較簡單。理解下就能操作。
1.國內(nèi)數(shù)據(jù)庫行業(yè)的發(fā)展趨勢,信創(chuàng)的本質(zhì);
2.DM8數(shù)據(jù)庫新特性;
3.DM8安裝+實(shí)例管理;
4.體系結(jié)構(gòu);
5.表空間管理;
6.用戶管理;
7.dmsql;
8.模式對象管理;
9.備份和還原;
10.作業(yè)創(chuàng)建和管理;
11.jdbc和odbc。
1.數(shù)據(jù)庫行業(yè)概況
主要的幾個(gè)派系
oracle mysql pg sqlserver db2 informix
Hbase MongoDB
2.DM8 新特性:
(龍芯,飛騰,鯤鵬,海光,申威等)。軟件(國產(chǎn)的 OS—
麒麟,統(tǒng)信等),辦公系統(tǒng)(金山 WPS,永中),中間件(東
方通,中創(chuàng),金蝶等),存儲(長城,曙光,華為等))兼
容適配
中心)
數(shù)據(jù)是否有副本) 計(jì)算節(jié)點(diǎn)—日志節(jié)點(diǎn)—存儲節(jié)點(diǎn),不
損傷 SQL
節(jié)點(diǎn))
3 DM8 安裝
軟件:OS
內(nèi)核版本:[root@localhost ~]# uname -r 2.6 以上內(nèi)核
發(fā)行版本:[root@localhost ~]# cat /etc/issue
位數(shù):[root@localhost ~]# uname -m
[root@localhost ~]# cat /proc/cpuinfo
查看硬盤、分區(qū)信息
[root@localhost ~]# fdisk -l
[root@localhost ~]# df -h
遠(yuǎn)程訪問數(shù)據(jù)庫需要關(guān)閉防火墻
[root@localhost ~]# systemctl status firewalld
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
規(guī)劃路徑
[root@localhost /]# mkdir -p /dm8
安裝用戶(建議不要使用root)
[root@localhost /]# groupadd dinstall
[root@localhost /]# useradd -g dinstall dmdba
[root@localhost /]# passwd dmdba
更改用戶dmdba 的密碼。
新的密碼:
無效的密碼: 密碼少于8 個(gè)字符
重新輸入新的密碼:
passwd:所有的身份驗(yàn)證令牌已經(jīng)成功更新。
[root@localhost /]# chown dmdba:dinstall /dm8 -R
[root@localhost /]# ls -ld /dm8
配置dmdba 用戶環(huán)境變量(可選項(xiàng))
環(huán)境變量生效:
[dmdba@localhost ~]$ source .bash_profile
export DM_HOME=/dm8
export
PAHT=DMHOME/bin:DM_HOME/bin:DMH?OME/bin:PATH:HOME/.local/bin:HOME/.local/bin:HOME/.local/bin:HOME/bin
設(shè)置最大文件打開數(shù)
修改之后重啟生效
[root@localhost /]# vi /etc/security/limits.conf
dmdba soft nofile 4906
dmdba hard nofile 65536
臨時(shí)生效:ulimit -n 65536
數(shù)據(jù)庫版本
開發(fā)版:有時(shí)間和并發(fā)數(shù)限制,不能作為商用
標(biāo)準(zhǔn)版:小型應(yīng)用,沒有集群等高級功能和特性
企業(yè)版:三權(quán)分立,大中型企業(yè)使用,具有集群等高級特性安全版:基于企業(yè)版的四權(quán)分立,安全特性進(jìn)一步增強(qiáng)(強(qiáng)訪問控制、
客體重用等)
安裝包的類型: .iso .tar.gz .zip
ISO:掛載
ZIP:解壓
[dmdba@localhost ~]$ file XXX (linux 不以文件的擴(kuò)展名
了識別文件類型)
數(shù)據(jù)庫軟件安裝
[root@localhost home]# mount -o loop
dm8_20201107_x86_rh6_64_ent_8.1.1.144.iso /mnt
mount: /dev/loop0 寫保護(hù),將以只讀方式掛載
[root@localhost dmdba]# xhost +
(
在這里自己機(jī)器上實(shí)驗(yàn)的時(shí)候,會出現(xiàn)打不開可視化圖形的情況 配置一下DISPLAY即可
su - dmdba
export DISPLAY=localhost:1
如果用win ssh遠(yuǎn)程過去
root登錄
xhost +
su - dmdba
export DISPLAY=192.168.0.166:0 (win機(jī)器ip)
)
[dmdba@localhost mnt]$ ./DMInstall.bin
執(zhí)行腳本(用root 賬號)
/dm8/script/root/root_installer.sh
CLI:命令行的交互式安裝
[dmdba@localhost mnt]$ ./DMInstall.bin -i
安裝目錄的結(jié)構(gòu)和內(nèi)容:
bin:庫文件和達(dá)夢常用的命令
bin2 :UTF8
Desktop:桌面
Drivers:驅(qū)動
jar :jar 包,存放的是邏輯備份、數(shù)據(jù)快速加載、日志挖掘
license_en.txt license_zh.txt :許可信息
log :日志
release_zh.txt release_en.txt :版本信息
script :腳本
uninstall uninstall.sh :卸載
web :dem 類似oracle oem
doc :文檔
include :頭文件(.h)
jdk :java
Samples :示例
tool :客戶端工具
卸載數(shù)據(jù)庫軟件
注意:在卸載數(shù)據(jù)庫之前,需要將數(shù)據(jù)庫備份,然后關(guān)閉實(shí)例、刪除
數(shù)據(jù)庫及卸載數(shù)據(jù)庫軟件
[dmdba@localhost dm8]$ ./uninstall.sh -i
創(chuàng)建數(shù)據(jù)庫實(shí)例
一個(gè)數(shù)據(jù)庫軟件是可以安裝多個(gè)實(shí)例,通過端口號來區(qū)分
cd /dm8/tool
[dmdba@localhost tool]$ ./dbca.sh
初始化數(shù)據(jù)庫
判斷數(shù)據(jù)庫實(shí)例是否啟動:
[dmdba@localhost ~]$ dmservice.sh
查看DM進(jìn)程
[dmdba@localhost ~]$ ps -ef|grep dmserver
[dmdba@localhost ~]$ netstat -ntl|grep 5236
[dmdba@localhost ~]$ DmServiceDMSERVER status
[dmdba@localhost ~]$ systemctl status DmServiceDMSERVER.service
手動創(chuàng)建實(shí)例TEST:
./dminit path=/dm8/data db_name=DB_TEST instance_name=TEST PORT_NUM=5239
創(chuàng)建服務(wù):
[dmdba@localhost ~]$ cd /dm8/script/root/
[dmdba@localhost ~]$ dm_service_installer.sh -h
[root@localhost ~]# ./dm_service_installer.sh -t dmserver -p TEST -dm_ini /dm8/data/DB_TEST/dm.ini
DM8 數(shù)據(jù)庫實(shí)例管理
數(shù)據(jù)庫的狀態(tài)
Shutdown:關(guān)閉狀態(tài)
Mount:配置狀態(tài)
Open:數(shù)據(jù)庫打開狀態(tài),數(shù)據(jù)庫對外提供服務(wù)
Suspend:掛起狀態(tài)
數(shù)據(jù)庫狀態(tài)的切換
Shutdown -mount
Shutdown -open
Open-shutdown
Mount-open
Open-mount(oracle 不支持)
Open-suspend
Suspend-open
Dm 數(shù)據(jù)庫不支持mount-suspend 狀態(tài),suspend-mount 狀態(tài)
數(shù)據(jù)庫啟動過程
Shutdown-mount
根據(jù)配置文件dm.ini 分配共享內(nèi)存,啟動后臺進(jìn)程/線程,找到控制
文件的位置,驗(yàn)證控制文件是否損壞,最后打開控制文件。
Mount-open
根據(jù)控制文件找到數(shù)據(jù)庫的數(shù)據(jù)文件和重做日志文件,分析數(shù)據(jù)庫是
否需要做恢復(fù)。
數(shù)據(jù)庫啟動和關(guān)閉
通過進(jìn)程的形式啟停數(shù)據(jù)庫
[dmdba@localhost bin]$ ./DmServiceDMSERVER stop
[dmdba@localhost bin]$ ./DmServiceDMSERVER start
在前端啟停數(shù)據(jù)庫
[dmdba@localhost bin]$ ./dmserver /dm8/data/DAMENG/dm.ini
關(guān)閉數(shù)據(jù)庫:exit
用服務(wù)查看器啟停數(shù)據(jù)庫(root 賬號執(zhí)行)
數(shù)據(jù)庫工具
disql
/dm8/bin
類似于oracle 的Sqlplus / as sysdba
[dmdba@localhost bin]$ ./disql SYSDBA/SYSDBA:5239
[dmdba@localhost bin]$ cd /dm8/tool/
類似于oracle 的Sqlplus /nolog
[dmdba@localhost tool]$ ./disql
disql V8
SQL> conn SYSDBA/SYSDBA:5239
管理工具manager
./manager
性能監(jiān)控工具monitor
./monitor
遷移工具dts
./dits
console 工具
./console
查看和調(diào)整參數(shù)
DMSQL
SQL結(jié)構(gòu)化查詢語言,提供了應(yīng)用程序到數(shù)據(jù)庫的一個(gè)接口。
DMSQL 分類
DML(數(shù)據(jù)操作語言):insert update delete select
DDL(數(shù)據(jù)定義語言):create table,drop table,alter table ,truncate
DCL(數(shù)據(jù)控制語言):權(quán)限的授予或撤回,grant,revoke
TCL(事務(wù)控制語言):commit, rollback ,save moint
簡單 不做具體分享
DM8 體系結(jié)構(gòu)
DMSERVER:C/S 架構(gòu),客戶端+服務(wù)器構(gòu)成
DMSERVER=數(shù)據(jù)庫文件+實(shí)例
實(shí)例=共享內(nèi)存+后臺進(jìn)程/線程
非DSC 架構(gòu)是一個(gè)實(shí)例對應(yīng)一個(gè)數(shù)據(jù)庫,DSC 架構(gòu)是一個(gè)數(shù)據(jù)庫可以
對應(yīng)多個(gè)實(shí)例
DM8存儲結(jié)構(gòu)
物理結(jié)構(gòu)
配置文件
以.ini 結(jié)尾的文件
[dmdba@localhost DAMENG]$ ls -l *.ini
查詢視圖:
select para_name,para_value from v$dm_ini where para_name like
‘COMPAT%’;
SYS 系統(tǒng)級:影響全局
Session 會話級:針對當(dāng)前會話有效
Infile:靜態(tài)參數(shù),實(shí)例重啟才能生效
sp_set_para_value(2,‘COMPATIBLE_MODE’,2);
1 等于both,會改變內(nèi)存和參數(shù)文件中的值。
2 等于infile,會改變參數(shù)文件中的值,重啟才能生效。
數(shù)據(jù)文件
以.DBF 結(jié)尾的文件
[dmdba@localhost DAMENG]$ ls -l *DBF
控制文件
以.ctl 結(jié)尾的文件
select para_name,para_value from v$dm_ini where para_name like
‘%PATH%’;
查看控制文件內(nèi)容:
[dmdba@localhost bin]$ ./dmctlcvt TYPE=1
SRC=/dm8/data/DAMENG/dm.ctl DEST=/tmp/dmctl.txt
注意:不要隨便修改控制文件
重做日志文件
查詢重做日志文件:
select file_id,path,rlog_size from v$rlogfile;
重做日志文件記錄的是數(shù)據(jù)庫發(fā)生變更信息。重做日志文件的特點(diǎn)是
可覆蓋,循環(huán)寫。重做日志文件頻繁切換會對數(shù)據(jù)庫產(chǎn)生較大的性能
影響。
resize 重做日志文件
alter database resize logfile ‘/dm8/data/DAMENG/DAMENG01.log’ TO
300;
alter database resize logfile ‘/dm8/data/DAMENG/DAMENG02.log’ TO
300;
新增重做日志文件:
alter database add logfile ‘/dm8/data/DAMENG/DAMENG03.log’ size
300;
注意:重做日志文件不能被刪除,所有日志文件大小需要一致。
歸檔日志文件
就是重做日志文件的副本,用來做數(shù)據(jù)庫恢復(fù)。
開啟歸檔:
命令行開歸檔
[dmdba@localhost DAMENG]$ disql sysdba/dameng123
服務(wù)器[LOCALHOST:5236]:處于普通打開狀態(tài)
登錄使用時(shí)間: 14.156(毫秒)
disql V8
SQL> alter database mount;
操作已執(zhí)行
已用時(shí)間: 00:00:01.783. 執(zhí)行號:0.
SQL>alter database add archivelog ‘type=local,dest=/dm8/arch,file_size=100,space_limit=0’;
操作已執(zhí)行
已用時(shí)間: 12.152(毫秒). 執(zhí)行號:0.
SQL> alter database archivelog;
操作已執(zhí)行
已用時(shí)間: 5.841(毫秒). 執(zhí)行號:0.
SQL> alter database open;
操作已執(zhí)行
已用時(shí)間: 00:00:01.866. 執(zhí)行號:0.
SQL> select name,arch_mode from v$database;
行號 NAME ARCH_MODE
1 DAMENG Y
已用時(shí)間: 8.372(毫秒). 執(zhí)行號:1803.
圖形化開歸檔
備份文件
以.bak 為擴(kuò)展名的文件,備份文件就是數(shù)據(jù)庫在某一個(gè)時(shí)間點(diǎn)的副
本。.meta 元數(shù)據(jù)文件(備份集的信息),.bak 數(shù)據(jù)備份文件(真實(shí)的數(shù)據(jù))
跟蹤日志文件
跟蹤日志文件記錄的是系統(tǒng)各會話執(zhí)行的sql 語句的信息,主要是錯(cuò)
誤的信息、性能問題。跟蹤日志文件默認(rèn)是關(guān)閉的。SVR_LOG
select para_name,para_value from v$dm_ini where para_name=‘SVR_LOG’;
事件日志文件
記錄的是數(shù)據(jù)庫運(yùn)行期間產(chǎn)生的關(guān)鍵性事件:數(shù)據(jù)庫的啟動、關(guān)閉、
IO 錯(cuò)誤、內(nèi)存申請失敗。
邏輯結(jié)構(gòu)
頁(塊):默認(rèn)為8k(8192 字節(jié)),支持4k、8k、16k、32k。數(shù)據(jù)
頁是數(shù)據(jù)庫最小的分配單元。包含了頁頭信息,數(shù)據(jù),空閑空間,行
偏移數(shù)組。Filefactor
簇:簇是一組連續(xù)的數(shù)據(jù)頁組成,默認(rèn)為16 個(gè)頁,支持16、32 個(gè)頁,
總是在一個(gè)數(shù)據(jù)文件中。
段:是簇的上級邏輯單元,段是可以跨多個(gè)數(shù)據(jù)文件的。段分為數(shù)據(jù)
段(表段、索引段),臨時(shí)段,回滾段。
select * from user_segments;
表空間:可以擁有一個(gè)或多個(gè)數(shù)據(jù)文件,一個(gè)數(shù)據(jù)文件只能屬于一個(gè)
表空間。
內(nèi)存結(jié)構(gòu)
–共享內(nèi)存池是DM SERVER 啟動時(shí)從操作系統(tǒng)申請的一大片內(nèi)存,實(shí)
例在運(yùn)行中可以在共享內(nèi)存池中進(jìn)行申請或釋放。
select para_name,para_value from v$dm_ini where para_name like ‘%MEMORY%’;
MEMORY_TARGET 為0 表示不限制內(nèi)存使用
MEMORY_POOL:公共池,減少系統(tǒng)調(diào)用
MAX_OS_MEMORY:可以使用物理內(nèi)存的百分比
–運(yùn)行時(shí)內(nèi)存池給某個(gè)模塊單獨(dú)使用,例如會話內(nèi)存吃和虛擬機(jī)內(nèi)存
池。
–數(shù)據(jù)緩沖區(qū)
緩存數(shù)據(jù)頁,使用數(shù)據(jù)緩沖區(qū)可以提供數(shù)據(jù)庫的性能。
參數(shù):buffer
select para_name,para_value from v$dm_ini where para_name like ‘%BUFFER%’;
參考值:oltp 物理內(nèi)存的40%-60%
Olap 物理內(nèi)存的60%-80%
數(shù)據(jù)緩沖區(qū)有4 種類型:
Normal keep:可以手動調(diào)整,normal 是默,keep 緩存的是表空間。
(Oracle keep 緩存的是表)
fast recycle:系統(tǒng)自動管理。Recycle 緩存臨時(shí)數(shù)據(jù)。
讀多頁:全表掃描比較多,可以考慮調(diào)整該參數(shù)。
重做日志緩沖區(qū)
存放日志的緩沖區(qū),單位頁,避免直接對磁盤IO 進(jìn)行讀寫,提高了
數(shù)據(jù)庫的性能。
select para_name,para_value,para_type from v$dm_ini
where para_name like ‘%RLOG_%’;
重做日志刷盤的機(jī)制:每3 秒,事務(wù)提交。
SQL 緩沖區(qū)
用來存放包、執(zhí)行計(jì)劃、sql 結(jié)果集。對于sql 類別比較多,包、存儲
過程比較多,應(yīng)該適當(dāng)調(diào)整sql 緩沖區(qū)。
select para_name,para_value from v$dm_ini where para_name like ‘%CACHE_POOL%’;
是否開啟sql 重用計(jì)劃:
select para_name,para_value from v$dm_ini where para_name like ‘%USE_PLN%’;
字典緩沖區(qū)
字典緩沖區(qū)主要存的是數(shù)據(jù)字典的信息,包含表的信息,列的信息。
當(dāng)我們數(shù)據(jù)庫中存在大量分區(qū)表、大量表時(shí)應(yīng)該適當(dāng)調(diào)整字典緩沖
區(qū)。
select para_name,para_value from v$dm_ini where para_name like ‘%DIC%’;
HASH 緩沖區(qū)
主要是表在HASH 連接時(shí)會用到,虛擬的內(nèi)存池,只有在做HASH 連
接使,才會生成、分配空間。
select para_name,para_value from v$dm_ini where para_name like ‘%HJ_BUF%’;
SSD 緩沖區(qū)
默認(rèn)SSD 緩沖區(qū)是關(guān)閉的,即SSD_BUF_SIZE 為0。若要配置SSD
緩沖區(qū),將其設(shè)置為大于0 的數(shù)并指定SSD_FILE_PATH 即可
線程結(jié)構(gòu)
監(jiān)聽線程
檢測來自客戶端的連接請求,并把任務(wù)交給工作線程。
IO 線程
將數(shù)據(jù)頁從磁盤讀入數(shù)據(jù)緩沖區(qū)中,將數(shù)據(jù)緩沖區(qū)中的臟頁在一定機(jī)
制(執(zhí)行檢查點(diǎn),數(shù)據(jù)庫關(guān)閉,buffer 滿)下更新到磁盤中。
日志刷新線程
將重做日志緩沖區(qū)中的記錄在一定機(jī)制下刷到重做日志文件中。
日志歸檔線程
將重做日志文件在切換時(shí)拷貝到歸檔路徑下做副本。分為本地歸檔、
同步歸檔、異步歸檔。
日志重做線程
主要用于數(shù)據(jù)庫的故障恢復(fù)。
調(diào)度線程
檢查系統(tǒng)級的時(shí)間觸發(fā)器;
清理SQL 緩存、計(jì)劃緩存中失效的項(xiàng),或者超出緩存限制后淘汰不
常用的緩存項(xiàng);
動態(tài)緩沖區(qū)檢查。根據(jù)需要動態(tài)擴(kuò)展或動態(tài)收縮系統(tǒng)緩沖池;
自動執(zhí)行檢查點(diǎn);
會話超時(shí)檢測;
必要時(shí)執(zhí)行數(shù)據(jù)更新頁刷盤;
喚醒等待的工作線程;
SQL 執(zhí)行過程
A 客戶端發(fā)起連接請求(監(jiān)聽線程、工作線程)
B 語法分析(字典緩沖區(qū)、SQL 緩沖區(qū))
C 語義分析(字典緩沖區(qū))
D 權(quán)限分析(字典緩沖區(qū))
E 查看數(shù)據(jù)頁是否在內(nèi)存中,不在內(nèi)存就會產(chǎn)生物理讀,在內(nèi)存中就
會產(chǎn)生邏輯讀(數(shù)據(jù)緩沖區(qū)、sql 緩沖區(qū)、IO 線程)
F 數(shù)據(jù)發(fā)生變更(日志刷新線程、日志緩沖區(qū)、數(shù)據(jù)緩沖區(qū)、IO 線程)
G 是否有可用的執(zhí)行計(jì)劃,如果有就按執(zhí)行計(jì)劃執(zhí)行sql,如果沒有
生成執(zhí)行計(jì)劃,運(yùn)行sql,結(jié)果集返回客戶端。(字典緩沖區(qū)、排序
區(qū)、hash 區(qū),工作線程,SQL 緩沖區(qū))。
表空間
查看表空間
SQL> select tablespace_name,file_name from dba_data_files;
行號 TABLESPACE_NAME FILE_NAME
1 SYSTEM /dm8/data/DAMENG/SYSTEM.DBF
2 DMHR /dm8/data/DAMENG/DMHR.DBF
3 BOOKSHOP /dm8/data/DAMENG/BOOKSHOP.DBF
4 MAIN /dm8/data/DAMENG/MAIN.DBF
5 TEMP /dm8/data/DAMENG/TEMP.DBF
6 ROLL /dm8/data/DAMENG/ROLL.DBF
介紹達(dá)夢數(shù)據(jù)庫表空間:
System:數(shù)據(jù)字典相關(guān)信息、動態(tài)性能視圖
ROLL:數(shù)據(jù)庫運(yùn)行中的回滾記錄
TEMP:臨時(shí)表空間,排序
MAIN:數(shù)據(jù)庫的默認(rèn)表空間,存放的是用戶的真實(shí)數(shù)據(jù)。創(chuàng)建用戶
或者創(chuàng)建數(shù)據(jù)庫對象時(shí),沒有指定表空間,就會存放在默認(rèn)表空間
(main)中。
HMAIN:HUGE 表空間
查詢表空間和數(shù)據(jù)文件:
SQL> select tablespace_name,file_name from dba_data_files;
創(chuàng)建表空間
案例1:創(chuàng)建一個(gè)初始值為30M 表空間。
SQL> create tablespace test datafile ‘/dm8/data/DAMENG/TEST01.DBF’ SIZE 30;
create tablespace test datafile ‘/dm8/data/DAMENG/TEST01.DBF’ SIZE 30;
第1 行附近出現(xiàn)錯(cuò)誤[-2410]:數(shù)據(jù)文件[/dm8/data/DAMENG/TEST01.DBF]大小無效.
已用時(shí)間: 0.962(毫秒). 執(zhí)行號:0.
表空間數(shù)據(jù)文件初始大小是4906*頁(8192)=32M
案列2:創(chuàng)建表空間TBS,初始大小為50M,每次擴(kuò)展2M,最大擴(kuò)展
到1024M;
create tablespace “TBS” datafile ‘/dm8/data/DAMENG/TBS01.DBF’ size 50 autoextend on next 2 maxsize 1024 CACHE = NORMAL;
案例3:創(chuàng)建表空間TBSA,包含兩個(gè)數(shù)據(jù)文件,初始大小為35M,
每次擴(kuò)展1M,最大可擴(kuò)展到1024M;
create tablespace “TBSA” datafile ‘/dm8/data/DAMENG/TBSA01.DBF’ size 35 autoextend on next 1 maxsize 1024, ‘/dm8/data/DAMENG/TBSA02.DBF’ size 35 autoextend on next 1 maxsize 1024 CACHE = NORMAL;
8.3 表空間狀態(tài)
脫機(jī)狀態(tài)
Alter tablespace tbs offline;
聯(lián)機(jī)狀態(tài)
Alter tablespace tbs online;
維護(hù)表空間
表空間不足
增加數(shù)據(jù)文件
alter tablespace “TBS” add datafile ‘/dm8/data/DAMENG/TBS02.DBF’
size 32;
數(shù)據(jù)文件開啟自動擴(kuò)展
alter tablespace “TBS” datafile ‘TBS02.DBF’ autoextend on next 1 maxsize 1024;
resize 數(shù)據(jù)文件
alter tablespace “TBS” resize datafile ‘TBS02.DBF’ to 100;
更換數(shù)據(jù)文件路徑
表空間脫機(jī)
Alter tablespace tbs offline;
修改數(shù)據(jù)文件路徑
SQL> alter tablespace tbs rename datafile
‘/dm8/data/DAMENG/TBS01.DBF’ to ‘/dm8/TBS01.DBF’;
表空間聯(lián)機(jī)
SQL> alter tablespace tbs online;
回滾表空間
alter tablespace “ROLL” add datafile ‘/dm8/data/DAMENG/ROLL02.DBF’
size 32;
alter tablespace “ROLL” resize datafile ‘ROLL02.DBF’ to 128;
臨時(shí)表空間
SQL> select para_name,para_value from v$dm_ini where para_name like ‘%TEMP%’;
行號 PARA_NAME PARA_VALUE
1 TEMP_PATH /dm8/data/DAMENG
2 TEMP_SIZE 10
3 TEMP_SPACE_LIMIT 0
system、temp、roll 表空間不允許脫機(jī)
刪除表空間
Drop tablespace tbs;
用戶管理
用戶管理分為三塊:用戶、權(quán)限、角色
用戶
查看用戶
SQL> select username,account_status from dba_users;
行號 USERNAME ACCOUNT_STATUS
1 SYSSSO OPEN
2 DMHR OPEN
3 SYSDBA OPEN
4 SYS OPEN
5 SYSAUDITOR OPEN
企業(yè)版的用戶
數(shù)據(jù)庫預(yù)定義的用戶:
Sysdba :管理員
Sys:不能登錄,數(shù)據(jù)字典、視圖
Sysauditor:審計(jì)員
Syssso:安全員
安全版用戶:
在企業(yè)版基礎(chǔ)上,增加sysdbo,數(shù)據(jù)庫對象操作員。
規(guī)劃用戶
命名:字母開頭,a-z,0-9,$#_
長度為128 個(gè)字符
權(quán)限分配:系統(tǒng)權(quán)限、對象權(quán)限、角色
存儲位置:表空間
密碼策略:PWD_POLICY
設(shè)置系統(tǒng)默認(rèn)口令策略。
0: 無策略;
1: 禁止與用戶名相同;
2: 口令長度不小于9;
4: 至少包含一個(gè)大寫字母(A-Z);
8 :至少包含一個(gè)數(shù)字(0-9);
16:至少包含一個(gè)標(biāo)點(diǎn)符號(英文輸入法狀態(tài)下,除“和空格外的所有符
號;若為其他數(shù)字,則表示配置值的和,如3=1+2,表示同時(shí)啟用第1 項(xiàng)
和第2 項(xiàng)策略。當(dāng)COMPATIBLE_MODE=1 時(shí),PWD_POLICY 的實(shí)際值均
為0
3=1+2 7=4+2+1
通過console 工具來更改參數(shù)
通過函數(shù)sp_set_para_value()
sp_set_para_value(1,‘PWD_POLICY’,3)
COMPATIBLE_MODE 是否兼容其他數(shù)據(jù)庫模式。0:不兼容,1:兼容SQL92
標(biāo)準(zhǔn),2:兼容ORACLE,3:兼容MS SQL SERVER,4:兼容MYSQL
兼容ORACLE 模式sp_set_para_value(2,‘COMPATIBLE_MODE’,2)
創(chuàng)建用戶
案例:創(chuàng)建test 用戶,test 用戶屬于test 表空間,test 用戶擁有創(chuàng)建
表、視圖的權(quán)限。
1)創(chuàng)建test 表空間
create tablespace “TEST” datafile ‘/dm8/data/DAMENG/TEST01.DBF’ size 32 autoextend on next 1 maxsize 500 CACHE = NORMAL;
2)創(chuàng)建用戶
3)授權(quán)
grant CREATE TABLE to “TEST”;
grant CREATE VIEW to “TEST”;
查看被授予的角色和權(quán)限
select grantee,granted_role from sys.dba_role_privs
where grantee=‘TEST’;
select * from sys.dba_sys_privs
where grantee=‘TEST’;
對用戶的操作
更改用戶的默認(rèn)表空間
alter user “TEST” default tablespace “MAIN”;
更改密碼:
Alter user test identified by dameng456;
sysdba 用戶的密碼忘記之后,無法用sysdba 用戶登錄數(shù)據(jù)庫。
查看用戶的狀態(tài)
select username,account_status from dba_users;
鎖定test 用戶
alter user test account lock;
解鎖test 用戶
alter user test account unlock;
撤回權(quán)限
revoke create table from test;
刪除用戶:
Drop user test;
角色
一組權(quán)限的集合,方便權(quán)限管理
角色是可以被授予給角色和用戶
create role “R1”;
grant UPDATE(“MANAGER_ID”) on “DMHR”.“DEPARTMENT” to “R1”;
grant UPDATE(“IDENTITY_CARD”) on “DMHR”.“EMPLOYEE” to “R1” with
grant option;
grant INSERT(“EMPLOYEE_ID”) on “DMHR”.“EMPLOYEE” to “R1”;
grant
INSERT(“DEPARTMENT_ID”),UPDATE(“DEPARTMENT_ID”),REFERENCES("
DEPARTMENT_ID") on “DMHR”.“DEPARTMENT” to “R1”;
模式對象管理
模式就是一組數(shù)據(jù)對象的集合
模式對象:表、視圖、索引、觸發(fā)器、包、序列、存儲過程、同義詞
等
模式與用戶的關(guān)系:
創(chuàng)建用戶會自動創(chuàng)建一個(gè)與用戶名同名的模式,一個(gè)用戶可以對應(yīng)多
個(gè)模式。
表
用戶表:自己創(chuàng)建的表,存放的是真實(shí)的用戶數(shù)據(jù)
系統(tǒng)表:數(shù)據(jù)庫自己創(chuàng)建的表,里面存放數(shù)據(jù)庫關(guān)鍵性的信息
DM 支持表的類型:
索引組織表、堆表、外部表、分區(qū)表
DM 默認(rèn)表的類型是索引組織表,ORACLE 默認(rèn)表的類型是堆表
規(guī)劃表:
1)命名:以字母開頭,a-z,0-9,$#_
2)數(shù)據(jù)類型:int,number,date,char,varchar,clob,blob
3)存儲位置:表空間,沒有指定表空間,就存放在用戶默認(rèn)表空間
中。
4)約束類型:主鍵約束、外鍵約束、非空約束、唯一約束、檢查約
束。
非空約束:
create table test1(id char(10) not null);
insert into test1 values (null);
DM 數(shù)據(jù)庫執(zhí)行sql 腳本:
vi /home/dmdba/test1.sql
insert into test1 values (1);
insert into test1 values (2);
insert into test1 values (3);
commit;
SQL> start /home/dmdba/test1.sql
唯一約束:創(chuàng)建唯一約束,會創(chuàng)建一個(gè)唯一索引,會忽視空值,NULL 不等于0
SQL> create table test2(id int unique,name varchar(25));
SQL> insert into test2 values(1,‘1111’);
SQL> insert into test2 values(null,‘1111’);
SQL> insert into test2 values(null,‘1111’);
SQL> insert into test2 values(1,‘1111’);
insert into test2 values(1,‘1111’);
已用時(shí)間: 00:00:02.341. 執(zhí)行號:0.
SQL> commit;
主鍵約束:非空+唯一,一個(gè)表只能有一個(gè)主鍵,設(shè)計(jì)主鍵盡量的避
開業(yè)務(wù)邏輯的列
SQL> create table test3(id int primary key);
外鍵約束:
SQL> create table test4 (id int foreign key references test3(id));
SQL> drop table test3;
drop table test3;
第1 行附近出現(xiàn)錯(cuò)誤[-2639]:試圖刪除被依賴對象[TEST3].
SQL> drop table test4;
已用時(shí)間: 127.084(毫秒). 執(zhí)行號:781.
SQL> drop table test3;
檢查約束
SQL> create table test5(id int check(id>=5));
操作已執(zhí)行
已用時(shí)間: 58.001(毫秒). 執(zhí)行號:783.
SQL> insert into test5 values(1);
insert into test5 values(1);
[-6604]:違反CHECK 約束[CONS134218846].
SQL> insert into test5 values(5);
SQL> commit;
管理表:
重命名表:
Alter table test1 rename to test6;
增加列:
alter table “TEST1”.“TEST6” add column(“NAME” VARCHAR(30));
刪除列:
Alter table test6 drop column name;
查看約束:
select constraint_name,table_name,status from user_constraints;
啟用約束
alter table test2 enable constraint CONS134218843 ;
禁用約束
alter table test2 disable constraint CONS134218843 ;
刪除表:
Drop table test5;
作業(yè):
創(chuàng)建表test,
所屬表空間為test,表的信息如下:
Id int 主鍵,Name varchar(30) not null,
Address varchar(60),
Phone_number number (20)
更新:update (表名) set 列名=() where ();
刪除:delete from () where ();
視圖
視圖:就是一張?zhí)摂M表,一個(gè)查詢語句。
DM 視圖:簡單視圖、復(fù)制視圖、物化視圖
創(chuàng)建視圖語法: create or replace view () as ***接查詢語句
Create view () as
創(chuàng)建簡單的視圖:
create view test1.emp_v as
select employee_id,employee_name,salary,department_id from
dmhr.employee where department_id=1005;
查詢視圖:
通過manager 工具
也可以查看視圖all_views
刪除視圖:
Drop view emp_v;
索引
索引作用:加快查詢,少量的數(shù)據(jù)更新,延遲插入,數(shù)據(jù)庫會自動維護(hù)索引,索引會占用存儲空間。
達(dá)夢支持的索引:btree 索引,位圖索引,函數(shù)索引
創(chuàng)建索引的基本要求:
經(jīng)常查詢的列
Where 條件中出現(xiàn)的列
連接列
返回少量或部分的數(shù)據(jù)
不適合建立索引:
1、返回大量的數(shù)據(jù)
2、列上有大量的重復(fù)數(shù)據(jù)
3、列上有大量的null
創(chuàng)建索引
CREATE INDEX “ind_employee_name” ON
“TEST1”.“TEST_EMP”(“EMPLOYEE_NAME” ASC) STORAGE(ON “TEST”,
CLUSTERBTR) ;
查看索引信息:
select * from user_indexes;
查看sql 執(zhí)行計(jì)劃
SQL> explain select * from test_emp where employee_name=‘a(chǎn)aa’;
更新統(tǒng)計(jì)信息
begin
dbms_stats.gather_table_stats(‘TEST1’,’TEST_EMP’);
end;
/
維護(hù)索引:
重建索引:提升數(shù)據(jù)庫的性能
Alter index ind_employee_name rebuild;
刪除索引
drop index “TEST1”.“ind_employee_name”;
注意:不要在業(yè)務(wù)期間,執(zhí)行創(chuàng)建、刪除、重建索引,搜集統(tǒng)計(jì)信息。
達(dá)夢不會自動搜集統(tǒng)計(jì)信息,可以配置定時(shí)作業(yè)搜集。
備份還原
備份就是數(shù)據(jù)庫在某個(gè)一個(gè)時(shí)間點(diǎn)的副本
數(shù)據(jù)庫備份的目的:
為了防止天災(zāi)人禍(地震、火災(zāi)、人為誤操作,硬件故障等)
備份主要有:物理備份和邏輯備份
物理備份主要備份的是使用有效的數(shù)據(jù)頁,邏輯備份主要是備份的數(shù)
據(jù)庫對象。
物理備份:分為聯(lián)機(jī)備份和脫機(jī)備份;完全備份和增量備份。
完全備份:備份指定的數(shù)據(jù)庫或者表空間的全部數(shù)據(jù)。
增量備份:是指在一次全備或增備后,以后每次的備份只需要備份與
前一次相比增加或者被修改的數(shù)據(jù)頁。
備份的介質(zhì):磁盤、磁帶
物理備份
冷備:不需要開啟歸檔,針對整庫做備份
需要開啟dmap 服務(wù),需要關(guān)閉數(shù)據(jù)庫
[dmdba@localhost bin]$ ./DmAPService status
DmAPService (pid 14437) is running.
console 工具備份
DmServiceDMSERVER stop
/dm8/data/DAMENG/dm.ini
/dm8/data/DAMENG/backup
用dmrman 工具備份只支持冷備
cd /dm8/bin
./dmrman
RMAN> backup database ‘/dm8/data/DAMENG/dm.ini’ backupset
‘/dm8/backup’;
檢查備份集
RMAN> check backupset ‘/dm8/backup’;
熱備:
需要開啟歸檔,數(shù)據(jù)庫需要聯(lián)機(jī)
可以備份數(shù)據(jù)庫、表空間、表、歸檔日志文件
查看數(shù)據(jù)庫歸檔模式:
SQL> select arch_mode from v$database;
利用manager 工具做熱備
整庫備份
增量備份:
Disql 工具:
整庫備份:
backup database full to “full02” backupset ‘/dm8/backup/rb’;
增量備份:
backup database increment base on backupset ‘/dm8/backup/rb’ to
“DB_DAMENG_INCRE_2020_09_09_15_43_36” backupset
‘DB_DAMENG_INCRE_2020_09_09_15_43_36’;
管理工具中沒有發(fā)現(xiàn)備份:
手動指定工作目錄
表空間備份:
backup tablespace “DMHR” full to
“TS_DMHR_FULL_2020_09_09_15_47_26” backupset
‘TS_DMHR_FULL_2020_09_09_15_47_26’;
表備份:
backup table “DMHR”.“EMPLOYEE” to
“TAB_DMHR_EMPLOYEE_2020_09_09_15_50_23” backupset
‘TAB_DMHR_EMPLOYEE_2020_09_09_15_50_23’;
歸檔日志備份:
backup archivelog all to “ARCH_2020_09_09_15_51_32” backupset
‘ARCH_2020_09_09_15_51_32’;
物理還原:
檢查備份集
整庫還原:
restore database ‘/dm8/data/DAMENG/dm.ini’ from backupset
‘/dm8/backup’;
recover database ‘/dm8/data/DAMENG/dm.ini’ with archivedir
‘/dm8/arch’;
recover database ‘/dm8/data/DAMENG/dm.ini’ update db_magic;
表空間還原
表空間只能在聯(lián)機(jī)模式下進(jìn)行備份,脫機(jī)模式進(jìn)行還原
restore database ‘/dm8/data/DAMENG/dm.ini’ tablespace DMHR from
backupset ‘/dm8/backup’;
recover database ‘/dm8/data/DAMENG/dm.ini’ tablespace DMHR;
邏輯備份
Dexp/dimp
庫級別
用戶
模式
表
/dm8/bin
./dexp help
邏輯導(dǎo)出:
全庫導(dǎo)出:
[dmdba@localhost bin]$ ./dexp sysdba/dameng123 file=full.dmp log=full.log directory=/dm8/backup full=y
[dmdba@localhost bin]$ ./dimp sysdba/dameng123 file=full.dmp log=full_imp.log directory=/dm8/backup full=y
用戶導(dǎo)出:
[dmdba@localhost bin]$ ./dexp sysdba/dameng123 file=test1.dmp log=test1.log directory=/dm8/backup owner=test1
導(dǎo)出表:
[dmdba@localhost bin]$ ./dexp test1/dameng123 file=test_emp.dmp directory=/dm8/backup tables=test_emp
作業(yè)
新建作業(yè)1,每周三,每周日22:00 做全備
1.manager中創(chuàng)建代理環(huán)境
2.新建作業(yè)
ddl語句:
call SP_CREATE_JOB(‘job1’,1,0,’’,0,0,’’,0,’’);
call SP_JOB_CONFIG_START(‘job1’);
call SP_ADD_JOB_STEP(‘job1’, ‘b1’, 5, ‘01000/dm8/bak’, 1, 2, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE(‘job1’, ‘h1’, 1, 2, 1, 8, 0, ‘22:00:00’, NULL, ‘2020-09-14 06:21:42’, NULL, ‘’);
call SP_JOB_CONFIG_COMMIT(‘job1’);
新建作業(yè)2,每周一、二、四、五、六22:00 做增備
ddl語句:
call SP_CREATE_JOB(‘job2’,1,0,’’,0,0,’’,0,’’);
call SP_JOB_CONFIG_START(‘job2’);
call SP_ADD_JOB_STEP(‘job2’, ‘b2’, 5, ‘11000/dm8/backup|/dm8/backup’, 1, 2, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE(‘job2’, ‘h2’, 1, 2, 1, 118, 0, ‘22:00:00’, NULL, ‘2020-09-14 06:26:17’, NULL, ‘’);
call SP_JOB_CONFIG_COMMIT(‘job2’);
DM8 開發(fā)
JDBC:
把驅(qū)動放到 Eclipse Standard/SDK ,對應(yīng)的測試程序的 lib 目錄
檢查 JAVA build path,如未發(fā)現(xiàn)驅(qū)動,要增加到 lib 庫中。
設(shè)置連接方式:
private static String url =
“jdbc:dm://192.168.10.65:5236”;
oracle配置的時(shí)候要帶實(shí)例名
設(shè)置用戶名:
private static String username = “SYSDBA”;
設(shè)置密碼:
private static String password = “SYSDBA”;
Linux 環(huán)境配置odbc
用root 配置
Linux:rpm 包安裝
[root@localhost Packages]# rpm -qa|grep unixODBC
unixODBC-devel
安裝:[root@localhost Packages]# rpm -ivh unixODBC-2.3.1-
10.el7.x86_64.rpm
[root@localhost Packages]# rpm -ivh unixODBC-devel-2.3.1-
10.el7.x86_64.rpm
卸載:[root@localhost etc]# rpm -e unixODBC-devel
[root@localhost etc]# rpm -e unixODBC
源碼安裝:條件安裝 gcc
[root@localhost home]# tar -xvf unixODBC-2.3.0.tar.gz
[root@localhost home]# cd unixODBC-2.3.0/
[root@localhost unixODBC-2.3.0]# ./configure
[root@localhost unixODBC-2.3.0]# make
[root@localhost unixODBC-2.3.0]# make install
[root@localhost unixODBC-2.3.0]# odbcinst -j
配置/usr/local/etc/odbc.ini /usr/local/etc/odbcinst.ini
vi /usr/local/etc/odbc.ini
[dm8]
Description = DM ODBC DSND
Driver = DM8 ODBC DRIVER
SERVER = localhost
UID = SYSDBA
PWD = dameng123
TCP_PORT = 5236
vi /usr/local/etc/odbcinst.ini
[DM8 ODBC DRIVER]
Description = ODBC DRIVER FOR DM8
DRIVER = /dm8/bin/libdodbc.so
修改文件權(quán)限:
chmod 775 /usr/local/etc/odbc.ini
chmod 775 /usr/local/etc/odbcinst.ini
測試連接
用dmdba 賬戶
isql dm8
總結(jié)
以上是生活随笔為你收集整理的达梦8 DCA认证笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PS工具的导入与安装
- 下一篇: 服务器安装配置elasticsearch