1.
SELECT address, hash_value, sql_text
FROM v$sql
WHERE sql_id = 'gy4mvy9rkpmfu';
2.
BEGIN DBMS_SHARED_POOL.PURGE('00007FFBC18DC578, 1865076186', 'C'); END;
This man is too old to remember everything in his brain. Right now, he needs a place to write down what he has studied.
1.
SELECT address, hash_value, sql_text
FROM v$sql
WHERE sql_id = 'gy4mvy9rkpmfu';
2.
BEGIN DBMS_SHARED_POOL.PURGE('00007FFBC18DC578, 1865076186', 'C'); END;
SELECT * FROM (
SELECT
--s.parsing_schema_name as "執行Schema",
p.OBJECT_OWNER,p.OBJECT_NAME,
s.sql_id,
-- 執行週期核心指標
TO_CHAR(TO_DATE(s.first_load_time, 'YYYY-MM-DD/HH24:MI:SS'), 'YYYY-MM-DD HH24:MI') as "SQL首次載入時間",
TO_CHAR(TO_DATE(s.last_load_time, 'YYYY-MM-DD/HH24:MI:SS'), 'YYYY-MM-DD HH24:MI') as "SQL最後載入時間",
s.executions as "總執行次數",
ROUND(s.executions / DECODE(ROUND((SYSDATE - TO_DATE(s.first_load_time, 'YYYY-MM-DD/HH24:MI:SS')) * 24, 2), 0, 1, ROUND((SYSDATE - TO_DATE(s.first_load_time, 'YYYY-MM-DD/HH24:MI:SS')) * 24, 2)), 2) as "平均每小時執行次數",
--ROUND((((SYSDATE - TO_DATE(s.first_load_time, 'YYYY-MM-DD/HH24:MI:SS')) * 86400) / DECODE(s.executions, 0, 1, s.executions)), 1) as "平均每隔幾秒執行一次",
--ROUND((((SYSDATE - TO_DATE(s.first_load_time, 'YYYY-MM-DD/HH24:MI:SS')) * 86400) / DECODE(s.executions, 0, 1, s.executions)) / 60, 1) as "平均每隔幾分執行/次",
-- I/O 與時間指標
s.disk_reads as "累積硬碟讀取(Blocks)",
ROUND(s.disk_reads / DECODE(s.executions, 0, 1, s.executions), 2) as "單次平均硬碟讀取",
ROUND(s.elapsed_time / 1000000, 2) as "累積消耗時間(秒)",
ROUND(s.elapsed_time / 1000000 / DECODE(s.executions, 0, 1, s.executions), 2) "平均消耗時間(秒)",
ROUND(s.cpu_time / 1000000 / DECODE(s.executions, 0, 1, s.executions), 2) "平均CPU時間(秒)",
s.sql_text as "SQL縮略文本"
FROM v$sql_plan p
JOIN v$sql s ON p.sql_id = s.sql_id AND p.child_number = s.child_number
WHERE 1 = 1
AND p.operation = 'TABLE ACCESS'
AND p.options = 'FULL'
AND s.parsing_schema_name NOT IN ('SYS','SYSTEM','SYSMAN','DBA','EXFSYS')
AND s.executions > 0
--AND s.SQL_TEXT LIKE '%select att.value || %'
ORDER BY "單次平均硬碟讀取" DESC
) WHERE ROWNUM <= 100;
1. 需要知道exution plan and statistics 的SQL
select /*+ GATHER_PLAN_STATISTICS */ max(verson) from ESP_NDE_NEW.SYS_LOG t where t.verson !='singleton ver.';
2.
SELECT sql_id, child_number, sql_text, last_active_time
FROM v$sql
WHERE UPPER(sql_text) LIKE '%GATHER_PLAN_STATISTICS%' -- 抓有GATHER_PLAN_STATISTICS字眼的
AND sql_text NOT LIKE '%v$sql%'
ORDER BY last_active_time DESC;
3. 查詢 結果
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR('71d3ck9v8vtb4', NULL, 'ALLSTATS LAST'));
CentOS 6 已經EOL,所以要增加yum repository
1. cd /etc/yum.repos.d/
2. sed -i 's|#baseurl=http://mirror.centos.org/centos/$releasever|baseurl=http://vault.centos.org/6.10|g' CentOS-Base.repo
安裝spamassassin相關package
3.yum install spamassassin spamassassin-tools procmail perl-Mail-DKIM
4.service spamassassin restart
5.chkconfig spamassassin on
設定spamassassin
6.vim /etc/mail/spamassassin/local.cf
# These values can be overridden by editing ~/.spamassassin/user_prefs.cf
# (see spamassassin(1) for details)
# These should be safe assumptions and allow for simple visual sifting
# without risking lost emails.
required_hits 5
report_safe 0
rewrite_header Subject [SPAM]
# -----------------------------
# 測試設定:標記 X-Spam-Status
# -----------------------------
report_safe 0 # 直接顯示原始信件分析結果,方便測試
required_score 5.0 # 分數達到 5 才算垃圾信
# -----------------------------
# 自訂規則:Display Name + domain
# -----------------------------
# 標記寄件人 domain
header LOCAL_NOT_COMPANY From !~ /\@zzz\.com$/
# 標記寄件人 Display Name
header LOCAL_BAD_NAME From =~ /xxx/
# 綜合規則:同時符合以上兩個條件
meta LOCAL_1 (LOCAL_BAD_NAME && LOCAL_NOT_COMPANY)
# 分數設定
priority LOCAL_1 10
score LOCAL_1 5.0
# 標記寄件人 Display Name
header LOCAL_BAD_NAME2 From =~ /yyy/
# 綜合規則:同時符合以上兩個條件
meta LOCAL_2 (LOCAL_BAD_NAME2 && LOCAL_NOT_COMPANY)
# 分數設定
priority LOCAL_2 10
score LOCAL_2 5.0
安裝 procmail
argv 內拆成多行,整個命令必須在同一行環境:
A - cluster
N1 - 實體機
N2 - 實體機
1.N1 / N2 進入 Vmware client設定node1 / node2 網路
1-1 virtual switch 就是虛擬node之間的switch ,做高速網路流量用
1-2 連接埠擇像是網段,意思是node之間要用virtual switch的這個網段互通
2 設定HD,注意紅框設定
Summary:
1.產生ssh key 在client 端 (就是要發出ssh的那台機器,會有公鑰和私鑰)
2.將公鑰設定放到伺服器上 (在client端產生公鑰後,將公鑰放到server,也就是接受ssh要求的機器)
3.產生的私鑰和金鑰可以提供給client端其他user使用
來源:https://xenby.com/b/220-%E6%95%99%E5%AD%B8-%E7%94%A2%E7%94%9Fssh-key%E4%B8%A6%E4%B8%94%E9%80%8F%E9%81%8Ekey%E9%80%B2%E8%A1%8C%E5%85%8D%E5%AF%86%E7%A2%BC%E7%99%BB%E5%85%A5
一般我們登入伺服器可以透過密碼進行登入,但是安全性的程度會比較沒有像SSH key那個安全,而且如果使用SSH key登入的話可以就不用每次手動輸入密碼,會方便許多,本篇教如何產生SSH key並且設定到伺服器上。
首先輸入指令來產生 key
ssh-keygen
接著會詢問產生的ssh key要存放的位置
這時選擇要放的位置 預設為 /home/username/.ssh/id_rsa
如果不同伺服器會使用不同的key 則改變key的位置 (例如: /home/username/.ssh/id_rsa_ubuntu)
Generating public/private rsa key pair. Enter file in which to save the key (/home/username/.ssh/id_rsa):
接著會詢問要不要設定 passphrase,空白表示不設定
如果有設定passphrase,則每次用此key登入都需要輸入這個密碼 (安全性較高,可依個人需求設定)
Enter passphrase (empty for no passphrase): Enter same passphrase again:
接下來就會產生key到指定位置了
會有兩個key 一個有副檔名 .pub 為公鑰,而沒有副檔名的為私鑰
注意私鑰要保存好 絕對不能被竊取
Your identification has been saved in /home/username/.ssh/id_rsa_ubuntu. Your public key has been saved in /home/username/.ssh/id_rsa_ubuntu.pub. The key fingerprint is: SHA256:nNnQckFbuegUs4WD3y+7YqwCaDhfUlX2J17jxF7X3FU xenby@demo.com The key's randomart image is: +---[RSA 2048]----+ | .o++ .. E| | . *o+. ..| | . = *+ o ..| | . . Ooo+ * +| | . o Soo..B o.| |o + o . ..o | | + o . . . . | | . . + o | | ..o .o. | +----[SHA256]-----+
有幾個方法可以把公鑰放到伺服器上,可以依據自己的使用狀況選擇
輸入指令以下指令
(將 username 與 server_host 換成自己的帳號與伺服器IP或host,而 your_key_path 換成自己的剛剛產生的key位置)
ssh-copy-id -i your_key_path username@server_host
成功後會顯示如下的訊息
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'username@server_host'" and check to make sure that only the key(s) you wanted were added.
先記下剛剛產生的公鑰資料
cat ~/.ssh/ubuntu_id_rsa.pub
會顯示公鑰資料,把它複製下來
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDOZypQABxuCschD6jjRZFr1iPCqzrpo40Mzw6vXRfPlFwF9QJhLm3YYdtnpVekj9e1Y4kUduM924PAiLgfRw/6AJ1ueDR1BEDLeH8gAV1Cc90oPUvitYItPN8F1HrqiT37GZ3wKWKIFw70NL8Hs6BL61F+LgFmfXQDRyp7IIcyK9rmk24yqLSue/DiSbA0y85E4uvV7ekZD2NXeA9AnKHFe/cy614SQv2NNQCwi2ZRuP25du9xGVv0QvCwrZ4ANJky9V7xlO4dFFHqcNXUPQUm8EeRxySVCdTbenqiEQ3flLVBCCCxvnc7ApHlLNc/CZSpcft96xfGB3qOCrRvjb2/ xenby@demo.com
連線到伺服器上後
將公鑰資料複製到 ~/.ssh/authorized_keys 中 (下面指令的 public_key_string 要換成剛剛複製的公鑰資料)
如果該檔案已經存在就將資料新增到新的一行,如果不在就自己創建一個
echo "public_key_string" >> ~/.ssh/authorized_keys
假如剛剛自己是建立一個新的檔案,因為安全性的關係要改變 permission
輸入以下兩個指令 (username需要換成自己的帳號)
chmod -R go= ~/.ssh chown -R username:username ~/.ssh
試試看是否能正常登入使用key登入
ssh username@server_host
如果能夠不需要輸入密碼 就表示已經成功了
https://www.jeffcodingmentor.com/python%E5%AD%B8%E7%BF%92/certificate_verify_failed-%E8%A7%A3%E6%B1%BA%E6%96%B9%E6%B3%95
import requests
requests.get("https://techpro.tp.edu.tw/manager/cms/taipei-edu/scartch.html")
SSLError: HTTPSConnectionPool(host='techpro.tp.edu.tw', port=443): Max retries exceeded with url: /manager/cms/taipei-edu/scartch.html (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)'),))
如果只是測試,那關掉認證就可以解決,但還是有警告提示。
requests.get("https://techpro.tp.edu.tw/manager/cms/taipei-edu/scartch.html", verify=False)
C:\Users\ManaTsao\.conda\envs\tensorflowenv\lib\site-packages\urllib3\connectionpool.py:986: InsecureRequestWarning: Unverified HTTPS request is being made to host 'techpro.tp.edu.tw'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
InsecureRequestWarning,
若要徹底解決問題,就要將憑證加到環境中。步驟如下:
1. 先更新 certifi :
在 andaconda prompt 中執行
pip install certifi
pip install -U pyopenssl
若此時再執行 requests.get 沒有出錯,那就不必繼續下面的步驟。
2. 找出台北科技教育網所用的認證:
在 Chrome 中打開台北教育網後,按 F12 進入開發人員工具模式,並選擇 Security
找到用的是 RapidSSL RSA CA 2018。點 View Certificate 進去找一下是哪一家公司發行的,是 digicert 這家公司。
3. 接著到 Google 搜尋 “RapidSSL RSA CA 2018 download” 並找到 digicert 的網頁
注意是digicert的網頁
一路可以找到下載的地方
點選 Download PEM 下載 RapidSSLRSACA2018.crt.pem , 用文字編輯器打開,大概長這樣:
RapidSSLRSACA2018.crt.pem 的內容
4. 回到 Jupyter Notebook 執行
import certifi
certifi.where()
執行結果:
'C:\\Users\\ManaTsao\\.conda\\envs\\tensorflowenv\\lib\\site-packages\\certifi\\cacert.pem'
找到該檔案,也用文字編輯器打開,內容會像是這樣:
cacert.pem 的內容
5. 接著把網頁上 Rapid SSL RSA 的說明,copy 到 cacert.pem 的最下方,再 copy RapidSSLRSACA2018.crt.pem 裡面所有的內容,結果如下:
加上 RapidSSLRSACA2018.crt.pem 的結果
完成後記得存檔
6. 回到 Jupyter Notebook 重新執行
import requests
requests.get("https://techpro.tp.edu.tw/manager/cms/taipei-edu/scartch.html")
就不會有錯誤或警告了,結果如下:
<Response [200]>
第一次發此類文,只是把這幾天受的苦、網路爬的文做個記錄,希望能幫到大家。Bye now~
************************************************************************
有另一個方法可以試試:
使用Browser 的下載憑證,載網址左邊有一鎖頭小圖示,點進去後下載發行公司的憑證