java 11 不支援java web start

公司電子表單為鼎新的easyflow GP版, 需安裝支援java web start版本的java, 但我寫程式, 電腦只安裝java11, 不支援java web start怎辦? 我們可以下載IcedTea-Web , 安裝後就可以屎用了.

javaws xxx.jnlp

若出現unsigned jar 問題, 可以找到jdk或是jre , 修改conf\security\java.security這個檔案(安全風險請自行評估), 跳過安全驗證.

jdk.jar.disabledAlgorithms=MD2, RSA keySize < 1024, DSA keySize < 1024

windows sync center 的問題

這次出差越南, 遇到一個問題, 某台windows 10連到AD分享出來的folder, 但外包的電腦公司, 居然搞出該分享folder有sync center功能, 只為了讓使用者可以offline 做事, 但某天sync center同步功能壞了, 一樣是分享的fold, 怎樣也看不到別人異動過的.

我來處理問題時, 並不知道有做sync center, 這輩子也沒遇過”分享出來的目錄居然裡面內容跟別人不同“, 找了好久才發現是windows的sync center 搞鬼,於是我想辦法停用這功能, 但無能為力, google一些時間, 發現只要下這個指令, 重開機就可以解除該folder sync 功能.

#cmd run as administrator
REG ADD "HKLM\System\CurrentControlSet\Services\CSC\Parameters" /v FormatDatabase /t REG_DWORD /d 1 /f 

Proxmox VE安裝免費網域主控站Turnkey Domain Controller

微軟的網域主控站超級好用, 很適合用來管理, 甚至交給非IT人員,如管理部同仁協助作業

網域主控好用,若只用來群組權限控管, 帳號密碼控管, 建議安裝免費的網域管理伺服器Turnkey Domain Controller就好了.

另外, 像我使用自製的容器郵件伺服器(docker-postfix-ad) ,須綁定微軟網域伺服器認證 ,也很適合安裝Turnkey Domain Controller.

TurnkeyLinux 有一大堆免費的軟體, 且支援Proxmox VE , 有vm版本, lxc版本,及vmware版, 琳瑯滿目.

安裝Turnkey Domain Controller 相當簡單,只要下載iso檔案,安裝成一個vm就好了, 當然也有lxc版本,但我並沒有測試過.
詳細請參閱 https://www.youtube.com/watch?v=PMUUuXmtFc8
安裝完畢, 用我筆電的RSAT工具, 就能管理網域主控站了

以下為安裝之後, 要注意的部分

  • 設定ip
    安裝完畢, 因為沒有設定ip, 所以無法使用瀏覽器登入, 請輸入指令 confconsole, 並且設定ip
  • 設定完IP, 使用瀏覽器登入
    http://ip
    登入後點選“Samba conf via Webmin(login first)
  • 入Webmin, 需先開放網路介面接聽功能, 否則電腦無法加入網域
    Servers -> Samba Windows File Sharing -> Unix Networking
  • 將Network interfaces 改為 Automatic
    *Automatic
  • 修改後要重啟samba server
    Restart Samba Servers
  • 修改要加入網域之電腦dns ,
    第一dns請改成 Turnkey Domain Controller 的IP
    第二dns必須設定, 輸入1.1.1.1 這類可查詢的dns server , 因Turnkey Domain Controller預設沒有dns server, 所以無法正常解析.

電腦dns設定正確, 就能成功找到網域主控站, 並且加入囉

目前安裝版本為 16.2 , 樹系2008R2, 經測試win11 22h2無法加網域, 將在17.0 樹系2012R2獲得解決.

win10/11 專業版安裝 RSAT 微軟遠端伺服器管理工具

  • 應用程式->選用功能->檢視功能

  • 輸入rsat , 並且安裝 RSAT: Active Directory Domain Service和輕量型目錄服務工具

  • 開始安裝, 安裝完畢重開機

  • 以管理者身分(Run as Administrator)執行終端機 , 或是 powershell, 輸入
#runas /netonly /user:<網域>\administrator "mmc /server=<網域主機ip>"
#範例
runas /netonly /user:kafeiou\administrator "mmc /server=10.192.130.226"
  • 接下來就會跑出一個mmc程式, 裡面是空的, 請自己加上Active Diredctory使用者和電腦 , 就可以使用了



解決 oracle 11G 出現的ORA-01555 問題

oracle我很不熟, 但在公司使用exp指令備份oracle 11g資料時, 遇到以下錯誤訊息

EXP-00056: ORACLE error 1555 encountered
ORA-01555: snapshot too old: rollback segment number  with name "" too small
ORA-22924: snapshot too old

爬了文, 解法有三, 我從最簡單的解法開始, 第一種,第二種都失敗, 直到第三種方式才成功.
我建議從第三種方式開始解,該方法不需修改系統設定, 影響較小.

  • 方法一
    修改 undo_retention秒數, 把時間拉大,
    **我是用備份的方式測試, 發現改了之後還是一樣出錯
SQL>  show parameter undo;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_management                      string      AUTO
undo_retention                       integer     21600
undo_tablespace                      string      UNDOTBS1
SQL> ALTER SYSTEM SET UNDO_RETENTION = 43200;
SQL>
System altered.

SQL>
  • 方法二
    直接加大undo tablespace ,
    這要小心點, 有很多眉角, 似乎牽涉到小心舊undo tablesapce 是否已呈現”OFFLINE”, 且新的undo tablespace 呈現”ONLINE’
# 新增undo tablespace 
create undo tablespace UNDOTBS2 datafile '/.../oradata/undotbs02.dbf' size 30000M autoextend on next 100m maxsize unlimited;
#生效
alter system set undo_tablespace = UNDOTBS2 scope=both;

#查看狀態
select tablespace_name, status, count(*) from dba_rollback_segs group by tablespace_name, status; 
select status,segment_name from dba_rollback_segs where status not in ('OFFLINE') and tablespace_name='UNDOTBS1';
select tablespace_name, status, count(*) from dba_rollback_segs group by tablespace_name, status;
#確認舊的已是offline , 就可以刪掉舊的
Drop tablespace UNDOTBS1 including contents and datafiles;
#再次查看是否已變成新的undo tablespace
show parameter undo
select tablespace_name tablespace, status, sum(bytes)/1024/1024 sum_in_mb, count(*) counts
from dba_undo_extents
group by tablespace_name, status order by 1,2;
  • 方法三
# 先建立一個資料表, 用來儲存有問題的資料ID(ROWID)
SQL> CREATE TABLE CORRUPTED_ROWS (CORRUPTED_ROWID ROWID, ERROR_NUMBER NUMBER);

Table created.

接下來將有錯誤資料表table schema , 欄位類型為clob , blob 欄位列出來, 問題一定在這幾個欄位之中

# 以下紅色部分請改為有問題資料表與欄位名稱, 若沒有出現錯誤, 就換下一個欄位(fieldname)試試看
SET TIMING ON
DECLARE 
   ERROR_1578  EXCEPTION;
   ERROR_1555  EXCEPTION;
   ERROR_22922 EXCEPTION;
   PRAGMA EXCEPTION_INIT(ERROR_1578,  -1578);
   PRAGMA EXCEPTION_INIT(ERROR_1555,  -1555);
   PRAGMA EXCEPTION_INIT(ERROR_22922, -22922);
   N NUMBER;
BEGIN
   FOR ROW IN (SELECT ROWID, fieldname FROM user.table)
   LOOP
      BEGIN
         N:=DBMS_LOB.INSTR(ROW.fieldname, HEXTORAW('889911'));
	  EXCEPTION
         WHEN ERROR_1578  THEN 
              INSERT INTO CORRUPTED_ROWS VALUES (ROW.ROWID, 1578);
			  COMMIT;
         WHEN ERROR_1555  THEN 
              INSERT INTO CORRUPTED_ROWS VALUES (ROW.ROWID, 1555);
			  COMMIT;
         WHEN ERROR_22922 THEN 
              INSERT INTO CORRUPTED_ROWS VALUES (ROW.ROWID, 22922);
			  COMMIT;
       END;
   END LOOP;
END;
/

接下來查詢是否真有問題資料

SELECT * FROM CORRUPTED_ROWS;
#執行以下這行指令應該要出錯
SELECT fieldname FROM user.table WHERE ROWID IN (SELECT CORRUPTED_ROWID FROM CORRUPTED_ROWS);

清空有問題的資料欄位

#若欄位型態是clob就用empty_clob(), 若為blob,就改成empty_blob(), 有幾個欄位出問題就清空幾個
update xxx.table set fieldname = empty_clob()where ROWID IN (SELECT CORRUPTED_ROWID FROM CORRUPTED_ROWS);

若不敢清空, 可以跳過有問題的資料備份

exp system@yourinstance BUFFER=81920 file=/tmp/backup.dmp  tables=user.table QUERY=\"WHERE rowid NOT IN \(SELECT CORRUPTED_ROWID FROM CORRUPTED_ROWS\)\"

參考資料

https://www.modb.pro/db/47021

Linux 掛載nfs , cifs (smb) 讓 restic 備份, 遇到備份效率緩慢問題

我已經使用 restic 做離線備份半年了 , 效果還不錯, 但是遇到掛載nfs的資料, 效率就有點差了,
當然備份效率差的原因之一, 是我暴力備份docker or podman 裡面storage 資料, 那邊檔案超級多, 又是透過 nfs 方式備份, 就算restic 每次只做差異性, 還是很慢.

後來想想, 我的虛擬伺服器 proxmox ve 也有遇到掛載nfs效率問題, 解法就是使用soft link, 所以自己使用mount指令掛載nfs應該也是可以改用soft方式, 以下列出一些心得

  • cifs 掛載可用cache=loose
mount -t cifs -o username=xxx,password=xxx,domain=yyy,ro,cache=loose  ...
  • nfs 可用soft
mount -t nfs -o ro,soft ...
#查看
nfsstat -m

win7,win2008 , outlook 2010支援TLS 1.1 TLS 1.2連線

最近升級mail server , 也停用了 TLS 1.0 , TLS 1.1 , 同時也引發win7,windows 2008, office 2010不支援問題,因此需要手動升級.

以上兩步驟, 就可以讓outlook 2010支援新版連線了.
詳請參考以下文章

https://support.microsoft.com/en-us/topic/update-to-enable-tls-1-1-and-tls-1-2-as-default-secure-protocols-in-winhttp-in-windows-c4bd73d2-31d7-761e-0178-11268bb10392

升級mail server不支援TLS 1.0 , 1.1的問題

postfix 出現以下錯誤

SSL routines:tls_early_post_process_client_hello:unsupported protocol

我不知道如何處理, 爬文說要改成向下相容… 我才不要勒

vi /etc/crypto-policies/back-ends/opensslcnf.config
#改成
#MinProtocol = TLSv1.2
MinProtocol = TLSv1
MaxProtocol = TLSv1.3

vi /etc/postfix
#確認沒有被限制
# Disable SSLv2, SSLv3, TLSv1, TLSv1.1
#smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
#smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
#smtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
#smtp_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1

Rocky Linux 安裝httpd 反向代理

真是被selinux搞死,但,咱們工程師, 就是要勇往直前

RL9 安裝httpd後, 若要啟用proxy , reverse 功能 , 目前我遇到要改兩點

  • 修改httpd設定, 把心跳這一行mark起來
    vi /etc/httpd/conf.modules.d/00-proxy.conf
#LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so
  • selinux 啟用連線功能
sudo setsebool -P httpd_can_network_connect 1
#2023/6/20 否則會出現 Permission denied: AH00957 錯誤

Rocky Linux podman 更改storage注意事項

之前使用docker, 我會把selinux關掉, 這次改用podman, 我順帶挑戰不關selinux , 果然就遇到問題了

  • storage存放位置變更

正確的是, 我原本安裝時候, 就將路徑改了 , 請參照這篇文章 , 但是後來又新增一個新的partition , 用mount的方式覆蓋原本podman storage 路徑, 這看起來很棒, 都不用改,但還是遇到問題了, 我啟用原本的container, 出現

我用podman logs <container name> 查看有這bug , 後來想想應該是selinux權限問題, 就重新跑一次這個指令

restorecon -R -v /podman/storage/
# /podman/storage 是我安裝podman改的路徑

1 ... 6 7 8 9 10 ... 57