版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
數(shù)據(jù)庫(kù)程序員面試分模擬題8簡(jiǎn)答題1.
如何確定MySQL是否處于運(yùn)行狀態(tài)?如何開(kāi)啟MySQL服務(wù)?正確答案:分為L(zhǎng)inux和Windows來(lái)討論。
1)在Linux下啟動(dòng)MySQL服務(wù):
(江南博哥)
在Linux下,也可以通過(guò)“netstat-nip|grepmysqld”來(lái)查看MySQL服務(wù)的狀態(tài):
[root@testdb/]#netstat
-nlp|grepmysqld
tcp
0
0:::3306
:::*
LISTEN
13853/mysqld
unix2
[ACC]
STREAM
LISTENING
38511
13853/mysqld
/var/lib/mysq157/mysql.sock
也可以使用mysqld_safe命令啟動(dòng)MySQL數(shù)據(jù)庫(kù),通過(guò)mysqladmin來(lái)關(guān)閉MySQL數(shù)據(jù)庫(kù):
在數(shù)據(jù)庫(kù)啟動(dòng)的時(shí)候可以加上從指定參數(shù)文件進(jìn)行啟動(dòng),如下:
mysqld_safe--defaults-file=/etc/f&
2)在Windows下啟動(dòng)MySQL服務(wù):
D:\MySQL\MySQL-advanced-5.6.21-win32\bin>netstartmysql
MySQL服務(wù)正在啟動(dòng)...
MySQL服務(wù)已經(jīng)啟動(dòng)成功。
進(jìn)入Windows的服務(wù)可以看到:
[考點(diǎn)]啟動(dòng)
2.
如何格式化輸出結(jié)果?正確答案:可以使用column命令。[考點(diǎn)]SHELL腳本系列
3.
差異增量備份和累積增量備份的區(qū)別是什么?正確答案:數(shù)據(jù)庫(kù)備份可以分為完全備份和增量備份。完全數(shù)據(jù)文件備份是包含文件中所有已用數(shù)據(jù)塊的備份。RMAN將所有塊復(fù)制到備份集或映像副本中,僅跳過(guò)從未使用的數(shù)據(jù)文件塊。完全映像副本可準(zhǔn)確地再現(xiàn)整個(gè)文件的內(nèi)容。完全備份不能成為增量備份策略的一部分,它也不能作為后續(xù)增量備份的基礎(chǔ)。
增量備份就是將那些與前一次備份相比發(fā)生變化的數(shù)據(jù)塊復(fù)制到備份集中。通過(guò)RMAN可以為單獨(dú)的數(shù)據(jù)文件、表空間或者整個(gè)數(shù)據(jù)庫(kù)進(jìn)行增量備份。增量備份是0級(jí)備份,其中包含數(shù)據(jù)文件中除從未使用的塊之外的所有塊;或者是1級(jí)備份,其中僅包含自上次備份以來(lái)更改過(guò)的那些塊。0級(jí)增量備份在物理上與完全備份完全一樣。唯一區(qū)別是0級(jí)備份可用作1級(jí)備份的基礎(chǔ),但完全備份不可用作1級(jí)備份的基礎(chǔ)。要使用增量備份,必須先執(zhí)行0級(jí)增量備份。
通過(guò)BACKUP命令中的INCREMENTAL關(guān)鍵字可指定增量備份,可以指定INCREMENTALLEVEL[0|1]。在RMAN中建立的增量備份可以具有不同的級(jí)別,每個(gè)級(jí)別都使用一個(gè)不小于0的整數(shù)來(lái)標(biāo)識(shí),也就是在BACKUP命令中使用LEVEL關(guān)鍵字指定的,例如,LEVEL=0表示備份級(jí)別為0,LEVEL=1表示備份級(jí)別為1。每次進(jìn)行增量備份僅操作那些發(fā)生了“變化”的數(shù)據(jù)塊。RMAN中增量備份有兩種:差異增量備份(DIFFERENTIAL)和累計(jì)增量備份(CUMULATIVE),它們的區(qū)別見(jiàn)下表。方式關(guān)鍵字默認(rèn)說(shuō)明差異增量備份DIFFERENTIAL是將備份上次進(jìn)行的同級(jí)或低級(jí)備份以來(lái)所有變化的數(shù)據(jù)塊,有同級(jí)備份同級(jí),無(wú)同級(jí)備份低級(jí)累積增量備份CUMULATIVE否將備份上次進(jìn)行的低級(jí)備份以來(lái)所有變化的數(shù)據(jù)塊
差異增量備份和累計(jì)增量備份如下圖所示。
1)執(zhí)行0級(jí)增量備份的命令為RMAN>BACKUPINCREMENTALLEVEL0DATABASE;。
2)執(zhí)行差異增量備份的命令為RMAN>BACKUPINCREMENTALLEVEL1DATABASE;。
3)執(zhí)行累積增量備份的命令為RMAN>BACKuPINCREMENTALLEVEL1CUMULATIVEDATABASE;。
可以對(duì)處于NOARCHIVELOG模式的數(shù)據(jù)庫(kù)執(zhí)行任何類(lèi)型的備份(完全或增量)。當(dāng)然,前提條件是數(shù)據(jù)庫(kù)處于未打開(kāi)狀態(tài)。需要注意的是,數(shù)據(jù)庫(kù)只能恢復(fù)到上次備份時(shí)的狀態(tài)。只有當(dāng)數(shù)據(jù)庫(kù)處于A(yíng)RCHIVELOG模式時(shí),才可以將其恢復(fù)到上次提交事務(wù)處理時(shí)的狀態(tài)。[考點(diǎn)]RMAN
4.
FORUPDATE和FORUPDATEOF的區(qū)別是什么?正確答案:SELECT...FORUPDATE語(yǔ)句的語(yǔ)法如下:
SELECT...FORUPDATE[OFcolumn_list][WAITn|NOWAIT][SKIPLOCKED];
其中,這個(gè)OF子句在涉及多個(gè)表時(shí),具有較大作用。若不使用OF指定鎖定的表的列,則所有表的相關(guān)行均被鎖定。若在OF中指定了需修改的列,則只有與這些列相關(guān)的表的行才會(huì)被鎖定。WAIT子句指定等待其他用戶(hù)釋放鎖的秒數(shù),以防止無(wú)限期的等待。
“使用FORUPDATEWAIT”子句的優(yōu)點(diǎn)如下:
1)防止無(wú)限期地等待被鎖定的行。
2)允許應(yīng)用程序中對(duì)鎖的等待時(shí)間進(jìn)行更多的控制。
3)對(duì)于交互式應(yīng)用程序非常有用,因?yàn)檫@些用戶(hù)不能等待不確定的時(shí)間。
4)若使用了SKIPLOCKED,則可以越過(guò)鎖定的行,不會(huì)報(bào)告由waitn引發(fā)的“資源忙”異常報(bào)告。
在Oracle10g之前,SELECT...FORUPDATE獲取的是2級(jí)TM鎖,而從Oracle10g開(kāi)始,SELECT...FORUPDATE獲取的是3級(jí)TM鎖。[考點(diǎn)]鎖
5.
如何刪除表中重復(fù)的記錄?正確答案:在平時(shí)工作中可能會(huì)遇到這種情況,當(dāng)試圖對(duì)表中的某一列或幾列創(chuàng)建唯一索引時(shí),系統(tǒng)提示ORA-01452:不能創(chuàng)建唯一索引,發(fā)現(xiàn)重復(fù)記錄。這個(gè)時(shí)候只能創(chuàng)建普通索引或者刪除重復(fù)記錄后再創(chuàng)建唯一索引。
重復(fù)的數(shù)據(jù)可能有這樣兩種情況:第一種是表中只有某些字段一樣,第二種是兩行記錄完全一樣。刪除重復(fù)記錄后的結(jié)果也分為兩種,第一種是重復(fù)的記錄全部刪除,第二種是重復(fù)的記錄只保留最新的一條記錄。在一般業(yè)務(wù)中,第二種的情況較多。
1.刪除重復(fù)記錄的方法原理
在Oracle中,每一條記錄都有一個(gè)ROWID,ROWID在整個(gè)數(shù)據(jù)庫(kù)中是唯一的,ROWID確定了每條記錄是在Oracle中的哪一個(gè)數(shù)據(jù)文件、塊、行上。在重復(fù)的記錄中,可能所有列上的內(nèi)容都相同,但ROWID不會(huì)相同,所以,只要保留重復(fù)記錄中那些具有最大的ROWID的記錄,其余的全部刪除。
2.刪除重復(fù)記錄的方法
若想要?jiǎng)h除部分字段重復(fù)的數(shù)據(jù),則使用下面語(yǔ)句進(jìn)行刪除,下面的語(yǔ)句是刪除表中字段1和字段2重復(fù)的數(shù)據(jù):
DELETEFROM表名WHERE(字段1,字段2)IN(SELECT字段1,字段2FROM表名GROUPBY字段1,字段2HAVINGCOUNT(1)>1);
也可以利用臨時(shí)表的方式,先將查詢(xún)到的重復(fù)的數(shù)據(jù)插入一個(gè)臨時(shí)表中,然后進(jìn)行刪除,這樣,執(zhí)行刪除的時(shí)候就不用再進(jìn)行一次查詢(xún)了。代碼如下:
CREATETABLE臨時(shí)表AS(SELECT字段1,字段2,COUNT(*)FROM表名GROUPBY字段1,字段2HAVINGCOUNT(*)>1);
上面這句話(huà)的功能是建立臨時(shí)表,并將查詢(xún)到的數(shù)據(jù)插入其中。有了上面的執(zhí)行結(jié)果,下面就可以進(jìn)行刪除操作了:
DELETEFROM表名AWHERE(字段1,字段2)IN(SELECT字段1,字段2FROM臨時(shí)表);
假如想保留重復(fù)數(shù)據(jù)中最新的一條記錄,應(yīng)該怎么做呢?可以利用ROWID,保留重復(fù)數(shù)據(jù)中ROWID最大的一條記錄即可:
DELETEFROMTABLE_NAMEWHEREROWIDNOTIN(SELECTMAX(ROWID)FROMTABLE_NAMED
GROUPBYD.COL1,D.COL2);
重復(fù)數(shù)據(jù)刪除技術(shù)可以提供更大的備份容量,實(shí)現(xiàn)更長(zhǎng)時(shí)間的數(shù)據(jù)保留,還能實(shí)現(xiàn)備份數(shù)據(jù)的持續(xù)驗(yàn)證,提高數(shù)據(jù)恢復(fù)服務(wù)水平,方便實(shí)現(xiàn)數(shù)據(jù)容災(zāi)等。[考點(diǎn)]高級(jí)操作
6.
如何填充V$SESSION的CLIENT_INTO列和CLIENT_IDENTIFIER列?正確答案:V$SESSION的CLIENT_INFO列和CLIENT_IDENTIFIER列往往為空,所以需要寫(xiě)登錄觸發(fā)器,然后在觸發(fā)器中使用如下的存儲(chǔ)過(guò)程記錄這2列的值:
BEGIN
DBMS_APPLICATION_INFO.SET_CLIENT_INFO(SYS_CONTEXT('USERENV','IF_ADDRESS'));
DBMS_SESSION.SET_IDENTIFIER(SYS_CONTEXT('USERENV','HOST'));
END;[考點(diǎn)]系統(tǒng)包
7.
在Undo表空間數(shù)據(jù)文件丟失的情況下如何恢復(fù)?正確答案:恢復(fù)大約可以分為3種情況:①有備份,這種情況下直接采用備份的文件進(jìn)行恢復(fù)即可;②無(wú)備份但是有完整的歸檔文件存在,這種情況下可以使用命令“ALTERDATABASECREATEDATAFILE文件號(hào)AS'/u01/app/oracle/oradata/lhrdb/undotbs01.dbf'size50m;”來(lái)創(chuàng)建丟失的Undo文件,然后使用“RECOVERDATAFILE文件號(hào);”進(jìn)行數(shù)據(jù)庫(kù)文件恢復(fù)即可;③無(wú)備份,歸檔文件丟失,在這種情況下的恢復(fù)比較復(fù)雜。首先應(yīng)該切換Undo表空間到一個(gè)新建的Undo表空間中,并設(shè)置原有表空間的管理模式為手動(dòng)管理模式,然后將隱含參數(shù)“_OFFLINE_ROLLBACK_SEGMENTS”設(shè)置為T(mén)RUE,一些關(guān)鍵性的命令如下:
ALTERSYSTEMSETUNDO_TABLESPACE=UNDOTBS2SCOPE=SPFILE;
ALTERSYSTEMSETUNDO_MANAGEMENT=MANUALSCOPE=SPFILE;
ALTERSYSTEMSET"_OFFLINE_ROLLBACK_SEGMENTS"=TRUESCOPD=SPFILE;
ALTERSYSTEMSET"_CORRUPTED_ROLLBACK_SEGMENTS"='_SYSSMU1$','_SYSSMU2$'SCOPE=SPFILE;
CREATEUNDOTABLESPACEUNDOTBS1DATAFILE'/u03/app/oracte/oradata/ora1024g/undotbs01.dbf'SIZE50MAUTOEXTENDON;
ALTERSYSTEMSETUNDO_TABLESPACE=UNDOTES1
SCOPE=SPFILE;
ALTERSYSTEMSETUNDO_MANAGEMENT=AUTO
SCOPE=SPFILE;
ALTERSYSTEMRESET"_OFFLINE_ROLLBACK_SEGMENTS"SCOPE=SPFILESID='*';
ALTERSYSTEMRESET"_CORRUPTED_ROLLBACK_SEGMENTS"SCOPE=SPFILESID='*';[考點(diǎn)]RMAN
8.
若在使用“PLSQLDeveloper”軟件編譯存儲(chǔ)過(guò)程、函數(shù)等對(duì)象時(shí)無(wú)響應(yīng),則可能的原因是什么?正確答案:在編譯某個(gè)存儲(chǔ)過(guò)程的時(shí)候,Oracle會(huì)自動(dòng)給這個(gè)對(duì)象加上DDL鎖,同時(shí)也會(huì)對(duì)這個(gè)存儲(chǔ)過(guò)程所引用的對(duì)象加鎖。在數(shù)據(jù)庫(kù)的開(kāi)發(fā)過(guò)程中,經(jīng)常碰到包、存儲(chǔ)過(guò)程、函數(shù)無(wú)法編譯或使用“PLSQLDeveloper”這款軟件進(jìn)行編譯時(shí)會(huì)導(dǎo)致該軟件無(wú)法響應(yīng)的問(wèn)題,這個(gè)時(shí)候可以通過(guò)查詢(xún)DBA_DDL_LOCKS或V$ACCESS來(lái)獲取鎖的相關(guān)信息。[考點(diǎn)]鎖
9.
MySQL的分區(qū)表是什么?如何查詢(xún)MySQL是否支持分區(qū)?正確答案:表分區(qū)是指根據(jù)一定規(guī)則,將數(shù)據(jù)庫(kù)中的一張表分解成多個(gè)更小的、容易管理的部分。從邏輯上看,只有一張表,但是底層卻是由多個(gè)物理分區(qū)組成,每個(gè)分區(qū)都是一個(gè)獨(dú)立的對(duì)象。分區(qū)有利于管理大表,體現(xiàn)了“分而治之”的理念。一個(gè)表最多支持1024個(gè)分區(qū)。
在MySQL5.6.1之前可以通過(guò)命令“showvariableslike'%have_partitioning%'”來(lái)查看MySQL是否支持分區(qū)。若have_partintioning的值為YES,則表示支持分區(qū)。從MySQL5.6.1開(kāi)始,該參數(shù)已經(jīng)被去掉了,而是用SHOWPLUGINS來(lái)代替。若有partition行且STATUS列的值為ACTIVE,則表示支持分區(qū),如下:
此外,也可以使用表INFORMATION_SCHEMA.PLUGINS來(lái)查詢(xún),如下:
10.
什么是物理讀和邏輯讀?正確答案:當(dāng)會(huì)話(huà)所需要的數(shù)據(jù)在內(nèi)存的BufferCache中找不到,此時(shí)就要去磁盤(pán)上的數(shù)據(jù)文件中讀取,這樣就產(chǎn)生了物理讀(PhysicalReads),即物理讀是從磁盤(pán)文件把需要的數(shù)據(jù)讀入內(nèi)存(SGA中的BufferCache)。
邏輯讀(LogicalReads)表示CPU需要的數(shù)據(jù)在內(nèi)存中被找到,數(shù)據(jù)被直接從內(nèi)存中傳入CPU執(zhí)行,即邏輯讀是從內(nèi)存中讀取。在Oracle中,邏輯讀=即時(shí)讀(又叫當(dāng)前讀,CurrentRead)+一致性讀(ConsistentRead);在“SETAUTOTRACEON”中,邏輯讀=dbblockgets(當(dāng)前讀)+consistentgets(一致性讀)。即時(shí)讀就是讀取數(shù)據(jù)塊當(dāng)前的最新數(shù)據(jù)。任何時(shí)候在BufferCache中都只有一份當(dāng)前數(shù)據(jù)塊。即時(shí)讀通常發(fā)生在對(duì)數(shù)據(jù)進(jìn)行修改、刪除操作時(shí)。這時(shí),后臺(tái)進(jìn)程會(huì)給相關(guān)數(shù)據(jù)加上行級(jí)鎖,并且標(biāo)識(shí)數(shù)據(jù)為“臟數(shù)據(jù)”。
需要注意的是,物理讀過(guò)大表現(xiàn)為磁盤(pán)I/O較高,邏輯讀過(guò)大表現(xiàn)為CPU使用率過(guò)高。[考點(diǎn)]SQL優(yōu)化
11.
SESSIONS和PROCESSES有什么關(guān)系?正確答案:在數(shù)據(jù)庫(kù)安裝完成后,常常需要設(shè)置SESSIONS和PROCESSES的大小。其中,SESSIONS指定了一個(gè)實(shí)例中允許的會(huì)話(huà)數(shù),即能同時(shí)登錄到數(shù)據(jù)庫(kù)的并發(fā)用戶(hù)數(shù);PROCESSES指定了一個(gè)實(shí)例在操作系統(tǒng)級(jí)別能同時(shí)運(yùn)行的進(jìn)程數(shù),包括后臺(tái)進(jìn)程與服務(wù)器進(jìn)程。由于一個(gè)后臺(tái)進(jìn)程可能同時(shí)對(duì)應(yīng)多個(gè)會(huì)話(huà),所以,通常SESSIONS的值大于PROCESSES的值。
通過(guò)查找官方文檔,可以知道SESSIONS參數(shù)的值在Oracle10g和11g中是不同的,見(jiàn)下表。屬性O(shè)racle10gOracle11gR2參數(shù)值的類(lèi)型IntegerInteger默認(rèn)值Derived:(1.1*PROCESSES)+5Derived:(1.5*PROCESSES)+22是否可以動(dòng)態(tài)修改否否范圍1~2311~216(即1~65536)注:在Oracle11gR1中,該參數(shù)值和10g足一樣的,修改語(yǔ)句為“ALTERSYSTEMSETPROCESSES|SESSIONS=200SCOPE=SPFILE;”。
由于SESSIONS的值是根據(jù)PROCESSES的值計(jì)算得到的,所以,一般情況下只需要設(shè)置PROCESSES的值即可。在Oracle11gR2以下版本中,SESSIONS大小的計(jì)算公式為(1.1*PROCESSES)+5;在Oracle11gR2中,SESSIONS大小的計(jì)算公式為(1.5*PROCESSES)+22。若SESSIONS的當(dāng)前值比計(jì)算值大,則SESSIONS的值可能保持不變;若SESSIONS的當(dāng)前值比計(jì)算值小,則SESSIONS取計(jì)算值,即SESSIONS的值總是取MAX(當(dāng)前值,計(jì)算值),但是這個(gè)也不是絕對(duì)的。
當(dāng)數(shù)據(jù)庫(kù)連接的并發(fā)用戶(hù)已經(jīng)達(dá)到SESSIONS的值時(shí),又有新會(huì)話(huà)連接進(jìn)來(lái),就會(huì)報(bào)錯(cuò):“ORA-00018,"maximumnumberofsessionsexceeded"”。
當(dāng)Oracle需要啟動(dòng)新的PROCESS,而當(dāng)前的進(jìn)程數(shù)又已經(jīng)達(dá)到PROCESSES參數(shù)時(shí),就會(huì)報(bào)錯(cuò):“ORA-00020:maximumnumberofprocesses(2048)exceeded”。
如果數(shù)據(jù)庫(kù)上連接被占用完,當(dāng)新的連接過(guò)來(lái)時(shí),那么就會(huì)在客戶(hù)端產(chǎn)生“ORA-12519,TNS:noappropriateservicehandlerfound”的報(bào)錯(cuò)信息。[考點(diǎn)]會(huì)話(huà)
12.
RAC環(huán)境中的SCANIP的作用是什么?正確答案:從Oracle11gR2RAC開(kāi)始引入SCAN(SingleClientAccessName,集群的單客戶(hù)端訪(fǎng)問(wèn)名稱(chēng))IP的概念,相當(dāng)于在客戶(hù)端和數(shù)據(jù)庫(kù)之間增加一層虛擬的網(wǎng)絡(luò)服務(wù)層,即是SCANIP和SCAPIPLISTENER。在客戶(hù)端的tnsnames.ora配置文件中,只需要配置SCANIP,然后用戶(hù)即可訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)。客戶(hù)端通過(guò)SCANIP、SCANIPLISTENER來(lái)負(fù)載均衡地連接到RAC數(shù)據(jù)庫(kù)。同之前各版本的RAC相比,使用SCANIP的好處就是,當(dāng)后臺(tái)RAC數(shù)據(jù)庫(kù)添加、刪除節(jié)點(diǎn)時(shí),客戶(hù)端配置信息無(wú)須修改。SCAN提供一個(gè)域名來(lái)訪(fǎng)問(wèn)RAC,域名可以解析1~3個(gè)(注意,最多3個(gè))SCANIP,可以通過(guò)DNS、GNS或/etc/hosts文件來(lái)解析實(shí)現(xiàn)。需要注意的是,SCANIP、VIP和PublicIP必須屬于同一子網(wǎng)。[考點(diǎn)]RAC
13.
如何在存儲(chǔ)過(guò)程中暫停指定時(shí)間?正確答案:DBMS_LOCK包的SLEEP過(guò)程。例如,“DBMS_LOCK.SLEEP(5);”表示暫停5s。[考點(diǎn)]系統(tǒng)包
14.
Oracle數(shù)據(jù)庫(kù)在物理上是由哪些文件組成的?正確答案:Oracle數(shù)據(jù)庫(kù)物理結(jié)構(gòu)如下圖所示。
Oracle數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)由控制文件(ControlFiles)、數(shù)據(jù)文件(DataFiles)、聯(lián)機(jī)Redo日志文件(OnlineRedoLogFiles)、參數(shù)文件(ParameterFile)、歸檔日志文件(ArchiveLogFiles)和密碼文件(PasswordFile)組成。
1)控制文件:包含維護(hù)和驗(yàn)證數(shù)據(jù)庫(kù)完整性的必要信息,其中記錄了數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)。例如,控制文件用于識(shí)別數(shù)據(jù)文件和Redo日志文件。每個(gè)Oracle數(shù)據(jù)庫(kù)都有相應(yīng)的控制文件,一個(gè)數(shù)據(jù)庫(kù)至少需要一個(gè)控制文件,控制文件屬于二進(jìn)制文件。控制文件的命名格式通常為ctr*.ctl。
2)數(shù)據(jù)文件:存儲(chǔ)數(shù)據(jù)的文件。
3)聯(lián)機(jī)Redo日志文件:包含對(duì)數(shù)據(jù)庫(kù)所做的更改記錄,一個(gè)數(shù)據(jù)庫(kù)至少需要兩組聯(lián)機(jī)Redo日志文件。聯(lián)機(jī)Redo日志文件也叫在線(xiàn)重做日志文件或聯(lián)機(jī)重做日志文件。
4)參數(shù)文件:定義Oracle實(shí)例的特性,分為SPFILE和PFILE兩種類(lèi)型的參數(shù)文件。
5)歸檔文件:歸檔文件是聯(lián)機(jī)Redo日志文件的脫機(jī)副本,這些歸檔文件對(duì)于介質(zhì)恢復(fù)很重要。
6)密碼文件:認(rèn)證哪些用戶(hù)有權(quán)限啟動(dòng)和關(guān)閉Oracle實(shí)例。
Oracle中邏輯結(jié)構(gòu)包括表空間(TABLESPACE)、段(SEGMENT)、區(qū)(EXTENT)和塊(BLOCK)。數(shù)據(jù)庫(kù)由表空間構(gòu)成,而表空間又由段構(gòu)成,段又由區(qū)構(gòu)成,區(qū)又由Oracle塊構(gòu)成,即塊→區(qū)→段→表空間→數(shù)據(jù)庫(kù)。[考點(diǎn)]物理結(jié)構(gòu)
15.
在MySQL中,如何查看表的詳細(xì)信息,例如,存儲(chǔ)引擎、行數(shù)、更新時(shí)間等?正確答案:可以使用SHOWTABLESTATUS獲取表的詳細(xì)信息,語(yǔ)法為
SHOWTABLESTATUS
[{FROM|IN}db_name]
[LIKE'pattern'|WHEREexpr]
例如:
(1)showtablestatusfromdb_name查詢(xún)db_name數(shù)據(jù)庫(kù)里所有表的信息
(2)showtablestatusfromdb_namelike'lhruse'\G;查詢(xún)db_name里lhruse表的信息
(3)showtablestatusfromdb_namelike'uc%'查詢(xún)db_name數(shù)據(jù)庫(kù)里表名以u(píng)c開(kāi)頭的表的信息
下面的SQL語(yǔ)句查詢(xún)了mysql數(shù)據(jù)庫(kù)中的user表的詳細(xì)信息:
其中,每列的含義見(jiàn)下表。列名解釋Name表名Engine表的存儲(chǔ)引擎,在MySQL4.1.2之前,該列的名字為T(mén)ypeVersion表的.frm文件的版本號(hào)Row_format行存儲(chǔ)格式(Fixed,Dynamic,Compressed,Redundant,Compact)。對(duì)于MyISAM引擎,可以是Dynalmc、Fixed或Compressed。動(dòng)態(tài)行的行長(zhǎng)度可變,例如Varchar或Blob類(lèi)型字段。固定行是指行長(zhǎng)度不變,例如Char和Integer類(lèi)型字段Rows行的數(shù)目。對(duì)于非事務(wù)性表,這個(gè)值是精確的,對(duì)于事務(wù)性引擎,這個(gè)值通常是估算的。例如MyISAM,存儲(chǔ)精確的數(shù)目。對(duì)于其他存儲(chǔ)引擎,比如InnoDB,本值是一個(gè)大約的數(shù),與實(shí)際值相差可達(dá)40~50%。在這些情況下,使用SELECTCOUNT(*)來(lái)獲得準(zhǔn)確的數(shù)目。對(duì)于在INFORMATION_SCHEMA數(shù)據(jù)庫(kù)中的表,Rows值為NULLAvg_row_length平均每行包括的字節(jié)數(shù)Data_length表數(shù)據(jù)的大小(和存儲(chǔ)引擎有關(guān))Max_data_length表可以容納的最大數(shù)據(jù)量(和存儲(chǔ)引擎有關(guān))Index_length索引的大小(和存儲(chǔ)引擎有關(guān))Data_free對(duì)于MyISAM引擎,標(biāo)識(shí)已分配,但現(xiàn)在未使用的空間,并且包含了已被刪除行的空間Auto_increment下一個(gè)Auto_increment的值Create_time表的創(chuàng)建時(shí)間Update_time表的最近更新時(shí)間Check_time使用checktable或myisamchk工具檢查表的最近時(shí)間Collation表的默認(rèn)字符集和字符排序規(guī)則Checksum如果啟用,則對(duì)整個(gè)表的內(nèi)容計(jì)算時(shí)的校驗(yàn)和Create_options指表創(chuàng)建時(shí)的其他所有選項(xiàng)Comment包含了其他額外信息,對(duì)于MyISAM引擎,包含了注釋。對(duì)于InnoDB引擎,則保存著InnoDB表空間的剩余空間信息。如果是一個(gè)視圖,那么注釋里面包含了VIEW字樣
也可以使用information_schema.tables表來(lái)查詢(xún),如下:
SELECTtable_name,Engine,Version,Row_format,table_rows,Avg_row_length,
Data_length,Max_data_length,Index_length,Data_free,Auto_increment,
Create_time,Update_time,Check_time,table_collation,Checksum,
Create_options,table_comment
FROMinformation_schema.tables
WHERETable_Sehema='mysql'andtable_name='user\G;
16.
使用裸設(shè)備作為Oracle數(shù)據(jù)文件有什么需要注意的?正確答案:使用裸設(shè)備作為Oracle的數(shù)據(jù)文件必須注意以下幾點(diǎn):
1)一個(gè)裸設(shè)備只能放置一個(gè)數(shù)據(jù)文件。
2)數(shù)據(jù)文件的大小不能超過(guò)裸設(shè)備的大小,為了簡(jiǎn)單起見(jiàn),對(duì)所有的文件設(shè)置成比裸設(shè)備小1MB即可。
3)數(shù)據(jù)文件最好不要設(shè)置成自動(dòng)擴(kuò)展,如果設(shè)置成自動(dòng)擴(kuò)展,一定要把MAXSIZE設(shè)置為比裸設(shè)備小。[考點(diǎn)]裸設(shè)備(RAW)
17.
Linux下啟動(dòng)和關(guān)閉網(wǎng)絡(luò)的命令有哪些?正確答案:Linux下啟動(dòng)和關(guān)閉網(wǎng)絡(luò)的命令如下:
chkconfigNetworkManageroff
chkconfignetworkon
serviceNetworkManagerstop
servicenetworkstart[考點(diǎn)]網(wǎng)絡(luò)
18.
Oracle10g和11g的自動(dòng)統(tǒng)計(jì)信息收集機(jī)制有哪些不同?正確答案:在Oracle10g之前并沒(méi)有自動(dòng)收集統(tǒng)計(jì)信息的機(jī)制,從Oracle10g開(kāi)始引入了自動(dòng)收集統(tǒng)計(jì)信息的功能,這個(gè)功能在Oracle10g中被稱(chēng)為自動(dòng)統(tǒng)計(jì)信息收集(AutomaticStatisticsGathering),在Oracle11g中被稱(chēng)為自動(dòng)優(yōu)化器統(tǒng)計(jì)信息收集(AutomaticOptimizerStatisticsCollection)。自動(dòng)統(tǒng)計(jì)信息收集作業(yè)能夠每天收集普通對(duì)象和數(shù)據(jù)字典的統(tǒng)計(jì)信息,但不會(huì)收集x$系列表的內(nèi)部對(duì)象統(tǒng)計(jì)信息。Oracle的初始化參數(shù)STATISTICS_LEVEL控制收集統(tǒng)計(jì)信息的級(jí)別,有三個(gè)參數(shù)值:
1)BASIC:收集基本的統(tǒng)計(jì)信息。
2)TYPICAL:收集大部分統(tǒng)計(jì)信息(數(shù)據(jù)庫(kù)的默認(rèn)設(shè)置)。
3)ALL:收集全部統(tǒng)計(jì)信息。
當(dāng)使用Oracle自動(dòng)收集統(tǒng)計(jì)信息時(shí),必須要確保Oracle的參數(shù)STATISTICS_LEVEL的值為T(mén)YPICAL或者ALL。默認(rèn)值為T(mén)YPICAL,該值可以確保數(shù)據(jù)庫(kù)自我管理功能所需求的所有主要統(tǒng)計(jì)信息的正確收集,及提供最好的綜合性能。這個(gè)默認(rèn)值能勝任大多數(shù)的環(huán)境,并且Oracle不推薦去修改該值。
DBA可以根據(jù)Oracle提供的腳本$ORACLE_HOME/rdbms/admin/catmwin.sql查看統(tǒng)計(jì)信息收集作業(yè)的整體搭建流程。有興趣的讀者可以研究下此腳本的內(nèi)容。
Oracle10g和11g的自動(dòng)統(tǒng)計(jì)信息收集機(jī)制有所不同,詳見(jiàn)下表。
在Oracle11g中對(duì)統(tǒng)計(jì)信息自動(dòng)收集的功能進(jìn)行了加強(qiáng)。在Oracle10g中,如果表中變更的行數(shù)(字典表SYS.MON_MODS_ALL$中記錄的INSERT+UPDATE+DELETE的總數(shù))超過(guò)表的總行數(shù)(SYS.TABS中記錄的目標(biāo)表總記錄數(shù))的10%時(shí)或自上次自動(dòng)統(tǒng)計(jì)信息收集作業(yè)完成之后目標(biāo)表被執(zhí)行過(guò)TRUNCATE操作,那么Oracle就會(huì)在指定時(shí)間段自動(dòng)收集統(tǒng)計(jì)信息。在Oracle10g中,這個(gè)10%(STALE_PERCENT)是無(wú)法修改的,如果表非常大,那么10%其實(shí)是非常多的數(shù)據(jù),這就造成統(tǒng)計(jì)信息不準(zhǔn)確。在Oracle11g中,這個(gè)10%(STALE_PERCENT)是可以修改的,分為全局(DBMS_STATS.SET_GLOBAL_PREFS)、數(shù)據(jù)庫(kù)級(jí)別(DBMS_STATS.SET_DATABASE_PREFS)、用戶(hù)級(jí)別(DBMS_STATS.SET_SCHEMA_PREFS)和表級(jí)別(DBMS_STATS.SET_TABLE_PREFS)。其中,數(shù)據(jù)庫(kù)級(jí)別和用戶(hù)級(jí)別都是調(diào)用表級(jí)別的存儲(chǔ)過(guò)程DBMS_STATS.SET_TABLE_PREFS來(lái)對(duì)表進(jìn)行設(shè)置的。
表級(jí)別的設(shè)定如下:
1)修改為5%(范圍為1~100):EXECDBMS_STATS.SET_TABLE_PREFS(USER,'TB_NAME',''STALL_PERCENT',5);
2)恢復(fù)為10%:EXECDBMS_STATS.SET_TABLE_PREFS(USER,'TB_NAME','STALE_PERCENT',NULL);
3)查詢(xún)表百分比:SELECTDBMS_STATS.GET_PREFS('STALE_PERCENT',USER,'TB_NAME')FROMDUAL;
4)查詢(xún)?nèi)职俜直龋篠ELECTDBMS_STATS.GET_PREFS('STALE_PERCENT')FROMDUAL;
Oracle10g的自動(dòng)統(tǒng)計(jì)信息
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 裝飾畫(huà)品牌轉(zhuǎn)讓居間合同
- 2025年度彩鋼房租賃及設(shè)施配套合同3篇
- 2025年度專(zhuān)業(yè)按摩技師工作室租賃合同范本3篇
- 物流自動(dòng)集包裝plc課程設(shè)計(jì)
- 罩注塑模具課程設(shè)計(jì)
- 西方建筑速寫(xiě)課程設(shè)計(jì)
- 汽車(chē)離合器設(shè)計(jì)課程設(shè)計(jì)
- 英語(yǔ)游戲室外課程設(shè)計(jì)
- 蝸輪蝸桿固游式課程設(shè)計(jì)
- 線(xiàn)性統(tǒng)計(jì)模型課程設(shè)計(jì)
- 醫(yī)院項(xiàng)目竣工驗(yàn)收和工程收尾階段的管理措施專(zhuān)項(xiàng)方案
- 2024年涉密人員考試試題庫(kù)保密基本知識(shí)試題附答案(考試直接用)
- 2024年桂林中考物理試卷
- DL∕T 5362-2018 水工瀝青混凝土試驗(yàn)規(guī)程
- (正式版)JC∕T 60023-2024 石膏條板應(yīng)用技術(shù)規(guī)程
- DL-T5054-2016火力發(fā)電廠(chǎng)汽水管道設(shè)計(jì)規(guī)范
- (權(quán)變)領(lǐng)導(dǎo)行為理論
- 2024屆上海市浦東新區(qū)高三二模英語(yǔ)卷
- 家用電器可靠性與壽命預(yù)測(cè)研究
- 中考語(yǔ)文二輪復(fù)習(xí):詩(shī)歌鑒賞系列之邊塞軍旅詩(shī)(知識(shí)點(diǎn)+方法+習(xí)題)
- 2024年智慧工地相關(guān)知識(shí)考試試題及答案
評(píng)論
0/150
提交評(píng)論