銀河麒麟V10一鍵安裝DM8的腳本及高階運維SQL分享

介質下載地址

名稱網址
銀河麒麟高級服務器操作系統V10(SP3)用戶手冊https://www.kylinos.cn/support/document/60.html
DM8 安裝手冊https://eco.dameng.com/document/dm/zh-cn/pm/install-uninstall.html
DM 數據庫安裝(Linux安裝)https://eco.dameng.com/document/dm/zh-cn/start/install-dm-linux-prepare.html
達夢官網https://www.dameng.com/
達夢數據庫下載地址https://www.dameng.com/list_103.html
x86_rh7下載地址https://download.dameng.com/eco/adapter/DM8/202410/dm8_20240920_x86_rh7_64.zip

一鍵安裝

將iso鏡像和安裝腳本上傳至任意目錄下

[root@localhost iso]# chmod +x dm8_single_install.sh
[root@localhost iso]# ./dm8_single_install.sh
[root@localhost iso]# cat dm8_single_install.sh
#!/bin/bash
set -euo pipefailecho -e "\n\n****** 開始安裝 DM8 ******\n\n"# 配置參數
ISO_NAME="dm8_20250506_x86_rh7_64.iso"
DM_BASE="/dm"
SYSDBA_PWD="Ceshi@5235"
PORT_NUM="5236"
DB_NAME="PROD"
INSTANCE_NAME="PROD"
INSTALL_LOG="/tmp/dm_install.log"
sudo mount -t tmpfs -o size=2G none /tmp
# 清理舊日志
> "$INSTALL_LOG"# 步驟1: 準備安裝環境
echo -n "[1/9] 創建目錄結構... "
mkdir -p ${DM_BASE}/{dbms,data,log,arch,bak,script} /dm8_setup/iso
echo "完成"echo -n "[2/9] 準備安裝文件... "
mv -f ./* /dm8_setup/iso/ 2>/dev/null || true
echo "完成"# 步驟2: 掛載安裝鏡像
echo -n "[3/9] 掛載安裝鏡像... "
mount "/dm8_setup/iso/${ISO_NAME}" /mnt -o loop &>/dev/null
echo "完成"# 步驟3: 系統配置
echo -n "[4/9] 系統配置... "
public_ip=$(hostname -I | awk '{print $1}')
node_name=$(hostname)
grep -q "${public_ip} ${node_name}" /etc/hosts || echo "${public_ip} ${node_name}" >> /etc/hosts
hostnamectl set-hostname "${node_name}" &>/dev/nullgroupadd -g 50000 dinstall &>/dev/null || true
useradd -u 51000 -g dinstall dmdba &>/dev/null || true
echo "dmdba:${SYSDBA_PWD}" | chpasswd &>/dev/nullchown -R dmdba:dinstall "${DM_BASE}"
chmod -R 775 "${DM_BASE}"grep -q "dmdba soft nproc" /etc/security/limits.conf || cat <<EOF >> /etc/security/limits.conf
dmdba soft nproc 16384
dmdba hard nproc 16384
dmdba soft nofile 16384
dmdba hard nofile 65536
dmdba soft stack 16384
dmdba hard stack 32768
EOFsystemctl stop firewalld &>/dev/null || true
systemctl disable firewalld &>/dev/null || true
setenforce 0 &>/dev/null || true
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
echo "完成"# 步驟4: 生成安裝配置
echo -n "[5/9] 生成安裝配置... "
cat << EOF > "${DM_BASE}/script/silent_setup.xml"
<?xml version="1.0"?>
<DATABASE>
<LANGUAGE>en</LANGUAGE>
<TIME_ZONE>+08:00</TIME_ZONE>
<KEY></KEY>
<INSTALL_TYPE>0</INSTALL_TYPE>
<INSTALL_PATH>${DM_BASE}/dbms</INSTALL_PATH>
<INIT_DB>y</INIT_DB>
<DB_PARAMS>
<PATH>${DM_BASE}/data</PATH>
<DB_NAME>${DB_NAME}</DB_NAME>
<INSTANCE_NAME>${INSTANCE_NAME}</INSTANCE_NAME>
<PORT_NUM>${PORT_NUM}</PORT_NUM>
<CTL_PATH>${DM_BASE}/data/${DB_NAME}/dm.ctl</CTL_PATH>
<LOG_PATHS><LOG_PATH>${DM_BASE}/log/${DB_NAME}/redo01.log</LOG_PATH><LOG_PATH>${DM_BASE}/log/${DB_NAME}/redo02.log</LOG_PATH>
</LOG_PATHS>
<EXTENT_SIZE>16</EXTENT_SIZE>
<PAGE_SIZE>16</PAGE_SIZE>
<LOG_SIZE>256</LOG_SIZE>
<CASE_SENSITIVE>Y</CASE_SENSITIVE>
<CHARSET>0</CHARSET>
<SYSDBA_PWD>${SYSDBA_PWD}</SYSDBA_PWD>
<SYSAUDITOR_PWD>${SYSDBA_PWD}</SYSAUDITOR_PWD>
<SYSSSO_PWD>${SYSDBA_PWD}</SYSSSO_PWD>
<SYSDBO_PWD>${SYSDBA_PWD}</SYSDBO_PWD>
<TIME_ZONE>+08:00</TIME_ZONE>
</DB_PARAMS>
<CREATE_DB_SERVICE>n</CREATE_DB_SERVICE>
<STARTUP_DB_SERVICE>n</STARTUP_DB_SERVICE>
</DATABASE>
EOFchown dmdba:dinstall "${DM_BASE}/script/silent_setup.xml" &>/dev/null
echo "完成"# 步驟5: 執行數據庫安裝(添加進度指示)
echo -n "[6/9] 正在安裝數據庫 "
export DM_INSTALL_TMPDIR=/tmp
export LANG=en_US.UTF-8# 后臺安裝并顯示進度指示器
(sudo -u dmdba /mnt/DMInstall.bin -q "${DM_BASE}/script/silent_setup.xml" &>> "$INSTALL_LOG"
) &
pid=$!# 顯示旋轉進度指示
spin='-\|/'
i=0
while kill -0 $pid 2>/dev/null; doi=$(( (i+1) %4 ))printf "\b${spin:$i:1}"sleep 0.5
done# 等待后臺任務完成
wait $pid# 檢查安裝結果
if [ -d "${DM_BASE}/dbms/bin" ]; thenecho -e "\b完成"
elseecho -e "\n\n[錯誤] 數據庫安裝失敗!請檢查日志: $INSTALL_LOG"exit 1
fi# 步驟6: 安裝后配置
echo -n "[7/9] 安裝后配置... "
"${DM_BASE}/dbms/script/root/root_installer.sh" &>> "$INSTALL_LOG"
"${DM_BASE}/dbms/script/root/dm_service_installer.sh" -t dmserver -p "${DB_NAME}" -dm_ini "${DM_BASE}/data/${DB_NAME}/dm.ini" &>> "$INSTALL_LOG"
echo "完成"# 步驟7: 環境配置
echo -n "[8/9] 環境配置... "
cat << EOF >> /home/dmdba/.bashrc
export DM_HOME="${DM_BASE}/dbms"
export PATH="\$PATH:\${DM_HOME}/bin"
export LD_LIBRARY_PATH="\$LD_LIBRARY_PATH:\${DM_HOME}/bin"
EOF
echo "完成"# 步驟8: 啟動服務
echo -n "[9/9] 啟動數據庫服務... "
sudo -u dmdba "${DM_BASE}/dbms/bin/DmService${DB_NAME}" start &>> "$INSTALL_LOG"
sleep 3  # 給服務啟動時間# 檢查服務狀態
if sudo -u dmdba "${DM_BASE}/dbms/bin/DmService${DB_NAME}" status | grep -q "running"; thenecho "完成"
elseecho "失敗"echo "[警告] 服務啟動失敗,請檢查日志: $INSTALL_LOG"
fi# 清理工作
umount /mnt &>/dev/null || trueecho -e "\n\n****** DM8 安裝成功完成! ******"
echo -e "數據庫端口: \033[32m${PORT_NUM}\033[0m"
echo -e "管理員賬號: \033[32msysdba\033[0m"
echo -e "管理員密碼: \033[32m${SYSDBA_PWD}\033[0m"
echo -e "安裝目錄: \033[32m${DM_BASE}/dbms\033[0m"
echo -e "數據目錄: \033[32m${DM_BASE}/data\033[0m"
echo -e "服務狀態: \033[32m$(sudo -u dmdba ${DM_BASE}/dbms/bin/DmService${DB_NAME} status | grep -o "running")\033[0m"
echo -e "安裝日志: \033[34m${INSTALL_LOG}\033[0m\n\n"

過程截圖

在這里插入圖片描述
在這里插入圖片描述

日常運維命令

-- 1. 數據庫授權信息查詢
SELECT LIC_VERSION AS "許可證版本",SERIES_NO AS "序列號",CHECK_CODE AS "校驗碼",AUTHORIZED_CUSTOMER AS "最終用戶",PROJECT_NAME AS "項目名稱",PRODUCT_TYPE AS "產品名稱",CASE SERVER_TYPE WHEN '1' THEN '正式版' WHEN '2' THEN '測試版' WHEN '3' THEN '試用版' WHEN '4' THEN '其他' END AS "產品類型",TO_CHAR(EXPIRED_DATE) AS "有效日期",OS_TYPE AS "授權系統",TO_CHAR(AUTHORIZED_USER_NUMBER) AS "授權用戶數",NVL(TO_CHAR(CONCURRENCY_USER_NUMBER),'') AS "授權并發數",NVL(TO_CHAR(MAX_CPU_NUM),'') AS "授權CPU個數",CLUSTER_TYPE AS "授權集群"
FROM V$LICENSE;
-- 注意事項:
-- 1)需關注數據庫授權的有效日期,到期前需及時更換
-- 2)注意授權CPU個數字段值,曾出現因限制CPU使用個數導致DB性能下降的情況-- 2. 查詢數據庫的實例信息
SELECT '版本號',(SELECT id_code) FROM v$instance
UNION ALL
SELECT '數據庫名',name FROM v$database
UNION ALL
SELECT '實例名',instance_name FROM v$instance
UNION ALL
SELECT '系統狀態',status$ FROM v$instance
UNION ALL
SELECT '實例模式',mode$ FROM v$instance
UNION ALL
SELECT '是否啟用歸檔',case arch_mode when 'Y' then '是' when 'N' then '否' end FROM v$database
UNION ALL
SELECT '頁大小',cast(PAGE()/1024 as varchar)
UNION ALL
SELECT '大小寫敏感',cast(case SF_GET_CASE_SENSITIVE_FLAG()when '1' then '是' when '0' then '否' 
end as varchar)
UNION ALL
SELECT '字符集',CASE SF_GET_UNICODE_FLAG() WHEN '0' THEN 'GBK18030' WHEN '1' then 'UTF-8' when '2' then 'EUC-KR' 
end
UNION ALL
SELECT '以字符為單位',cast(case SF_GET_LENGTH_IN_CHAR()when '1' then '是' when '0' then '否' 
end as varchar)
UNION ALL
SELECT '空白字符填充模式',cast(case (select BLANK_PAD_MODE()) when '1' then '是' when '0' then '否' 
end as varchar)
UNION ALL
SELECT '日志文件個數',to_char(count(*)) FROM v$rlogfile
UNION ALL
SELECT '日志文件大小',cast(RLOG_SIZE/1024/1024 as varchar) FROM v$rlogfile where rowid =1
UNION ALL
SELECT '創建時間',to_char(create_time) FROM v$database
UNION ALL
SELECT '啟動時間',to_char(last_startup_time) FROM v$database;
-- 注意事項:
-- 1)該SQL查詢數據庫安裝信息參數,實例遷移時需保障兩端實例參數一致
-- 2)系統狀態字段如為非OPEN狀態,需檢查數據庫是否正常
-- 3)日志文件大小(redo日志)不建議低于2G,且建議大小一致-- 3. 查詢數據庫中語句統計信息
SELECT NAME, STAT_VAL 
FROM v$sysstat 
WHERE name IN ('select statements','insert statements','delete statements','update statements','ddl statements','transaction total count'
);
-- 注意事項:
-- 1)該值為數據庫啟動后從0遞增的計數,重啟后重置
-- 2)可用于監控特定時間段SQL執行情況-- 4. 數據庫表空間的狀態檢查
SELECT NAME AS "NAME",CASE TYPE$ WHEN '1' THEN 'DB類型' WHEN '2' THEN '臨時表空間' END AS "TYPE",CASE STATUS$ WHEN '0' THEN '聯機' WHEN '1' THEN '脫機' WHEN '2' THEN '脫機' WHEN '3' THEN '損壞'END AS "STATUS",TOTAL_SIZE*PAGE/1024/1024 AS "TOTALSIZE",FILE_NUM AS "FILENUM"
FROM V$TABLESPACE;
-- 注意事項:
-- 1)需重點關注表空間類型非聯機的情況,需重點監控-- 5. 查詢數據庫表空間的使用情況
SELECT F.TABLESPACE_NAME,ROUND((T.TOTAL_SPACE - F.FREE_SPACE) / 1024, 2) "USED",CASE WHEN H.TOTAL_MAX_SPACE == 0 THEN ROUND(F.FREE_SPACE / 1024, 2) ELSE ROUND((H.TOTAL_MAX_SPACE -(T.TOTAL_SPACE - F.FREE_SPACE)) / 1024, 2) END "FREE_MAX",CASE WHEN H.TOTAL_MAX_SPACE == 0 THEN ROUND(T.TOTAL_SPACE / 1024, 2) ELSE ROUND(H.TOTAL_MAX_SPACE / 1024, 2) END "TOTAL_MAX",CASE WHEN H.TOTAL_MAX_SPACE == 0 THEN ROUND((F.FREE_SPACE/1024)/(T.TOTAL_SPACE / 1024), 4)*100||'%' ELSE ROUND(((H.TOTAL_MAX_SPACE-(T.TOTAL_SPACE - F.FREE_SPACE))/1024)/(H.TOTAL_MAX_SPACE / 1024), 4)*100||'%' END PER_FREE_MAX,CASE WHEN H.TOTAL_MAX_SPACE == 0 THEN ROUND((((T.TOTAL_SPACE - F.FREE_SPACE))/1024)/(T.TOTAL_SPACE / 1024), 4)*100||'%' ELSE ROUND((((T.TOTAL_SPACE - F.FREE_SPACE))/1024)/(H.TOTAL_MAX_SPACE / 1024), 4)*100||'%' END PER_USED_MAX,ROUND(F.FREE_SPACE / 1024, 2) "FREE",ROUND(T.TOTAL_SPACE / 1024, 2) "TOTAL",CASE WHEN T.TOTAL_SPACE == 0 THEN '' ELSE (ROUND((F.FREE_SPACE / T.TOTAL_SPACE), 4)* 100) || '% ' END PER_FREE,CASE WHEN T.TOTAL_SPACE == 0 THEN '' ELSE (ROUND((T.TOTAL_SPACE - F.FREE_SPACE) / T.TOTAL_SPACE, 4) * 100)||'%' END PER_USED
FROM ( SELECT TABLESPACE_NAME,ROUND(SUM(BLOCKS * (SELECT PARA_VALUE / 1024 FROM V$DM_INI WHERE PARA_NAME = 'GLOBAL_PAGE_SIZE') / 1024)) FREE_SPACEFROM DBA_FREE_SPACEGROUP BY TABLESPACE_NAME 
) F, 
( SELECT TABLESPACE_NAME,ROUND(SUM(BYTES / 1048576)) TOTAL_SPACEFROM DBA_DATA_FILESGROUP BY TABLESPACE_NAME 
) T, 
( SELECT TABLESPACE_NAME,ROUND(SUM(MAXBYTES / 1048576)) TOTAL_MAX_SPACEFROM DBA_DATA_FILESGROUP BY TABLESPACE_NAME 
) H 
WHERE F.TABLESPACE_NAME = T.TABLESPACE_NAME AND F.TABLESPACE_NAME = H.TABLESPACE_NAME;
-- 注意事項:
-- 1)MAIN|TEMP|ROLL|SYSTEM表空間由系統自動管理,無需關注使用率
-- 2)計算公式復雜原因:一個表空間可包含多個數據文件,若存在自動拓展且無上限的文件,使用率參考意義較低-- 6. 查詢表空間的數據文件使用情況
SELECT PATH,TO_CHAR(TOTAL_SIZE*PAGE/1024/1024) AS TOTAL_SIZE,TO_CHAR(FREE_SIZE*PAGE/1024/1024) AS FREE_SIZE,(TO_CHAR(100-FREE_SIZE*100/TOTAL_SIZE)) AS REM_PER,CASE AUTO_EXTEND WHEN '0' THEN '未開啟' WHEN '1' THEN '已開啟' END AS AUTO_EXTEND,NEXT_SIZE,MAX_SIZE,b.TABLESPACE_NAME
FROM V$DATAFILE a,dba_data_files b 
WHERE b.file_name = a.PATH 
ORDER BY GROUP_ID;
-- 注意事項:
-- 1)MAIN|TEMP|ROLL|SYSTEM表空間由系統自動管理,無需關注-- 7. 查詢數據庫中的用戶信息
SELECT A.USERNAME,CASE B.RN_FLAG WHEN '0' THEN '否' WHEN '1' THEN '是' END AS READ_ONLY,CASE A.ACCOUNT_STATUS WHEN 'LOCKED' THEN '鎖定' WHEN 'OPEN' THEN '正常' END AS "狀態",TO_CHAR(A.LOCK_DATE,'YYYY-MM-DD HH24:MI:SS') AS "鎖定起始時間",TO_CHAR(A.EXPIRY_DATE,'YYYY-MM-DD HH24:MI:SS') AS "密碼截止使用時間",TO_CHAR(round(datediff(DAY,TO_CHAR(sysdate,'YYYY-MM-DD HH24:MI:SS'),TO_CHAR(A.EXPIRY_DATE,'YYYY-MM-DD HH24:MI:SS')),2)) AS EXPIRY_DATE_DAY,TO_CHAR(round(datediff(DAY,TO_CHAR(sysdate,'YYYY-MM-DD HH24:MI:SS'),TO_CHAR(A.LOCK_DATE,'YYYY-MM-DD HH24:MI:SS')),2)) AS LOCK_DATE_DAY,A.DEFAULT_TABLESPACE,A.PROFILE,TO_CHAR(A.CREATED,'YYYY-MM-DD HH24:MI:SS') AS CREATE_TIME
FROM DBA_USERS A,SYSUSERS B 
WHERE A.USER_ID=B.ID;
-- 注意事項:
-- 1)需關注密碼設置有效期后即將到期的用戶
-- 2)需關注非預期情況下的用戶賬號鎖定狀態-- 8. 查詢數據庫中用戶權限
SELECT USERNAME AS "用戶名", WM_CONCAT(PRIVILEGE) AS "默認權限"
FROM(SELECT A.USERNAME,C.PRIVILEGE FROM DBA_USERS A,SYSUSERS B,(SELECT A.* FROM (SELECT GRANTEE,GRANTED_ROLE PRIVILEGE,'ROLE_PRIVS' PRIVILEGE_TYPE,CASE ADMIN_OPTION WHEN 'Y' THEN 'YES' ELSE 'NO' END ADMIN_OPTION FROM DBA_ROLE_PRIVSUNION SELECT GRANTEE,PRIVILEGE,'SYS_PRIVS' PRIVILEGE_TYPE,ADMIN_OPTION FROM DBA_SYS_PRIVSUNION SELECT GRANTEE,PRIVILEGE||' ON '||OWNER||'.'||TABLE_NAME PRIVILEGE,'TABLE_PRIVS' PRIVILEGE_TYPE,GRANTABLE FROM DBA_TAB_PRIVS) AWHERE GRANTEE IN (SELECT USERNAME FROM ALL_USERS WHERE USERNAME NOT IN ('SYS','SYSDBA','SYSSSO','SYSAUDITOR') ) ) C WHERE A.USER_ID=B.ID AND A.USERNAME = C.GRANTEE
)
GROUP BY USERNAME;
-- 注意事項:
-- 1)需關注是否給應用用戶授予DBA權限等過高權限-- 9. 查詢數據庫中的對象是否無效(函數、存儲過程、包等對象)
SELECT OWNER,OBJECT_NAME,OBJECT_TYPE,TO_CHAR(CREATED,'YYYY-MM-DD HH24:MI:SS'),TO_CHAR(LAST_DDL_TIME,'YYYY-MM-DD HH24:MI:SS')
FROM DBA_OBJECTS 
WHERE OWNER NOT IN('SYS','SYSJOB','SYSAUDITOR','CTISYS','SYSSSO'
)AND STATUS = 'INVALID';
-- 注意事項:
-- 1)需關注庫中無效的函數、包、存儲過程等對象,評估是否需要處理-- 10. 查詢數據庫中的大表信息
SELECT A.TABLE_NAME,A.TABLESPACE_NAME,B.OWNER,B.BYTES
FROM (SELECT TABLE_NAME,TABLESPACE_NAME FROM ALL_TABLES  GROUP BY TABLE_NAME,TABLESPACE_NAME
) AS A 
LEFT JOIN (SELECT OWNER,SEGMENT_NAME,SUM(BYTES) BYTES FROM DBA_SEGMENTS WHERE SEGMENT_TYPE='TABLE'GROUP BY OWNER,SEGMENT_NAME
) AS B 
ON A.TABLE_NAME=B.SEGMENT_NAME 
WHERE B.OWNER NOT IN ('SYS','SYSDBA','SYSAUDITOR','SYSSSO','CTISYS') 
ORDER BY BYTES DESC 
LIMIT 10;-- 11. 查詢數據庫中的分區大表信息
SELECT A.OWNER,A.TABLE_NAME,A.PARTITIONING_TYPE,TO_CHAR(ROUND(TABLE_USED_SPACE(A.OWNER, A.TABLE_NAME) * PAGE / 1024.0 / 1024, 2)) SIZEMB,A.PARTITION_COUNT as partition_num,table_rowcount(a.owner, a.table_name) as row_num
FROM DBA_PART_TABLES a;-- 12. 查詢數據庫中會話的使用情況
SELECT *
FROM (SELECT STATE,CASE WHEN INSTR(CLNT_IP, ':',8) > 0 THEN SUBSTR(CLNT_IP, 1, INSTR(CLNT_IP, ':',8) - 1) ELSE CLNT_IP END AS CLNT_IP,CLNT_TYPE,CURR_SCH,USER_NAME,COUNT(*) COUNTSFROM V$SESSIONSGROUP BY STATE,CASE WHEN INSTR(CLNT_IP, ':',8) > 0 THEN SUBSTR(CLNT_IP, 1, INSTR(CLNT_IP, ':',8) - 1) ELSE CLNT_IP END,CLNT_TYPE,CURR_SCH,USER_NAMEORDER BY STATE
);-- 13. 長時間空閑會話檢查
SELECT SESS_ID,SESS_SEQ,USER_NAME,CREATE_TIME,CLNT_TYPE,CLNT_HOST,CLNT_IP,OSNAME,CONN_TYPE,CLNT_VER 
FROM SYS.V$SESSIONS 
WHERE STATE = 'IDLE'AND DATEDIFF(HH, LAST_SEND_TIME, SYSDATE) > 48AND DATEDIFF(HH, CREATE_TIME, SYSDATE) > 48;
-- 注意事項:
-- 1)達夢數據庫默認不會自動斷開會話連接
-- 2)曾出現因未提交事務導致其他事務等待的情況(如未提交的insert)
-- 3)建議定期清理長時間空閑會話-- 14. 查詢數據庫的redo日志大小
SELECT FILE_ID,PATH,CLIENT_PATH,RLOG_SIZE FROM V$RLOGFILE;
-- 注意事項:
-- 1)單個redo日志文件不建議低于2G,且建議所有redo日志大小一致-- 15. 查詢數據庫的定時任務信息
SELECT SYSJOB."NAME",SCHE."NAME" SCHENAME,SCHE."JOBID",SCHE."TYPE",SCHE."FREQ_INTERVAL",SCHE."FREQ_SUB_INTERVAL",SCHE."STARTTIME",STEPS."NAME" STEPSNAME,STEPS."SEQNO" STEPSSEQNO,STEPS."TYPE" STEPSTYPE,STEPS.COMMAND WHAT,STEPS.SUCC_ACTION,STEPS.FAIL_ACTION
FROM SYSJOB.SYSJOBSCHEDULES SCHE
LEFT JOIN SYSJOB.SYSJOBSTEPS STEPSON SCHE.JOBID = STEPS.JOBID
LEFT JOIN SYSJOB.SYSJOBS SYSJOBON SCHE.JOBID = SYSJOB.ID
WHERE SCHE.VALID == 'Y'
ORDER BY STEPS.JOBID, STEPS.SEQNO ASC;
-- 注意事項:
-- 1)檢查是否配置定時數據備份任務,保障數據安全-- 16. 查詢定時任務是否有錯誤
SELECT NAME,'' STEPNAME,MAX(START_TIME) START_TIME,ERRINFO 
FROM ( SELECT NAME,MAX(START_TIME) START_TIME,ERRINFO FROM SYSJOB.SYSSTEPHISTORIES2 WHERE ERRCODE !=0 GROUP BY NAME, ERRINFO UNION ALL SELECT NAME,MAX(START_TIME) START_TIME,ERRINFO FROM SYSJOB.SYSJOBHISTORIES2 WHERE ERRCODE !=0 GROUP BY NAME, ERRINFO 
) 
WHERE TO_CHAR(START_TIME,'YYYY-MM-DD HH24:MI:SS') >= TO_CHAR(TRUNC(ADD_DAYS(SYSDATE, -7)),'YYYY-MM-DD HH24:MI:SS')
GROUP BY NAME, ERRINFO
ORDER BY START_TIME DESC 
LIMIT 10;-- 17. 數據字典的淘汰情況
SELECT ROUND(TOTAL_SIZE/1024.0/1024, 2) TOTALSIZE,ROUND(USED_SIZE /1024.0/1024, 2) USEDSIZE,DICT_NUM DICTNUM,ROUND(SIZE_LRU_DISCARD/1024.0/1024, 2) SIZELRUDISCARD,LRU_DISCARD LRUDISCARD,ROUND((USED_SIZE/1024.0/1024)/(TOTAL_SIZE/1024.0/1024)*100, 2) CACHE_HIT
FROM V$DB_CACHE;
-- 注意事項:
-- 1)根據數據字典的使用/淘汰率,判斷是否需要調整數據字典緩沖區參數-- 18. 查詢數據庫中的無效索引
SELECT owner, index_name,table_name,index_type,status 
FROM dba_indexes
WHERE status != 'VALID' AND owner NOT IN ('SYS', 'SYSAUDITOR', 'SYSSSO', 'SYSDBA', 'DEM', 'SYSJOB', 'SYSDBO')
ORDER BY 1,2,3;-- 19. 查詢數據庫分區表中的無效索引
SELECT * 
FROM (SELECT SCH_NAME, INDEX_NAME, PARTITION_NAME, SUBPARTITION_NAME,STATUS FROM DBA_IND_SUBPARTITIONSUNION SELECT SCH_NAME, INDEX_NAME, PARTITION_NAME, NULL,STATUS FROM DBA_IND_PARTITIONSUNION SELECT OWNER, INDEX_NAME, NULL, NULL,STATUS FROM DBA_INDEXES
) S 
WHERE S.STATUS = 'UNUSABLE'AND S.SCH_NAME NOT IN ('SYS', 'SYSAUDITOR', 'SYSSSO', 'SYSDBA', 'DEM', 'SYSJOB', 'SYSDBO')
ORDER BY 1, 2;-- 20. 查詢數據庫中的大索引信息
SELECT objname AS "對象名",objtype as "對象類型",TABLESPACE_NAME AS "表空間",to_char(round(TOT_BLOCKS/1024.0/1024.0*page(),2)) AS "大小(MB)"
FROM (SELECT objname,objtype,TABLESPACE_NAME,SUM(page_used) TOT_BLOCKS FROM (select * from (select owner||'.'||index_name objname, 'INDEX/INDEX PART' objtype, TABLESPACE_NAME, INDEX_USED_PAGES(owner,index_name) page_used from dba_indexes where tablespace_name not in ('TEMP','ROLL','SYSTEM')and owner not in ('SYS','SYSAUDITOR','SYSSSO','SCHEDULER')and temporary='N'and INDEX_TYPE != 'CLUSTER'and INDEX_USED_PAGES(owner,index_name)> (select sum(TOTAL_SIZE)* 0 from v$datafile)order by index_used_space(owner,table_name) desc)order by page_used desclimit 10)GROUP BY objname,objtype,TABLESPACE_NAMEorder by TOT_BLOCKS DESC limit 10
);-- 21. 查詢監視器信息
SELECT TO_CHAR(DW_CONN_TIME, 'YYYY-MM-DD HH24:MI:SS') CONN_TIME,MON_CONFIRM,MON_IP,MON_ID,MON_TERM 
FROM v$dmmonitor;-- 22. 查詢實例運行錯誤的日志
SELECT * 
FROM V$INSTANCE_LOG_HISTORY 
WHERE LEVEL$ NOT IN ('INFO','WARN');-- 23. 查詢數據庫中是否存在死鎖
SELECT TO_CHAR(HAPPEN_TIME,'YYYY-MM-DD HH24:MI:SS') HAPPEN_TIME,SQL_TEXT 
FROM V$DEADLOCK_HISTORY 
WHERE HAPPEN_TIME > DATEADD(DAY,-30,SYSDATE);-- 24. 查詢數據庫中已經運行后的慢SQL
SELECT SQL_TEXT,EXEC_TIME,FINISH_TIME 
FROM V$SYSTEM_LONG_EXEC_SQLS 
ORDER BY EXEC_TIME DESC;-- 25. 查詢數據庫中運行報錯的SQL語句
SELECT SQL_TEXT,ECPT_DESC,max(ERR_TIME)ERR_TIME 
FROM V$RUNTIME_ERR_HISTORY  
GROUP BY SQL_TEXT,ECPT_DESC 
LIMIT 10;-- 26. 查詢數據庫中正在運行的慢SQL
SELECT * 
FROM ( SELECT DATEDIFF(MS,LAST_RECV_TIME,SYSDATE) EXEC_TIME,DBMS_LOB.SUBSTR(SF_GET_SESSION_SQL(SESS_ID)) SLOW_SQL,SESS_ID,CURR_SCH,THRD_ID,LAST_RECV_TIME,SUBSTR(CLNT_IP,8,13) CONN_IPFROM V$SESSIONS WHERE 1=1AND STATE='ACTIVE'ORDER BY 1 DESC
) 
WHERE EXEC_TIME >= ? AND LAST_RECV_TIME > TO_TIMESTAMP('2000-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS') 
LIMIT ?;
-- 說明:其中“?”為參數占位符,需根據實際情況替換(如執行時間閾值和返回條數限制)

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/91850.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/91850.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/91850.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

cobalt strike(CS)與Metasploit(MSF)聯動

CS —> MSF首先cs上創建一個http的外部監聽器。此時在CS服務端查看監聽的ip&#xff0c;發現并沒有開啟&#xff0c;需要到成功移交會話后才會啟動。netstat -tunlp | grep 7000在MSF中使用handler模塊&#xff0c;配置監聽。注意&#xff1a;目標機器的地址是rhost&#xf…

C# 類型

原文&#xff1a;C# 類型_w3cschool C#類型 類型定義值的藍圖。有不同的操作與不同類型相關聯。 在下面的示例中&#xff0c;我們使用兩個類型為int的常量&#xff0c;值為2 和 3。 static void Main() {int x 2 * 3;Console.WriteLine (x); } int 是一個表示整數值的構建…

確保TDesign Vue Next中t-color-picker組件在彈出顏色拾取面板時保證該面板不抖動方法參考

使用TDesign Vue Next中的組件t-color-picker時&#xff0c;在顏色面板彈出后&#xff0c;如果修改里面的顏色&#xff0c;發現這個顏色拾取面板會隨著顏色的改變位置不斷抖動&#xff0c;該問題由顯示顏色的數值文本的長度變化引起&#xff0c;因此要覆蓋組件內部顏色值文本的…

bypass

代碼解析修改自身bypass&#xff1a;第一句話$s"Declaring file object\n";定義一個s&#xff0c;值為Declaring file object第二句話$d$_SERVER[DOCUMENT_ROOT].$_SERVER[DOCUMENT_URI]; 不知道$_SERVER是什么&#xff0c;那就打印出來看看。輸入echo <pre>;…

C語言:構造類型學習

內容提要 構造類型 枚舉類型typedef 綜合案例&#xff1a;斗地主 構造類型 枚舉類型 建議&#xff1a;如果定義不相干的常理&#xff0c;使用宏定義&#xff08;符號常量&#xff09;&#xff1b;如果需要定義一組相關聯的常量&#xff0c;如月份0~11&#xff0c;星期0~6&#…

Prometheus-3--Prometheus是怎么抓取Java應用,Redis中間件,服務器環境的指標的?

1、Prometheus抓取Java應用的指標 1、數據來源&#xff1a;Java應用自身暴露的指標 Java應用的指標數據來源于應用代碼中定義的指標對象&#xff08;如Counter、Gauge、Histogram等&#xff09;&#xff0c;通過Prometheus客戶端庫&#xff08;如io.prometheus:client_java&…

42.安卓逆向2-補環境-unidbg安裝和簡單使用

免責聲明&#xff1a;內容僅供學習參考&#xff0c;請合法利用知識&#xff0c;禁止進行違法犯罪活動&#xff01; 內容參考于&#xff1a;圖靈Python學院 工具下載&#xff1a; 鏈接&#xff1a;https://pan.baidu.com/s/1bb8NhJc9eTuLzQr39lF55Q?pwdzy89 提取碼&#xff1…

數據結構與算法:哈希函數的應用及一些工程算法

前言這篇里的東西可以說了解了解就行了。一、哈希函數均勻性展示原本讓deepseek轉了一下老師的java代碼&#xff0c;但發現復刻起來太麻煩了。又因為這個理解就好&#xff0c;競賽不會有&#xff0c;所以就直接貼老師的java代碼了……import java.security.MessageDigest; impo…

交叉編譯ARM環境

ARM交叉編譯 可以采用交叉編譯工具鏈&#xff1a; sudo apt-get install aarch64-linux-gnu-gcc sudo apt-get install aarch64-linux-gnu-g sudo apt-get install gcc-arm-linux-gnueabi sudo apt-get install g-arm-linux-gnueabi 上面兩個是64位&#xff0c;下面兩個是…

算法思想 之 拓撲排序問題

歡迎拜訪&#xff1a;霧里看山-CSDN博客 本篇主題&#xff1a;算法思想 之 拓撲排序問題 發布時間&#xff1a;2025.8.4 隸屬專欄&#xff1a;算法 目錄算法介紹核心原理適用場景實現步驟(Kahn 算法)例題課程表題目鏈接題目描述算法思路代碼實現課程表 II題目鏈接題目描述算法思…

機器學習 入門——決策樹分類

決策樹是一種直觀且強大的機器學習算法&#xff0c;適用于分類和回歸任務。本文將全面介紹決策樹分類的原理、實現、調優和實際應用。一、什么是決策樹分類1.概念決策樹分類是一種樹形結構的分類模型&#xff0c;它通過遞歸地將數據集分割成更小的子集來構建決策規則。就像我們…

虛擬機中查看和修改文件權限

在虛擬機中管理文件權限是系統管理的重要部分&#xff0c;無論是在Linux還是Windows虛擬機中。下面我將詳細介紹兩種主要系統的權限管理方法。Linux虛擬機中的文件權限管理查看文件權限使用ls命令&#xff1a;ls -l 文件名輸出示例&#xff1a;-rwxr-xr-- 1 user group 1024 Ju…

圖像處理拉普拉斯算子

AI對話記錄&#xff0c;還沒有來得及仔細驗證和推導&#xff0c;目前只是記錄 當然可以&#xff01;我們來一步步推導拉普拉斯算子在旋轉變換下保持不變的數學過程。這里以二維情況為例&#xff0c;最直觀也最常見。&#x1f9ee; 拉普拉斯算子旋轉不變性的推導&#xff08;二維…

React ahooks——副作用類hooks之useThrottleEffect

useThrottleEffect 是 ahooks 提供的節流版 useEffect&#xff0c;它在依賴項變化時執行副作用函數&#xff0c;但會限制執行頻率。一、基本語法useThrottleEffect(effect: React.EffectCallback,deps?: React.DependencyList,options?: Options )二、參數詳解2.1. effect (必…

【建模與仿真】融合畫像約束和潛在特征的深度推薦算法

導讀&#xff1a; 基于深度學習的推薦算法已成為推薦系統領域的研究趨勢。然而&#xff0c;大多數現有工作僅考慮單一的用戶與物品交互數據&#xff0c;限制了算法的預測性能。本文提出一種畫像約束的編碼方式&#xff0c;并融合隱因子模型中的潛在特征&#xff0c;豐富了推薦…

華為網路設備學習-26(BGP協議 二)路徑屬性

一、屬性分類二、屬性含義①公認必遵&#xff1a;所有BGP對等體 必須識別 且 在Update報文中攜帶1.Origin2.AS-Path3.Next hop②公認自決&#xff1a;所有BGP對等體 必須識別但可以不在Update報文中攜帶 1.Local-Preference2.ATOMIC_Aggregate③可選傳遞&#xff1a;所有BGP對…

從0搭建YOLO目標檢測系統:實戰項目+完整流程+界面開發(附源碼)

文章目錄一、前言二、專欄介紹三、已有系統介紹3.0 基于yolo通用目標檢測系統&#xff08;手把手教你修改成為自己的檢測系統&#xff09;3.1 基于yolov8柑橘檢測系統3.2 基于yolov8艦船檢測系統3.3 基于yolo11人臉檢測系統3.4 基于yolov8無人機影像光伏板缺陷檢測系統一、前言…

【測試】自動化測試工具基礎知識及基本應用

下面詳細介紹一些常用的自動化測試工具及其基本概念&#xff0c;并提供具體的示例代碼&#xff0c;幫助你更好地理解和應用這些工具。1. 自動化測試的基本概念自動化測試是通過軟件程序自動執行測試用例的過程。與手動測試相比&#xff0c;自動化測試能夠提高測試效率、減少人為…

ArcGIS的字段計算器生成隨機數

在ArcGIS的字段計算器中使用Python腳本生成0-100的隨機數&#xff0c;可以按照以下步驟操作&#xff1a; 打開屬性表&#xff0c;選擇要計算的字段打開字段計算器選擇"Python"解析器勾選"顯示代碼塊"在"預邏輯腳本代碼"中輸入以下代碼在下方表達…

【前端:Html】--1.1.基礎語法

目錄 1.HTML--簡介 2.HTML--編譯器 步驟一:啟動記事本 步驟二:用記事本來編輯 HTML 步驟三:保存 HTML 步驟四:在瀏覽器中運行 HTML 3.HTML--基礎 3.1.HTML聲明--!DOCTYPE 3.2.HTML 標題--h1 3.3.HTML 段落--p 3.3.1. 水平線--hr 3.3.2.換行符--br 3.3.3.固定格式…