本文目錄一覽:
- 1、關於達夢資料庫的操作
- 2、達夢資料庫怎麼樣
- 3、達夢資料庫解鎖方法
- 4、達夢資料庫常見參數調整
關於達夢資料庫的操作
首先,必須強調的一點是達夢資料庫確實是具有自主知識產權的國產資料庫。
To 那些連達夢資料庫安裝軟體都沒見到過而亂噴的朋友們:
達夢資料庫與國外Oracle比起來確實沒有什麼優勢,達夢資料庫確實存在很多問題,但是,達夢在發展,努力改進產品,努力縮小與國外產品的優勢,至少達夢是國產基礎軟體中敢站出來在市場上競爭的。
朋友們,你們一邊用著國內外的盜版軟體,一邊噴國產軟體爛,難道你們就沒有一丟丟的內疚?軟體的成長不是靠軟體廠商的努力,也需要用戶的配合,為什麼提到國產基礎軟體,你們就想噴?有多少人真正實打實的用過,評估過?
國產基礎軟體承載了國家的期望,國家給予了一定的支持,你們就說成騙錢了,這麼好騙,你倒是騙出一個達夢資料庫來看看。
批評可以,如果給達夢資料庫指出了具體的問題,達夢一定會認證聽取,努力改進,但是請在噴之前問問自己是不是有理有據…
還有一點,達夢資料庫現在已經走出國門了….
達夢資料庫怎麼樣
達夢是一家國產資料庫,根據它的介紹,感覺還不錯。不過實際使用暫時未知,它號稱是國產第一,但是又有其他資料庫說是中國老大,這個沒法評估,還需要實際測測才知道。不過看過論壇的評論,貌似它兼容oracle比較好
達夢資料庫解鎖方法
看不到問題詳細描述。是用戶被鎖,還是表被鎖?
登錄失敗(密碼輸入錯誤)次數過多是,就會出現用戶被鎖的情況,這時應該使用 sysdba 賬戶登陸,在左側的導航欄目錄,找到【用戶】節點,點開 對應用戶,通過右鍵(打開功能菜單),選擇【解鎖】該用戶即可。如此操作後,即可繼續使用原用戶 和它正確的密碼登錄了。
表被鎖,執行語句的時候,會提示鎖超時之類的。通過 V$LOCK 定位到阻塞(就是阻塞之後,報錯之前 —— 才可以查到)。需要預先打開兩個窗口,在一個窗口中,寫好 select * from v$lock where blocked=1; 這個語句,等待執行。在另一個窗口中,執行報錯的語句,執行之後(還沒有報錯),立即去窗口1中執行那個語句。就一定能夠查詢到記錄(被阻塞的事務相關的信息),然後通過這個信息(有 trx_id)就可以去 v$trx 以及 v$session 中,獲取到 我們要執行的這個sql 是被誰阻塞的了。可以通過 sp_close_session 殺掉阻塞源頭的會話,也可以找到執行阻塞源頭事務的人(沒有提交)讓他們提交,就不會造成阻塞了。或者乾等著,看阻塞源頭的事務什麼時候提交。
達夢資料庫常見參數調整
下面是在命令行客戶端工具直接執行的腳本(執行後,會輸出待調整參數):
備註:第一次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_CPU8 then 8 3 when N_CPU32 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 dual
;
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;
/
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/189105.html