Oracle 12c RAC 圖形化界面安裝文檔

来源:https://www.cnblogs.com/leohahah/archive/2018/08/16/9488963.html
-Advertisement-
Play Games

參考文檔: https://docs.oracle.com/en/database/oracle/oracle-database/12.2/cwlin/index.html https://docs.oracle.com/en/database/oracle/oracle-database/12.2 ...


參考文檔:

https://docs.oracle.com/en/database/oracle/oracle-database/12.2/cwlin/index.html

https://docs.oracle.com/en/database/oracle/oracle-database/12.2/ladbi/index.html

https://oracle-base.com/articles/linux/udev-scsi-rules-configuration-in-oracle-linux

https://oracle-base.com/articles/12c/oracle-db-12cr2-rac-installation-on-oracle-linux-7-using-virtualbox

建設背景:

建設本文檔的目的在於詳細梳理12c RAC圖形化安裝的流程,結合官方文檔儘可能解釋安裝過程中的各種操作的原理,提供不同的存儲配置方法和參數修改方法,最後形成一套完整的12c RAC圖形化安裝步驟以便於今後參考。

安裝流程:

一、軟體下載

http://www.oracle.com/technetwork/database/enterprise-edition/downloads/oracle12c-linux-12201-3608234.html

下載 linuxx64_12201_database.zip 和 linuxx64_12201_grid_home.zip 就可以了,然後上傳至節點1的任意目錄。

二、硬體和網路環境

  • 檢查記憶體(至少8GB)、Swap和硬碟大小等等,參考GRID官網安裝文檔的:Server Hardware Checklist for Oracle Database Installation。

需要說明的是12c RAC安裝,OCR盤至少需要40GB大小,因為12c新增了MGMTDB實例進行集群管理,如果你不單獨的為他創建一個磁碟組,這些信息就會進入OCR盤,導致OCR盤需要40GB的空間才夠。

  • 檢查操作系統版本,參考GRID官網安裝文檔的:Operating System Checklist for Oracle Database Installation on Linux。

本文的系統環境為Oracle Enterprise Linux 6.9。

  • tmpfs務必保證至少是最大記憶體的一半。

如果需要更大的SGA,那麼至少要將將tmpfs設置為大於SGA的值,因為OEL系統下Oracle占用的共用記憶體不能大於tmpfs。

  • 檢查網路環境。

7個IP是需要申請的,其中2個作為Public IP,2個作為VIP,1個Scan-IP,這5個IP應當是同一網段的,最後還需要2個不同網段的Private IP,雖然私網IP可以自定義,但是在不清楚私網是直連還是通過交換機時,最好申請獨立的私網IP。網卡每個節點需要2個至少,Public IP占用一個,Private占用一個。

  • 以下為一個示例/etc/hosts文件: 
vi /etc/hosts
#需要註意的是12c對主機名的要求比以前更加嚴格,不再允許出現下劃線'_',只能使用連接線'-'。
#Public IP
192.168.10.101 node1
192.168.10.102 node2
#Private IP
1.1.1.1 node1-priv
1.1.1.2 node2-priv
#VIP
192.168.10.103 node1-vip
192.168.10.104 node1-vip
#Scan-IP
192.168.10.105 scanip
三、系統環境設置

Oracle強烈推薦使用一個名為oracle-database-server-12cR2-preinstall的RPM包來做預原裝的檢測工作。

此RPM包安裝完畢後會出現一個/usr/bin/oracle-database-server-12cR2-preinstall-verify的系統命令,此命令主要就是做一些RAC安裝前的準備工作,如禁用透明大頁,修改內核參數和修改用戶limits等等,需要提示的是此腳本只修改Oracle用戶的limits,對於grid用戶你需要把Oracle的limits內容複製一遍就可以了,相關的文件位置為:

/etc/security/limits.d/oracle-database-server-12cR2-preinstall.conf
--需要說明的是:limits.d目錄中的用戶限制文件是在/etc/security/limits.conf文件生效之後生效的,因此會覆蓋limits.conf文件中的重覆部分。
--穩妥起見直接在/etc/security/limits.d/oracle-database-server-12cR2-preinstall.conf文件中定義好oracle和grid用戶的ulimit限制。

Oracle提供了多種 oracle-database-server-12cR2-preinstall RPM包的下載方式,這裡只選擇我認為較簡單的一種獲取方式:

wget http://yum.oracle.com/public-yum-ol6.repo -O /etc/yum.repos.d/public-yum-ol6.repo 
--執行以上下載命令前最好檢查下你是否本來就有public-yum-ol6.repo,如果有先做個備份防止被覆蓋。
yum -y install oracle-database-server-12cR2-preinstall
--如果無法聯網,那麼可以使用yum的--downloadonly選項在其他機器上下載此rpm包後上傳到安裝節點,然後使用rpm安裝。
--無法聯網時使用rpm安裝oracle-database-server-12cR2-preinstall還需要先安裝ksh依賴包。
--此外註意,如果沒有yum makecache那麼以上安裝可能非常慢,因為這個repo庫特別龐大,國內網路連Oracle的yum源的速度大家也懂得。

安裝完畢後會出現一個oracle-database-server-12cR2-preinstall-verify的系統命令,執行此命令應該就可以進行預設置了,然而實測還發現這個命令在OEL6.5版本上不能用,因為需要/etc/sysctl.d文件夾,這個文件夾OEL6.9是有的6.5並沒有,因此要麼是需要低版本的oracle-database-server-12cR2-preinstall,要麼是不支持OEL6.5,無論是哪種原因這裡都懶得深究了。

那麼假如不用oracle-database-server-12cR2-preinstall,我們自己大致需要做哪些預操作呢,主要有以下幾部分:

  • 禁用透明大頁

如果有大頁需求,Oracle建議使用標準的大頁提升性能,嚴禁使用透明大頁。透明大頁與標準大頁的區別在於可以在系統運行時分配記憶體,而標準大頁只能重啟生效。

如果你要使用大頁來提升性能,請務必搜索安裝文檔的所有HugePage關鍵詞,根據文檔作出修改,消除大頁帶來的隱患。

具體禁用透明大頁的步驟,我就不複製粘貼了,有興趣的參考12c GI安裝文檔的4.13部分--Disabling Transparent HugePages,百度也可以查到關閉方式。
  • 基礎包安裝

oracle-database-server-12cR2-preinstall也不會幫你裝好這些包,因此這一步是必須要手工做的。

yum -y install binutils.x86_64 compat-libcap1.x86_64 compat-libstdc* e2fsprogs.x86_64 libaio* libXau* libXi* libXtst* libstdc* 
--以上命令是我自己簡化後的安裝語句,一般來說執行完以上安裝就足夠了,不夠也沒事,裝grid時如果有缺失的根據報錯Detail再裝就好了。
--不同Linux版本所需的包完整列表參考GI安裝官方文檔的4.7小節--Operating System Requirements for x86-64 LinuxPlatforms。
  • 內核參數修改(64GB記憶體 40GB tmpfs時的設置)

vi /etc/sysctl.conf
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 10485760
kernel.shmmax = 42949672960
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
  • 時間同步設置

參考網上配置ntp相關的文檔即可,手工設置時間也可以。

  • 禁用防火牆和selinux

當然你也可以選擇使用防火牆但是開放相應埠,但是簡便起見我還是直接關了。

service iptables stop
service ip6tables stop
chkconfig iptables off
chkconfig ip6tables off
--selinux的關閉自己上網搜。

其他的預安裝要求個人認為不再需要了,如果有更高的性能需求可以查看官方文檔來進行更詳細的設置,但本著簡單安裝、簡單管理的原則,就這樣啦。

四、用戶、組、以及目錄

--兩節點添加用戶和組
groupadd -g 501 oinstall
groupadd -g 502 dba
groupadd -g 503 asmadmin
groupadd -g 504 asmdba
groupadd -g 505 asmoper
groupadd -g 506 oper
useradd -u 501 -g oinstall -G asmadmin,asmdba,asmoper,dba grid
useradd -u 502 -g oinstall -G dba,asmdba,oper oracle
--兩節點創建目錄並設置許可權
mkdir -p /u01/app/oracle/product/12.2.0/db_1
mkdir -p /u01/app/grid
mkdir -p /u01/12.2.0/grid
mkdir -p /u01/app/oraInventory
chown -R oracle.oinstall /u01/app/oracle/
chown -R oracle.oinstall /u01/app/oracle/*
chown -R grid.oinstall /u01/app/grid/
chown -R grid.oinstall /u01/app/oraInventory/
chown -R grid.oinstall /u01/12.2.0/grid/
--修改用戶安全限制:
--如果你不使用oracle-database-server-12cR2-preinstall,那麼將以下內容複製到/etc/security/limits.conf文件中即可
--如果你使用了oracle-database-server-12cR2-preinstall,那麼將以下內容複製到/etc/security/limits.d/oracle-database-server-12cR2-preinstall.conf中即可(將之前的內容清空)
oracle soft nofile 2048
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
oracle hard memlock 134217728
oracle soft memlock 134217728
grid soft nofile 2048
grid hard nofile 65536
grid soft nproc 16384
grid hard nproc 16384
grid soft stack 10240
grid hard stack 32768
grid hard memlock 134217728
grid soft memlock 134217728
--無論以上哪種用戶安全限制方式,都是需要PAM模塊來調用的,因此繼續檢查/etc/pam.d/login文件內容:
session   required    pam_limits.so
如果未發現以上行,那麼加上。
--兩節點設置用戶環境變數,向.bash_profile添加如下項:
su - grid
vi .bash_profile
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/12.2.0/grid
export ORACLE_SID=+ASM1/+ASM2
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
su - oracle
vi .bash_profile
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/12.2.0/db_1
export ORACLE_SID=orcl1/orcl2
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
--在節點一配置ssh互信,步驟如下:
--使用root將資料庫軟體拷貝至/home/oracle/下:
# chown oracle.oinstall linuxx64_12201_database.zip
# su - oracle
$ unzip linuxx64_12201_database.zip
$ cd database/sshsetup/
$ ./sshUserSetup.sh -user oracle -hosts "node1 node2" -advanced -noPromptPassphrase
$ ./sshUserSetup.sh -user grid -hosts "node1 node2" -advanced -noPromptPassphrase
--最後在節點1使用oracle和grid用戶都執行以下兩條命令驗證互信:
$ ssh node2 date
$ ssh node2-priv date
--如果不需要輸入密碼則說明互信配置成功。

五、存儲環境設置

存儲的配置總結下只有2步:持久化配置 和 許可權配置 ,我們分兩種情況來描述存儲配置的步驟。

  • 情況一:使用多路徑軟體時:

一般來說生產上的存儲使用系統自帶的多路徑軟體multipath即可完成多路徑持久化配置,這裡貼一個示例配置文件的一部分:

# multipath.conf written by anaconda
......
multipaths {
    multipath {
        wwid "360080e50003279f000001a785a275fe8"
        alias REDO_01
    }
    multipath {
        wwid "360080e50003279f000001a775a275fba"
        alias RAC_OCR
    }
    multipath {
        wwid "360080e50003279f000001a795a27604e"
        alias RAC_ARCHIVE
    }
    multipath {
        wwid "360080e50003217cc00001c6d5a280dd8"
        alias REDO_02
    }
    multipath {
        wwid "360080e50003217cc00001c6e5a280e2b"
        alias RAC_DATA
    }
}
--不建議在這裡加uid gid mode來設置屬主和許可權,因為不能設置附屬group。

根據uuid進行了alias的綁定,之後重啟multipathd即可,使用multipath -ll可以看到聚合後的盤。

然後使用multipath自帶的udev文件12-dm-permissions.rules來完成聚合盤(/dev/dm-*)的許可權配置,這樣安裝時直接查找/dev/mapper/*路徑即可找到以alias名字顯示的盤。

--設置步驟:
cp /usr/share/doc/device-mapper-1.02.117/12-dm-permissions.rules /etc/udev/rules.d/
vi /etc/udev/rules.d/12-dm-permissions.rules
--添加或註釋如下一行:
ENV{DM_UUID}=="mpath-?*", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
--說白了就是設置下聚合盤的許可權
start_udev
這裡還有一些替代的方法,例如使用60-raw.rules來代替12-dm-permissions.rules的許可權設置功能,例子如下:
# vi /etc/udev/rules.d/60-raw.rules
ACTION=="add", KERNEL=="dm-0", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="dm-1", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="dm-2", RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", KERNEL=="dm-3", RUN+="/bin/raw /dev/raw/raw4 %N"
ACTION=="add", KERNEL=="dm-4", RUN+="/bin/raw /dev/raw/raw5 %N"
KERNEL=="raw*", OWNER="grid" GROUP="asmadmin", MODE="0660"
--其原理是:/dev/mapper/下的盤符其實是指向/dev/dm-*的,將這些聚合盤映射為裸設備,也可以同時改變許可權,缺點在於沒有alias容易混淆。
--這裡可能有人說多路徑可能生成不同的dm-*,尾碼數字是不穩定的,我覺得沒必要擔心,只要你不去作死改多路徑配置文件,這個尾碼的數字就不會變,綁定的raw盤也就不會變。
# start_udev

至此情況一的許可權配置已經完成了,你還可以通過99-oracle-asmdevices.rules來繼續改變下底層盤的許可權,但是這一步可做可不做。

# vi /etc/udev/rules.d/99-oracle-asmdevices.rules
KERNEL=="sd*", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}=="360080e50003279f000001a785a275fe8", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}=="360080e50003279f000001a775a275fba", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}=="360080e50003279f000001a795a27604e", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}=="360080e50003217cc00001c6d5a280dd8", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}=="360080e50003217cc00001c6e5a280e2b", OWNER="grid", GROUP="asmadmin", MODE="0660"
--重啟udev
# start_udev
  • 情況二:如果你未使用multipath(常見於使用虛擬機的測試環境)

那麼直接使用99-oracle-asmdevices.rules(Device Mapper)來完成持久化配置和許可權配置,並綁定易於人眼識別的name。

--參考:https://oracle-base.com/articles/linux/udev-scsi-rules-configuration-in-oracle-linux
--以及參考:官網文檔附加的A部分中的Configuring Device Persistence Manually for Oracle ASM小節
--基本步驟就是:首先使用scsi_id獲取sd盤的uuid,然後將uuid綁定至99-oracle-asmdevices.rules即可。

以上介紹的兩種情況都是使用了udev來完成存儲配置的,你也可以使用ASMLIB來完成ASM盤的持久化和許可權配置,具體參見GI或Database的官方安裝文檔的:Configuring Storage Device Path Persistence Using Oracle ASMLIB部分。

六、GRID安裝

這裡有個小坑,12c的GRID安裝不再會按你設置的grid用戶的$ORACLE_HOME變數來作為GI的家目錄,而是直接將你GRID軟體的解壓目錄作為家目錄,因此你需要將linuxx64_12201_grid_home.zip拷貝至grid用戶的$ORACLE_HOME,本文中就是/u01/12.2.0/grid,然後:

# chown grid.oinstall linuxx64_12201_grid_home.zip
# su - grid
$ unzip linuxx64_12201_grid_home.zip
--這樣在進行安裝時就會將你設置的grid用戶的$ORACLE_HOME作為GI家目錄了。

--註意所有軟體都只需在節點一解壓,節點二無需操作,安裝GI和DB軟體的過程中安裝程式會自動將軟體傳至遠端節點。

--這裡還需要先裝下cvuqdisk包,這個包存在於解壓後的/home/oracle/database/rpm/目錄下:
cp /home/oracle/database/rpm/cvuqdisk-1.0.10-1.rpm /root
--使用root rpm安裝cvuqdisk
rpm -ivh cvuqdisk-1.0.10-1.rpm
--以上包的安裝需要在2節點都執行,使用scp將cvuqdisk包傳至節點二安裝。

解壓後使用grid用戶進行GI安裝:

cd /u01/12.2.0/grid/
./gridSetup.sh

接下來基本只要下一步下一步就完事了,我自己的安裝步驟忘了截圖,因此這裡參考下如下網址的安裝截圖:

https://oracle-base.com/articles/12c/oracle-db-12cr2-rac-installation-on-oracle-linux-7-using-virtualbox

註意:別按他的預安裝步驟做,他使用的是很古老的單用戶RAC安裝方式,現在推薦使用單獨的grid用戶來管理集群,與管理資料庫的oracle用戶分離開。

--這裡需要特別說明下,如果你選了YES即為GIMR創建單獨的MGMT磁碟組,那麼OCR盤大小20GB左右就可以(當然你還需要為MGMT磁碟組準備存儲),如果你選擇NO,那麼請保證OCR盤至少40GB大小(準確數字忘了大概是38GB左右,不過40GB保險)。

根據提示一次在兩節點執行以上腳本即可,出現下圖所示文字是表示執行成功:

至此GRID已經安裝完畢,使用如下命令查看集群狀態:

su - grid
crsctl stat res -t

七、創建ASM磁碟組

使用grid用戶執行asmca創建數據磁碟組DATA和存放REDO、歸檔的磁碟組,一般測試環境這幾個磁碟組合在一起即可。

su - grid
sqlplus / as sysasm
set lines 200
col path for a40
select group_number,header_status,state,name,path,redundancy from v$asm_disk;
select group_number,name,state,COMPATIBILITY,DATABASE_COMPATIBILITY from v$asm_diskgroup;
create diskgroup DATA external redundancy disk '/dev/mapper/RAC_DATA' ATTRIBUTE 'compatible.asm' = '12.2';
create diskgroup ARCHIVE external redundancy disk '/dev/mapper/RAC_ARCHIVE' ATTRIBUTE 'compatible.asm' = '12.2';
create diskgroup REDO external redundancy disk '/dev/mapper/REDO_01','/dev/mapper/REDO_02' ATTRIBUTE 'compatible.asm' = '12.2';

八、DATABASE安裝

cd /home/oracle/database
./runInstaller

根據提示執行以上腳本即可。

九、創建資料庫

使用oracle用戶執行dbca建庫:

--如無pdb需求,那麼不選create as container database

--並不推薦以上建庫方式,建議使用下邊的高級配置,可以自己設置SGA,PGA和字元集等等。

建庫完畢後使用如下命令查看整個集群和資料庫的狀態:

su - grid
crsctl stat res -t
srvctl config database -d orcl
lsnrctl status

十、最後的工作

ALTER SYSTEM SET AUDIT_TRAIL=NONE SCOPE=SPFILE;--關閉審計
alter system set deferred_segment_creation=false; --關閉段創建延遲
ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON=FALSE SCOPE=SPFILE; --關閉密碼大小寫驗證
ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED;--設置登錄次數為無限
ALTER SYSTEM SET CONTROL_FILE_RECORD_KEEP_TIME=31;--控制文件內容保存時間
ALTER SYSTEM SET MAX_DUMP_FILE_SIZE='2048M';--DUMP文件size的最大值
ALTER SYSTEM SET PROCESSES=2048 SCOPE=SPFILE SID='*';--最大進程數
ALTER SYSTEM SET "_UNDO_AUTOTUNE"=FALSE;--關閉UNDO自動調優的功能
ALTER SYSTEM SET "_USE_ADAPTIVE_LOG_FILE_SYNC"=FALSE; --關閉自適應日誌同步功能
alter database add supplemental log data; --打開附加日誌,便於進行故障後數據找回
ALTER SYSTEM SET "O7_DICTIONARY_ACCESSIBILITY"=FALSE scope=spfile; --防止具有drop any table許可權的用戶惡意刪除一些數據字典。

重啟使以上部分設置生效:srvctl stop/start database -d orcl

最後,再設置下數據和歸檔的備份計劃,根據業務壓力調整下REDO大小和組數就可以了。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 剛新裝了個sqlserver2008 R2,在建立資料庫時候報錯,提示無法獲得資料庫"model"上的排它鎖。解決辦法如下: 打開查詢頁面,執行下麵的語句即可。 ...
  • 原理: Mysql熱備份有三個步驟: 說明:在兩台MySQL伺服器172.18.34.161和172.18.133.123上分別進行如下操作 一、主從伺服器分別作以下操作: 二、配置MySQL主伺服器(172.18.34.161) 1) mysql -u root -p #進入MySQL控制台 2) ...
  • 背景: 本項目的伺服器是內網環境,沒有網路,因此需要在離線的環境中,安裝head服務。 需要用到的安裝包有: node的安裝包 elasticsearch的head插件源碼 說明:此次只講述為elasticsearch安裝head服務,不講述elasticsearch的安裝過程。 部署過程: 1、從 ...
  • 轉自:http://www.maomao365.com/?p=7205 摘要: 下文分享兩條sql求和腳本,再次求和的方法分享 ...
  • 使用SSMS刪除數據 1、連接資料庫、選擇數據表-》右鍵點擊,選擇所有行(或者選擇前200行)。 2、在數據視窗中選擇數據行(註意點擊最左邊列選擇整個數據行)-》在最左側右鍵點擊-》選擇刪除-》在彈出框中點擊確定。 3、示例結果如下: 使用T-SQL腳本刪除數據 刪除單表單行數據 語法:delete ...
  • 一個SQL 語句的執行順序 1、From (告訴程式 來自哪張表 如果是表表達式 依舊是如此順序) 2、Where(條件篩選 謂詞篩選 ) 3、Group by(分組) 4、Having(分組 謂詞篩選 ) 5、Select (表達式) 6、表達式(開窗函數 聚合函數 等等) 7、Distinct( ...
  • mysql根據查詢結果更新多條數據(插入或更新) 1.1 前言 mysql根據查詢結果執行批量更新或插入時經常會遇到1093的錯誤問題。基本上批量插入或新增都會涉及到子查詢,mysql是建議不要對需要操作的表放入子查詢條件中的,因此我們儘量避免子查詢中涉及到需要操作的表,如果無法避免,則可以考慮用連 ...
  • 參考文檔: https://docs.oracle.com/en/database/oracle/oracle-database/12.2/cwlin/index.html https://docs.oracle.com/en/database/oracle/oracle-database/12.2 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...