達夢資料庫必知必會-DCA篇
一:安裝 二:表空間管理 三:重做日誌管理 四:使用者、模式管理 五:物件管理 六:歸檔管理 七:備份管理 八:引數管理 九:作業管理 十:ODBC 十一:解除安裝
一:安裝
https://eco.dameng.com/document/dm/zh-cn/pm/install-uninstall.html
https://eco.dameng.com/document/dm/zh-cn/ops/before-installation.html
1.1 安裝前配置
安裝前環境檢查
1.1.1 作業系統核心需要在2.6 以上
cat /etc/os-release
cat /proc/version
uname -a
uname -r
1.1.2 glibc 需要在 2.3 以上
ldd --version
rpm -qa|grep glibc
1.1.3 檢查 gcc 是否安裝
安裝odbc 的時候,需要 gcc 包依賴,沒有安裝的話需要進行安裝
gcc --version
rpm -qa|grep gcc
1.1.4 檢查 磁碟容量
至少需要20G ,推薦給 25G 以上
1.1.5 檢查 /tmp 空間
如果tmp 容量小於 1G ,使用以下命令擴容
# 使用 root 使用者執行
mount -o remount,size=2G /tmp
1.1.6 檢查 並關閉 防火牆
systemctl status firewalld.service
systemctl list-unit-files |grep -i firewall
##systemctl stop firewalld.service
##systemctl disable firewalld.service
1.1.7 檢查 並關閉 selinux
cat /etc/selinux/config
###getenforce
###setenforce 0
1.1.6 建立達夢資料庫Linux 組和使用者
groupadd dinstall
useradd -g dinstall dmdba
### 指定組號和使用者號 ###
###grouadd -g 組號 dinstall
###useradd -g 組號 -d /home/dm -u 使用者號 dmdba
### useradd -u 12345 -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
配置使用者密碼
passwd dmdba
1.1.7 建立達夢資料庫軟體安裝根目錄, 並授權
mkdir -p /dm8
chown -R dmdba.dinstall /dm8
1.1.8 設定最大可開啟檔案數
# 檢視最大可開啟檔案數
ulimit -a
臨時設定(當前會話生效)
ulimit -n 65536
永久設定
在/etc/security/ 目錄下的 limits.conf 檔案下新增如下內容 :
cp /etc/security/limits.conf /etc/security/limits.conf_20221017bak
vi /etc/security/limits.conf
dmdba soft nofile 65536
dmdba hard nofile 65536
1.1.9 配置使用者環境變數
編輯.bash_profile ,在原檔案尾部,新增以下條目
root 使用者執行,檢查當前 DISPLAY 值,並將結果寫入到 dmdba 使用者 .bash_profile 檔案。
echo $DISPLAY
su - dmdba
vi /home/dmdba/.bash_profile
export DISPLAY=:1 0 .0
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/dm8/bin"
export DM_HOME="/dm8"
export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool
生效dmdba 使用者登陸配置檔案
source .bash_profile
1.1.10 裝載安裝介質
cd /soft/dm/
ls -lrth *.iso
### 安裝包名稱可能不同 ###
在mnt 下建立 dm 目錄
mkdir /mnt/dm
掛載映象 mount / 映象地址 / 掛載的目標路徑
#mount /opt/dm8_20210818_x86_rh6_64_ent_8.4.2.18_pack14.iso /mnt/dm
mount -t iso9660 -o loop dm8_20220720_x86_rh7_64_ent_8.1.2.114_pack11.iso /mnt
1.2 圖形化安裝
1.2.1 配置圖形啟動
登入 root 使用者,啟用圖形化介面
echo $DISPLAY
xhost +
su - dmdba
[dmdba@host02 ~]$ cat .bash_profile |grep DIS
export DISPLAY=:10.0
呼叫安裝 GUI 介面
cd /mnt
./DMInstall.bin
注意:可能會碰到以下問題,提示說 tmp 檔案過小,安裝前需要檢查 /tmp 空間
如果之前安裝的沒有解除安裝乾淨,會出現下面提示
也有可能是因為 /etc/dm_svc.conf 檔案沒有刪除導致的
[root@host02 ~]# cat /etc/dm_svc.conf
TIME_ZONE=(480)
[root@host02 ~]# rm -rf /etc/dm_svc.conf
預設安裝介面是英文的
[dmdba@host02 dm]$ echo $LANG
en_US.UTF-8
[dmdba@host02 dm]$ ./DMInstall.bin
時區可以調整,但是語言無法調整
自動將安裝檔案解壓到 /tmp 下,需要保證 /tmp 磁碟剩餘空間大於 1.1GB
[root@host02 ~]# du -sh /tmp/DMInstall
1.1G /tmp/DMInstall
1.2.2 安裝資料庫軟體
如果需要中文安裝介面,需要先配置 LANG 環境變數
[dmdba@host02 dm]$ echo $LANG
en_US.UTF-8
[dmdba@host02 dm]$ export.UTF-8
[dmdba@host02 dm]$ ./DMInstall.bin
解壓安裝程式 ...
[root@host02 ~]# cat /dm8/script/root/root_installer.sh
#!/bin/sh
#run by root
RUID=`/usr/bin/id|awk -F\( '{print $1}'|awk -F\= '{print $2}'`
if [ ${RUID} != "0" ]
then
echo " 必須以 root 身份執行此指令碼 !"
exit 1
fi
echo " 移動 /dm8/bin/dm_svc.conf 到 /etc 目錄 "
mv "/dm8/bin/dm_svc.conf" /etc/dm_svc.conf
echo " 修改伺服器許可權 "
chmod 6755 "/dm8/bin/dminit"
chmod 6755 "/dm8/bin/dmserver"
chown 0:0 "/dm8/bin/dmcss"
chmod 6755 "/dm8/bin/dmcss"
echo " 建立 DmAPService 服務 "
"/dm8/script/root/dm_service_installer.sh" -s "/dm8/bin/DmAPService"
echo " 啟動 DmAPService 服務 "
systemctl start DmAPService.service
[root@host02 ~]# sh /dm8/script/root/root_installer.sh
移動 /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.2.3 初始資料庫
1.2.4 執行指令碼,啟動資料庫
根據提示執行指令碼
mv /dm8/bin/DmServiceCHEN.service /usr/lib/systemd/system/DmServiceCHEN.service systemctl enable DmServiceCHEN.service systemctl start DmServiceCHEN.service
1.3 命令列安裝
1.3.1 安裝資料庫軟體
cd /mnt
./DMInstall.bin -i
手動輸入部分如下:
登入root 使用者執行指令碼
/dm8/script/root/root_installer.sh
1.3.2 初始化 資料庫
su - dmdba
dminit help
安裝目錄、例項名、資料名、埠號、密碼、字符集、資料檔案等路徑、簇大小、頁大小、日誌檔案大小、
dminit path=/dm8/data DB_NAME=CHEN instance_name=CJC port_num=5238 SYSDBA_PWD=Dameng123
1.3.3 註冊服務
su - root cd /dm8/script/root/ ./dm_service_installer.sh help ./dm_service_installer.sh -t dmserver -p CJC -dm_ini /dm8/data/CHEN/dm.ini
# 取消註冊服務
#./dm_service_uninstaller.sh -n 服務名稱
#./dm_service_uninstaller.sh -n DmServiceCJC
1.3.4 啟動服務
systemctl list-unit-files |grep DmServiceCJC.service systemctl status DmServiceCJC.service systemctl start DmServiceCJC.service
登入資料庫
disql SYSDBA/Dameng123:5238
disql SYSDBA/Dameng123@127.0.0.1:5238
驗證資料庫建立成功
檢視Linux 後臺程式:
ps -ef|grep -i dmserver|grep -v grep
1.3.5 配置連線字串
cp /etc/dm_svc.conf /etc/dm_svc.conf_20221023bak vi /etc/dm_svc.conf TIME_ZONE=(480) LANGUAGE=(cn) CJCDB=(192.168.80.133:5238) ###新增部分
連線測試:
[dmdba@host02 ~]$ disql SYSDBA/Dameng123@CJCDB
伺服器[192.168.80.133:5238]: 處於普通開啟狀態
登入使用時間 : 4.046(ms)
disql V8
SQL>
二:表空間管理
SYSTEM :系統表空間,存放的是資料字典資訊,包含表定義、檢視定義、使用者許可權等
ROLL :回滾表空間,存放 undo 資訊。 INSERT 、 UPDATE 、 DELETE 都會產生 undo 資訊
MAIN :使用者預設表空間,建立使用者時,沒有指定表空間,則使用 MAIN 表空間
TEMP :臨時表空間,用於存放臨時表資料、索引、大量資料排序等產生的資料
HMAN : HUGE 表(列儲存表)的預設表空間
2.1 表空間管理 - 圖形化操作
2.1.1 開啟 manager 管理工具
[dmdba@host02 tool]$ ./manager
2.1.2 檢視錶空間
2.1.3 建立表空間
對應 DDL 語句
create tablespace "CJCTBS" datafile '/dm8/data/CJC/CJC_TBS_01.dbf' size 32 CACHE = NORMAL;
2.1.4 新增資料檔案
新增
對應 DDL
alter tablespace "CJCTBS" add datafile '/dm8/data/CJC/CJC_TBS_02.dbf' size 35 autoextend on next 10 maxsize 1024;
2.1.5 修改表空間名稱
2.1.6 修改資料檔案屬性
修改資料檔案大小,關閉自動擴充套件
檢視對應的 DDL 語句。
alter tablespace "CJCTBS" resize datafile 'CJC_TBS_01.dbf' to 50; alter tablespace "CJCTBS" datafile 'CJC_TBS_01.dbf' autoextend off;
2.1.7修改資料檔名稱、路徑
對應 DDL 語句
alter tablespace "CJCTBS" offline; alter tablespace "CJCTBS" rename datafile 'CJC_TBS_01a.dbf' to '/dm8/CJC_TBS_01AAA.dbf'; alter tablespace "CJCTBS" online;
2.1.8 TEMP表空間調整
檢查 TEMP 資訊
對應 DDL 語句
create tablespace "TEMP" datafile '/dm8/data/CJC/TEMP.DBF' size 10 autoextend on maxsize 16777215 CACHE = RECYCLE;
圖形工具不支援修改等操作
alter tablespace TEMP add datafile '/dm8/data/CJC/TEMP_02.dbf' size 50 autoextend on next 1 maxsize 100; create tablespace "TEMP2" datafile '/dm8/data/CJC/TEMP.2DBF' size 10 autoextend on maxsize 100 CACHE = RECYCLE;
第1 行附近出現錯誤 [-3438]:RECYCLE 為臨時表空間專用 CACHE.
已用時間: 75.849( 毫秒 ). 執行號 :0.
2.2 表空間管理 - 命令列操作
命令列 登入 :
disql SYSDBA/Dameng123:5238
2.2.1 檢視錶空間名稱
select tablespace_name from dba_tablespaces;
檢視資料檔案路徑
SELECT TABLESPACE_NAME,FILE_NAME FROM DBA_DATA_FILES;
2.2.2 建立表空間
單位MB
資料檔案大小 最小 頁的4096 倍 (32MB) ,最大 ( 頁大小 *2^31)-1
create tablespace CJC datafile '/dm8/data/CHEN/CJC_01.dbf' size 32;
# 建立表空間時必須指定 datafile , size 最小值是 page_size 的 4096 倍, autoextend 指定自增長, maxsize 指定最大值
create tablespace tbs1 datafile '/dm8/data/CHEN/tbs1_01.dbf' size 32 autoextend on next 1 maxsize 100;
# 建立表空間,非自動擴充套件
create tablespace tbs2 datafile '/dm8/data/CHEN/tbs1_02.dbf' size 32 autoextend off;
檢視資料檔案資訊
select tablespace_name,file_name,bytes,AUTOEXTENSIBLE,MAXBYTES from dba_data_files;
2.2.3 增加資料檔案
alter tablespace CJC add datafile '/dm8/data/CHEN/CJC_02.dbf' size 50 autoextend on next 1 maxsize 100;
2.2.4 修改資料檔案路徑
alter tablespace cjc offline; alter tablespace cjc rename datafile '/dm8/data/CHEN/CJC_02.dbf' to '/dm8/CJC_02.dbf'; alter tablespace cjc online; select tablespace_name,file_name,bytes,AUTOEXTENSIBLE,MAXBYTES from dba_data_files where tablespace_name='CJC';
2.2.5 修改資料檔案大小
alter tablespace 表空間名稱 resize datafile ' 資料檔案路徑 ' to 資料檔案大小 ;
修改表空間開啟自動增長,增長步長,最大表空間
alter tablespace 表空間名 datafile ' 資料檔案路徑 ' autoextend on next 增長步長 maxsize 檔案最大值
2.2.6 修改表空間名稱
alter tablespace 修改前表空間名 rename to 修改後表空間名 ;
alter tablespace CJCTBSA rename to CJCTBS;
2.2.7 刪除表空間
drop tablespace CJC;
2.2.8 temp 表空間
查詢temp 表空間引數,達夢資料庫啟動的時候會根據這幾個引數來建立或重建 temp 表空間
select name,value,type from v$parameter where name like 'TEMP%';
TEMP_PATH : temp 表空間的路徑
TEMP_SIZE : temp 表空間的初始值,單位為 MB
TEMP_SPACE_LIMIT : temp 表空間的空間限制, 0 表示不限制
修改temp_size
# 設定 temp 表空間初始值
alter system set 'TEMP_SIZE'=64 spfile;
# 檢視更改是否生效
cat /dm8/data/DAMENG/dm.ini |grep TEMP_SIZE
三:重做日誌管理
3.1 重做日誌管理 - 圖形化操作
3.1.1 開啟 manager 管理工具
[dmdba@host02 tool]$ ./manager
管理伺服器
3.1.2 檢視日誌檔案資訊
3.1.2 調整大小
只能改大不能改小
對應 DDL 語句
alter database resize logfile 'CJC01.log' to 300;
3.1.3 修改路徑及名稱
對應 DDL 語句
alter database rename logfile 'CJC02.log' to '/dm8/CJC02a.log';
修改成 mount
再次修改路徑
啟動資料庫
3.1.4 新增
3.2 重做日誌管理 - 命令列操作
3.2.1 檢視日誌檔案資訊
select group_id,file_id,path,rlog_size from v$rlogfile;
3.2.2 調整大小
由256M 調整都 300M 成功
alter database resize logfile '/dm8/data/CHEN/CHEN01.log' to 300;
### 不支援調小
3.2.3 新增
alter database add logfile '/dm8/data/CHEN/CHEN03.log' size 256;
3.2.4 更改路徑 、重新命名
alter database mount; alter database rename logfile '/dm8/data/CHEN/CHEN03.log' to '/dm8/CHEN003.log'; alter database open;
### 刪除 ( 不支援刪除 )
###alter database drop logfile '/dm8/data/CHEN/CHEN02.log';
###alter database delete logfile '/dm8/data/CHEN/CHEN02.log';
四:使用者、模式管理
4.1 使用者、模式管理 - 圖形化操作
4.1.1 開啟 manager 管理工具
[dmdba@host02 tool]$ ./manager
4.1.2 檢視使用者
4.1.3 建立使用者
管理使用者 --- 新建使用者
4.1.4 新增角色許可權
4.1.5 新增系統許可權
4.1.6 新增物件許可權
4.1.7 資源限制
4.1.8 連線限制
檢視對應 DDL 語句
create user "CJC" identified by "Dameng123" limit session_per_user 10, connect_idle_time 3, failed_login_attemps 5, password_life_time 180, password_reuse_max 100, password_lock_time 2, password_grace_time 10, connect_time 100, cpu_per_session 360000, cpu_per_call 8600, read_per_session 300000 allow_ip "192.168.80.131" allow_datetime "2022-10-22" "00:22:49" to "2023-12-23" "00:22:49" default tablespace "CJCTBS" default index tablespace "CJCTBS"; grant "PUBLIC","VTI" to "CJC"; grant CREATE SCHEMA,CREATE TABLE,CREATE VIEW to "CJC"; grant CREATE ROLE to "CJC" with admin option; grant SELECT,INSERT,DELETE,UPDATE,REFERENCES on "DMHR"."CITY" to "CJC";
4.2.9 角色管理
檢視角色
建立角色
檢視 DDL 語句
create role "CJCR"; grant "RESOURCE" to "CJCR"; grant CREATE USER,ALTER USER,CREATE SCHEMA,CREATE TABLE to "CJCR";
注意:
角色名不能和使用者名稱相同否則會報如下錯誤。
4.2.10 模式管理
檢視模式
建立模式
對應 DDL 語句
CREATE SCHEMA "CHEN" AUTHORIZATION "CJC";
4.2 使用者、模式管理 -命令列操作
建立使用者, 授權(系統,物件,角色)
建立使用者:create user... identified by ... default tablespace ... limit ( 口令管理選項 )
修改使用者口令 : alter user ... identified by
刪除:drop user
授權: grant create table, create index to ... ; grant select on dmhr.employee to ...
許可權回收: revoke ... from ...
檢視已登入會話所有許可權: select * from session_privs;
使用者型別:
SYS :內建使用者,不能直接登陸
SYSDBA :系統管理員,擁有 DBA 角色(除了安全、審計其他都管)
SYSAUDITOR :系統審計管理員
SYSSSO :系統安全管理員
SYSDBO :系統安全操作員(達夢安全版才有)
4.2.1 檢視使用者
select user_id,username,default_tablespace,TEMPORARY_TABLESPACE from dba_users;
4.2.2 建立使用者
create user CJC identified by Dameng123 default tablespace CJC; ###create user CJC identified by Dameng123 limit failed_login_attemps 3, password_lock_time 1, password_grace_time 10 default tablespace "CJC" default index tablespace "CJC";
4.2.3使用者密碼策略
設定密碼的時候,需要查詢下密碼策略是什麼
select * from v$parameter where name = 'PWD_POLICY';
如果想調整密碼策略
使用者口令策略
select * from v$dm_ini where para_name='PWD_POLICY';
修改使用者口令策略
alter system set 'PWD_POLICY'= 15 BOTH;
PWD_POLICY 引數意義:
設定系統預設口令策略。
0 : 無策略;
1 : 禁止與使用者名稱相同;
2 : 口令長度不小於 9 ;
4 : 至少包含一個大寫字母( A-Z );
8 :至少包含一個數字( 0 - 9 );
16 :至少包含一個標點符號(英文輸入法狀態下,除 “ 和空格外的所有符號);
若為其他數字,則表示配置值的和,如 3 = 1+2, 表示 同時啟用第 1 項和第 2 項策略。
調整密碼錯誤次數引數,預設輸錯3 次後鎖定賬號,並且 1 分鐘後自動解鎖
select username,account_status,locak_date from dba_users;
# 將密碼輸錯鎖定次數改為 5 次,鎖定時間為 3 分鐘
alter user 使用者名稱 limit FAILED_LOGIN_ATTEMPS 5,PASSWORD_LOCK_TIME 3;
手動鎖定或解鎖賬號
# 手動解鎖
alter user 使用者名稱 account unlock;
# 手動鎖定
alter user 使用者名稱 account lock;
# 檢視使用者資源限制,例如最大併發數
select * from dba_users a,sysusers b where a.user_id = b.id;
達夢裡建立使用者或表空間 資料檔案等,加雙引號 指大小寫 敏感,不加雙引號,大小寫不敏感。
4.2.4 使用者 授權
新增使用者不授權,預設具有登陸許可權
檢視角色名稱
select role from dba_roles;
檢視使用者擁有角色
select GRANTEE,GRANTED_ROLE,DEFAULT_ROLE from dba_role_privs where GRANTEE='CJC';
檢視使用者有哪些系統許可權
select GRANTEE,PRIVILEGE FROM dba_sys_privs where GRANTEE='CJC';
檢視使用者有哪些物件許可權
select GRANTEE,PRIVILEGE FROM dba_tab_privs where GRANTEE='CJC';
列許可權
select * from dba_col_privs where grantee = '使用者名稱';
授權
grant "PUBLIC","VTI" to "CJC";
角色和許可權對應關係
select PRIVILEGE from dba_sys_privs where GRANTEE='RESOURCE'; select PRIVILEGE from dba_sys_privs where GRANTEE='PUBLIC';
登入使用者
disql CJC/Dameng123:5238
修改密碼
alter user chen identified by "A12345678";
4.2.5 建立角色
角色型別
DBA :系統管理員角色,擁有除稽核、安全外的所有許可權
RESOURCE :具有在當前使用者模式下定義物件的許可權,例如 create table 等
PUBLIC :具有在當前使用者模式下資料操作的許可權,例如 insert table 等
SOI :系統表( SYS 為字首)的訪問許可權
SVI :系統檢視( VSYS 為字首)的檢視許可權
VTI :動態檢視( V 為 前 綴 , 存 在 於 V 為字首,存在於 V 為字首,存在於 Vdynamic_tables 中的檢視)的訪問許可權
角色建立
create role r1;
給角色授權
grant select any table to r1;
將角色授權給使用者
grant r1 to cjc;
系統許可權授權
select distinct PRIVILEGE from dba_sys_privs order by 1; CREAE TABLE/CREATE TABLESPACE/ALTER DATABASE/ALTER TABLESPACE/CREATE USER/CREATE VIEW/CREATE PROCEDURE/CREATE ROLE/CREATE SCHEMA GRANT CREATE TABLESPACE TO CJC;
物件許可權授權
select distinct PRIVILEGE from dba_tab_privs order by 1; ALTER/INSERT/DELETE/UPDATE/EXECUTE/SELECT/REFERENCES/ GRANT DELETE ON SYSDBA.T1 TO CJC; grant select on 模式名.表名 to 使用者名稱; grant update on 模式名.表名 to 使用者名稱; grant delete on 模式名.表名 to 使用者名稱;
級聯授權
GRANT UPDATE ON SYSDBA.T1 TO CJC WITH GRANT OPTION;
revoke create table from dmuser; # 回收
grant create view to dmuser with grant option; # 允許 dmuser 有授權許可權,回收時需加上 cascade
4.2.6 回收許可權
REVOKE CREATE TABLESPACE FROM CJC; REVOKE DELETE ON SYSDBA.T1 FROM CJC; REVOKE UPDATE ON SYSDBA.T1 FROM CJC CASCADE;
4.2.7 刪除角色
DROP ROLE R1;
4.2.8 模式管理
使用者和模式
使用者(USER ):使用者是用來連線資料庫並進行相關操作的。
模式(SCHEMA ):模式是資料庫物件的集合,模式是資料庫的邏輯結構。
建立模式
CREATE SCHEMA CHEN AUTHORIZATION CJC; /
切換模式
set schema CHEN;
檢視使用者和模式
select a.name as username, b.name as schenma from sysobjects a inner join sysobjects b on a.id = b.pid where b.subtype$ is null order by username desc;
conn cjc/Dameng123:5238
檢視模式名稱
select distinct object_name table_schema from all_objects where object_type='SCH';
刪除模式
drop schema CHEN;
查詢當前使用者
select user;
查詢當前模式
select sys_context('USERENV','CURRENT_USER');
動態效能檢視
v$dynamic_tables
資料字典
Sysobjects
五:物件管理
5.1 物件管理 - 圖形化操作
5.1.1 建立表
CJC 模式下新建表
主鍵約束
儲存
對應 DDL 如下:
create table "CJC"."T1" ( "NAME" VARCHAR2(50) not null , "AGE" INT not null , "SAL" CHAR(10) not null ) storage(initial 10, next 2, minextents 1, fillfactor 0, on "CJCTBS") ; comment on table "CJC"."T1" is 'TEST TABLE T1'; alter table "CJC"."T1" add constraint "PK_T1_NAME" primary key("NAME");
檢視
SQL> conn cjc/123456789@192.168.80.131:5238
伺服器[192.168.80.131:5238]: 處於普通開啟狀態
登入使用時間 : 6.387(ms)
SQL> desc t1;
行號 NAME TYPE$ NULLABLE
---------- ---- ----------- --------
1 NAME VARCHAR(50) N
2 AGE INTEGER N
3 SAL CHAR(10) N
已用時間: 656.920( 毫秒 ). 執行號 :54100.
5.1.2 增加列
對應 DDL 語句
alter table "CJC"."T1" add column("C1" DATE not null ); comment on column "CJC"."T1"."C1" is 'XXX';
5.1.3 約束管理
對應 DDL 語句
alter table "CJC"."T1" modify constraint "C_T1_AGE" to check(AGE = 30 );
5.1.4 檢視管理
新建檢視
對應 DDL 語句
CREATE VIEW "CJC"."V_T1" /*檢視的列名, 格式為(<列名>{, <列名>}),此處為可選*/ (v_col1, v_col2) AS /*<查詢說明>*/ SELECT NAME, AGE FROM CJC.T1 /*插入或刪除行是否必須滿足<查詢說明>所指定的條件, 此處為可選*/ WITH CHECK OPTION; comment on view "CJC"."V_T1" is 'TEST ...';
5.1.5 索引管理
新增索引
對應 DDL 語句
create unique index "I_T1_NAME" on "CJC"."T1"("NAME") storage(initial 5,next 2,minextents 2,on "CJCTBS");
5.2 物件管理 -命令列操作
5.2.1 建立表
CREATE TABLE CJC.TEST(ID INT,NAME CHAR(10)); create table dmtest.t_testpid( pid int, pname varchar(10), logtime datetime DEFAULT sysdate, sex bit ) tablespace HRTBS;
從別的表複製
# 只複製表結構(不帶約束資訊)
create table t_emp03 as select * from dmhr.employee where 1=0;
# 複製表結構 + 表資料
create table t_emp01 as select * from dmhr.employee;
create table t_emp02 like dmhr.employee;
5.2.2 增加列
ALTER TABLE CJC.TEST ADD COLUMN(AGE INT);
5.2.3 修改列
ALTER TABLE CJC.TEST MODIFY NAME CHAR(20);
5.2.4 刪除列
ALTER TABLE CJC.TEST DROP COLUMN AGE;
#ALTER TABLE CJC.TEST DROP AGE;
約束型別
NOT NULL :非空約束
UNIQUE :唯一約束,可以為空,簡寫為 UK_ 表名 _ 欄位名
PRIMARY KEY :主鍵約束(唯一約束 + 非空約束),簡寫為 PK_ 表名 _ 欄位名
FOREIGN KEY :外來鍵引用約束,引用的是另一張表(父表)的主鍵或唯一鍵。簡寫為 FK_ 表名 _ 欄位名
CHECK :檢驗約束,使用者校驗資料的準確性,簡寫為 CK_ 表名 _ 欄位名
5.2.5 新增約束
ALTER TABLE CJC.TEST ADD CONSTRAINT TEST_UNI UNIQUE(ID);
# 新增主鍵約束
alter table dmtest.t_testpid add CONSTRAINT pk_testpid_pid PRIMARY key("pid");
# 新增外來鍵約束,注意 REFERENCES 表裡的欄位必須是主鍵或者是新增了唯一索引的欄位
alter table dmtest.t_testchild add CONSTRAINT fk_testchild_pid FOREIGN key("pid") REFERENCES dmtest.t_testpid("pid");
# 新增校驗約束
alter table dmtest.t_testchild add CONSTRAINT ck_testchild_salary CHECK ("salary">=3000);
5.2.6 禁用約束
ALTER TABLE CJC.TEST DISABLE CONSTRAINT TEST_UNI;
5.2.7 啟用約束
ALTER TABLE CJC.TEST ENABLE CONSTRAINT TEST_UNI;
刪除約束
ALTER TABLE CJC.TEST DROP CONSTRAINT TEST_UNI;
5.2.8 檢視管理
建立檢視
CREATE VIEW CJC.V1 AS SELECT * FROM CJC.T1;
修改檢視
CREATE OR REPLACE VIEW CJC.V1
AS
SELECT ID FROM CJC.T1;
刪除檢視
DROP VIEW CJC.V1;
5.2.9 索引管理
建立索引
CREATE INDEX T1_IND ON CJC.T1(ID) TABLESPACE CJC;
重建索引
ALTER INDEX CJC.T1_IND REBUILD;
刪除索引
DROP INDEX CJC.T1_IND;
刪除表
DROP TABLE CJC.TEST;
執行指令碼,建立DMHR 使用者資料
https://eco.dameng.com/document/dm/zh-cn/sql-dev/index
GBK 字符集請下載 CREATE_DMHR(GBK).sh ,指令碼如下所示:
#!/bin/bash eg_dir=$DM_HOME/samples/instance_script/dmhr/GBK disql sysdba/SYSDBA:10236 <<EOF START ${eg_dir}/CREATESCHEMA.sql START ${eg_dir}/REGION.sql START ${eg_dir}/CITY.sql START ${eg_dir}/LOCATION.sql START ${eg_dir}/JOB.sql START ${eg_dir}/JOB_HISTORY.sql START ${eg_dir}/DEPARTMENT.sql START ${eg_dir}/EMPLOYEE.sql exit EOF
UTF-8 字符集請下載 CREATE_DMHR(UTF-8).sh ,指令碼如下所示:
#!/bin/bash eg_dir=$DM_HOME/samples/instance_script/dmhr/UTF-8 disql sysdba/SYSDBA:5236 <<EOF create tablespace dmhr datafile 'dmhr.dbf' size 128; create user dmhr identified by 123456789 default tablespace dmhr; grant dba to dmhr; exit; EOF disql dmhr/123456789:5236 <<EOF START ${eg_dir}/REGION.sql START ${eg_dir}/CITY.sql START ${eg_dir}/LOCATION.sql START ${eg_dir}/JOB.sql START ${eg_dir}/JOB_HISTORY.sql START ${eg_dir}/DEPARTMENT.sql START ${eg_dir}/EMPLOYEE.sql exit; EOF
六:歸檔管理
6.1 歸檔管理 - 圖形化操作
管理伺服器
6.1.1 資料庫改成 配置
6.1.2 配置歸檔
歸檔路徑,確定
[dmdba@host02 ~]$ mkdir /dm8/arch
對應 DDL 語句
alter database archivelog; alter database add archivelog 'DEST=/dm8/arch, TYPE=LOCAL, FILE_SIZE=64, SPACE_LIMIT=30720';
6.1.3 資料庫改成 開啟
6.2 歸檔管理 - 命令列操作
https://mp.weixin.qq.com/s/6j3-1FBJslwUaWnCwRmGVw
命令列方式
開啟歸檔
https://eco.dameng.com/document/dm/zh-cn/ops/physical-backup.html
6.2.1 建立歸檔路徑
mkdir /dm8/arch
6.2.2 修改資料庫為 Mount 狀態
alter DATABASE MOUNT;
6.2.3 配置本地歸檔
ALTER DATABASE ADD ARCHIVELOG 'DEST = /dm8/arch, TYPE = local,FILE_SIZE = 1024, SPACE_LIMIT = 20480';
6.2.4開啟歸檔模式
ALTER DATABASE ARCHIVELOG;
6.2.5 修改資料庫為 Open 狀態
ALTER DATABASE OPEN;
檢查,自動生成了 dmarch.ini 檔案
[dmdba@host02 DAMENG]$ pwd /dm8/data/DAMENG [dmdba@host02 DAMENG]$ ls -l dmarch.ini -rw-r--r-- 1 dmdba dinstall 269 Sep 23 23:14 dmarch.ini cat dmarch.ini
配置項 配置含義
[ARCH_NAME] REDO 日誌歸檔名 ARCH_TYPE REDO 日誌歸檔型別,LOCAL 表示本地歸檔,REMOTE 表示遠端 ARCH_DEST REDO 日誌歸檔目標,LOCAL 對應歸檔檔案存放路徑;REMOTE 對應遠端目標節點例項名 ARCH_FILE_SIZE 單個 REDO 日誌歸檔檔案大小,取值範圍(64 MB~2048 MB),預設 1024 MB,即 1 GB ARCH_SPACE_LIMIT REDO 日誌歸檔空間限制,當所有本地歸檔檔案達到限制值時,系統自動刪除最老的歸檔檔案。0 表示無空間限制,取值範圍(1024 MB~4294967294 MB),預設為 0 ARCH_INCOMING_PATH僅 REMOTE 歸檔有效,對應遠端歸檔存放在本節點的實際路徑
# 查詢歸檔狀態
select arch_mode from v$database;
# 檢視歸檔檔案
select * from SYS."V$ARCH_FILE";
# 查詢歸檔配置
select * from v$dm_arch_ini;
6.2.6 關閉歸檔
alter database mount;
# 關閉歸檔
alter database noarchivelog;
# 刪除歸檔檔案
alter database delete archivelog 'type=local,dest=/dm8/arch';
# 將資料庫狀態設定為 open
alter database open;
# 查詢歸檔狀態
select arch_mode from v$database;
七:備份恢復
7.1 備份恢復 - 圖形化操作
https://eco.dameng.com/document/dm/zh-cn/pm/backup-restore-combat.html
manager
7.1.1 資料庫聯機備份
對應 DDL
backup database full to "DB_CJC_FULL_2022_10_22_19_40_34" backupset 'DB_CJC_FULL_2022_10_22_19_40_34' maxsize 200;
[dmdba@host02 DB_CJC_FULL_2022_10_22_19_40_34]$ pwd /dm8/data/CJC/bak/DB_CJC_FULL_2022_10_22_19_40_34 [dmdba@host02 DB_CJC_FULL_2022_10_22_19_40_34]$ ll -rth total 17M -rw-r--r-- 1 dmdba dinstall 17M Oct 22 19:43 DB_CJC_FULL_2022_10_22_19_40_34.bak -rw-r--r-- 1 dmdba dinstall 6.5K Oct 22 19:43 DB_CJC_FULL_2022_10_22_19_40_34_1.bak -rw-r--r-- 1 dmdba dinstall 97K Oct 22 19:43 DB_CJC_FULL_2022_10_22_19_40_34.meta
7.1.2 表聯機備份
DDL 語句
backup table "CJC"."T1" to "TAB_CJC_T1_2022_10_22_19_46_41" backupset 'TAB_CJC_T1_2022_10_22_19_46_41' backupinfo 'CJC_T1_BAK_TEST' maxsize 100;
7.1.3 表空間備份
對應 DDL 語句:
backup tablespace "CJCTBS" full to "TS_CJCTBS_FULL_2022_10_22_20_01_40" backupset 'TS_CJCTBS_FULL_2022_10_22_20_01_40';
7.1.4 歸檔聯機備份
對應 DDL
backup archivelog all to "ARCH_2022_10_22_20_13_25" backupset 'ARCH_2022_10_22_20_13_25';
對應 DDL
backup archivelog time between '2022-10-22 20:03:17' and '2022-10-23 20:03:17' to "ARCH_2022_10_22_20_03_17" backupset 'ARCH_2022_10_22_20_03_17';
7.1.5 備份管理
選擇其中一個備份,右鍵屬性
7.1.6 備份校驗
7.1.7 表聯機還原
資料還原
庫備份和表空間備份不支援聯機還原,只有表備份支援聯機還原。表還原過程中表空間中其他的表還可以正常操作。
點選表備份集節點右鍵選單-> 備份還原,可以開啟表備份還原對話方塊,首頁顯示的是常規選項頁面,如圖 3.11 所示:
檢視當前資料:
SQL> select * from cjc.t1;
行號 NAME AGE SAL C1
---------- ---- ----------- ---------- ----------
1 a 35 20000 2022-10-22
已用時間: 3.623( 毫秒 ). 執行號 :1000.
刪除資料
SQL> truncate table cjc.t1;
操作已執行
已用時間: 46.228( 毫秒 ). 執行號 :1003.
表還原
DDL 語句:
restore table "CJC"."T1" struct with index with constraint from backupset '/dm8/data/CJC/bak/TAB_CJC_T1_2022_10_22_19_46_41' device type disk; restore table "CJC"."T1" with index with constraint from backupset '/dm8/data/CJC/bak/TAB_CJC_T1_2022_10_22_19_46_41' device type disk;
檢查資料:
SQL> select * from cjc.t1;
行號 NAME AGE SAL C1
---------- ---- ----------- ---------- ----------
1 a 35 20000 2022-10-22
已用時間: 3.346( 毫秒 ). 執行號 :1300.
7.1.8 資料庫離線還原
透過聯機備份,進行離線還原
console
SQL> truncate table cjc.t1;
操作已執行
已用時間 : 198.234( 毫秒 ). 執行號 :401.
全庫離線還原
先停庫
SQL> shutdown immediate;
操作已執行
已用時間: 1.412( 毫秒 ). 執行號 :0.
啟動資料庫
[root@host02 ~]# systemctl start DmServiceCHEN.service
Job for DmServiceCHEN.service failed because the control process exited with error code. See "systemctl status DmServiceCHEN.service" and "journalctl -xe" for details.
檢視錯誤日誌
[dmdba@host02 log]$ vi DmServiceCHEN.log
file dm.key not found, use default license! version info: develop Use normal os_malloc instead of HugeTLB Use normal os_malloc instead of HugeTLB DM Database Server x64 V8 1-1-144-20.11.06-129436-ENT startup... Database mode = 0, oguid = 0 License will expire on 2022-11-06 Instance CHEN startup failed, execute 'recover database ... update db_magic' in dmrman. ^[]0;DMSERVER /dm8/data/CJC/dm.ini : 5238 ^G
恢復
更新 DB_Magic
啟動資料庫
[root@host02 ~]# systemctl start DmServiceCHEN.service
驗證資料
[dmdba@host02 log]$ disql SYSDBA/Dameng123:5238
伺服器[LOCALHOST:5238]: 處於普通開啟狀態
登入使用時間 : 6.138(ms)
disql V8
SQL> select * from cjc.t1;
行號 NAME AGE SAL C1
---------- ---- ----------- ---------- ----------
1 a 35 20000 2022-10-22
已用時間: 5.034( 毫秒 ). 執行號 :400.
7.1.9 資料庫離線備份
開啟 console 工具
新建備份
停庫
SQL> shutdown immediate;
操作已執行
已用時間: 0.747( 毫秒 ). 執行號 :0.
備份
7.1.10 離線還原
透過離線備份進行離線還原
恢復
更新
啟庫驗證
[root@host02 ~]# systemctl start DmServiceCHEN.service
[dmdba@host02 ~]$ disql SYSDBA/Dameng123:5238
伺服器[LOCALHOST:5238]: 處於普通開啟狀態
登入使用時間 : 4.430(ms)
disql V8
SQL> select * from cjc.t1;
行號 NAME AGE SAL C1
---------- ---- ----------- ---------- ----------
1 a 35 20000 2022-10-22
已用時間: 5.949( 毫秒 ). 執行號 :400.
7.2 備份恢復 - 命令列操作
7.2.1 啟用 DMAP 服務
如果選擇使用 DMAP 輔助程式,執行備份還原之前就必須啟動 DMAP 服務。安裝 DM 資料庫以後, DMAP 服務會自動啟動。
啟動 DMAP ,手動啟動 DMAP ,有兩種途徑
一是啟動 DM 服務檢視器中的 DmAPService 。
二是手動啟動 DMAP 執行碼, DMAP 執行碼位於 DM 安裝目錄的 bin 子目錄下。
除此之外,Linux 下,還可以呼叫 bin 目錄下的 DmAPService 指令碼。
find /dm8 -name DmAPService /dm8/bin/service_template/DmAPService cd /dm8/bin/service_template/ ./DmAPService start ./DmAPService status
7.2.2 離線備份
啟動 DMRMAN
DMRMAN (DM RECOVERY MANEGER) 是 DM 的離線備份還原管理工具,由它來統一負責庫級離線備份、離線還原、離線恢復等相關操作,該工具支援命令列指定引數方式和控制檯互動方式執行,降低了使用者的操作難度。
備份資料庫
在 DMRMAN 下執行以下命令:
BACKUP DATABASE '<INI 文 件 路 徑 >' [[[FULL][DDL_CLONE]] |INCREMENT [CUMULATIVE][WITH BACKUPDIR '<基備份搜尋目錄>'{,'<基備份搜尋目錄>'}]|[BASE ON BACKUPSET '<基備份集目錄>']] [TO <備份名>] [BACKUPSET '<備份集目錄>'][DEVICE TYPE <介質型別>[PARMS '<介質引數>'] [BACKUPINFO '<備份描述>'] [MAXPIECESIZE <備份片限制大小>] [IDENTIFIED BY <加密密碼>[WITH ENCRYPTION<TYPE>][ENCRYPT WITH <加密演算法>]] [COMPRESSED [LEVEL <壓縮級別>]][WITHOUT LOG][TASK THREAD <執行緒數>] [PARALLEL [<並行數>][READ SIZE <拆分塊大小>]];
7.2.2.1 全庫備份
在 DMRMAN 下執行以下命令:
停庫
SQL> shutdown immediate;
備份
BACKUP DATABASE '/dm8/data/DAMENG/dm.ini' FULL BACKUPSET '/dm8/bak/db_full_bak_01';
7.2.2.2 增量備份
BACKUP DATABASE '/dm8/data/DAMENG/dm.ini' INCREMENT WITH BACKUPDIR '/dm8/bak' BACKUPSET '/dm8/bak/rman_db_increment_bak_02';
校驗特定的備份集,在
DMRMAN
下執行以下命令:
RMAN> CHECK BACKUPSET '/dm8/bak/rman_db_full_bak_01';
7.2.2.3 備份集刪除
RMAN> REMOVE BACKUPSET '/dm8/bak/db_bak_for_remove_01';
7.2.3 離線還原
RESTORE DATABASE <restore_type>[WITH CHECK] FROM BACKUPSET '<備份集目錄>' [DEVICE TYPE DISK|TAPE[PARMS '<介質引數>']] [IDENTIFIED BY <密碼> [ENCRYPT WITH <加密演算法>]] [WITH BACKUPDIR '<基備份集搜尋目錄>'{,'<基備份集搜尋目錄>'}] [MAPPED FILE '<對映檔案>'][TASK THREAD <任務執行緒數>] [RENAME TO '<資料庫名>']; <restore_type>::=<type1>|<type2> <type1>::='<INI 檔案路徑>'[REUSE DMINI][OVERWRITE] <type2>::= TO '<system_dbf 所在路徑>' [OVERWRITE]
聯機備份,離線還原
RESTORE DATABASE '/dm8/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/dm8/bak/db_full_bak_for_restore'
恢復資料庫
RECOVER DATABASE '/dm8/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/dm8/bak/db_full_bak_for_restore';
恢復 db_magic
RECOVER DATABASE '/dm8/data/DAMENG_FOR_RESTORE/dm.ini' UPDATE DB_MAGIC;
恢復完成後,註冊服務
/dm8/scripts/root/dm_service_installer.sh -t dmserver -p CJC -dm_ini /dm8/data/DAMENG_FOR_RESTORE/dm.ini
7.2.4 線上備份
7.2.4.1 備份整個資料庫
BACKUP DATABASE FULL BACKUPSET '/dm8/bak/db_full_bak_01';
指定備份集路徑為 /dm8/bak/db_bak_3_01,執行以下命令: BACKUP DATABASE BACKUPSET '/dm8/bak/db_bak_3_01'; 建立備份集,備份名設定為 WEEKLY_FULL_BAK,執行以下命令: BACKUP DATABASE TO WEEKLY_FULL_BAK BACKUPSET '/dm8/bak/db_bak_3_02'; 建立備份為備份集新增描述資訊為 完全備份,執行以下命令: BACKUP DATABASE BACKUPSET '/dm8/bak/db_bak_3_04' BACKUPINFO '完全備份'; 建立備份限制備份片大小為 300 MB,執行以下命令: BACKUP DATABASE BACKUPSET '/dm8/bak/db_bak_3_05' MAXPIECESIZE 300; 執行備份壓縮,壓縮級別設定為 5,執行以下命令: BACKUP DATABASE BACKUPSET '/dm8/bak/db_bak_3_06' COMPRESSED LEVEL 5; 建立並行備份,指定並行數為 8,執行以下命令: BACKUP DATABASE BACKUPSET '/dm8/bak/db_bak_3_07' PARALLEL 8; 基於 /dm8/bak 全量備份的 增量備份,執行以下命令: BACKUP DATABASE INCREMENT WITH BACKUPDIR '/dm8/bak' BACKUPSET '/dm8/bak/db_increment_bak_02';
7.2.4.2 表空間備份
BACKUP TABLESPACE <表空間名> [FULL | INCREMENT [CUMULATIVE] [WITH BACKUPDIR '<基備份搜尋目錄>'{,'<基備份搜尋目錄>'}] | [BASE ON BACKUPSET '<基備份集目錄>']][TO <備份名>] BACKUPSET ['<備份集路徑>'][DEVICE TYPE <介質型別> [PARMS '<介質引數>']][BACKUPINFO '<備份集描述>'] [MAXPIECESIZE <備份片限制大小>][IDENTIFIED BY < 加 密 密 碼 > [WITH ENCRYPTION<TYPE>][ENCRYPT WITH < 加 密 算 法 >]] [COMPRESSED[LEVEL <壓縮級別>]][TRACE FILE '<TRACE 檔名>'] [TRACE LEVEL <TRACE 日誌級別>][TASK THREAD <執行緒數>] [PARALLEL [<並行數>][READ SIZE <拆分塊大小>]];
完全備份單個表空間,執行以下命令: BACKUP TABLESPACE MAIN FULL BACKUPSET '/dm8/bak/ts_full_bak_01'; 增量備份指定備份目錄,以備份 MAIN 表空間為例,指定 BASE_ON 引數執行增量備份,執行以下命令: BACKUP TABLESPACE MAIN INCREMENT WITH BACKUPDIR '/dm8/bak'BACKUPSET '/dm8/bak/ts_increment_bak_02';
7.2.4.3 表備份
BACKUP TABLE <表名> [TO <備份名>] BACKUPSET ['<備份集路徑>'] [DEVICE TYPE <介質型別> [PARMS '<介質引數>']] [BACKUPINFO '<備份集描述>'] [MAXPIECESIZE <備份片限制大小>] [IDENTIFIED BY <加密密碼>[WITH ENCRYPTION<TYPE>][ENCRYPT WITH <加密演算法>]] [COMPRESSED [LEVEL <壓縮級別>]] [TRACE FILE '<trace 檔名>'] [TRACE LEVEL <trace 日誌級別>]
以備份 TAB_01 為例,執行以下命令:
BACKUP TABLE CJC.T1 BACKUPSET '/dm8/bak/tab_bak_01';
7.2.5 線上還原
還原表結構 restore table struct from backupset '/dm8/bak/tab_bak_for_res_02'; 還原表資料 RESTORE TABLE FROM BACKUPSET '/dm8/bak/tab_bak_for_res_02'; 還原時不建立索引 RESTORE TABLE WITHOUT INDEX FROM BACKUPSET '/dm8/bak/tab_bak_for_res_03'; 還原時不建立約束 RESTORE WITHOUT CONSTRAINT FROM BACKUPSET '/dm8/bak/tab_bak_for_res_01';
7.2.6 將生產庫還原到另一個例項
聯機備份資料庫,保證資料庫執行在歸檔模式及 Open 狀態。執行以下命令:
BACKUP DATABASE BACKUPSET '/dm8/bak/db_full_bak_for_restore';
準備目標庫。還原目標庫可以是已經存在的資料庫,也可使用 dminit 工具初始化一個新庫。執行以下命令:
dminit path=/dm8/data db_name=DAMENG_FOR_RESTORE
啟動 RMAN ,校驗備份,校驗待還原備份集的合法性。校驗備份有兩種方式,聯機和離線,此處使用離線校驗。執行以下命令:
CHECK BACKUPSET '/dm8/bak/db_full_bak_for_restore';
還原資料庫。啟動 DMRMAN ,執行以下命令:
RESTORE DATABASE '/dm8/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/dm8/bak/db_full_bak_for_restore'
恢復資料庫。啟動 DMRMAN ,執行以下命令:
RECOVER DATABASE '/dm8/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/dm8/bak/db_full_bak_for_restore'
恢復 db_magic ,執行以下命令:
RECOVER DATABASE '/dm8/data/DAMENG_FOR_RESTORE/dm.ini' UPDATE DB_MAGIC;
恢復完成後,註冊服務
/dm8/scripts/root/dm_service_installer.sh -t dmserver -p CJC -dm_ini /dm8/data/DAMENG_FOR_RESTORE/dm.ini
修改 dm.ini 裡埠, 5236 改成 5238
su - root /dm8/script/root/dm_service_installer.sh -t dmserver -p CJC -dm_ini /dm8/data/DAMENG_FOR_RESTORE/dm.ini
啟動新例項
systemctl start DmServiceCJC.service
7.2.7 還原表空間
需要注意,表空間還原的目標庫只能是備份集產生的源庫,否則將報錯。啟動 DMRMAN ,執行以下命令:
RESTORE DATABASE '/dm8/data/DAMENG_FOR_RESTORE/dm.ini' TABLESPACE MAIN FROM BACKUPSET '/dm8/bak/db_full_bak_for_restore';
恢復表空間。啟動 DMRMAN ,執行以下命令:
RECOVER DATABASE '/dm8/data/DAMENG_FOR_RESTORE/dm.ini' TABLESPACE TS1;
https://eco.dameng.com/document/dm/zh-cn/ops/restore-specified-time.html
7.2.8 恢復到指定時間點
備份資料庫,執行以下命令:
BACKUP DATABASE BACKUPSET '/dm8/bak/db_full_bak_for_time_lsn';
操作步驟同步驟 3 ,此時的時間和 LSN 分別為: 2018-11-16 10:57:20.977265 、 50861 。
關閉資料庫,開啟 RMAN 還原資料庫,執行以下語句:(步驟 4 為誤操作,因此我們需要將資料庫恢復到步驟 3 的狀態)
RESTORE DATABASE '/dm8/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/dm8/bak/db_full_bak_for_time_lsn';
使用 RECOVER DATABASE...UNTIL TIME 命令恢復到指定的時間,開啟 RMAN ,執行以下命令:
RECOVER DATABASE '/dm8/data/DAMENG_FOR_RESTORE/dm.ini' WITH ARCHIVEDIR'/home/dm_arch/arch' UNTIL TIME'2018-11-16 10:56:40.624931';
或者使用 RECOVER DATABASE...UNTIL LSN 命令恢復到指定的時間,執行以下命令:
RECOVER DATABASE '/dm8/data/DAMENG_FOR_RESTORE/dm.ini' WITH ARCHIVEDIR'/home/dm_arch/arch' UNTIL LSN 50857;
恢復 db_magic ,執行以下命令:
RECOVER DATABASE 'D:\dmdbms\data\DAMENG\dm.ini' UPDATE DB_MAGIC;
7.2.9 邏輯備份
https://eco.dameng.com/document/dm/zh-cn/pm/dexp-dimp-function-introduction.html
邏輯匯出和邏輯匯入資料庫物件分為四種級別:資料庫級、使用者級、模式級和表級。四種級別獨立互斥,不能同時存在。四種級別所提供的功能:
資料庫級(FULL):匯出或匯入整個資料庫中的所有物件。 使用者級(OWNER):匯出或匯入一個或多個使用者所擁有的所有物件。 模式級(SCHEMAS):匯出或匯入一個或多個模式下的所有物件。 表級(TABLES):匯出或匯入一個或多個指定的表或表分割槽。
dexp 邏輯匯出
dexp 工具可以對本地或者遠端資料庫進行資料庫級、使用者級、模式級和表級的邏輯備份。備份的內容非常靈活,可以選擇是否備份索引、資料行和許可權,是否忽略各種約束(外來鍵約束、非空約束、唯一約束等),在備份前還可以選擇生成日誌檔案,記錄備份的過程以供檢視。
dexp 工具名稱有兩種寫法 dexp 和 dexpdp 。兩者語法完全相同。唯一的區別在於, dexp 匯出的檔案必須存放在客戶端, dexpdp 匯出的檔案必須存放在伺服器端。
使用 dexp 工具
dexp 工具需要從命令列啟動。在 cmd 命令列工具中找到 dexp 所在安裝目錄 /dmdbms/bin ,輸入 dexp 和引數後回車。引數在下一節詳細介紹。
例如,將使用者名稱和密碼均為 SYSDBA ,
IP 地址為 192.168.0.248 ,
埠號為 8888 的資料庫採用 FULL 方式完全匯出。
/user/data 為數字證照路徑。
匯出檔名為 db_str.dmp ,
匯出的日誌檔名為 db_str.log ,
匯出檔案的路徑為/mnt/dexp/data 。
./dexp USERID=SYSDBA/SYSDBA@192.168.0.248:8888##/user/data FILE=db_str.dmp DIRECTORY=/mnt/dexp/data LOG=db_str.log FULL=Y
四種級別的匯出方式
針對資料庫物件,有FULL 、 OWNER 、 SCHEMAS 、 TABLES 四種匯出方式可供選擇。一次匯出只能指定一種方式。可選引數,預設為 SCHEMAS 。
FULL
匯出資料庫的所有物件。
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log FULL=Y DIRECTORY=/mnt/data/dexp
OWNER
OWNER 方式匯出一個或多個使用者擁有的所有物件
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log OWNER=USER01DIRECTORY=/mnt/data/dexp
SCHEMAS
SCHEMAS 方式的匯出一個或多個模式下的所有物件
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log SCHEMAS=USER01 DIRECTORY=/mnt/data/dexp
注意
一般情況下,OWNER 與 SCHEMAS 匯入匯出是相同的。
但是使用者可以包含多個模式,在這種情況下SCHEMAS 的匯入匯出是 OWNER 匯入匯出的一個子集。
TABLES
TABLES 方式匯出和匯入一個或多個指定的表或表分割槽。匯出所有資料行、約束、索引等資訊。
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log TABLES=table1,table2 DIRECTORY=/mnt/data/dexp
和TABLES 匯出有關的引數還有 QUERY 、 EXCLUDE 和 INCLUDE ,都是用來設定過濾條件的。
表名為小寫tabname ,語句中應該寫為 "\"tabname\"" 。
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log TABLES="\"tabname\""
例如,表名為小寫tabname" ,語句中應該寫為 "\"tabname\"\"\"" 。
./dexp USERID=SYSDBA/SYSDBA\@192.168.0.248:8888 FILE=db_str.dmp LOG=db_str.log TABLES="\"tabname\"\"\""
FUZZY_MATCH
FUZZY_MATCH 用於指定 TABLES 選項是否支援模糊匹配。可選引數,預設為 N 。
語法如下:
FUZZY_MATCH=N/Y
N : TABLES 選項不支援模糊匹配,指定的表名與資料庫中的表名必須精確匹配;
Y : TABLES 選項支援模糊匹配,指定的表名與資料庫中的表名採用 LIKE 模糊查詢匹配。
匯出OTHER 模式下以 "R" 開頭的表
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log TABLES=OTHER.R% FUZZY_MATCH=Y
QUERY
QUERY 用於指定過濾條件來對錶資料進行匯出。可選引數。
匯出 OTHER.READER 表中滿足 "WHERE AGE=19" 條件的資料。
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log TABLES=OTHER.READER QUERY="WHERE AGE=19"
PARALLEL
PARALLEL 用於指定匯出的過程中所使用的執行緒數目。可選引數,預設為單執行緒。
如果 CPU 核心數為 N 的話,那一般來說 PARALLEL 為 N 或者 N+1 最合適。
設定PARALLEL=2 時則執行緒數為 2 。
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log FULL=Y DIRECTORY=/mnt/data/dexp PARALLEL=2
TABLE_PARALLEL
TABLE_PARALLEL 用於指定匯出每張表所使用的執行緒數。可選引數,預設為單執行緒。如果 CPU 核數為 N 的話,那一般來說 TABLE_PARALLEL 為 N 或者 N+1 最合適。在 MPP 模式下會轉換成單執行緒。
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log FULL=Y DIRECTORY=/mnt/data/dexp TABLE_PARALLEL=3
EXCLUDE
EXCLUDE 用來批次設定匯出時忽略的物件種類。可選引數。
設定 EXCLUDE=(CONSTRAINTS) ,將當前使用者下的 table1 、 table2 的物件資訊匯出時不匯出約束
./dexp SYSDBA/SYSDBA FILE=/mnt/data/db_str.dmp LOG=db_str.log TABLES=table1,table2 EXCLUDE=/(CONSTRAINTS/)
INCLUDE
INCLUDE 用來批次設定匯出時包含的物件種類。可選引數。
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log TABLES=table1 DIRECTORY=/mnt/data/dexp INCLUDE=/(CONSTRAINTS,INDEXES/)
CONSTRAINTS 、 TABLESPACE 、 GRANTS 、 INDEXES 、 TRIGGERS 、 ROWS
這些引數用來指定某類物件是否被匯出。類別分別為約束、表空間、許可權、索引、觸發器和資料。
CONTRAINTS=N :設定不匯出約束。可選引數。預設該引數為 Y ,匯出約束。
TABLESPACE=Y :設定匯出的物件定義中包含表空間。可選引數。預設該引數為 N ,不包含表空間。
GRANTS=N :設定不匯出許可權。可選引數。預設該引數為 Y ,匯出許可權。
INDEXES=N :設定不匯出索引。可選引數。預設該引數為 Y ,匯出索引。
TRIGGERS=N :設定不匯出觸發器。可選引數。預設該引數為 Y ,匯出觸發器。
ROWS=N :設定不匯出資料。可選引數。預設該引數為 Y ,匯出資料。
例如,設定ROWS=N 不匯出表中的資料。
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp NOLOGFILE=Y FULL=Y DIRECTORY=/mnt/data/dexp ROWS=N
注意
此處,物件(CONSTRAINTS 、 GRANTS 、 INDEXES 、 TRIGGERS 、 ROWS )分別單獨設定,和 EXCLUDE/INCLUDE 中批次設定功能一樣。設定一個即可。 如果單獨設定和批次設定同時出現時,那麼以最後出現的那個為準。
NOLOGFILE
NOLOGFILE 用於設定是否使用日誌檔案。可選引數。
一旦設定NOLOGFILE=Y 不使用日誌檔案。此時即使存在 LOG 引數, LOG 引數也為無效。
例如,設定 NOLOGFILE=Y ,不使用日誌檔案。
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp NOLOGFILE=Y FULL=Y DIRECTORY=/mnt/data/dexp
NOLOG
NOLOG 設定螢幕上是否顯示日誌資訊。可選引數。
例如,設定NOLOG=Y 螢幕不顯示日誌資訊。
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp NOLOG=Y FULL=Y DIRECTORY=/mnt/data/dexp
PARFILE
PARFILE 用於將常用的引數設定儲存到檔案中,然後使用引數檔案 PARFILE 進行匯出、匯入操作。可選引數。
例如,設定PARFILE=/mnt/data/dexp/para.txt 。
./dexp USERID=SYSDBA/SYSDBA PARFILE=/mnt/data/dexp/para.txt
其中,引數檔案/mnt/data/dexp/para.txt 的內容如下:
FILE=db_str.dmp LOG=db_str.log TABLES=table1 DIRECTORY=/mnt/data/dexp
FEEDBACK
FEEDBACK 用來指明在匯出資料的過程中每間隔多少行列印一次進度資訊。可選引數。
當引數預設時,預設為0 ,只列印匯出表的總行數。
例如,將整個資料庫匯出到檔案dexp.dmp 中,並且在匯出的過程中每隔 100 行列印一次進度資訊。
./dexp SYSDBA/SYSDBA FULL=Y FILE=dexp.dmp DIRECTORY=/mnt/data/dexp FEEDBACK=100
COMPRESS
COMPRESS 指定是否壓縮匯出檔案。可選引數。預設為不壓縮。
COMPRESS=Y/N
ENCRYPT 、 ENCRYPT_PASSWORD 、 ENCRYPT_NAME
這三個引數用來設定匯出檔案加密。可選引數。
例如,設定匯出檔案加密,金鑰 abcdefg ,加密演算法為 DES_CBC 。
./dexp SYSDBA/SYSDBA DIRECTORY=/mnt/data/dexp FILE=dk15.dmp LOG=db_str15.log ENCRYPT=Y ENCRYPT_PASSWORD=abcdefg ENCRYPT_NAME=DES_CBC FULL=Y
FILESIZE
FILESIZE 用於指定單個匯出檔案( FILE )大小或日誌檔案( LOG )大小的上限。可以按位元組 [B] 、 K[B] 、 M[B] 、 G[B] 的方式指定大小。可選引數。
使用 FILESIZE 引數時, FILE (或 LOG )必須使用 %U 對名稱進行自動擴充套件,否則報錯。如果不指定 FILE (或 LOG ),那麼即使設定了 FILESIZE 也不起作用。 FILE 和 LOG 同時使用 %U 時, FILESIZE 引數只需指定一次。
以下示例表示以FULL 方式匯出例項,每個匯出檔案大小為 128m ,檔名以 data01.dmp 自動擴充套件,儲存位置為 /mnt/data/dexp 目錄。
./dexp USERID=SYSDBA/SYSDBA DIRECTORY=/mnt/data/dexp FILE=data%u.dmp LOG=data%u.log FILESIZE=128m FULL=Y
FILENUM
FILENUM 用於指定一個模板匯出檔案的個數。範圍為 1~99 ,預設 99 。可選引數。 FILENUM 需要和 FILESIZE 搭配使用, FILENUM*FILESIZE 要大於等於匯出的檔案總大小,否則會報錯空間不足。
DROP
DROP 用於設定匯出後是否刪除原表。可選引數。
DROP=Y/N
Y: 匯出後刪除原表,但不級聯刪除。
N 或預設引數 : 匯出後不刪除原表。
DESCRIBE
DESCRIBE 用於設定匯出資料檔案的描述資訊,記錄在資料檔案中。可選引數。
語法如下:
DESCRIBE=' 字串 '
字串:設定匯出資料檔案的描述資訊,記錄在資料檔案中。預設時,匯出的資料檔案中沒有描述資訊
HELP
輸入dexp HELP 即可檢視幫助資訊。
例如,使用HELP 檢視幫助資訊。
./dexp HELP
7.2.10 邏輯還原
https://eco.dameng.com/document/dm/zh-cn/pm/dimp-logical%20import.html
dimp 工具名稱有兩種寫法 dimp 和 dimpdp 。兩者語法完全相同。唯一的區別在於, dimp 匯入的檔案必須存放在客戶端, dexpdp 匯入的檔案必須存放在伺服器端。
dimp 引數一覽表
...
dimp 匯入
匯入 SYSDBA 、 OTHER 、 PERSON 模式中的資料( SCHEMAS=SYSDBA,OTHER,PERSON ),匯入檔案就是上一步匯出的檔案 dexp01.dmp ,匯入日誌 dimp02.log 放入 /emc_2/data/dimp 目錄中。
./dimp SYSDBA/SYSDBA\@192.168.0.248:8888 FILE=/emc_2/data/dexp/dexp01.dmp LOG=dimp02.log DIRECTORY=/emc_2/data/dimp SCHEMAS=SYSDBA,OTHER,PERSON
八:引數管理
8.1 引數管理 - 圖形化操作
使用圖形化修改
不修改記憶體中的值,修改的是配置檔案中的值,需要重啟後生效
使用圖形化修改
cd /dm8/tool
./console
SQL> select name,value,sys_value,file_value,type,description from v$parameter where name like '%SESSIONS%'; 行號 NAME VALUE SYS_VALUE FILE_VALUE TYPE DESCRIPTION ---------- ------------ ----- --------- ---------- ------- ------------------------------------- 1 MAX_SESSIONS 100 100 150 IN FILE Maximum number of concurrent sessions 已用時間: 5.997(毫秒). 執行號:410.
8.2 引數管理 -命令列操作
8.2.1 引數型別
SELECT distinct type from v$parameter;
行號 TYPE
---------- ---------
1 READ ONLY
2 SYS
3 IN FILE
4 SESSION
已用時間 : 152.622( 毫秒 ). 執行號 :401.
對應到 Oracle 的 Scope
both :既修改記憶體中的值,也修改配置檔案中的值,重啟不重啟都一樣生效
spfile :只修改配置檔案中的值,重啟資料庫生效
memory :只修改記憶體中的值,重啟資料庫後恢復設定前的樣子
達夢根據引數型別可分為,靜態引數和動態引數兩種,這兩種均支援透過系統函式、 SQL 命令進行修改
靜態引數:只能修改配置檔案中的值,對記憶體中的值不進行修改,所以靜態引數修改後使其生效的話,需要對資料庫進行重啟
動態引數:既能修改記憶體中的值,也能修改配置檔案中的值,所以動態引數修改後是立即生效的
READ ONLY 只讀引數,不能透過系統函式、SQL命令達到修改引數的目的,只能從dm.ini配置檔案中進行修改 SYS 靜態引數,可以透過系統函式、SQL命令達到修改引數的目的 IN FILE 動態引數(系統級),可以透過系統函式、SQL命令達到修改引數的目的 SESSION 動態引數(會話級),可以透過系統函式、SQL命令達到修改引數的目的,可針對某個會話進行修改,便於除錯(不然要應用到整個線上系統,一旦出錯,影響面就廣了)
8.2.2引數修改方式
使用 dm.ini 修改
# 直接編輯檔案修改即可
vim /dm8/data/ 服務名稱 dm.ini
SQL 語句修改
# 後面跟的是引數範圍
alter system set ' 引數名 '=' 引數值 ' both | spfile | memory;
# 查詢相容引數型別
select name,value,sys_value,file_value,type,description from v$parameter where name = 'COMPATIBLE_MODE';
# 修改相容引數型別
alter system set 'COMPATIBLE_MODE'=2 spfile;
系統函式修改
檢視可以使用的系統函式
select name,id from v$ifun t where name like '%SP_SET%_PARA%';
檢視系統函式的引數型別
select * from v$ifun_arg t where id=584;
例子
修改 double 型別的引數值, UNDO_RETENTION 引數
SP_SET_PARA_DOUBLE_VALUE(1,'UNDO_RETENTION',90);
資料緩衝區
修改資料緩衝區大小,沒有特殊指明的話就是修改 Normal 緩衝區的大小,引數對應的是 BUFFER
Normal 對應引數 BUFFER 、 Fast 對應引數為 FAST_POOL_PAGES 、 Recycle 對應引數為 RECYCLE 、 Keep 對應引數為 KEEP
alter system set 'BUFFER'=2000 spfile;
九:作業管理
9.1 作業管理 - 圖形化操作
9.1.1 啟動 MANAGER 管理工具
[dmdba@cjc-db-01 ~]$ manager
連線資料庫
9.1.2 建立代理環境
SQL> select OWNER,TABLE_NAME from dba_tables where table_name in ('SYSJOBS');
LINEID OWNER TABLE_NAME
---------- ------ ----------
1 SYSJOB SYSJOBS
操作員
SQL> select username from dba_users;
LINEID USERNAME
---------- ----------
1 SYSAUDITOR
2 SYSSSO
3 DMHR
4 CJC
5 SYSDBA
6 SYS
6 rows got
建立、修改和刪除操作員可以透過以下兩種方式來實現。一是透過系統過程來實現;二是透過圖形化客戶端MANAGER管理工具實現。使用者選擇其中的一種即可。
9.1.3 新建操作員
顯示 建立的語句
可以對操作員進行修改和刪除
9.1.4 新建作業
作業步驟
Add 新增
步驟型別
先測試指令碼執行的作業
STEP NAME 不能有特殊字元?否則最後提交時報錯:
可以用類似這樣的 NAME
SQL> select * from cjc.t1;
LINEID ID
---------- -----------
1 1
used time: 2.444(ms). Execute id is 901.
作業排程
每天 15:50 開始執行
檢視自動生成的 DDL 語句
call SP_CREATE_JOB('CJC_JOB',1,0,'',0,0,'',0,'TEST 20221019 ...'); call SP_JOB_CONFIG_START('CJC_JOB'); call SP_ADD_JOB_STEP('CJC_JOB', 'insert into script ...', 0, 'insert into cjc.t1 values(100);', 0, 0, 0, 0, NULL, 0); call SP_ADD_JOB_SCHEDULE('CJC_JOB', 'CJC_SCH', 1, 1, 1, 0, 0, '15:50:00', NULL, '2022-10-19 15:37:25', NULL, ''); call SP_JOB_CONFIG_COMMIT('CJC_JOB');
儲存指令碼
OK
警報
達夢資料庫還提供了警報的功能,允許使用者定義一些自己想要捕獲的動作,如果這些動作發生時,系統就會將對應資訊儲存到指定的表中,將想要得到的資訊儲存起來,以便做到實時的監控。
建立、修改和刪除警報可以透過以下兩種方式來實現。一是透過系統過程來實現;二是透過圖形化客戶端 MANAGER 管理工具實現。使用者選擇其中的一種即可。
新增警告
建立警告
通知警告
DDL
call SP_CREATE_ALERT('SCRIPT_ALERT',1,0,6,-1,10,''); call SP_ALERT_ADD_OPERATOR('SCRIPT_ALERT','TOM',1,1);
監控作業
監控作業是指把作業的執行情況透過電子郵件傳送給作業操作員。郵件成功傳送的前提有兩個:一是為監控服務配置管理員;二是開啟監控服務。
https://eco.dameng.com/document/dm/zh-cn/pm/monitoring-job.html
檢視資料
SQL> select * from cjc.t1;
LINEID ID
---------- -----------
1 1
2 100
used time: 2.045(ms). Execute id is 905.
作業執行歷史
9.2 作業管理 - 命令列操作
https://eco.dameng.com/document/dm/zh-cn/pm/typical-example.html
定時備份 示例
https://eco.dameng.com/document/dm/zh-cn/ops/scheduled-backup.html
建立作業環境
SP_INIT_JOB_SYS(1);
指令碼備份
Linux 定時備份指令碼
1. 每週六晚上 23 : 30 定時全庫備份
call SP_CREATE_JOB('back_full',1,0,'',0,0,'',0,'back_full'); call SP_JOB_CONFIG_START('back_full'); call SP_ADD_JOB_STEP('back_full', 'back_full', 6, '01000000/opt/dmdbms/data/BAK', 1, 2, 0, 0, NULL, 0); call SP_ADD_JOB_SCHEDULE('back_full', 'back_full', 1, 2, 1, 64, 0, '23:30:00', NULL, '2020-03-27 16:35:56', NULL, ''); call SP_JOB_CONFIG_COMMIT('back_full');
2.
每週一、週二、週三、週四、週五、週日晚上 23
:30
定時增量備份
call SP_CREATE_JOB('backup_inc',1,0,'',0,0,'',0,'backup_inc'); call SP_JOB_CONFIG_START('backup_inc'); call SP_ADD_JOB_STEP('backup_inc', 'backup_inc', 6, '11000000/opt/dmdbms/data/BAK|/opt/dmdbms/data/BAK', 1, 2, 0, 0, NULL, 0); --call SP_ADD_JOB_STEP('backup_inc', 'backup_inc', 6, '11000000/opt/dmdbms/data/BAK|/opt/dmdbms/data/BAK', 1, 2, 0, 0, NULL, 0); call SP_ADD_JOB_SCHEDULE('backup_inc', 'backup_inc', 1, 2, 1, 63, 0, '23:33:00', NULL, '2020-03-27 22:03:58', NULL, ''); call SP_JOB_CONFIG_COMMIT('backup_inc');
3. 每天 00 :00 刪除 15 天以前的資料。刪除前請先提前將備份檔案轉移到單獨的備份伺服器
call SP_CREATE_JOB('JOB_DEL_BAK_TIMELY',1,0,'',0,0,'',0,'JOB_DEL_BAK_TIMELY'); call SP_JOB_CONFIG_START('JOB_DEL_BAK_TIMELY'); call SP_ADD_JOB_STEP('JOB_DEL_BAK_TIMELY', 'JOB_DEL_BAK_TIMELY', 0, 'call SF_BAKSET_BACKUP_DIR_ADD(''DISK'', ''/data/dmdbms/data/BAK''); CALL SP_DB_BAKSET_REMOVE_BATCH(''DISK'', NOW()-15);', 1, 2, 0, 0, NULL, 0); call SP_ADD_JOB_SCHEDULE('JOB_DEL_BAK_TIMELY', 'JOB_DEL_BAK_TIMELY', 1, 1, 1, 0, 0, '00:00:00', NULL, '2020-03-27 22:06:13', NULL, ''); call SP_JOB_CONFIG_COMMIT('JOB_DEL_BAK_TIMELY');
十: ODBC
10.2 檢視 ODBC 配置檔案
odbcinst -j
10.2配置 odbc.ini 檔案
cp /etc/odbc.ini /etc/odbc.ini_20221017bak vi /etc/odbc.ini [dm8] Description = DM ODBC DSN Driver = DM8 ODBC DRIVER SERVER = cjc-db-01 UID = SYSDBA PWD = Dameng123 TCP_PORT = 5238
10.3配置 odbcinst.ini
cp /etc/odbcinst.ini /etc/odbcinst.ini_20221017bak vi /etc/odbcinst.ini [DM8 ODBC DRIVER] Description = ODBC DRIVER FOR DM8 DRIVER = /dm8/bin/libdodbc.so
10.4測試 odbc連線資料庫
su - dmdba isql dm8
10.5 ODBC環境準備
如果沒有對應命令,需要提前安裝
rpm -qa|grep unixODBC
配置本地
YUM
vi /etc/yum.repos.d/oracle-linux-ol7.repo [Oracle_Linux_7] name=Oracle Linux 7 baseurl=file:///iso gpgcheck=0 enabled=1
掛載作業系統映象
mount OracleLinux-R7-U9-Server-x86_64-dvd.iso /iso -o loop yum -y install unixODBC.x86_64
### 複製離線包
###cp /iso/Packages/unixODBC-devel-2.3.1-14.0.1.el7.x86_64.rpm /soft/dm/ ###cp /iso/Packages/unixODBC-2.3.1-14.0.1.el7.x86_64.rpm /soft/dm/
安裝 ODBC
解壓 ODBC ,沒有這個 tar 包的話需要上傳到這個目錄下
tar -zxvf /opt/unixODBC-2.3.0.tar.gz
進入到 odbc 目錄進行原始碼安裝
cd unixODBC-2.3.0
./configure
make
make install
十一:解除安裝
11.1 解除安裝 - 圖形化操作
https://eco.dameng.com/document/dm/zh-cn/pm/install-uninstall.html
[root@host02 ~]# echo $DISPLAY
localhost:10.0
[root@host02 ~]# xhost +
[dmdba@host02 ~]$ cd /dm8/
[dmdba@host02 dm8]$ sh uninstall.sh
[root@host02 ~]# cd /dm8/
[root@host02 dm8]# sh uninstall.sh
刪除檔案,使用者,組等
11.2 解除安裝 - 命令列操作
解除安裝 資料庫例項 + 軟體
11.2.1 停服務
systemctl stop DmServiceCJC.service systemctl stop DmServiceDMSERVER.service
11.2.2解除安裝
su - dmdba /dm8/uninstall.sh -i Whether to uninstall DM database(/dm8/)? (y/Y:Yes n/N:No):Y Whether to deletet the dm_svc.conf file? (y/Y:Yes n/N:No):Y
11.2.3執行指令碼
su - root /dm8/root_uninstaller.sh
[dmdba@cjc-db-01 ~]$ cat /dm8/root_uninstaller.sh #!/bin/sh #run by root RUID=`/usr/bin/id|awk -F\( '{print $1}'|awk -F\= '{print $2}'` if [ ${RUID} != "0" ] then echo "Must run the script by root!" exit 1 fi echo "Delete DmServiceCJC service" systemctl disable DmServiceCJC.service rm -f /usr/lib/systemd/system/DmServiceCJC.service rm -f "/dm8/bin/DmServiceCJC" rm -f "/dm8/bin/DmServicedameng" echo "Delete /etc/dm_svc.conf" rm -f /etc/dm_svc.conf
11.2.4 刪除使用者、組
userdel -r -f dmdba groupdel dinstall
11.2.5刪除檔案
rm -rf /dm8/*
清理殘留的服務
systemctl list-unit-files |grep -i dms DmServicedameng.service disabled find / -name DmService* /usr/lib/systemd/system/DmServicedameng.service rm -f /usr/lib/systemd/system/DmServicedameng.service
###chenjuchao 20221023 20:30###
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29785807/viewspace-2919869/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ElasticSearch必知必會-進階篇Elasticsearch
- 12.MySQL必知必會之分組資料MySql
- MySQL 必知必會MySql
- Linux必會必知Linux
- git必會必知Git
- Redis 必知必會Redis
- ThreadLocal必知必會thread
- Activity 必知必會
- JSON 必知必會JSON
- HashMap必知必會HashMap
- notion database 必知必會Database
- Linux shell必知必會Linux
- Linux 程式必知必會Linux
- Android必知必會的四大元件 -- ContentProvider篇Android元件IDE
- Android必知必會的四大元件 -- Service篇Android元件
- Android必知必會的四大元件 -- Activity篇Android元件
- 達夢資料庫基礎知識(三)達夢資料庫記憶體結構資料庫記憶體
- 必知必會Java命令-jpsJava
- Redis 必知必會之 APIRedisAPI
- mysql必知必會筆記MySql筆記
- Mysql必知必會練習MySql
- HTTP 必知必會的那些HTTP
- 01-mysql必知必會MySql
- 常用技術必知必會
- Android必知必會的四大元件 -- Broadcast Receiver篇Android元件AST
- 達夢DCA認證學習筆記及體會筆記
- 【必知必會的MySQL知識】①初探MySQLMySql
- 【必知必會的MySQL知識】②使用MySQLMySql
- Java必知必會之註解Java
- Redis 必知必會之持久化Redis持久化
- SQL必知必會筆記(上)SQL筆記
- SQL必知必會筆記(下)SQL筆記
- Flutter 外掛使用必知必會Flutter
- 必知必會之Lambda表示式
- MYSQL中的鎖必知必會MySql
- 【必知必會的MySQL知識】④DCL語言MySql
- 【必知必會的MySQL知識】⑤DQL語言MySql
- 【必知必會的MySQL知識】③DML語言MySql