安裝前的準備及注意事項
- 檢查系統(tǒng)版本、內(nèi)核、內(nèi)存大小、磁盤空間等,如檢查glibc要求2.3以上
rpm -qa | grep glibc - 建議不要使用root身份進行數(shù)據(jù)庫的安裝
- 麒麟6系統(tǒng)會有文件打開數(shù)的限制,需要修改安裝用戶下的文件打開數(shù)大小。麒麟7省去。
cd /etc/security/
vi limits.conf
xxx soft nofile 65536
xxx hard nofile 65536
// 保存后,查看是否成功
ulimit -a
- 設(shè)置圖形界面
先檢查是否能打開圖形化界面:輸入 `xclock`;在root下輸入 `xhost +` 然后切換到操作用戶
報xclock 沒有這個命令,執(zhí)行`yum install xorg-x11-apps`
圖形化安裝
進入文件安裝目錄,執(zhí)行./DMInstall.bin,開始一步一步。過程中會提示執(zhí)行root_install.sh,啟動AP服務(wù)。
圖形化實例化數(shù)據(jù)庫
- /tool(沒有配置環(huán)境變量) 目錄下執(zhí)行
./dbca.sh,打開數(shù)據(jù)庫配置助手界面,過程中會要以root身份執(zhí)行/script/root/dm_service_installer.sh進行數(shù)據(jù)庫的注冊(/bin/DMServiceDMSERVER 到 /etc/rc.d/init.d/DMServiceDMSERVER)。填寫數(shù)據(jù)庫名、端口、用戶名、密碼、文件目錄等信息。注:簇大小、頁大小設(shè)置后不能修改。不設(shè)置環(huán)境變量,就需要進入/tool 目錄執(zhí)行。以下命令都是配置環(huán)境變量的寫法。
命令行安裝
- 如果已經(jīng)存在數(shù)據(jù)庫,可以在安裝的根目錄執(zhí)行
./uninstall.sh進行卸載。卸載后會保留之前創(chuàng)建的數(shù)據(jù)庫實例。 - 進入安裝文件所在目錄
./DMInstall.bin -i按照流程一步一步選擇。 - 安裝完成后,如果想用之前創(chuàng)建的數(shù)據(jù)庫服務(wù),可以在
cd /script/root執(zhí)行./dm_service_installer.sh -t dmserver -p DMSERVER -i /xx/data/DAMENG/dm.ini-p: 之前創(chuàng)建的數(shù)據(jù)庫服務(wù)名; -i : 之前服務(wù)的配置文件路徑。 可執(zhí)行dm_service_installer.sh -h查看命令說明
命令行方式實例化數(shù)據(jù)庫
- 查看用法
dminit.sh help - 安裝
dminit path=/dm7/data db_name=DMMENG01 instance_name=DMSERVER01 port=5237 - 注冊服務(wù)
cd /script/root執(zhí)行./dm_service_installer.sh -t dmserver -p DMSERVER01 -i /dm7/data/DAMENG01/dm.ini - 啟動服務(wù) 可以在manager界面手動啟動,也可以在
/etc/rc.d/init.d/service DmServiceDMSERVER01 start
啟動服務(wù)方法
- DM服務(wù)器查看器 (
cd tool ./dmservice.sh下打開的界面),手動操作 - Linux服務(wù)方式
/etc/rc.d/init.d/ service DmServiceDMSERVER01 start - 命令方式
/bin ./dmserver path=/xx/xx/DAMENG/dm.ini關(guān)閉窗口服務(wù)即關(guān)閉
目錄說明
- /bin:
disql、dminit等命令行工具 - /tool:客戶端工具
打開DM服務(wù)查看器:./dmservice.sh
打開DM控制臺:./console
建庫:./dbca.sh
數(shù)據(jù)遷移:dts
打開管理端:./manager - /script/root:
root_install.sh: 啟動AP服務(wù),一般在安裝時執(zhí)行一次。
dm_service_install.sh 注冊數(shù)據(jù)庫服務(wù)
dm_service_uninstaller.sh 卸載數(shù)據(jù)庫服務(wù)
連接數(shù)據(jù)庫:
-
/bin disql默認5236端口 - 連接其它端口
disql sysdba(用戶名)/(密碼)@localhost:5237 - 可以配置連接串 /etc/dm_svc.conf DMSERVER01=(127.0.0.1:5237)
disql sysdba(用戶名)/(密碼)@DMSERVER01 - 客戶端工具
cd toolmanager
設(shè)置環(huán)境變量
用戶所在目錄下的 .bash_profile 文件 export PATH="$PATH:$DM_HOME/bin:$DM_HOME/tool"
保存后要 source .bash_profile 才能生效
sql 簡單數(shù)據(jù)字典查詢命令
- 查詢服務(wù)配置
select * from V$DM_INI - 查詢服務(wù)配置參數(shù)類型
select DISTINCT PARA_TYPE FROM V$DM_INI - 查詢表空間
select * from V$TABLESPACE - 查詢數(shù)據(jù)文件
select * from DBA_DATA_FILES - 查詢塊信息
select * from USER_SEGMENTS - 查詢用戶
select * from DBA_USERS - 設(shè)置服務(wù)參數(shù)
sp_set_paravalue(scope int, paraname varchar(256), value int64)
DM線程
- 先查進程PID
ps -ef | grep dmserver - 方法1:根據(jù)進程PID查詢線程
ps -T -p PID - 方法2:
select * from V$THREADS
表空間管理
- 數(shù)據(jù)字典查詢
select * from dba_tablespaces;select * from v$tablespace;select * from DBA_DATA_FILES;select * from "V$DATAFILE";
- 表空間管理
聯(lián)機狀態(tài)下不能對表空間數(shù)據(jù)文件重命名。數(shù)據(jù)文件不能drop、offline。表空間可以offline。表空間文件大小只能改大,不能改下。- MD管理工具圖形化界面,表空間中創(chuàng)建、修改文件名、表空間名。修改文件名不需要進行表空間脫機操作,應(yīng)該是工具會自動進行。
- 命令行方式
- 創(chuàng)建
create tablespace tbs02 datafile '/xx/data/DAMENG/tbs02.dbf' size 200; - 修改表空間數(shù)據(jù)名
alter tablespace tbs02 rename datafile'/xx/data/DAMENG/tbs02.dbf' to '/xx/data/DAMENG/tbs02.ttt';如果此時表空間在聯(lián)機狀態(tài),會提示錯誤信息。需要將表空間alter tablespace tbs02 offine,然后進行修改。修改成功后alter tablespace online - 修改表空間文件大小,只能改大,不能改小。
alter tablespace tbs02 resize datafile'/xx/data/DAMENG/tbs02.dbf' to 400; - 修改自動擴展
alter tablespace tbs02 datafile '/xx/data/DAMENG/tbs02.dbf' autoextend off; - 修改最大文件大小
alter tablespace tbs02 datafile '/xx/data/DAMENG/tbs02.dbf' autoextend on NEXT 4 MAXSIZE 500
- 創(chuàng)建
重做日志
重做日志可以重命名,不能刪除。修改文件名時需要在 alter database mount 狀態(tài)下。修改成功后 alter database open
重做日志默認有兩個,在/data/DAMENG(數(shù)據(jù)庫實例名)/ DAMENG01.LOG 和DAMENG02.log
- 數(shù)據(jù)字典查詢
select * from "V$RLOG"select * from "V$RLOGFILE"
- 圖形化界面操作
- DM管理工具中的管理服務(wù)器 - > 管理服務(wù)器 -> 日志文件
- 命令行方式
- 添加重做日志
alter database add logfile '/xx/data/DAMENG/DAMENG03.log' size 500; - 修改大小
alter database RESIZE logfile '/xx/data/DAMENG/DAMENG01.log' to 500; - 修改文件名:
alert database RENAME logfile '/xx/data/DAMENG/DAMENG03.log' to '/xx/data/DAMENG/DAMENG04.log'
- 添加重做日志
臨時表空間(TEMP.dbf)
臨時表空間可增加數(shù)據(jù)文件,但不能修改 autoextend 屬性
- 查詢臨時表空間信息
select para_name,para_value,para_type from v$dm_init where para_name like '%TEMP%' - 添加臨時表空間文件
alter tablespace temp add datafile '/xx/data/DAMENG/TEMP01.dbf' size 200; - 修改文件大小
alter tablespace temp resize datafile '/xx/data/DAMENG/TEMP01.dbf' to 300;
UNDO(ROLL.dbf)表空間
存放DML(insert、update、delete)的回滾操作??梢院推胀ū砜臻g一樣進行操作。
UNDO_RETENTION 90 保留時間90秒
- 查詢臨時表空間信息
select para_name,para_value,para_type from v$dm_init where para_name like '%UNDO%' - 添加文件
alter tablespace ROLL add datafile '/xx/data/DAMEMG/ROLL02.DBF' - 修改文件大小
alter tablespace ROLL resize datafile '/xx/data/DAMEMG/ROLL02.DBF to 250' - 修改autoextend
alter tablespace ROLL datafile '/xx/data/DAMEMG/ROLL02.DBF autoextend off' - 修改文件最大大小
alter tablespace ROLL datafile '/xx/data/DAMEMG/ROLL02.DBF autoexteng on NEXT 4 MAXSIZE 500'
系統(tǒng)表空間
存放系統(tǒng)相關(guān)表定義,表越多、索引越多占用系統(tǒng)表空間越大。
select * from SYS.SYSCOLUMNS
用戶管理
- DM管理工具
- 用戶 -> 用戶管理
- 命令行方式
- 創(chuàng)建索引表空間
create tablespace "tbs_index" datafile '/xx/data.DAMENG/tbs_index.dbf' - 創(chuàng)建用戶指定表空間和索引空間
create user test IDENTIFIED by dameng123 default tablespace "tbs" default index tablespace "tbs_index" - 增加登錄錯誤次數(shù)超過3次會被鎖定
alter user test limit FAILED_LOGIN_ATTEMPS 3, PASSWORD_LOCK_TIME 3 - 解鎖用戶
alter user test account unlock
- 創(chuàng)建索引表空間
- 給用戶授權(quán)(角色)
-
grant "PUBLIC" to "TEXT"也可以在DM管理工具操作:用戶-》修改-》所屬角色 -
revoke "PUBLIC" from TEST回收權(quán)限
-
權(quán)限管理
- 通過數(shù)據(jù)字典查看對象、系統(tǒng)權(quán)限
- 查看當前用戶表(對象)權(quán)限
select * from USER_TAB_PRIVS - 查看當前用戶系統(tǒng)權(quán)限
select * from USER_SYS_PRIVS select * from dba_tab_privsselect * from dba_sys_privs
- 查看當前用戶表(對象)權(quán)限
- 系統(tǒng)權(quán)限和對象權(quán)限
- 系統(tǒng)權(quán)限:比如 創(chuàng)建表
- 對象權(quán)限:查詢某個表
- 賦予系統(tǒng)權(quán)限
- 賦予創(chuàng)建表的權(quán)限
grant create table to test
- 賦予創(chuàng)建表的權(quán)限
- 賦予對象權(quán)限、回收權(quán)限給某用戶。
針對 select, update, insert 字段賦權(quán)的情況,不能按列回收權(quán)限,需要 revoke 回收整個表的權(quán)限。- 賦予某表權(quán)限給用戶
grant update,delete,insert on dmhr.employee to test - 回收權(quán)限 'revoke update,delete,insert on dmhr.employee from test'
- 賦予查詢某表個別字段的權(quán)限
grant select(employee_id,employee) on dmhr.employee to test
- 賦予某表權(quán)限給用戶
- 執(zhí)行insert,update,delete 需要
commit或者rollback
角色管理
- 相關(guān)數(shù)據(jù)字典
select * from USER_ROLE_PRIVSselect * from DBA_ROLE_PRIVSselect * from DBA_ROLES
- 命令行方式創(chuàng)建
create ROLE r_test - 賦對象權(quán)限給某個角色
grant update,delete,insert,select on dmgr.employee to r_test
模式對象管理
一般情況下,創(chuàng)建用戶會默認創(chuàng)建一個和用戶同名的模式。
一個用可以有多個模式,一個模式屬于一個用戶。一個模式下有多個對象(表、索引等)。
-
管理模式
- 命令行操作
create schema s_test AUTHORIZATION test
- 命令行操作
-
管理表
- 表空間關(guān)系
- 假如用戶沒有指定默認表空間、創(chuàng)建表也沒有指定默認表空間,表默認存儲 MAIN 表空間
- 假如用戶指定默認表空間、創(chuàng)建表沒有指定默認表空間,使用的是用戶指定的默認表空間
- 創(chuàng)建表指定默認表空間,使用的是用戶指定的表空間
- 數(shù)據(jù)字典查詢
select * from USER_TABLES - 命令行創(chuàng)建
- 默認當前用戶的表空間
create table test(id int,name varchar(100)) - 指定表空間
create table test(id int,name varchar(100)) storage(on main) - 指定創(chuàng)建某個模式的表
create table s_test.test(id int,name varchar(100))table_s 模式名。SYSDBA才有權(quán)限,用戶要有這個模式的權(quán)限。 - 自增列
create table test(id int identity,name varchar(100)) - 帶主鍵約束
create table test (id int inentity primary key,name varchar(100)) - 使用某個模式的表創(chuàng)建一個結(jié)構(gòu)一樣,并復制數(shù)據(jù)的表
create table test as select * from dmhr.employee
- 默認當前用戶的表空間
- 表空間關(guān)系
-
添加約束
- 查看約束相關(guān)字典
select * from USER_CONSTRAINTselect * from USER_CONS_COLUMNS
- 主鍵約束
- 給表添加主鍵約束
alter table test ADD CONSTRAINT PK_id primary key(id)PK_id是主鍵名 - 直接創(chuàng)建帶主鍵的表
create table test (id int inentity primary key,name varchar(100))
- 給表添加主鍵約束
- 外鍵約束
- 給表添加外鍵約束 如員工表有dept_id 字段
alert table emp ADD CONSTRAINT fk_emp_deptid FOREIGN key (dept_id) REFERENCES dept(dept_ID) - 直接創(chuàng)建帶外鍵的表
create table test (id int,name varchar(100),dept_id int FOREGIN key PEFERENCES dept(DMHR.dept_ID))
- 給表添加外鍵約束 如員工表有dept_id 字段
- 唯一約束
- 主鍵是唯一約束
create table test(dept_id int UNIOUE)
- check 約束
- 如年齡大于6歲
alter table test add constraint "check_age" check(AGE >=6)check_age 約束名字
- 如年齡大于6歲
- 查看約束相關(guān)字典
切換模式
- 不是當前用戶模式,不允許切換
- 命令 disql 下
set SEHEMA s_test
管理視圖
視圖不占用存儲空間,簡單視圖可以做增刪改操作;復雜視圖比如帶group by、集函數(shù)不支持DML操作
- 數(shù)據(jù)字典
select * from user_view - 命令行創(chuàng)建
create view v_test AS select * from emp
管理索引
索引是雙刃箭,降低DML操作速度為代價,提高查詢速度
-
查詢數(shù)據(jù)字典
select * from USER_INDEXESselect * from USER_IND_COLUMNS
-
命令方式創(chuàng)建
不指定模式,默認當前模式create index ix_emp_empNAME on emp(emp_NAME);
索引重建(現(xiàn)網(wǎng)推薦 online):
alter index IX_EMP_EMPNAME rebuild
alter index IX_EMP_EMPNAME rebuild online收集統(tǒng)計信息
不會自動收集統(tǒng)計信息,需要手動收集查看執(zhí)行計劃 disql 下
explain select * from test.t_test where name = '11'查看這條語句的執(zhí)行計劃。name 已經(jīng)建了索引。課上執(zhí)行計劃沒有走索引進行查詢,但是親測時是走了。課上需要進行統(tǒng)計信息的收集。查看統(tǒng)計信息 disql
call dbms_stats.table_stats_show(''TEST,'T_TEST')test用戶的t_test表執(zhí)行統(tǒng)計信息
call dbms_stats.gather_table_status('TEST','T_TEST')然后執(zhí)行查看計劃,發(fā)現(xiàn)走索引了。
數(shù)據(jù)字典和動態(tài)性能視圖
- 數(shù)據(jù)字典
- DBA_*:查詢數(shù)據(jù)庫中所有的對象,比如 DBA_TABLES, DBA_VIEWS, DBA_OBJECTS, DBA_ROLES,DBA_ROLE_PRIVS,DBA_SOURCE 源碼等。
- ALL_*:查詢當前用戶所訪問權(quán)限范圍內(nèi)對象
- USER_*:查詢當前用戶下的對象。
動態(tài)性能視圖
- v$ 開頭的是動態(tài)視圖。
如:v$datafile、v$tablespace、v$session、v$men_pool 、v$lock等等。 - 注意:當 A 刪除操作,未提交,另外一個會話 B 執(zhí)行刪除 該記錄時會產(chǎn)生行鎖??刹榭?v$lock;
數(shù)據(jù)庫備份還原
-
基礎(chǔ)知識
物理備份、邏輯備份 (聯(lián)機 dimp 和 dexp)
聯(lián)機備份、脫機備份。聯(lián)機(數(shù)據(jù)庫開啟狀態(tài)),脫機(數(shù)據(jù)庫關(guān)閉狀態(tài))
備份分類:全庫備份、表空間備份、表備份(只能聯(lián)機下備份)、歸檔日志備份。
物理備份包含聯(lián)機備份、脫機備份
DM控制臺工具進行脫機備份,DM服務(wù)器管理工具進行聯(lián)機備份
需要開啟APService服務(wù),有時AP服務(wù)會停,這時需要啟動。會出現(xiàn)啟動失敗的問題,查看日志后,如果報管道文件已經(jīng)存在,就到/dmdbms/bin下刪除文件 rm -R DM_PIPE*
備份文件包含元數(shù)據(jù)和備份文件:
-
聯(lián)機備份需要開啟歸檔
- 命令行方式(disql)
- 開歸檔需要讓數(shù)據(jù)庫在mount
alter database mount - 開啟歸檔
alter database archivelog - 設(shè)置歸檔
alter database add archivelog 'dest=/xx/dmdbms/arch,type=local,file_size=100,space_limit=1024' - 打開狀態(tài)
alter database open
- 開歸檔需要讓數(shù)據(jù)庫在mount
- 客戶端工具方式 DM管理工具-》管理服務(wù)器-》系統(tǒng)管理進行狀態(tài)轉(zhuǎn)換,歸檔配置進行設(shè)置。
- 查看是否開啟歸檔(數(shù)據(jù)字典方式)
select arch_mode from v$database
- 命令行方式(disql)
-
聯(lián)機備份與還原
- 命令行方式(disql)
- 庫備份
backup database full backupset 'full'第一個full是全庫備份,第二個full是備份的文件夾。不指定目錄,默認在當前示例(/data/DAMENG/bak 目錄)的目錄。 - 表空間備份
backup tablespace "tbs_02" backupset 'tbsfull'表空間要加雙引號,不然報無效的表空間錯誤,如果指定目錄,需要寫絕對目錄路徑 - 還原
Alter tablespace "tbs_02" offline; restore tablespace "tbs_02" datafile 1 from backupset '/xx/data/DAMENG/bak/tbsfull'; Alter tablespace "tbs_02" online; - 庫備份
- 命令行方式(disql)
注意:數(shù)據(jù)庫表空間恢復會自動恢復到最新狀態(tài),假如在備時中 A 表存在,后來 刪除 A 表,這時數(shù)據(jù)庫表空間恢復,會自動根據(jù)歸檔日志恢復到最新狀態(tài),所以沒有A表。
DM管理工具,備份中進行操作
-
脫機備份與還原恢復
脫機備份,是使用工具 dmrman,在脫機狀態(tài)下備份,APService 服務(wù)需要開 啟。脫機備份只能進行全庫備份和歸檔備份。不指定目錄,默認創(chuàng)建在bak下。-
dmrman回車開始執(zhí)行命令。最好進安裝目錄下的/bin 執(zhí)行。 - 命令方式備份
backup database '/xx/data/DAMENG/dm.ini' backupset '/xx/backup/dmrman' - 命令方式還原
restore database 'xx/data/DAMENG/dm.ini' from backupset'/xx/backup/dmrman' - 命令方式恢復
recover database 'xx/data/DAMENG/dm.ini' - 窗口工具在DM控制工具中進行操作
-
-
邏輯備份
dexp ()和 dimp 在終端直接執(zhí)行
支持全庫導出、按用戶名導出、模式名導出、表導出- 導表
dexp userid=TEXT/xxxxx tables='t_test'沒有指定目錄,默認創(chuàng)建在當前終端pwd下的目錄 - 按模式導出:
dexp userid=test/xxxx schemas=s_test file=/xx/data/s_test.dmp log=/xx/data/s_test.log - 不指定參數(shù)默認導出登錄用戶同名的模式 schema
- 導出用戶下所有 schema:
dexp userid=test/xxxx owner=test file=/xx/data/testuser.dmp log=/xx/data/testuser.log - 導出系統(tǒng)所有:
dexp userid=sysdba/xxx full=y file=/xx/data/full.dmp log=/xx/data/full.log - 把數(shù)據(jù)從 test 模式導入 test01 用戶
dimp userid=sysdba/xxx file=/xx/data/test.dmp log=/xx/data/test01.log remap_schema=test:test01
- 導表
作業(yè)管理
有與 oracle 兼容的 dbms_job, dbms_scheduler 系統(tǒng)包,可以使用這兩個系統(tǒng)包創(chuàng)建作 業(yè)(默認沒有創(chuàng)建此兩個系統(tǒng)包,需手工創(chuàng)建)。達夢的這兩個包作業(yè)支持調(diào)用 DM SQL、 存儲過程,不支持調(diào)用外部命令。
- disql 開啟 dbms_job
SP_INIT_JOB_SYS(1)創(chuàng)建。0 關(guān)閉
SP_INIT_DBMS_SCHEDULER_SYS(1);
不開啟執(zhí)行desc dbms_job;會報無效的對象名 - DM管理服務(wù)器,代理中進行操作。
SQL
- DCL(權(quán)限控制):grant、revole 權(quán)限控制。
- DDL(數(shù)據(jù)控制):create、truncate、drop、alter ,可自動提交。
- DML(數(shù)據(jù)操作):數(shù)據(jù)操做語言,insert、update、delete
rollback, commit; - 集函數(shù)
- sum() count() avg()
- 環(huán)比:同比:LISTAGG/LISTAGG2
- 排行榜 dense_rank(), rank(), row_number()
- 分析函數(shù)
partition by (主要是分組)
select emp.EMPLOYEE_NAME, b.DEPARTMENT_NAME, emp.SALARY, DENSE_RANK() over(order by emp.SALARY desc) rankid1,
DENSE_RANK() over(partition by emp.department_id order by emp.SALARY desc ) rankid_dept
from dmhr.employee emp, DMHR.DEPARTMENT b where EMP.DEPARTMENT_ID = b.DEPARTMENT_ID
order by emp.SALARY desc;
ODBC Linux 配置
用root用戶進行操作
解壓
tar -xvf unix.tar.gz-
檢查電腦是否安裝gcc
rpm -qa | grep gcc- 麒麟6默認沒有安裝
yum -y install gcc - 執(zhí)行報 couldn't resolve host 'ftp.cs2c.com.cn' 錯誤,
cd /etc/yum.repos.d修改 yum.repos.d 將所有baseurl 換成 http://download.cs2c.com.cn/neokylin/server/releases/6.0/x86_64/trusted/
- 麒麟6默認沒有安裝
執(zhí)行
./configure、make、make install配置
odbc.ini 和 odbcinst.ini一般文件在/usr/local/etc 下。也可以odbcinst -j進行查看路徑obdc.ini
[dm7]
Description = DM ODBC
DRIVER = DM7 ODBC DRIVER
SERVER = localhost
UID = sysdba
PWD = xxx
TCP_PORT = 5236
- odbcinst.ini
[DM7 ODBC DRIVER]
Description = ODBC Driver For DM7
DRIVER = /home/xx/dmdbms/bin/libdodbc.so
- 配置完成后,切換到
su - xxx安裝用戶,通過odbc dm7 進行連接isql dm7
其它
- Delete 沒有降低水位線,truncate 降低了水位線。
- disql 下調(diào)用sql文件
start xx.sql如導入之前導出的sql數(shù)據(jù)文件。執(zhí)行完后需要commit