創建ASM實例及ASM資料庫(轉載)

来源:https://www.cnblogs.com/hfjiang/archive/2018/12/26/10180114.html
-Advertisement-
Play Games

-- 創建ASM實例及ASM資料庫 一、ASM相關概念 1.什麼是ASM(Auto Storage Management) 簡稱自動存儲管理,是一種用於管理磁碟的工具 能夠在多個物理設備之間實現條帶化、鏡像數據文件、恢覆文件等 文件按分配單元AUs(allocation units)平衡分佈在磁碟組 ...


--========================

-- 創建ASM實例及ASM資料庫

--========================

 

一、ASM相關概念

    1.什麼是ASM(Auto Storage Management)

        簡稱自動存儲管理,是一種用於管理磁碟的工具

        能夠在多個物理設備之間實現條帶化、鏡像數據文件、恢覆文件等

        文件按分配單元AUs(allocation units)平衡分佈在磁碟組的所有磁碟中,ASM使用索引技術來跟蹤每個AUs的位置

        支持聯機磁碟的動態增加和減少,當磁碟發生變化後,AUs會自動重新實現動態分佈

        支持RAC集群技術,每一節點上運行一個ASM實例,各ASM實例間能實現點對點通訊

        是一個純軟體級別的實現方式,第三方RAID工作在捲層次上,使用統一條帶大小,ASM可以工作在文件層次級別,不同文件可以使用

        不同的條帶大小

       

    2.ASM的優點

        磁碟增加:增加磁碟變得非常容易。無需停機時間,並且文件區域自動重新分配。

        I/O 分配:I/O 自動分佈在所有可用的磁碟上,無需人工干預,從而減少了熱點出現的可能性。 

        帶區寬度:在重做日誌文件中分段可以細分(K,以獲得更快的傳輸速率),對於數據文件,帶區則略大一些(MB,以一次性

        傳輸大量的數據塊)。

        緩衝:ASM 文件系統不進行緩衝,直接進行輸入/輸出。

        鏡像:如果硬體鏡像不可用,則可以容易地建立軟體鏡像。   

        核心化的非同步I/O :實現核心化的非同步I/O 無需特殊的設置,並且無需使用原始或第三方的文件系統(如 Veritas Quick I/O)

                   

    3.Oracle 常用數據文件的RAID級別

        SYSTEM、UNDO表空間通常置於RAID 1捲上

        聯機重做日誌通常置於RAID 0捲上

        控制文件通常置於RAID 0+1 捲上

        數據文件通常置於RAID 5捲上

       

    4.ASM體繫結構(主要由ASM實例及ASM磁碟組組成)

        ASM的使用需要創建一個ASM實例,用於管理ASM磁碟組

        ASM磁碟組由ASM磁碟組成,可以包含一個或多個ASM磁碟

        ASM磁碟可以是實際的磁碟,也可以是磁碟的某個分區,或LVM管理的邏輯捲,但必須是未格式化的原始設備

        ASM磁碟組的大小為該組內ASM磁碟大小的總和,可使用的容量則根據容錯級別而有不同的可用大小

       

    5.ASM實例及RDBMS實例

ASM實例類似於普通的資料庫實例(RDBMS),同樣由SGA和一堆後臺進程組成,對大多數系統而言,SGA只需64 MB即可

ASM實例中的LargePool 用於存放Extent Map,可以根據資料庫的大小來計算LargePool的大小,通常100GB大小需要1MB存放Extent Map

普通的RDBMS實例會定位數據文件並打開其數據文件,而在使用ASM存儲的資料庫中,該工作由ASM實例接管,即ASM實例用於定位和

管理ASM磁碟,磁碟組。

ASM實例擁有類似於普通RDBMS實例的後臺進程,如SMON,PMON,LGWR,DBWR,CKPT等,還增添了兩個新進程,一類是RBAL,一類是ARBn

RBAL:用於協調和管理磁碟組之間的動態平衡

ARBn:可以為多個,用於完成AU的移動

ASM實例僅僅是定位管理ASM磁碟,不能載入或打開資料庫,因此也無法讀取數據字典信息

ASM實例通常有個參數,只能使用口令文件或操作系統身份驗證作為sysdba或sysoper來啟動或關閉該實例。

關於sysdba或sysoper區別請參考:system sys,sysoper sysdba 的區別

 

        一個ASM實例可以為多個RDBMS提供服務,可以在一臺主機上創建多個ASM實例,但通常一臺主機上使用一個ASM實例

        如果一個實例服務於多個RDBMS,建議將ASM的ASM_HOME與DB的ORACLE_HOME分開,便於日後的升級與維護

        ASM磁碟組的創建與配置在ASM實例啟動之後

       

  使用ASM磁碟的RDBMS實例與普通的RDBMS實例相同,但多出了兩個後臺進程,RBAL,ASMB。

            ASMB藉助某個伺服器進程如oracle+ASM1建立普通RDBMS實例到ASM實例的會話,並傳遞磁碟文件的相關信息

            RBAL打開通過ASM實例定位的ASM磁碟

        註意:ASM 實例並不代替RDBMS實例來讀取或寫入數據文件,數據是直接在ASM磁碟和RDBMS實例傳遞,ASM實例僅用於定位數據文件

            所在的asm磁碟,盤區以及所需的相關信息。假定新增加數據文件,則RDBMS告知ASM實例要創建數據文件,ASM實例則分配盤區

            (extent),並創建盤區映射地址返回給RDBMS實例,RDBMS則將數據直接寫入到磁碟組。

               

    6.ASM實例中存儲的文件類型

        控制文件        參數文件        聯機日誌文件        歸檔日誌文件        數據文件        臨時文件

        RMAN備份集、映像副本        控制文件備份集      datapump 轉儲文件、Change Tracing file

       

二、創建ASM實例(下麵基於VMware + RHEL 5.4 + Oracle 10g R2演示)

    1.安裝ASM包

        使用ASM實例,需要到Oracle官方網站下載所需的ASM包。下載路徑:ASMLib下載

        註意下載支持該內核的包,分為兩部分,一是Library and Tools,二是Drivers for kernel

        如本人的Linux的內核為:

            [root@oradb ~]# uname -rm

             2.6.18-164.el5 i686

        則下載對應的包為:

            Library and Tools

                oracleasmlib-2.0.4-1.el5.x86_64.rpm

                oracleasm-support-2.1.3-1.el5.i386.rpm

            Drivers for kernel 2.6.18-164.el5

                oracleasm-2.6.18-164.el5xen-2.0.5-1.el5.i686.rpm

                oracleasm-2.6.18-164.el5debug-2.0.5-1.el5.i686.rpm

                oracleasm-2.6.18-164.el5PAE-2.0.5-1.el5.i686.rpm

                oracleasm-2.6.18-164.el5-debuginfo-2.0.5-1.el5.i686.rpm

                oracleasm-2.6.18-164.el5-2.0.5-1.el5.i686.rpm

        使用下麵類似的方式來安裝這些包,關於RPM 的使用請參考:RPM 使用簡介

            [root@oradb asm]# rpm -Uvh oracleasm-support-2.1.3-1.el5.i386.rpm

        驗證安裝的包

            [root@oradb asm]# rpm -qa | grep asm

            oracleasm-support-2.1.3-1.el5

            oracleasm-2.6.18-164.el5-debuginfo-2.0.5-1.el5

            oracleasm-2.6.18-164.el5-2.0.5-1.el5           

   

    2.啟用css服務(Cluster Synchronization Services )

        用於同步ASM實例與RDBMS實例

            使用root帳戶進行配置,配置程式位於$ORACLE_HOME/bin

            [root@oradb ~]# /u01/oracle/10g/bin/localconfig add

            /etc/oracle does not exist. Creating it now.

            Successfully accumulated necessary OCR keys.

            Creating OCR keys for user 'root', privgrp 'root'..

            Operation successful.

            Configuration for local CSS has been initialized

 

            Adding to inittab

            Startup will be queued to init within 90 seconds.

            Checking the status of new Oracle init process...

            Expecting the CRS daemons to be up within 600 seconds.

            CSS is active on these nodes.

                    oradb

            CSS is active on all nodes.

            Oracle CSS service is installed and running under init(1M)

           

    3.創建ASM參數文件(使用VI或VIM)

        [oracle@oradb dbs]$ cat /u01/oracle/10g/dbs/init+ASM.ora

        *.asm_diskstring=''                                      #為空表示可以搜索任意的ASM磁碟

        *.background_dump_dest='/u01/oracle/admin/+ASM/bdump'    #後臺進程存放位置

        *.core_dump_dest='/u01/oracle/admin/+ASM/cdump'          #核心進程存放位置

        *.user_dump_dest='/u01/oracle/admin/+ASM/udump'          #用戶進程存放位置

        *.instance_type='ASM'                                    #實例類型,普通實例預設則為RDBMS

        *.instance_name='+ASM'                                   #實例名字

        *.large_pool_size=12M                                    #為實例分配large_pool的大小

        *.remote_login_passwordfile='SHARED'                     #登陸認證方式

        *.asm_power_limit=1                                      #控制均衡操作的資源,預設為

               

    4.創建ASM後臺進程目錄,參照參數文件中的配置來創建  

        [oracle@oradb ~]$ echo $ORACLE_BASE

        /u01/oracle/10g

        [oracle@oradb ~]$ mkdir -p $ORACLE_BASE/admin/+ASM/bdump

        [oracle@oradb ~]$ mkdir -p $ORACLE_BASE/admin/+ASM/udump

        [oracle@oradb ~]$ mkdir -p $ORACLE_BASE/admin/+ASM/cdump   

       

    5.創建密碼文件及spfile參數文件

        [oracle@oradb ~]$ orapwd file=$ORACLE_HOME/dbs/orapw+ASM password=redhat entries=8

        [oracle@oradb ~]$ export ORACLE_SID=+ASM

        SQL> conn / as sysdba

        Connected to an idle instance.

        SQL> startup    

        ASM instance started

        ORA-15110: no diskgroups mounted       

        SQL> create spfile from pfile;

 

        SQL> select * from v$asm_diskgroup;

 

        no rows selected

   

    7.創建ASM磁碟及配置ASMlib驅動

        在Vmware分配幾個空閑的磁碟用於創建ASM磁碟,建議使用不同的磁碟控制器

        下麵使用個磁碟來組建ASM磁碟組,分別為sdd,sde,sdf,sdg

        分別對個磁碟進行分區,列出sdd的分區樣例,其餘如法炮製

            [root@oradb ~]# fdisk /dev/sdd

 

            Command (m for help): n

            Command action

               e   extended

               p   primary partition (1-4)

            p

            Partition number (1-4): 1

            First cylinder (1-261, default 1):

            Using default value 1

            Last cylinder or +size or +sizeM or +sizeK (1-261, default 261):

            Using default value 261

 

            Command (m for help): w

            The partition table has been altered!

 

            Calling ioctl() to re-read partition table.

            Syncing disks.     

       

        創建ASM磁碟(三種方法)

           a.配置裸設備映射,修改/etc/udev/rules.d/60-raw.rules文件

            使用root帳戶修改/etc/udev/rules.d/60-raw.rules 按如下方式添加磁碟

            [root@oradb ~]# cat /etc/udev/rules.d/60-raw.rules       --查看添加的內容

            ACTION=="add", KERNEL=="sdd1", RUN+="/bin/raw /dev/raw/raw1 %N"

            ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="1", RUN+="/bin/raw /dev/raw/raw1 %M %m"

 

            ACTION=="add", KERNEL=="sde1", RUN+="/bin/raw /dev/raw/raw2 %N"

            ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="17", RUN+="/bin/raw /dev/raw/raw2 %M %m"  

           

            [root@oradb ~]# start_udev    #重啟udev服務

            Starting udev: [  OK  ]

           

            [root@oradb ~]# ll /dev/raw  

            total 0

            crw------- 1 root root 162, 1 Nov 10 18:50 raw1

            crw------- 1 root root 162, 2 Nov 10 18:50 raw2

       

            [root@oradb ~]# chown oracle:dba /dev/raw/raw[1-2]  --修改屬主,否則創建磁碟組時提示許可權不夠

 

          b.也可以採用下麵的方式來增加磁碟,即直接修改/etc/sysconfig/rawdevices  (root帳戶)

            [root@oradb ~]# vim /etc/sysconfig/rawdevices

            [root@oradb ~]# cat /etc/sysconfig/rawdevices  --查看增加的內容為raw3,raw4

            /dev/raw/raw3 /dev/sdf1

            /dev/raw/raw4 /dev/sdg1

           

            [root@oradb ~]# chown oracle:dba /dev/raw/raw[3-4]  --修改屬主,否則創建磁碟組時提示許可權不夠

            [root@oradb ~]# ll /dev/raw/

            total 0

            crw------- 1 oracle dba 162, 1 Nov 10 20:12 raw1

            crw------- 1 oracle dba 162, 2 Nov 10 20:12 raw2

            crw------- 1 oracle dba 162, 3 Nov 10 20:12 raw3

            crw------- 1 oracle dba 162, 4 Nov 10 20:12 raw4

           

            重啟裸設備服務

            [root@oradb ~]# /sbin/service rawdevices restart

            Assigning devices:

                       /dev/raw/raw3  -->   /dev/sdf1

            /dev/raw/raw3:  bound to major 8, minor 81

                       /dev/raw/raw4  -->   /dev/sdg1

            /dev/raw/raw4:  bound to major 8, minor 97

            done

 

            SQL> select instance_name,status from v$instance;

 

            INSTANCE_NAME    STATUS

            ---------------- ------------

            +ASM             STARTED

           

            SQL> create diskgroup DG1 normal redundancy disk '/dev/raw/raw1','/dev/raw/raw2';  --創建磁碟組DG1

 

            SQL> select * from v$fixed_table where name like '%ASM%'; --查看和asm相關的視圖

           

            SQL> select name,allocation_unit_size,state,type,

              2  free_mb,required_mirror_free_mb req_mi_fr_mb,usable_file_mb

              3  from v$asm_diskgroup;

 

            NAME            ALLOCATION_UNIT_SIZE STATE       TYPE      FREE_MB REQ_MI_FR_MB USABLE_FILE_MB

            --------------- -------------------- ----------- ------ ---------- ------------ --------------

            DG1                          1048576 MOUNTED     NORMAL        296            0            148

 

            SQL> create diskgroup DG2 normal redundancy disk '/dev/raw/raw3','/dev/raw/raw4';   --創建磁碟組DG2

 

            SQL> select name,state,free_mb,required_mirror_free_mb,usable_file_mb   --查看磁碟組的狀態及信息

              2  from v$asm_diskgroup;

 

            NAME            STATE          FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB

            --------------- ----------- ---------- ----------------------- --------------

            DG1             MOUNTED            296                       0            148

            DG2             MOUNTED            296                       0            148

           

            SQL> select disk_number,total_mb,free_mb from v$asm_disk;

 

            DISK_NUMBER   TOTAL_MB    FREE_MB

            ----------- ---------- ----------

                      1        199        148

                      0        199        148

                      1        199        148

                      0        199        148  

           

            重新啟動Linux 主機後

            SQL> startup    --重新啟動ASM實例,收到了磁碟組insufficient信息

            ASM instance started

            ORA-15032: not all alterations performed

            ORA-15063: ASM discovered an insufficient number of disks for diskgroup "DG2"

            ORA-15063: ASM discovered an insufficient number of disks for diskgroup "DG1"          

                       

            SQL> ho ls -hlt /dev/raw        # LINUX主機重新啟動之後屬主性質已發生變化

            total 0

            crw------- 1 root root 162, 4 Nov 10 20:28 raw4

            crw------- 1 root root 162, 3 Nov 10 20:28 raw3

            crw------- 1 root root 162, 2 Nov 10 20:28 raw2

            crw------- 1 root root 162, 1 Nov 10 20:28 raw1    

 

            原因:原始設備在引導時會重新映射。預設情況下,在引導時原始設備的擁有者將更改為root 用戶

            將下麵的內容增加到/etc/rc.local文件(root帳戶),重新啟動主機,使得屬主變為oracle,則不再出現類似的提示

                chown oracle:dba /dev/raw/raw1

                chown oracle:dba /dev/raw/raw2

                chown oracle:dba /dev/raw/raw3

                chown oracle:dba /dev/raw/raw4

                chmod 660 /dev/raw/raw1

                chmod 660 /dev/raw/raw2

                chmod 660 /dev/raw/raw3

                chmod 660 /dev/raw/raw4        

           

            SQL> drop diskgroup dg1;   --將剛纔創建的兩個磁碟組刪除

           

            SQL> drop diskgroup dg2;

           

                使用root帳戶清除/etc/udev/rules.d/60-raw.rules /etc/sysconfig/rawdevices  以及/etc/rc.local剛剛增加的記錄

                便於下麵使用asmlib來創建asm磁碟

           

          c.使用root帳戶配置ASMLib驅動及創建ASM磁碟,Oracle建議使用ASMLIB驅動來配置ASM磁碟

                [root@oradb ~]# /etc/init.d/oracleasm configure

                Configuring the Oracle ASM library driver.

 

                This will configure the on-boot properties of the Oracle ASM library

                driver.  The following questions will determine whether the driver is

                loaded on boot and what permissions it will have.  The current values

                will be shown in brackets ('[]').  Hitting <ENTER> without typing an

                answer will keep that current value.  Ctrl-C will abort.

 

                Default user to own the driver interface []: oracle

                Default group to own the driver interface []: dba

                Start Oracle ASM library driver on boot (y/n) [n]: y

                Scan for Oracle ASM disks on boot (y/n) [y]: y

                Writing Oracle ASM library driver configuration: done

                Initializing the Oracle ASMLib driver: [  OK  ]

                Scanning the system for Oracle ASMLib disks: [  OK  ]      

               

                --註意下麵創建磁碟前本人重新對磁碟分過區

                [root@oradb ~]# ls /dev/oracleasm/disks

                [root@oradb ~]# /etc/init.d/oracleasm createdisk VOL1 /dev/sdd1

                Marking disk "VOL1" as an ASM disk: [  OK  ]

                [root@oradb ~]# /etc/init.d/oracleasm createdisk VOL2 /dev/sdd2

                Marking disk "VOL2" as an ASM disk: [  OK  ]

                [root@oradb ~]# /etc/init.d/oracleasm createdisk VOL3 /dev/sde1

                Marking disk "VOL3" as an ASM disk: [  OK  ]

                [root@oradb ~]# /etc/init.d/oracleasm createdisk VOL4 /dev/sde2

                Marking disk "VOL4" as an ASM disk: [  OK  ]

                [root@oradb ~]# /etc/init.d/oracleasm listdisks

                VOL1

                VOL2

                VOL3

                VOL4

                [root@oradb ~]# su - oracle

                [oracle@oradb ~]$ export ORACLE_SID=+ASM

                [oracle@oradb ~]$ sqlplus /nolog

                SQL> conn / as sysdba

           

                SQL> startup

                ASM instance started

 

                ORA-15110: no diskgroups mounted

 

                SQL> create diskgroup DG1 normal redundancy

                  2  failgroup FG1 disk '/dev/oracleasm/disks/VOL1' name VOL1

                  3  failgroup FG2 disk '/dev/oracleasm/disks/VOL2' name VOL2;

                create diskgroup DG1 normal redundancy

                *

                ERROR at line 1:

                ORA-15018: diskgroup cannot be created    --下麵提示磁碟路徑未在discovery set中設置

                ORA-15031: disk specification '/dev/oracleasm/disks/VOL2' matches no disks 

                ORA-15014: location '/dev/oracleasm/disks/VOL2' is not in the discovery set

                ORA-15031: disk specification '/dev/oracleasm/disks/VOL1' matches no disks

                ORA-15014: location '/dev/oracleasm/disks/VOL1' is not in the discovery set

 

                SQL> show parameter asm_diskstring

 

                NAME                                 TYPE        VALUE

                ------------------------------------ ----------- ------------------------------

                asm_diskstring                       string

               

                SQL> alter system set asm_diskstring='/dev/oracleasm/disks/VOL*';

 

                SQL> create diskgroup DG1 normal redundancy     --設置asm_diskstring後重新創建磁碟DG1成功

                  2  failgroup FG1 disk '/dev/oracleasm/disks/VOL1' name VOL1

                  3  failgroup FG2 disk '/dev/oracleasm/disks/VOL2' name VOL2;

                   

                SQL> select name,state,free_mb,required_mirror_free_mb,usable_file_mb

                  2  from v$asm_diskgroup;

 

                NAME            STATE          FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB

                --------------- ----------- ---------- ----------------------- --------------

                DG1             MOUNTED           2964                       0           1482          

           

    8.創建ASM資料庫

        使用dbca工具根據提示來創建使用ASM存儲的資料庫

        創建使用ASM存儲的資料庫完畢之後,對於ASM資料庫啟動應首先保證ASM實例先被啟動,因為RDBMS是ASM實例服務的一個客戶端

        接下來再來啟動RDBMS

       

        --首先啟動asm實例

            export ORACLE_SID=+ASM

            sqlplus / as sysdba

            startup

            exit

           

        --接下來啟動rdbms資料庫

            export ORACLE_SID=orcl

            sqlplus / as sysdba

            startup

       

三、創建ASM實例時的常見故障

 

    1.創建磁碟時出現錯誤可以查看asm日誌

        tail -f /var/log/oracleasm     

 

    2.啟動asm實例時出現ORA-29701錯誤

        ORA-29701: unable to connect to Cluster Manager

        首次需要啟用css服務,使用root帳戶,運行$ORACLE_HOME/bin/localconfig add

       

        如果下次啟動實例的時候仍然碰到如下報錯:

        ORA-29701: unable to connect to Cluster Manager

        那麼檢查/etc/inittab 文件,看看是否有下麵這行

        h1:35:respawn:/etc/init.d/init.cssd run >/dev/null 2>&1 </dev/null

        如果沒有請添加,如果被註釋了請取消註釋(root帳戶)。

 

        也可以使用root帳戶執行/u01/oracle/10g/bin/localconfig reset來解決

       

    3.磁碟搜索路徑問題 

        SQL> create diskgroup DG1 normal redundancy disk 'ORCL:VOL1','ORCL:VOL2';

        create diskgroup DG1 normal redundancy disk 'ORCL:VOL1','ORCL:VOL2'

        *

        ERROR at line 1:

        ORA-15018: diskgroup cannot be created

        ORA-15031: disk specification 'ORCL:VOL2' matches no disks

        ORA-15031: disk specification 'ORCL:VOL1' matches no disks

       

        使用oraclasm創建磁碟後,預設會在/dev/oracleasm/disks目錄下添加剛剛創建的磁碟映射

        修改asm_diskstring修改路徑之後再次創建即可

            alter system set asm_diskstring='/dev/oracleasm/disks/VOL*'

原文:https://blog.csdn.net/leshami/article/details/6080659


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

-Advertisement-
Play Games
更多相關文章
  • 一 docker網路模式 Docker使用Linux的Namespaces技術來進行資源隔離,如PID Namespace隔離進程,Mount Namespace隔離文件系統,Network Namespace隔離網路等。 一個Network Namespace提供了一份獨立的網路環境,包括網卡、路 ...
  • 這篇博客幫助挺大,我補充部分,幫助同樣的小白哈哈,侵刪 https://www.cnblogs.com/lynn li/p/5885001.html 1、前期準備 需要安裝:JDK,SDK,python 1)JDK: 下載鏈接:https://www.oracle.com/technetwork/j ...
  • 1、下載安裝stc-isp燒錄軟體: 官網:http://www.gxwmcu.com/ 2、打開使用stc-isp軟體,並導入stc官方器件庫: 註意:一定要找到包含有C51和UV4的文件夾 3、顯示添加成功後,打開【Project】——【Select Device for Target...】即 ...
  • 另請參見:Navicat Premium 12.0.18 / 12.0.24安裝與激活 另請參見:Navicat Premium 12安裝與激活(親測已成功激活) 說明: 本主親自驗證過,可以激活! Navicat Premium 12 的安裝我就不說了(預設已經安裝好了),只說怎麼激活。 Navi ...
  • 摘要: 下文講述通過一條sql語句,採用over關鍵字同時對不同類型進行分組的方法,如下所示: 實驗環境:sql server 2008 R2 當有一張明細表,我們需同時按照不同的規則,計算平均、計數、求和等聚合計算時,此時我們可以使用over子句對數據進行操作。例: 我們需獲取一個學生成績的 總平 ...
  • 最近在複習資料庫相關知識點,過幾天就要考試了; 第一章 資料庫基礎知識 1、資料庫管理是數據處理的基礎工作,資料庫是數據管理的技術和手段。資料庫中的數據具有整體性和共用性。 1.2、資料庫系統的核心:資料庫管理系統。 1.3、資料庫核心:數據模型; 2、資料庫(DB)是一個按數據結構來存儲和管理數據 ...
  • 穿透: 從緩存中查詢一個數據,查到為空,需要每次都去資料庫中查詢。而從資料庫中查詢出來也為空,也就不寫入緩存。導致一個不存在的數每次都去資料庫中查詢,造成db系統很大壓力 造成緩存穿透 解決:如果從資料庫中查詢結果為空,我們也要緩存起來,避免下次訪問緩存中沒有,而去訪問資料庫 雪崩:緩存在一段是時間 ...
  • 在前面兩篇文章中( 淺談SQL Server內部運行機制 and 淺談SQL Server數據內部表現形式 ),我們交流了一些關於SQL Server的一些術語,SQL Sever引擎 與SSMS抽象模型,SQL Server內部存儲機制和SQL Server內部體繫結構等。討論的這些問題,均可以歸 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...