f 2021 ~ 迪貝之家

Microsoft SQL Server Log Shipping

SQL 7就有的技術,簡單的說就是資料庫複本資料同步的技術,而這份複本可以開放讀取的功能以分散營業資料庫的負載,也可純粹當成備援資料庫,不管是在本地還是異地。怎麼達成? 透過SQL Agent自動化排程進行備份、傳檔及復原等作業。

Oracle GolGateden

機房搬遷跨Site能即時同步資料庫利器

Nagios 資料庫維運自動化

一開始設計這架構時,就排除使用remote agent的想法因為在專業分工的組織下,要求安裝新軟體於既有系統是一件不太可行的方案,既然身為DBA就只能把資料庫instance當作是一個最大的agent 想辦法在資料庫內做到我想做的事情

This is default featured post 4 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured post 5 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

Ubuntu 20.04 安裝 K8s

 軟體安裝參照它囉~~

How to set up a Kubernetes cluster on-premise with kubeadm?


Step 1: The container runtime

curl -fsSL https://get.docker.com -o get-docker.sh

sudo sh get-docker.sh


Step 2: Installing kubeadm

To disable swap, you will need to:

Run swapoff -a

Open /etc/fstab file

Remove any swap entry for the file

Then, we can install all the components we will need to configure our cluster:

sudo apt-get update && sudo apt-get install -y apt-transport-https curl

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list

deb https://apt.kubernetes.io/ kubernetes-xenial main

EOF

sudo apt-get update

# Install components

sudo apt-get install -y kubelet kubeadm kubectl

# Hold version

sudo apt-mark hold kubelet kubeadm kubectl

Step III Initial Cluster 

kubeadm init --kubernetes-version=1.20.2 --ignore-preflight-errors=all --service-cidr 192.168.57.0/24  --pod-network-cidr 172.16.0.0/16  --apiserver-advertise-address 192.168.58.10

注意看你的畫面,有些指令非常重要

To start using your cluster, you need to run the following as a regular user:


  mkdir -p $HOME/.kube

  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

  sudo chown $(id -u):$(id -g) $HOME/.kube/config

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

上述指令不做,根本連kubectl 指令都沒辦法運作





記得把這一行指令拷貝下來,你的環境一定跟我不一樣啦~~

kubeadm join 192.168.58.10:6443 --token soktmz.d0vwvz57to497w6p \

        --discovery-token-ca-cert-hash sha256:5e1a615b4e4e474dcedd979f9d8b7cfa37691a32b15885072c765a51975d18c5

最後把 CNI 安裝上去 ,我也不是很清楚它是什麼?

我只知道是它內部的網路架構軟體

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

然後觀察node的狀態









然後再到各worker node執行那一段join cluster 的command

安裝好啦~~

這沒什麼好藏私的~~ 因為難的是...怎麼使用它....哈!!

行政程序法 第7條 比例原則

行政行為,應依下列原則為之:

一、採取之方法應有助於目的之達成。

二、有多種同樣能達成目的之方法時,應選擇對人民權益損害最少者。

三、採取之方法所造成之損害不得與欲達成目的之利益顯失均衡。

沒帶口罩及群聚不先規勸逕而重罰是大有問題的,應該可以提起行政救濟。

這是行政法的帝王條款。

法律保留原則

 

這幾個字,我們偉大的李老師在期中考就考了出來
我當時沒有很在意
哪來那麼多的時間,翻開課本逐字閱讀
考試及作業都嘛是上internet上找
人家寫了什麼??
我們就想一下,彙整後就交了出去
現在學期結束了
空大的影音教學給出來的頻寬實在是....
對了...是給一年的使用期限
那種頻寬能看嗎???
不過算了....暑假了...就是沒繳費了
算了....
上課的書也是自己買的
好吧~~就逐字閱讀吧~~
剛好看到這幾個字
又聯想這半年來民進黨政府的荒唐
書上是這麼描述的:
行政法意義的法律保留
係指任何行政處份(行為)
追根究柢皆須有法律之授權基礎
也就是說
行政機關不能夠有任何行為之自由
必須由法律授與其行為之合法性後
方可為之
這種積極要求也形成了法律對行政權控制的手段
對於依法行政之原則
法律保留原則無異成了此原則的核心要素

怎麼在win10 上安裝docker desktop

 

昨天一整天及耗了今天半天的時間
終於把它給搞掉啦~~
其實癥結點就在virtual box
把它移除掉就對了
我現在打算不再用任何的虛擬軟體
找一下WSL來研究
以後就用它吧!!
加上我以前曾經研究過一段時間docker
那時為了在筆電win 10 專業版(公司配的啦!!)
安裝docker desktop
也大概是花了一天時間
那時候忙,沒解就算了
反正我隨便裝個linux都可以測試docker
但這次不一樣
我要測k8s的相應功能
docker desktop才有包含
不然我就得去安裝minikube了
那就更累了......
其實微軟現在透過兩個方式來處理container
1.一個是它自己本身的實作
這個你得把作業系統的"容器"服務給打開來
2.用wsl來處理linux的container
前者你把desktop安裝完之後(你一定會發生docker crash的錯誤)
在powershell透過指令把docker backend 切換成微軟自己平台的容器實作
& $Env:ProgramFiles\Docker\Docker\DockerCli.exe -SwitchDaemon .
同時間你只能跑windows或者linux 容器的實作
都是透過上述指令進行切換
但linux docker backend會crash是在於wsl環境沒ready
我的環境如下,家用版喔~~
我原本以為是因為家用版不支援的關係ㄝ
因為在Internet上找了好久的資料
沒有一個人的說法是可以解決docker desktop的安裝問題的
後來我才發覺
其實不是安裝問題
是WSL 啟動的問題
這部分的安裝
微軟自己的文章就寫得很好了
Windows Subsystem for Linux Installation Guide for Windows 10
不然就直接從UI把相應的服務勾選起來就是了
然後再把windows update更新到最新
然後把Virtualbox移除掉後
WSL就會恢復正常了
不然在windows上
你永遠沒辦法使用linux container
docker desktop 安裝完後linux container跑的狀況
為什麼會發覺是wsl與virtualbox相容性的問題??
是今天早上起床
我在手機上還在找可以解決的方案
看到了這一篇
WSL安装Linux报错WslRegisterDistribution failed with error: 0x80370102
我就想說,那就試試看吧~~
先把我的4個VM 都匯成ova
移除掉virtualbox
然後一切就順利了

其實只要你打了systeminfo指令
如果hyper-v 需求的output都呈現"是"
你的平台在安裝docker desktop上應該就沒問題
叫起docker desktop
進到設定
啟動Kubernetes
就是單機版的K8s

唉~缺點

I cannot ping my containers🔗

Docker Desktop for Windows can’t route traffic to Linux containers. However, you can ping the Windows containers.

Per-container IP addressing is not possible

The docker (Linux) bridge network is not reachable from the Windows host. However, it works with Windows containers.

釋字第462 號 -- 限制公務員就懲戒提訴願之判例違憲?大學教師升等評審程序應如何?

 這感覺就是被欺負阿.....

所以才提大法官釋憲

是我....可能就離開了

因為找律師打行政訴訟官司

其實也是花不少錢

與其花時間及花錢跟它耗

還不如另謀出路

 大學、獨立學院、專科學校教師分教授、副教授、助理教授及講師,有關教師之升等,由各該學校設校、院、系(所)教師評審委員會評審,大學法第十八條、第二十條及專科學校法第八條、第二十四條定有明文。教育人員任用條例就公立各級學校教師之任用資格有所規定,同法第十四條並授權教育部訂定「大學、獨立學院及專科學校教師資格審查辦法」,該辦法第七條及第九條規定,教師資格之審查,由學校教師評審委員會審核通過後,送教育部提交學術審議委員會審議決定,經審查合格者,始發給教師證書。至私立學校教師之任用資格及其審查程序,依教育人員任用條例第四十一條,亦準用前開條例之規定。是各大學校、院、系(所)及專科學校教師評審委員會關於教師升等之評審,係屬法律授權範圍內為公權力之行使,其對教師之資格等身分上之權益有重大影響,均為各該大學、院、校所為之行政處分。受評審之教師於依教師法或訴願法等用盡行政救濟途徑後,仍有不服者,自得依法提起行政訴訟,以符憲法保障人民訴訟權之意旨。

按憲法第十五條規定,人民之工作權應予保障,是以凡人民作為謀生職業之正當工作,均應受國家之保障,對於職業自由之限制,應具有正當之理由,並不得逾越必要程度。大學教師升等資格之審查,關係大學教師素質與大學教學、研究水準,並涉及人民工作權與職業資格之取得,除應有法律規定之依據外,主管機關所訂定之實施程序,尚須保證對升等申請人專業學術能力及成就作成客觀可信、公平正確之評量,始符合憲法第二十三條之比例原則。教師升等資格評審程序既為維持學術研究與教學之品質所設,其決定之作成應基於客觀專業知識與學術成就之考量,此亦為憲法保障學術自由真諦之所在。是以各大學校、院、系(所)及專科學校教師評審委員會,本於專業評量之原則,應選任各該專業領域具有充分專業能力之學者專家先行審查,將其結果報請教師評審委員會評議。教師評審委員會除能提出具有專業學術依據之具體理由,動搖該專業審查之可信度與正確性,否則即應尊重其判斷;評審過程中必要時應予申請人以書面或口頭辯明之機會;由非相關專業人員所組成之委員會除就名額、年資、教學成果等因素予以斟酌外,不應對申請人專業學術能力以多數決作成決定。受理此類事件之行政救濟機關及行政法院自得據以審查其是否遵守相關之程序,或其判斷、評量是否以錯誤之事實為基礎,是否有違一般事理之考量等違法或顯然不當之情事。現行有關各大學、獨立學院及專科學校教師資格及升等評審程序之規定,應本此解釋意旨通盤檢討修正。又行政法院五十七年判字第四一四號判例,業經本院釋字第三三八號解釋不予適用在案,併此指明。

釋字第382號解釋 -- 私立學校也是有公權力的

 私立學校也是有公權力的

某些地方是有經過教育部授權的

限制學生對學校所為之處分提起爭訟之判例違憲?

  • 人民有受教育之權利,為憲法所保障。而憲法上權利遭受不法侵害者,自得行使憲法第十六條訴願及訴訟之權,於最後請求司法機關救濟,不因其身分而受影響,迭經本院釋字第一八七、二0一、二四三、二六六、二九五、二九八、三一二、三二三及三三八號等解釋,就人民因具有公務員或其他身分關係而涉訟之各類事件中,闡釋甚明。
    
  •   公立學校係各級政府依法令設置實施教育之機構,具有機關之地位,而私立學校係依私立學校法經主管教育行政機關許可設立並製發印信授權使用,在實施教育之範圍內,有錄取學生、確定學籍、獎懲學生、核發畢業或學位證書等權限,係屬由法律在特定範圍內授與行使公權力之教育機構,於處理上述事項時亦具有與機關相當之地位(參照本院釋字第二六九號解釋)。是各級公私立學校依有關學籍規則或懲處規定,對學生所為退學或類此之處分行為,足以改變其學生身分及損害其受教育之機會,此種處分行為應為訴願法及行政訴訟法上之行政處分,並已對人民憲法上受教育之權利有重大影響。人民因學生身分受學校之處分,得否提起行政爭訟,應就其處分內容分別論斷。如學生所受處分係為維持學校秩序、實現教育目的所必要,且未侵害其受教育之權利者(例如記過、申誡等處分),除循學校內部申訴途徑謀求救濟外,尚無許其提起行政爭訟之餘地。反之,如學生所受者為退學或類此之處分,則其受教育之權利既已受侵害,自應許其於用盡校內申訴途徑後,依法提起訴願及行政訴訟。行政法院四十一年判字第六號判例:「學校與官署不同,學生與學校之關係,亦與人民與官署之關係有別,學校師長對於違反校規之學生予以轉學處分,如有不當情形,亦祗能向該管監督機關請求糾正,不能按照訴願程序,提起訴願。」與上開意旨不符部分,應不予援用,以符憲法保障人民受教育之權利及訴訟權之意旨。
    
  •   又受理學生退學或類此處分爭訟事件之機關或法院,對於其中涉及學生之品行考核、學業評量或懲處方式之選擇,應尊重教師及學校本於專業及對事實真象之熟知所為之決定,僅於其判斷或裁量違法或顯然不當時,得予撤銷或變更,併此指明。

私人錄影音合法的法源

刑事訴訟法 165-1

II    錄音、錄影、電磁紀錄或其他相類之證物可為證據者,審判長應以適當之設備,顯示聲音、影像、符號或資料,使當事人、代理人、辯護人或輔佐人辨認或告以要旨。

因為是當事人且公開,便無
刑法 第 315-1 條 (妨害秘密罪)
有下列行為之一者,處三年以下有期徒刑、拘役或三十萬元以下罰金:

一、無故利用工具或設備窺視、竊聽他人非公開之活動、言論、談話或身體隱私部位者。

二、無故以錄音、照相、錄影或電磁紀錄竊錄他人非公開之活動、言論、談話或身體隱私部位者。

通訊保障及監察法第 29 條 (不罰之情形)
三、監察者為通訊之一方或已得通訊之一方事先同意,而非出於不法目的者

最高法院101年度台上字第5182號刑事判決要旨
「公務員對於職務上之行為,要求賄賂罪」與「公務員藉勢勒索財物未遂罪」,俱係公務員以不法手段憑藉職務上之權勢權力,向相對人索求交付財物之單方意思表示,其客觀構成要件之主要事實雷同,僅施用手段之程度略有差異而已(即前者屬於和平手段,後者則可能使相對人發生畏佈心),二罪復同為侵害國家法益之犯罪,罪質尚無差異,應認為具有同一性。從而,原判決將起訴書所引貪污治罪條例第四條第一項第二款、第二項藉勢勒索財物未遂罪法條,變更為同條例第五條第一項第三款,論以對於職務上之行為,要求賄賂罪,尚難謂有刑事訴訟法第三百七十九條第十二款所定訴
外裁判之違法。又原審已踐行罪名變更之告知程序,有審判筆錄可稽。

私人錄音、錄影之行為,雖應受刑法第三百十五條之一與通訊保障及監察法第二十九條第三款之規範,但其錄音、錄影所取得之證據,則無證據排除法則之適用。蓋我國刑事訴訟程序法(包括通訊保障及監察法)中關於取證程序或其他有關偵查之法定程序,均係以國家機關在進行犯罪偵查為拘束對象,對於私人自行取證之法定程序並未明文。私人就其因犯罪而被害之情事,除得依刑事訴訟法第二百十九條之一至第二百十九條之八有關證據保全規定,聲請由國家機關以強制處分措施取證以資保全外,其自行或委託他人從事類似任意偵查之錄音、錄影等取證之行為,既不涉及國家是否違法問題
,則所取得之錄音、錄影等證物,如其內容具備任意性者,自可為證據。又私人將其所蒐取之證據交給國家作為追訴犯罪之證據使用,國家機關只是被動地接收或記錄所通報即將或已然形成之犯罪活動,並未涉及挑唆亦無參與支配犯罪,該私人顯非國家機關手足之延伸,是以國家機關據此所進行之後續偵查作為,自具其正當性與必要性。而法院於審判中對於私人之錄音、錄影等證物,以適當之設備,顯示其聲音、影像,乃係出於刑事訴訟法第一百六十五條之一第二項規定之法律授權,符合法律保留原則之要求,至於利用電話通話或兩人間之對(面)談並非屬於秘密通訊自由與隱私權等基本權利之核心領域,故國家就探知其談話內容所發生干預基本權利之手段(即法院實施之勘驗)與所欲達成實現國家刑罰權之公益目的(即證明犯罪),兩相權衡,國家公權力對此之干預,尚無違比例原則,法院自得利用該勘驗結果(筆錄),以作為證據資料使用。





nextcloud-21.0.2 Installation On Ubuntu 20.04

 

1.packages for the Nextcloud core system
apt upgrade
apt install apache2 mariadb-server libapache2-mod-php7.4
apt install php7.4-gd php7.4-mysql php7.4-curl php7.4-mbstring php7.4-intl
apt install php7.4-gmp php7.4-bcmath php-imagick php7.4-xml php7.4-zip
2.Start MySQL
/etc/init.d/mysql start
mysql -uroot -p
3.Create Nextcloud DB
CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'urpassword';
CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost';
FLUSH PRIVILEGES;
4.解壓縮至WEB根目錄
unzip nextcloud-21.0.2.zip
cp -r nextcloud /var/www/html
cd /var/www/html
chown www-data nextcloud -Rf
chmod 770 nextcloud -Rf
5.配置Apache
/etc/apache2/apache2.conf
在最后面添加:
AddType application/x-httpd-php .php .htm .html
AddDefaultCharset UTF-8
重启Apache服务 :
systemctl restart apache2
寫到了這裡
如果你只是要測試而已
那你可以透過ip來進行nextcloud的初始化
如果你是要建置給其他人使用的
那我建議還是先把整個FQDN先協調弄妥後
再來進行nextcloud 初始化
因為你既然用了這個CMS
我想你應該會想用它的onlyoffice
要用它,問題會有點大
主要是在於它跟document server的整合
看圖:
我手上的環境
完整的路徑如下:
https://www.mydomain.com/nextcloud/index.php/apps/documentserver_community/
這個問題其實是我前幾天已經弄好一個環境
現在準備enable ssl發生的
因為只要啟動了SSL
雖然登入正常
但只要你點選了office的文件
系統就會出現
onlyoffice cannot be reached. please contact admin
搞了一天...最後才了解為何它會發生
仔細地想了一下
如果要用SSL 連接,及使用onlyoffice
一開始就得把domain給要到
安裝package時,最好就把 libapache2-mod-md 也給安裝上去
我們來啟用SSL吧 !!
這種服務不加密
不就等於把內部文件開放公眾了嗎?
apt-get install libapache2-mod-md
a2enmod md
a2enmod ssl
a2enmod rewrite
a2enmod headers
a2ensite default-ssl.conf
systemctl restart apache2
既然都把DNS相關的Record申請到了
那就最好把apache的預設server name 也設成那組FQDN
當然你也可以把用到80 Port 的default site給關掉
a2dissite 000-default.conf
systemctl restart apache2

https://www.cyberciti.biz/faq/how-to-install-apache-on-ubuntu-20-04-lts/
https://www.cyberciti.biz/faq/how-to-secure-apache-with-mod_md-lets-encrypt-on-ubuntu-20-04-lts/
這是我設定nextcloud時所碰到的一些問題
1. ipv6設定影響到了google smtp的解析
這是在我筆電上的vm發生的
可是在我公司的環境居然沒有
後來找了資料
應該是ubuntu 預設就啟動了ipv6
可能公司的網路沒有ipv6
所以連到google smtp就只用ipv4
但在我電腦上
我用的是手機的網路
出去的預設ip就是ipv6
google smtp 不接受ipv6
但disable ipv6經我測試下
好像只有下指令才會非常完全
# 停用 IPv6 網路位址
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.lo.disable_ipv6=1
在sysctl.conf還是grub裏頭disble都無法完全不啟動
找時間再查吧~~
https://officeguide.cc/ubuntu-linux-disable-ipv6-address-tutorial/

2.doc檔透過onlyoffice 轉docx時出現的問題
在config.php裏頭加上相關的設定來解決
3.已安裝onlyoffice後,再啟用ssl,office文件就沒辦法開啟了
這就是我為何前面提醒要好好的建置nextcloud前
最好先把DNS及IP規劃好
因為onlyoffice的運作是依賴document server
所以安裝完document server
再安裝onlyoffice
onlyoffice要使用你登入nextcloud後
當下FQDN組成的URL寫在它的預設設定裏頭
因此當你決定啟用SSL後
80 Port的預設web site就不能用了
如果你要線上office 文件編輯的功能正常運作的話
https://github.com/nextcloud/server/issues/20879
https://docs.nextcloud.com/server/latest/admin_manual/installation/example_ubuntu.html
我原本安裝onlyoffice的步驟如下:
/var/www/html/nextcloud
/usr/bin/php7.4 occ app:install documentserver_community
/usr/bin/php7.4 occ app:install onlyoffice
重新安裝後,修正的步驟如下:
document server在預設的app store裏頭找不到
還是得手動安裝它
/var/www/html/nextcloud
/usr/bin/php7.4 occ app:install documentserver_community
然後以admin身分登入nextcloud
從UI 裏頭的search box找
4.安裝2FA
你要更高的安全性的話
就啟動TWO FACTOR AUTHENTICATOR 的模組
指令安裝或者UI安裝都可以
/usr/bin/php7.4 occ app:install twofactor_totp

5.協同作業設定SMTP:
如果你用的是google的smtp
那你要把你的goole 帳號設成較低安全性來存取
這是EMAIL的設定
在我建置過程中
我其實對opensource的領域
不襟又發出了感嘆!!
這年頭要靠資訊技能賺錢...
真的不容易啊!!
免費軟體都可以做到這個地步了~~
想想也是啦~~
我弄過Nagios 3.x及4.x Core版本
就是花時間研究一下而已
何必要花大錢買什麼監控軟體哩~~
我也玩過一段時間的wordpress
Nextcloud其實也是類似的CMS
都走LAMP架構
不過如果你是要經營網站的話
重點還是在content啦~~
所以最後我就不研究wordpress了
直接用blogger來建置我個人的web site

Virtualbox 安裝Oracle Linux 6及7 所發生的UI使用問題

 

上個禮拜有個需求要在Linux上安裝一套oracle 12.2
查了一下支援的版本,我就選了Oracle Linux 6.10
結果在virtualbaox安裝時
有夠痛苦的
滑鼠有夠難對的
安裝完後,想要安裝guest addition來解決這個問題
結果裝不上去
我原本以為是Linux Kernel太新了
後來才知道原來是VirtualBox 與Linux Kernel間的匹配問題
Oracle Linux 6.10的UEK是4.1.2
甲骨文的部落格文章內說明了解決方式

VirtualBox guest addition RPMs for Oracle Linux UEK4 kernel!

照著文件的步驟做完
滑鼠游標的滑動對準果然改善非常多
隔兩天要安裝Oracle Linux 7.9
因為要安裝RAC
預設的解析度無法容納整個OUI畫面的操作
就直接安裝預設的guest addition後
就能修改guest的解析度了
#######2021/06/17#########
被virtualbox consule ui給打敗了
在6.10上測試xrdp的連通
看起來真的好用多了
安裝步驟請參考底下這篇文章
IT事件簿-Linux用的遠端連線(XRDP)
套件:xrdp & tigervnc-server
VNC:
yum install vnc-server tigervnc-server
XRDP:
yum install gcc pam-devel openssl-devel
yum install libX11-devel libXfixes-devel
yum install autoconf automake libtool
下載xrdp source code
wget http://sourceforge.net/projects/xrdp/files/0.6.0/xrdp-v0.6.0.tar.gz/download
mv download xrdp-v0.6.0.tar.gz
tar xf xrdp-v0.6.0
cd xrdp-v0.6.0
./bootstrap
./configure
make
make install
/etc/xrdp/xrdp.sh start
/etc/xrdp/xrdp.sh stop
/etc/xrdp/xrdp.sh start

記得關掉iptables
service iptables stop
checkconfig --level 345 iptables off

mstsc 連通時
使用預設的sesman-Xvnc即可
Oracle Linux 7.9 可以參考redhat 的官方文件
How to Install XRDP on CentOS and RedHat Linux 8/7
首先要去更新repo
cd /etc/yum.repos.d
rename既有的
看一下這一篇blog
Using EPEL repos with Oracle Linux
http://yum.oracle.com/public-yum-ol7.repo
這個網頁的東西全拷貝回去
# yum clean all
# yum -y update
# yum install tigervnc-server xrdp
# sudo systemctl start xrdp.service
# sudo systemctl status xrdp.service
# sudo systemctl enable xrdp.service
# netstat -antp | grep xrdp
# systemctl stop firewalld.service
# systemctl disable firewalld.service

Oracle 19.3 RAC 安裝於OL 7.9 及Patch至19.11.0.0.210420

 

(請看到最後,Patch 狀況的發生,Internet上有人也是碰到相同的狀況,太新的Patch真的不要打)
基本上19.3 RAC 安裝跟12.2差不多
只是DB Binary的安裝改成跟grid一樣子
應該是為了節省硬碟的空間
反正就是解開來後,就是$ORACLE_HOME
安裝的時候,我就覺得奇怪
怎麼會拋出放software source的目錄
在另一個RAC NODE建不出來的錯誤
我就手動建立
讓系統先建出再說
然後找了一下Internet
原來db binary 安裝方式改了
我就只好將錯就錯囉~~
安裝步驟還是可以參考RedHat寫的文件啦~~
DEPLOYING ORACLE RAC DATABASE 12C RELEASE 2 ON RED HAT ENTERPRISE LINUX 7
udev 的設定
請參照
Oracle Linux 7中使用udev來設置用戶自定義的設備名
因為只是在VirtualBox上進行安裝測試
我也就懶得弄DNS
都寫到/etc/hosts
安裝檢核時發生的錯誤
就全部ignore就好了
反正scan ip設一個就夠了
我的udev rule
[root@rac2 ~]# /usr/lib/udev/scsi_id -g -u /dev/sdb
 1ATA_VBOX_HARDDISK_VB3831c189-6132ef1e

 KERNEL=="sd*[!0-9]", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="1ATA_VBOX_HARDDISK_VB3831c189-6132ef1e", RUN+="/bin/sh -c 'mknod /dev/asmdisk01 b $major $minor; chown grid:oinstall /dev/asmdisk01; chmod 0660 /dev/asmdisk01'"

firewall一定要關
systemctl stop firewalld.service
systemctl disable firewalld

pre-package
yum install oracle-database-preinstall-19c

目錄:

是打db patch出了一些差錯
居然在快完成的時候
出現因權限問題寫入的錯誤
"/u01/app/oracle-software/.patch_storage/NApply/2021-06-12_16-25-11PM"
[Jun 12, 2021 4:30:02 PM] [INFO]    --------------------------------------------------------------------------------
[Jun 12, 2021 4:30:02 PM] [INFO]    Finishing UtilSession at Sat Jun 12 16:30:02 CST 2021
[Jun 12, 2021 4:30:02 PM] [INFO]    Log file location: /u01/app/oracle-software/cfgtoollogs/opatch/opatch2021-06-12_16-25-11PM_1.log
[Jun 12, 2021 4:30:02 PM] [INFO]    Stack Description: java.lang.RuntimeException: ApplySession failed in system modification phase... 'ApplySession::apply failed: java.io.IOException: oracle.sysman.oui.patch.PatchException: java.io.FileNotFoundException: /u01/app/oraInventory/ContentsXML/oui-patch.xml (Permission denied)'



本來想說...要不要放棄
整個環境重新安裝後
再來一次
不過想想後...
算了..解看看好了
因為這是第二個node
其實第一個node的db patch已經打了上去了
就進系統看權限
還真的哩~~
權限是640
其他檔案都是660
我就把它改成了660
然後再重跑了一次opatch指令
..........
出錯.......error code 73
哈.....
又想放棄了
好吧~~
還是仔細地去看一下log的內容好了
$ORACLE_HOME/inventory/oneoffs/32545013 is corrupted.
PatchObject constructor:
Input file "/u01/app/oracle-software/inventory/oneoffs/32545013/etc/config/actions"
or "/u01/app/oracle-software/inventory/oneoffs/32545013/etc/config/inventory" does not exist.
104...三小....
就去看了$ORACLE_HOME/inventory/oneoffs/32545013
裏頭是空的
好吧 ~~~
我就把它從第一個node 給拷了過來
然後重跑opatch指令
這次就告訴你了
這個Patch已經打上去了
哈~~
還真是誤打誤撞....
後續就是把binary patch打完就是了
接著就是打sqlpatch
這野蠻好玩的
一開始打是上去的去
但是就是success with error
你知道的
工程師性格
雖然這不是什麼大不了的問題
因為是系統物件compile error所造成
(log內有寫)
我就接連在cdb及pdb手動執行了utlrp.sql
然後再重新打上sqlpatch
就ok了


patch的步驟也跟12.2一樣

For Grid Infrastructure Home, as home user:
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /home/grid/32545008/32545013
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /home/grid/32545008/32579761
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /home/grid/32545008/32576499
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /home/grid/32545008/32584670
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /home/grid/32545008/32585572
For Database home, as home user:
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /home/grid/32545008/32545013
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /home/grid/32545008/32579761
Execute the following on each node of the cluster in non-shared CRS and DB home environment to apply the patch.
1. Stop the CRS managed resources running from DB homes.
If this is a GI Home environment, as the database home owner execute:
$ <ORACLE_HOME>/bin/srvctl stop home -o <ORACLE_HOME> -s <status file location> -n <node name>
srvctl stop home -o $ORACLE_HOME -s /home/oracle/patch.txt -n rac1
srvctl stop home -o $ORACLE_HOME -s /home/oracle/patch.txt -n rac2
2. Run the pre root script.
this is a GI Home, as the root user execute:
# <GI_HOME>/crs/install/rootcrs.sh -prepatch
$ORACLE_HOME/crs/install/rootcrs.sh -prepatch
3. Patch GI home.
As the GI home owner execute:
$ <GI_HOME>/OPatch/opatch apply -oh <GI_HOME> -local <UNZIPPED_PATCH_LOCATION>/%BUGNO%/%OCW TRACKING BUG%
$ORACLE_HOME/OPatch/opatch apply -oh $ORACLE_HOME -local /home/grid/32545008/32545013
$ORACLE_HOME/OPatch/opatch apply -oh $ORACLE_HOME -local /home/grid/32545008/32579761
$ORACLE_HOME/OPatch/opatch apply -oh $ORACLE_HOME -local /home/grid/32545008/32576499
$ORACLE_HOME/OPatch/opatch apply -oh $ORACLE_HOME -local /home/grid/32545008/32584670
$ORACLE_HOME/OPatch/opatch apply -oh $ORACLE_HOME -local /home/grid/32545008/32585572
As the database home owner execute:
$ <UNZIPPED_PATCH_LOCATION>/%BUGNO%/%OCW TRACKING BUG%/custom/scripts/prepatch.sh -dbhome <ORACLE_HOME>
/home/grid/32545008/32579761/custom/scripts/prepatch.sh -dbhome $ORACLE_HOME
$ <ORACLE_HOME>/OPatch/opatch apply -oh <ORACLE_HOME> -local <UNZIPPED_PATCH_LOCATION>/%BUGNO%/%OCW TRACKING BUG%
$ORACLE_HOME/OPatch/opatch apply -oh $ORACLE_HOME -local /home/grid/32545008/32545013
$ORACLE_HOME/OPatch/opatch apply -oh $ORACLE_HOME -local /home/grid/32545008/32579761
$ <UNZIPPED_PATCH_LOCATION>/%BUGNO%/%OCW TRACKING BUG%/custom/scripts/postpatch.sh -dbhome <ORACLE_HOME>
/home/grid/32545008/32579761/custom/scripts/postpatch.sh -dbhome $ORACLE_HOME
5. Run the post script.
As the root user execute:
# <GI_HOME>/rdbms/install/rootadd_rdbms.sh
$ORACLE_HOME/rdbms/install/rootadd_rdbms.sh
If this is a GI Home, as the root user execute:
# <GI_HOME>/crs/install/rootcrs.pl -postpatch
$ORACLE_HOME/crs/install/rootcrs.sh -postpatch
If this is a GI Home environment, as the database home owner execute:
$ <ORACLE_HOME>/bin/srvctl start home -o <ORACLE_HOME> -s <status file location> -n <node name>
srvctl start home -o $ORACLE_HOME -s /home/oracle/patch.txt -n rac1
srvctl start home -o $ORACLE_HOME -s /home/oracle/patch.txt -n rac2
8. For each database instance running on the Oracle home being patched, run the datapatch utility as described in next table.
sqlplus / as sysdba
startup
quit
cd $ORACLE_HOME/OPatch
./datapatch -verbose

目錄
mkdir --parents /u01/app/19.3.0/grid
chown --recursive grid.oinstall /u01
chown grid.oinstall V982068-01.zip
mv V982068-01.zip /u01/app/19.3.0/grid
/u01/app/19.3.0/grid/gridSetup.sh
mkdir --parents /u01/app/oracle
mkdir --parents /u01/app/oracle/product/19.3.0/dbhome_1
chown --recursive oracle.oinstall /u01/app/oracle
##########2021/06/19###########
假日了...終於有空再重新安裝一次RAC 19.3
端午節打了OJVM Patch(32399816)失敗
今天又再打一次
結果同樣的錯誤
實在是被Oracle打敗了
[Jun 19, 2021 12:10:52 PM] [INFO] The following make actions have failed :
[Jun 19, 2021 12:10:52 PM] [WARNING]OUI-67124:Re-link fails on target "ioracle".
端午節打第二季的RU的狀況
有人發生同樣的狀況
哈~~
19c 打RU patch遇到oui-patch.xml (Permission denied)问题
Oracle Support 好意思跟客戶講
最好按照每一季出新Patch來進行更新
真是他媽的,見你的大頭鬼
在前一家公司
就是出了大trouble
跑到母公司去屁這種話
什麼都推給bug
那你還賣那麼貴 !!
反正OJVM能不打就不要打
這就是我的結論
真的要打上去的話
要有心理準備
一定要做好測試
及到metalink 上開call
討論好怎麼解決
再打到Production
不測試直接上到營運套
 你就準備哭喔~

碰到Oracle Lock Wait

 

用了10g以上的版本後
最常用的工具就是awr 及addm
以前常用的script都丟掉了
只是最近又幹起了Programmer的工作
你就不太可能像以前幹dba一樣
知道詳細的資料庫連接資料
碰到都是人家已經在工具UI已經弄妥的設定
你只能直接查internal view來解決問題
昨天要refresh整個schema,然後重匯資料
結果有lock,無法清空
臨時間又懶得去翻找以前的東西
感謝Internet
資料隨手可得阿
以前的老dba都雪藏秘珍這種東西啦~~
所以....這些人現在都活不下去了
昨天對我有幫助的是下列這段語法
select
c.owner,
c.object_name,
c.object_type,
b.sid,
b.serial#,
b.status,
b.osuser,
b.machine
from
v$locked_object a ,
v$session b,
dba_objects c
where
b.sid = a.session_id
and
a.object_id = c.object_id;
砍掉該session,就能繼續做事了
出處 :
http://www.dba-oracle.com/t_find_oracle_locked_objects.htm

RAC:
select
b.inst_id,
c.owner,
c.object_name,
c.object_type,
b.sid,
b.serial#,
b.status,
b.osuser,
b.machine
from
gv$locked_object a ,
gv$session b,
dba_objects c
where
b.sid = a.session_id
and
a.object_id = c.object_id;

alter system kill session 'sid,serial#,@inst_id';


###2021/05/25 找到lock chain####
這適用於有個session 卡住了後續其他的session
砍掉它之後,系統就能跑了
主要是查v$wait_chains
這東西不得了
怎麼以前沒看過




col ses format a15
set lines 180
WITH blocked AS
(SELECT * FROM
(SELECT instance, sid, sess_serial#, blocker_instance,
blocker_sid, blocker_sess_serial#, level lv,
num_waiters, blocker_chain_id
FROM v$wait_chains
CONNECT BY PRIOR sid = blocker_sid
AND PRIOR sess_serial# = blocker_sess_serial#
AND PRIOR INSTANCE = blocker_instance
START WITH blocker_is_valid = 'FALSE'
)
WHERE num_waiters >0 OR blocker_sid IS NOT NULL
)
SELECT instance,
LPAD(' ', 2*(lv-1)) ||b.sid ses, b.sess_serial#,
b.blocker_instance, b.blocker_sid, b.blocker_sess_serial#
FROM blocked b
hang analysis也可以抓wait chain
SQL> oradebug setmypid
SQL> oradebug -g all hanganalyze 10



























這是8720.trc 的內容


指令alter system kill session '33,1361';
lock wait 就解了

不過底下這傢伙
寫得更精采
讓我不得不佩服
這些人到底去哪裡找到的資料???
The Backdoor Entry to Oracle Database
















看起來,同樣的lock wait chain的情境
無法用hanganalyze 12 來解決
有時間倒是可以研究一下各 level 要看什麼東西
session無法登入的情況
以前是真的碰過一次
當時要是知道這方法
也許就能查明原因了

### 2021/06/01####
今天碰到一個狀況
居然連select_catalog_role的權限都不給
真的是....莫名其妙
只好去找一個一個對應的fixed table的名稱
grant select on sys.gv_$session to steven;
grant select on sys.gv_$locked_object to steven;
grant select on sys.v_$wait_chains to steven;

--Wait Chain---
col ses format a15
set lines 180
WITH blocked AS
(SELECT * FROM
(SELECT instance, sid, sess_serial#, blocker_instance,
blocker_sid, blocker_sess_serial#, level lv,
num_waiters, blocker_chain_id
FROM sys.v_$wait_chains
CONNECT BY PRIOR sid = blocker_sid
AND PRIOR sess_serial# = blocker_sess_serial#
AND PRIOR INSTANCE = blocker_instance
START WITH blocker_is_valid = 'FALSE'
)
WHERE num_waiters >0 OR blocker_sid IS NOT NULL
)
SELECT instance,
LPAD(' ', 2*(lv-1)) ||b.sid ses, b.sess_serial#,
b.blocker_instance, b.blocker_sid, b.blocker_sess_serial#
FROM blocked b;

--Lock Objects ---
select * from sys.v_$wait_chains ;
select
b.inst_id,
c.object_name,
c.object_type,
b.sid,
b.serial#,
b.status,
b.osuser,
b.machine
from
sys.gv_$locked_object a ,
sys.gv_$session b,
user_objects c
where
b.sid = a.session_id
and
a.object_id = c.object_id;