備份還原
備份作用?
1、防止誤操作。
2、軟硬件故障,做恢復
3、防止天災。
備份的方式:物理備份和邏輯備份
備份的介質:磁盤,磁帶,光盤
集羣:數據守護 ,dsc(rac)
也支持第三方的備份軟件:上海愛數,鼎甲
物理備份
冷備和熱備
冷備:DMAP服務是打開的,數據庫實例是關閉的);
方式:
- 利用控制枱工具去備
- DMRMAN工具備份:
- 冷備份,要停止數據庫,如果不停止造成數據丟失。
- 熱備份(DMAP服務是打開的,數據庫實例是打開的,數據庫是歸檔模式)
開歸檔:命令方式:
SQL> alter database mount;
SQL> alter database add archivelog 'type=local,dest=/dm7/arch,file_size=64,space_limit=0';
SQL> alter database archivelog;
SQL> alter database open;
SQL> select name,status$,arch_mode from v$database;
利用管理工具去開歸檔
[dmdba@dca01 ~]$ disql sysdba/SYSDBA@localhost:5238
SQL> select name,status$,arch_mode from v$database;
命令行方式下全備,增量備(考試的時候建議用熱備)
# 全備:
SQL> backup database full backupset '/dm7/backup/full_bak';
# 增量備:
SQL> backup database increment backupset '/dm7/backup/incr_bak';
3、利用管理工具作熱備
還原:
模擬表空間損壞:
[dmdba@dca01 DAMENG]$ mv tbs1_02.dbf tbs1_02.dbf.bak
# 重啓服務
# 數據庫處於mount狀態,手動open
SQL> restore tablespace tbs1 from backupset '/dm7/backup/full_bak/';
SQL> alter database open;
SQL> alter tablespace tbs1 online;
邏輯備份
導入導出(DIMP,DEXP)分為四種級別:
數據庫級別,用户級別,模式級別和表級別,四種級別獨立互斥,不能同時存在,四種級別提供的功能:
- 數據庫級別:導出或導入整個數據庫的訪問對象。
- 用户:導入或導出一個或多個用户所擁有的所有對象。
- 模式:導入或導出一個或多個模式下的所有對象。
- 表級:導出或導入一個或多個指定表或表分區。
1、邏輯導出
[dmdba@dca01 bin]$ ./dexp
sysdba/dameng123@localhost:5236 file=dexp01.dmp
log=dexp01.log directory=/dm7/backup/dexp full=y
2、導入:
[dmdba@dca01 bin]$ ./dimp sysdba/SYSDBA@localhost:5238 file=/dm7/backup/dexp/dexp01.dmp log=/dm7/backup/dexp/dimp02.log;
作業
定時去執行的一組任務
考試時儘量使用管理工具來做。命令多且繁雜。
定期去備份
- 創建代理環境(達夢會創建一個sysjob模式)
- 創建作業:
call SP_CREATE_JOB('JOB1',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('JOB1');
call SP_ADD_JOB_STEP('JOB1', 'JOB1', 5, '01000/dm7/backup/JOB', 1, 2, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('JOB1', 'JOB1', 1, 2, 1, 64, 0, '22:00:00', NULL, '2020-02-19 14:48:01', NULL, '');
call SP_JOB_CONFIG_COMMIT('JOB1');
定時增量備份
call SP_CREATE_JOB('JOB2',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('JOB2');
call SP_ADD_JOB_STEP('JOB2', 'JOB2', 5, '11000/dm7/backup/full_bak|/dm7/backup/JOB', 1, 2, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('JOB2', 'JOB2', 1, 2, 1, 63, 0, '22:00:00', NULL, '2020-02-19 14:53:32', NULL, '');
call SP_JOB_CONFIG_COMMIT('JOB2');
DM 開發
支持 C 、 C++ 、 Java、Python、PHP、Perl 進行開發
/** 定義一個 DM JDBC 驅動串 */
String jdbcStr = "dm.jdbc.driver.DmDriver";
/** DM url 連接串 */
String urlString = "jdbc:dm://ip:5236";
配置 ODBC (考試要考)
# 檢查是否安裝了 gcc
rpm -aq|grep gcc
yum -y install gcc
tar -xzvf unixODBC-2.3.0.tar.gz
cd ./unixODBC-2.3.0
# 配置ODBC
./ configure --enable-gui=no
# 編譯ODBC
make
make install
# 檢查是否裝好了
odbc_config --version
# 下面兩個,都是獲取控制文件的路徑
odbc_config --odbcini
odbcinst -j
# 配置 ODBC.ini 和 odbcinst.ini
# 測試ODBC
isql dm7
存儲過程
寫匿名塊
declare (可選項)
begin
print("hello")
end;
set serveroutput on
begin
for i in 1..5 loop
print(i);
end loop;
end;
/
SQL> begin
2 for i in 1..5 loop
3 print(i);
4 end loop;
5 end;
案例 1:根據員工編號找其所在部門
CREATE PROCEDURE "TEST"."SNO"("BH" IN INT)
AS
DEPT INT;
BEGIN
SELECT DEPARTMENT_ID INTO DEPT FROM DMHR.EMPLOYEE WHERE EMPLOYEE_ID=BH;
PRINT(DEPT);
END;
觸發器
BEGIN
INSERT INTO TEST.T VALUE(:OLD.SALARY,NEW.SALARY)
END;