㈠ DBA30問之系統DB有哪些,都有什麼作用,需不需要做備份,為什麼,損壞了如何做還原(主要是master庫)
這包括實例范圍的元數據(例如登錄帳戶)、 端點、鏈接伺服器和系統配置設置。此外,master資料庫還記錄了所有其他資料庫的 存在、資料庫文件的位置以及sqlServer 的初始化信息。因此,如果master資料庫 不可用,則SQLServer 無法啟動。在SQLServer中,系統對象不再存儲在master 資料庫中,而是存儲在mssqlsystemresource資料庫中。 master資料庫對系統來說很關鍵,因此總是要保存它的當前副本。創建另一個資料庫, 改變配置值,修改登錄賬戶這樣的操作都會修改master資料庫,所以總是應該在完成 這些操作之後備份master資料庫。master資料庫本身不大,做一次備份很快,建議經 常做master資料庫的備份。 由於master資料庫還記錄啟動伺服器實例所需要的初始化信息,每個其他資料庫的主文 件位置。master資料庫是SQLServer啟動的時候打開的第一個資料庫。SQLServer是從 master資料庫找到的其他資料庫的信息。如果master資料庫存在問題,整個SQLServer 都無法正常啟動。 如果說是master資料庫嚴重損壞,如果有備份直接還原master資料庫即可。如果沒有備 份,則需要重建master資料庫。重建master資料庫將使所有的系統資料庫恢復到原始狀 態。重建master資料庫會刪除並重建msdb資料庫。這將導致丟失所有計劃信息以及備份 和還原歷史記錄。重建master資料庫之後,SQLServer資料庫就好比重新安裝後一樣, 所有用戶信息都會丟失,用戶資料庫需要重新附加,SQLServer任務和計劃都要重建。 因此重建master資料庫是個萬不得已的選擇。 在執行任何語句或系統過程來更改master資料庫中的信息以後,應備份master資料庫. 建議不要再master資料庫中創建用戶對象 導致master資料庫更新並要求備份的操作類型包括: 1,創建或刪除用戶資料庫 2,添加或刪除文件和文件組 3,添加登陸或其他登陸安全相關操作 4,更改伺服器范圍的配置選項或者資料庫配置選項 5,創建或刪除邏輯備份文件 6,配置用於分布式查詢和遠程調用的伺服器,如添加鏈接伺服器或遠程登錄 恢復master資料庫使用的還是RESTORE指令.還原master資料庫後SQLServer實例將自動停止. 關於如何恢復master資料庫,在後面將單獨寫一篇博客. model資料庫 用作在SQLServer實例上創建的所有資料庫的模板。因為每次啟動SQLServer 時都 會創建tempdb,所以model資料庫必須始終存在於 SQLServer系統中。 創建資料庫是model資料庫是SQLSERVER使用的模板.model資料庫里的全部內容都會被復 制到新的資料庫.所以這個資料庫不建議做任何修改.除非是有目的的要建立一些模板. 雖然這個資料庫的內容一般不會發生改變,但是在SQLServer啟動的時候要使用model數 據庫某些設置創建新的tempdb。如果沒有tempdb,SQLServer無法啟動。因此model資料庫 必須存在SQLServer系統中。這個資料庫也要有備份。 還原model資料庫與對用戶資料庫執行完整的資料庫還原相同 tempdb資料庫 tempdb系統資料庫是一個全局資源,可供連接到SQLServer 實例的所有用戶使用,並 可用於保存下列各項: 顯式創建的臨時用戶對象,例如全局或局部臨時表、臨時存儲過程、表變數或游標。 SQLServer資料庫引擎創建的內部對象,例如,用於存儲假離線或排序的中間結果的工作表。 由使用已提交讀(使用行版本控制隔離或快照隔離事務)的資料庫中數據修改事務生成的行版本。 由數據修改事務為實現聯機索引操作、多個活動的結果集(MARS)以及AFTER 觸發器等功能而生 成的行版本。 tempdb中的操作是最小日誌記錄操作。這將使事務產生回滾。每次啟動SQLServer 時都會重新 創建tempdb,從而在系統啟動時總是保持一個干凈的資料庫副本。在斷開聯接時會自動刪除臨時 表和存儲過程,並且在系統關閉後沒有活動連接。因此tempdb中不會有什麼內容從一個SQLServer 會話保存到另一個會話。不允許對tempdb進行備份和還原操作。 資源資料庫(mssqlsystemresource) 資源資料庫是一個隱藏資料庫。可執行系統對象(入系統存儲過程和功能)都保存在這里。創建這個數 據庫是為了快速安全的升級。如果沒有人可以訪問到這個資料庫,也就沒有人可以改變它。簡單的用 新的資源資料庫替換掉舊的資源資料庫,就可以升級到新的,包括新系統對象服務包。不能使用任何 正常方法查看該資料庫。但這個資料庫任然需要磁碟空間。 mssqlsystemresource資料庫從來不做修改,理論上不用備份。 msdb資料庫 由SQLServer代理用於計劃警報和作業,也可以由其他功能(如ServiceBroker 和資料庫郵件)使用 SQLServer將在msdb資料庫中自動維護一份完整的在線備份與還原歷史記錄。這些信息包括執行備份一 方的名稱,備份時間和用來存儲備份的備份設備。SQLServerManagementStudio利用這些信息提出 計劃以還原資料庫並應用事務日誌備份。 默認情況下msdb使用簡單恢復模式。 還原msdb資料庫與對用戶資料庫執行完整的資料庫還原相同
㈡ dba面試會考數據結構與演算法和操作系統,計算機組成原理這些大學必修的課程嗎
數據結構與演算法是必須的,後面的兩樣在你以後從事工作時會很有用的,因為作為一個dba 你要會開發,還要懂得硬體和存儲,而硬體和存儲的學習是需要操作系統,計算機組成原理 這兩門課程的。
附上dba 面試題:
http://space.itpub.net/22664653/viewspace-628264
http://space.itpub.net/?uid-22664653-action-viewspace-itemid-628265
http://space.itpub.net/?uid-22664653-action-viewspace-itemid-628267
同時也建議你去itpub 論壇去學習,一個挺不錯的論壇。
㈢ oracle 資料庫的問題,如下,是面試題當時我只知道一點而已,怎麼寫
第四題:用goldengate或者是dataguard
㈣ Oracle DBA面試題
列舉幾個比較容易被問到的問題。(來自cuug)
1. 解釋冷備份和熱備份的不同點以及各自的優點
解答:熱備份針對歸檔模式的資料庫,在資料庫仍舊處於工作狀態時進行備份。而冷備份指在資料庫關閉後,進行備份,適用於所有模式的資料庫。熱備份的優點在於當備份時,資料庫仍舊可以被使用並且可以將資料庫恢復到任意一個時間點。冷備份的優點在於它的備份和恢復操作相當簡單,並且由於冷備份的資料庫可以工作在非歸檔模式下,資料庫性能會比歸檔模式稍好。(因為不必將archive log寫入硬碟)
2. 你必須利用備份恢復資料庫,但是你沒有控制文件,該如何解決問題呢?
解答:重建控制文件,用帶backup control file 子句的recover 命令恢復資料庫。
3. 如何轉換init.ora到spfile?
解答:使用create spfile from pfile 命令
.
4. 解釋data block , extent 和 segment的區別(這里建議用英文術語)
解答:data block是資料庫中最小的邏輯存儲單元。當資料庫的對象需要更多的物理存儲空間時,連續的data block就組成了extent . 一個資料庫對象擁有的所有extents被稱為該對象的segment.
5. 給出兩個檢查表結構的方法
解答:1、DESCRIBE命令
2、DBMS_METADATA.GET_DDL 包
6. 怎樣查看資料庫引擎的報錯
解答:alert log.
7. 比較truncate和delete 命令
解答:兩者都可以用來刪除表中所有的記錄。區別在於:truncate是DDL操作,它移動HWK,不需要 rollback segment .而Delete是DML操作, 需要rollback segment 且花費較長時間.
8. 使用索引的理由
解答:快速訪問表中的data block
9. 給出在STAR SCHEMA中的兩種表及它們分別含有的數據
解答:Fact tables 和dimension tables. fact table 包含大量的主要的信息而 dimension tables 存放對fact table 某些屬性描述的
信息
10. FACT Table上需要建立何種索引?
解答:點陣圖索引(bitmap index)
11. 給出兩種相關約束?
解答:主鍵和外鍵
12. 如何在不影響子表的前提下,重建一個母表
解答:子表的外鍵強制失效,重建母表,激活外鍵
13. 解釋歸檔和非歸檔模式之間的不同和它們各自的優缺點
解答:歸檔模式是指你可以備份所有的資料庫 transactions並恢復到任意一個時間點。非歸檔模式則相反,不能恢復到任意一個時間點。
但是非歸檔模式可以帶來資料庫性能上的少許提高
14. 如何建立一個備份控制文件?
解答:Alter database backup control file to trace.
15. 給出資料庫正常啟動所經歷的幾種狀態 ?
解答:
STARTUP NOMOUNT – 資料庫實例啟動
STARTUP MOUNT - 資料庫裝載
STARTUP OPEN – 資料庫打開
16. 哪個column可以用來區別V$視圖和GV$視圖?
解答: INST_ID 指明集群環境中具體的某個instance 。
17. 如何生成explain plan?
解答:
運行utlxplan.sql. 建立plan 表針對特定SQL語句,使用 explain plan set statement_id = 'tst1' into plan_table 運行
utlxplp.sql 或 utlxpls.sql察看explain plan
18. 如何增加buffer cache的命中率?
解答:在資料庫較繁忙時,適用buffer cache advisory 工具,查詢v$db_cache_advice . 如果有必要更改,可以使用 alter system set
db_cache_size 命令
19. ORA-01555的應對方法?
解答:具體的出錯信息是snapshot too old within rollback seg , 通常可以通過增大rollback seg來解決問題。當然也需要察看一下具
體造成錯誤的SQL文本
20. 解釋$ORACLE_HOME和$ORACLE_BASE的區別?
解答:ORACLE_BASE是oracle的根目錄,ORACLE_HOME是oracle產品的目錄
㈤ 求資料庫高手或者DBA幫寫sql。
DECLARE @sSql varchar(30)
set @sSql='深圳市思源軟體有限公司'
--1.1
select LEN(@sSql)
--1.2
select SUBSTRING(@sSql,4,2)
--1.3
select REPLACE(@sSql,'思源軟體','思源計算機軟體')
--1.4
select CONVERT(varchar(20),GETDATE(),23)
--1.5
DECLARE @Date1 date,@Date2 date
select @Date1='2008-03-01',@Date2='2007-12-31'
select DATEDIFF(DAY,@Date2,@Date1)
㈥ 求sql常考面試題
排序順序會影響系統性能嗎?
問:一些資料介紹說,在SQL Server 6.5中,排序方式會對系統性能造成影響,但是我並沒有發現有針對SQL Server 2000或SQL Server 7.0的類似說法。我想知道二分法檢索對SQL Server 2000程序到底有何意義。SQL Server 2000所支持的各種排序方式之間在執行性能上存在哪些差異呢?
答:請記住:各類排序方式間的性能差異受制於SQL Server在數據排序和數據比較上所花費的CPU周期數量。排序速度快並不代表性能就一定會得到改善。事實上,選擇較為「快速」的排序方法(例如二分法)可能會導致應用程序在其它方面的性能降低。
例如,假設您有一個查詢,該查詢通過last_name欄位進行搜索。二分法排序的規則規定:Smith 並不等於smith。您的應用程序開發人員可以通過要求所有數菥笮蔥問交蛐⌒蔥問嚼詞迪終飧鮃滴衤嘸5牽導實慕餼靄旆ㄊ嵌運閹鞅碇械乃惺菔褂肬PPER() 或者 LOWER() 函數。但不幸的是, 如果類似UPPER()這樣的函數對一個經過索引的列進行了操作,SQL Server將不再能夠使用索引搜索數據。在這種情況下,通過使用二分法所獲得的所有性能提升都將被花費在全表掃描上的巨大性能降低所抵消。所以,您無需考慮不同排序方法間可能存在的微小性能差異,您也無需費神考慮何種排序方法最能滿足程序開發人員和最終用戶的需要。
— SQL Server MVPs
--------------------------------------------------------------------------
日誌文件的增長和DBCC DBREINDEX
問:我有一個30GB的資料庫,我使用完全恢復模式。無論什麼時候,只要我使用資料庫一致性檢查程序(DBCC)語句DBCC DBREINDEX對特定的大型數據表進行重新索引,我都要將恢復模式改為Bulk_Logged,在重新索引過程完成後再改回完全模式。我希望這樣做能夠避免事務日誌文件急劇增長,但是隨後的日誌文件備份工作量卻非常大--有大約15GB。從邏輯上說,資料庫中的數據在重新索引後同原先並沒有什麼不同,只是索引重新進行了組織,那麼為什麼日誌文件還是那樣大呢?我怎樣才能避免日誌文件出現這樣的急劇增長呢?
答:是的,在重新索引前後的數據是完全一樣的,但是索引卻全面進行了更新。當您執行DBCC DBREINDEX命令的時候,SQL Server的日誌僅僅記錄了擴展盤區的分配情況(8頁面單位),而不是記錄了每一行或者每一頁所發生的變化。這種類型的日誌記錄方式避免了物理文件由於系統故障而遭到破壞,並且將更詳細的日誌記錄對系統吞吐量產生的影響降低到最小。
當您備份日誌文件的時候,SQL Server必須對分配在擴展盤區中的頁面進行備份,以便保持資料庫備份和日誌備份的一致性。如果SQL Server不備份這些頁面,您將不能夠切換回完全恢復模式,除非你進行一次完整的資料庫備份。您必須能夠從最近一次的完全備份、任何差異備份以及任何更新的事務日誌備份中對資料庫進行恢復。
——————————————————————————————————————————
再者,看你面試什麼方面的啦!
要是DBA的話,層次更高一些!
㈦ 面試題目(sql)
1、忍不住想說一句,因為第一題中的欄位類型是
【日期型】,而各種資料庫操作日期型數據有不同的方法,沒有一種共通的方法,所以脫離了資料庫而言沒有一種共通的sql。
2、select
ID,NAME,ADDRESS,PHONE,LOGDATE
from
T
where
ID
in(
select
ID
from
T
group
by
NAME
having
count(*)>1)
order
by
NAME;
3、delete
from
T
where
ID
not
in
(select
min(id)
from
T
group
by
name);
4、update
T
set
T.ADDRESS=(select
E.ADDRESS
from
E
where
E.NAME=T.NAME),
T.PHONE=(select
E.PHONE
from
E
where
E.NAME=T.NAME);
5、這個不同的資料庫也有不同的處理方法,不能脫離資料庫談了。
如:SqlServer或者access可以使用
top
oracle可以使用
rownum
等
---
以上,希望對你有所幫助。
㈧ 15個 MySQL 基礎面試題,DBA 們准備好了嗎
問題1:你如何確定 MySQL 是否處於運行狀態?
答案: 在Debian 上運行命令 service mysql status,然後看輸出即可。
在 RedHat 或者 centos 上運行命令 service mysqld status,然後看看輸出即可。
問題2:如何開啟或停止 MySQL 服務?
答案:運行命令 service mysqld start 開啟服務;
運行命令 service mysqld stop 停止服務。
問題3:如何通過 Shell 登入 MySQL?
答案:運行命令 mysql -u用戶名 -p登陸密碼
問題4:如何列出所有資料庫?
答案:運行命令 show databases;
問題5: 如何切換到某個資料庫並在上面工作?
答案:(1)運行命令 use database_name;
(2)進入名為 database_name 的資料庫。
問題6:如何列出某個資料庫內所有表?
答案:在當前資料庫運行命令 show tables;
問題7:如何獲取表內所有 Field 對象的名稱和類型?
答案:運行命令 describe 表名;
簡寫為desc 表名;
問題8:如何刪除表?
答案:運行命令 drop table 表名;
問題9:如何刪除資料庫?
答案:運行命令 drop database 資料庫名;
問題10:如何查看錶內所有數據?
答案:運行命令 select * from 表名;
問題11:如何從表(比如 oc_users )中獲取一個 field 對象(比如 uid)的所有數據?
答案:運行命令 select uid from oc_users;
問題12:假設你有一個名為 『xyz』 的表,它存在多個欄位,如 『createtime』和 『engine』,
名為 engine 的欄位由 『Memoty』 和 『MyIsam』 兩種數值組成。
如何只列出 『createtime』 和 『engine』 這兩列,並且 engine 的值為 『MyIsam』?
答案:運行命令 select create_time, engine from xyz where engine = 「MyIsam」 ;
問題13:如何列出表 『xrt』 內 name 域值為 『tecmint』,web_address 域值為 『tecmint.com』 的所有數據?
答案:運行命令 select * from xrt where name = 「tecmint」 and web_address = 「tecmint.com」 ;
問題14:如何列出表 『xrt』 內 name 域值不為 『tecmint』,web_address 域值為 『tecmint.com』 的所有數據?
答案:運行命令 select * from xrt where name != 「tecmint」 and web_address = 「tecmint.com」;
問題15:如何知道表內行數?
答案:運行命令 select count(*) from 表名;
㈨ 學生黨 女孩紙 初學者 學習資料庫了解到有人告訴說 sqlserver 的工作選擇沒有.m
你說到選擇工作,所以我想問你,你是准備從事資料庫優化方面的工作?如果是,那麼你不應該糾結於哪種資料庫,而應該提升你的數據結構,演算法方面的知識。因為優化大數據,這個知識是重點。還有就是數據模型的拆分,從而降低資料庫訪問壓力。(當然,我沒做過dba,只是從一位dba的面試題中了解一點他們做的事)如果你不是想從事資料庫優化方面的工作,那麼資料庫對你而言就是一種數據存儲媒介。那你這個問題,就是使用問題。資料庫的基本語法基本很相似,這也就是為什麼,框架都會封裝對數據層面的一些實現(增、刪、改、查)。扯遠了,回到這個題目上來,兩者並沒有什麼沖突。理由如下oracle,mysql,sqlserver,基本語法都很接近(我只用過這3種),oracle會多一些方法,例如loop,sqlserver就沒有資料庫很多時候作為一種數據存儲媒介,由於甲方原因(事業單位一般都要求使用oracle資料庫),或者由於費用原因,把現有的系統切換一種資料庫的事,經常有。非dba工作,資料庫層面的操作,一直都在弱化(由框架幫你實現)。因為如果把大段帶有邏輯業務在資料庫中操作,維護起來很麻煩。
㈩ 請有經驗的DBA進來回答一下,sqlserver大批量數據遷移問題
1 不需要的數據當然刪除最好 減輕壓力。
1) 刪除前先刪除索引。因為刪除的同時也需要對索引進行維護。我們先刪除索引再刪除數據效率會有一點提高
2) 刪除完數據後,再重新創建索引。為數據轉換做准備。
2 數據轉換過程
1)不知道你是如何實現的。我推薦的方法是將數據導出來成一個或者一系列的文件。
2)再將導出的文件導入到oracle中。可能需要進行數據類型等的轉換。
我的想法就是將你的所有動作分解,一個個完成。這樣出問題也能及時解決,而且互不影響。如果從sqlserver導出數據的同時還需要往sqlserver中插入數據,那麼我推薦插入的數據放入一個新表中,最後將這個新表的數據也導出來再導入。
3 導入到oracle資料庫中。
1)做好詳細規劃。刪除不必要的數據大概還有接近4億行。oracle中的表是否要做分區等?
2)數據導入後再在表上建索引。