❶ 達夢資料庫如何實現2個資料庫的互相實時同步
1、如果RDS上的數據沒有發生增刪改的操作的話,可以生成物理備份或者邏輯備份,然後將物理備份和邏輯備份通過Xtrabackup或者mysqlmp將數據導入到自建庫。
2、如果在物理備份已經生成後對於資料庫仍然有增刪改的操作的話,則需要您在恢復物理備份後還需要追加後續的binlog文件,可以通過API/控制台獲取binlog文件去追加增量數據。
這里有一個非常需要注意的一點是在解壓出來物理備份文件後除了數據和索引文件外還有得到如下圖中的一些文件。
用戶在應用binlog的時候需要兩個pos點都測試一下,哪個pos點可以在binlog中找到從這個pos點開始應用binlog。
3、用戶想要將RDS上的增量數據同步在自建庫的binlog上可以使用DTS的數據訂閱功能,可以通過SDK消費增量數據即可再自己應用該數據。
❷ 達夢資料庫常見參數調整
下面是在命令行客戶端工具直接執行的腳本(執行後,會輸出待調整參數):
備註:第一次dminit後就要調整,獲取的是當前系統可用內存。
set serveroutput on
declare
v_maxsess bigint;
v_cpus bigint;
v_mem_mb bigint;
v_bufs bigint;
v_refs bigint;
v_maxdisk_mb bigint;
begin
-- manual set
v_maxsess=5000;
-- reload messages
v_cpus=64;
v_mem_mb=500000;
v_bufs=101;
v_refs=67;
v_maxdisk_mb=100000;
SELECT cast(67434610688*0.8/1024/1024 as int) into v_maxdisk_mb FROM V$SYSTEMINFO ORDER BY DRIVER_TOTAL_SIZE DESC ;
-- SELECT * FROM V$SYSTEMINFO ORDER BY DRIVER_TOTAL_SIZE DESC LIMIT 1 OFFSET 1;
SELECT case when N_CPU<8 then 8 3 when N_CPU<32 then N_CPU 2 else 64 end n_CPU,FREE_PHY_SIZE/1024/1024 MEM
into v_cpus,v_mem_mb FROM V$SYSTEMINFO LIMIT 1;
with a(val) as(select 5 union all
select 7 union all
select 11 union all
select 13 union all
select 17 union all
select 19 union all
select 23 union all
select 29 union all
select 31 union all
select 37 union all
select 41 union all
select 43 union all
select 47 union all
select 53 union all
select 59 union all
select 61 union all
select 67 union all
select 71 union all
select 73 union all
select 79 union all
select 83 union all
select 89 union all
select 97 union all
select 101),b as(
select rownum rn,val val from a)
select (
select VAL bufs from b where rn=( 3 + CAST( v_mem_mb/1024.0 1.0/2048 100 AS INT))) v_bufs,,(
select VAL refs from b where rn=( 3 + CAST( v_mem_mb/1024.0 1.0/2048 100 AS INT)) )v_refs into v_bufs,v_refs from al
;
print '
begin
SP_SET_PARA_VALUE(2,''MAX_OS_MEMORY'',100);
SP_SET_PARA_VALUE(2,''MEMORY_POOL'',cast( '||v_mem_mb||' 0.1 as int) );
SP_SET_PARA_VALUE(2,''MEMORY_TARGET'',cast ( '||v_mem_mb||' 0.2 as int) );
SP_SET_PARA_VALUE(2,''MEMORY_MAGIC_CHECK'',1);
SP_SET_PARA_VALUE(2,''VM_POOL_TARGET'',cast( (0.37) '||v_mem_mb||' 1024 0.6/'||v_maxsess||' as int));
SP_SET_PARA_VALUE(2,''SESS_POOL_TARGET'',cast( (0.37) '||v_mem_mb||' 1024 0.3/'||v_maxsess||' as int ) );
SP_SET_PARA_VALUE(2,''CACHE_POOL_SIZE'',cast( (0.37) '||v_mem_mb||' ('||v_maxsess||'/2000.0)*0.55 as int) );
SP_SET_PARA_VALUE(2,''BUFFER'',cast('||v_mem_mb||' * 0.5 as int));
SP_SET_PARA_VALUE(2,''MAX_BUFFER'',cast('||v_mem_mb||' * 0.5 as int));
SP_SET_PARA_VALUE(2,''RECYCLE'',10000*'||v_cpus||'/100);
SP_SET_PARA_VALUE(2,''BUFFER_POOLS'','||v_bufs||');
SP_SET_PARA_VALUE(2,''RECYCLE_POOLS'','||v_refs||');
SP_SET_PARA_VALUE(2,''WORKER_THREADS'','||v_cpus||');
SP_SET_PARA_VALUE(2,''TASK_THREADS'','||v_cpus||');
SP_SET_PARA_VALUE(2,''HJ_BUF_GLOBAL_SIZE'', cast('||v_mem_mb||' * 0.18 as int));
SP_SET_PARA_VALUE(2,''HJ_BUF_SIZE'', cast('||v_mem_mb||' * 0.0018 as int));
SP_SET_PARA_VALUE(2,''HAGR_BUF_GLOBAL_SIZE'',cast('||v_mem_mb||' * 0.12 as int));
SP_SET_PARA_VALUE(2,''HAGR_BUF_SIZE'', cast('||v_mem_mb||' * 0.0024 as int));
SP_SET_PARA_VALUE(2,''DICT_BUF_SIZE'','||v_refs||' 5);
SP_SET_PARA_VALUE(2,''TEMP_SIZE'',5000 '||v_mem_mb||'/1024.0/256);
SP_SET_PARA_VALUE(2,''VM_POOL_SIZE'','||v_refs||' 5);
SP_SET_PARA_VALUE(2,''SESS_POOL_SIZE'','||v_refs||' 5);
SP_SET_PARA_VALUE(2,''MAX_SESSIONS'','||v_maxsess||');
SP_SET_PARA_VALUE(2,''MAX_SESSION_STATEMENT'','||v_maxsess||'*8);
SP_SET_PARA_VALUE(2,''ENABLE_ENCRYPT'',0);
SP_SET_PARA_VALUE(2,''USE_PLN_POOL'',1);
SP_SET_PARA_VALUE(2,''OLAP_FLAG'',2);
SP_SET_PARA_VALUE(2,''OPTIMIZER_MODE'',1);
SP_SET_PARA_VALUE(2,''VIEW_PULLUP_FLAG'',1);
SP_SET_PARA_VALUE(2,''COMPATIBLE_MODE'',2);
SP_SET_PARA_VALUE(2,''MONITOR_TIME'',0);
SP_SET_PARA_VALUE(2,''ENABLE_MONITOR'',1);
SP_SET_PARA_VALUE(2,''SVR_LOG'',0);
end;
'
print '
create tablespace "USER" datafile ''USER01.dbf'' size 200;'
--print '
--alter user SYSDBA default tablespace "USER";'
print '
sp_set_para_value(1,''PWD_POLICY'',0);'
print '
create user DMDBA identified by DMDBA default tablespace "USER";'
print '
GRANT DBA TO dmdba;'
print '
sp_set_para_value(1,''PWD_POLICY'',2);'
print '
ALTER DATABASE MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE ADD ARCHIVELOG ''DEST=/home/dmdba/dmdbms/arch,TYPE=LOCAL,FILE_SIZE=1024,SPACE_LIMIT='||cast(v_maxdisk_mb*0.1 as int)||'''
ALTER DATABASE OPEN;'
print '
sp_set_para_value(1,''BAK_USE_AP'',2);
BACKUP DATABASE FULL TO DMBAK_FULL_00 BACKUPSET ''DMBAK_FULL_00'' COMPRESSED;
'
exception
when others then
raise_application_error (-20001,substr( ' 執行失敗, '||SQLCODE||' '||SQLERRM||' '||dbms_utility.format_error_backtrace , 1, 400));
end;
/
❸ 達夢資料庫varchar改為number報錯
~
關注
達夢資料庫常見報錯及解決辦法 原創
2021-09-13 16:53:28
果味怪叔叔~
碼齡3年
關注
在達夢資料庫的日常使用中我們可能會遇到很多問題,今天我將自己近期常遇到的錯誤進行總結匯總。
1、連接資料庫報錯:網路通信梁型異常
解決方法:
資料庫連接報網路通信異常原因通常只有兩個,資料庫服務啟動異常或者資料庫伺服器網路通信異常
1. 登錄資料庫伺服器檢查資料庫進程是否存在ps –ef|grep dmserver
2. 檢查資料庫伺服器網路通信ping資料庫伺服器地址
3. 檢查資料庫伺服器數據段渣銀庫埠號通信是否正常telnet資料庫伺服器ip資料庫埠號
2、資料庫啟動報錯:dmserver startup failed, code = -104 [Invalid INI file]
解決方法:
資料庫正常啟動需要有數據文件,該類報錯一般存在如下兩方面原因:
1)數據文件不存在;
2)啟動資料庫的用戶沒有讀寫數據文件的許可權。
3、資料庫連接報錯:用戶名或密碼錯誤
解決方法:
此類錯誤只需輸入正確的密碼即可。
如果忘記密碼,以管理員登錄資料庫後修改該用戶的密碼:
alter user USERNAME identified by 「PASSWD」
前面的USERNAME是用戶名,後面的PASSWD是密碼。
需要注意用戶名不區分大小寫,密碼區分大小寫。
4、登錄資料庫時報錯「用戶已被鎖」
解決方法:
使用SYSDBA登錄到資料庫後,滑鼠右鍵在對應「登錄」名上單擊「解鎖」,此時「登錄名」上的小鎖符號消失;
或使用SYSDBA登錄後手動調用存儲過程call SP_UNLOCK_LOGIN(『登錄名『)解鎖;
通常是用戶多次嘗試登錄但密碼錯誤導致,有時候應用系統配置了資料庫連接池,應用啟動時初始化連接池會多次連接資料庫,如用戶名密碼不對,則很快就會鎖住該用戶。
5、執行update,insert,delete語句完成後程序或其他資料庫連接查不到改變後的數據
解決方法:
造成此類現象的原因單條sql或者sql腳本執行完上述語句後沒有進行commit操作導致。
資料庫的執行單元是事務,事務如果沒有commit或者rollback,仍處於未完成狀態,根據事物ACID特性中的隔離性,其他資料庫連接無法看到未完成的資料庫事務對數據的改變
6、資料庫語句長時間不能執行完成,類似卡住的狀態
解決方法:
1)對於select等查詢語句,需要對sql語句進行分析優化,提升查詢效率
2)update,insert,delete語句執行慢可能的原因為資料庫阻塞導致,需要查握宴找出導致阻塞的語句,並對語句進行處理
7、執行語句報錯「字元串截斷」
解決方法:
修改的數據,超過了資料庫中字元類型(VARCHAR,CHAR)定義的長度,如VARCHAR(64),插入的數據位元組長度超過64就會報錯
8、執行語句報錯「數據溢出」
解決方法:
修改的數據,超過了資料庫中數值類型(int,number,decimal)定義的長度,如decimal(6,2),插入1000000,插入的數據超過定義的范圍就會報錯。
9、執行語句報錯 「不能修改或刪除聚集索引的列」或「試圖刪除聚集主鍵」
解決方法:
若想對有聚聚索引的列進行修改,可以重建表,或者重新在別的列上建立一個聚集索引。該列上的索引就變成非聚集了,就可以修改了。
很多時候是因為創建表時指定的主鍵被自動創建為聚集索引了,可以修改ini參數,將PK_WITH_CLUSTER設為0,則默認創建主鍵時為非聚集型。