您好,登錄后才能下訂單哦!
本篇文章為大家展示了數據庫原理疑難問題解答的示例分析,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
1、Interbase怎么與Access聯接?
答:首先在ACCESS中建立數據庫,并為這個數據庫指定訪問的別名以及用戶名和口令,然后在Interbase中建立一個外部數據庫聯接(注意是使用當初指定的數據庫別名),在用戶名和口令處指定為先前設置的用戶名和口令,在程序設計語言中使用一個數據庫對象,設置好這個對象的相關屬性(包括數據庫別名、用戶名及口令等),這樣就可以通過這個對象訪問Access數據庫了。
2、Access是否可以用來建立網站留言板?
答:應當是可以的,但一般來說不使用它作留言板的后臺數據庫,因為Access適用的對象是中小型企業的數據庫管理,一般網站留言板都應使用較大型的數據庫作平臺,所以建議使用SQL或Oracle等。
3、MYSQL與SQL誰更適合在UNIX中使用。
答:當然應當是MYSQL,因為MYSQL對于UNIX來說兼容性更好。
4、請問Interdev和Ultradev哪個和SQL2000兼容性好。
答:我想應是Interdev更好一些,因為在SQL2000和Interdev中有許多地方是相容的,而且他們可以聯合起來開發應用程序,對于Ultradev來說只是使用上更方便一些。
5、請問怎樣將數據庫中的數據放入到EXECL中
答:在WIN9X操作系統中首先要有相在數據庫的驅動程序,若沒有就先安裝,然后就可以在EXECL中直接打開相關的數據庫文件。在有些數據庫中還可以只指通過兩個程序進行數據拖放來實現,如ACCESS等。
6、如何進行數據庫設計?
答:數據庫設計包括兩個組成部分:邏輯設計和物理設計。邏輯數據庫設計包括使用數據庫組件(如表和約束)為業務需求和數據建模,而無須考慮如何或在哪里物理存儲這些數據。物理數據庫設計包括將邏輯設計映射到物理媒體上、利用可用的硬件和軟件功能使得盡可能快地對數據進行物理訪問和維護,還包括生成索引。
要在設計后更改這些組件很困難,因此在數據庫應用程序開發的早期階段正確設計數據庫、使其為業務需求建模,并利用硬件和軟件功能很重要。
7、我們的計算機在進行數據查詢時速度很慢,可能由哪些因素引起?
答:
A、網絡通訊速度慢。
B、服務器計算機的內存不足或 Microsoft SQL Server 2000 可用的內存不足。
C、缺少有用的統計數據。
D、統計數據過期。
E、缺少有用的索引。
F、缺少有用的數據條帶化。
8、在VFP中怎樣實現用遞歸的方法求數的階乘?
答:程序如下:
遞歸子程序:
func abc(n)
if n>=1 then s=n*abc(n-1)
else
retu
endfunc
調用主程序
set talk off
@13,13 say " " get n
read
abc(n)
9、學習SQL需要什么基礎?
答:學習SQL需要一些基本的數據庫基礎知識,比如,可以學習FOXBASE、VFP及ACCESS。
10、SQL Server的事務處理日志如何處理?
答:可以通過SQL Server的企業管理器來處理相關的日志,或者通過SQL的日志查看器來處理。
11、如何將SQL 7的數據轉換成SQL 2000的數據?
答:使用復制數據庫向導可以從 Microsoft SQL Server 7.0 向 Microsoft SQL Server 2000 實例移動或復制數據庫,數據庫復制向導基于分離和附加功能,該功能允許將用戶數據庫從源服務器移動或復制到目的服務器。數據轉換服務 (DTS) 包執行實際的移動或復制操作。可以調度該包在指定的時間運行或必要時重新運行。
數據庫管理員可以將一個或多個數據庫從 SQL Server 7.0 實例移動或復制到您的本地計算機上的 SQL Server 2000 默認實例,或者到遠程計算機上的默認或命名實例。該升級功能不支持 SQL Server 6.5 數據庫。
12、如何配置日志傳送?
答:使用數據庫維護計劃向導配置日志傳送。
在配置日志傳送之前,必須在主數據庫上創建一個共享以使事務日志可用。這是從事務日志轉儲目錄創建的共享。例如,如果將日志轉儲到目錄 e:\data\tlogs\,則可以從該目錄創建 \\logshipping\tlogs 共享。
⑴.在"選擇數據庫"屏幕上,選擇"如下數據庫"復選框,然后選擇要進行日志傳送的數據庫。如果選擇了多個數據庫,則不會執行日志傳送,日志傳送選項也不可用。不允許選擇已配置了日志傳送的數據庫。
⑵.選擇"將事務日志傳送到其它的 SQL Server(日志傳送)"復選框。
⑶.繼續執行向導,指定其余的數據庫維護選項,直到到達"指定日志傳送目的"屏幕。
⑷.單擊"添加"按鈕添加目的數據庫。要使該選項可用,必須已經在向導的前面步驟中選擇了使用日志傳送。
⑸.在"添加目的數據庫"屏幕中,選擇一個服務器名。
該服務器必須已經注冊,而且正在運行 Microsoft SQL Server 2000 企業版,這樣才能顯示在下拉列表中。如果要使該目的成為可用的源目的,必須選擇"允許數據庫采用主角色"復選框。如果該復選框未被選中,則該目的數據庫將來就無法采用源目的角色。如果已選定"允許數據庫采用主角色"復選框,還必須在日志將要備份到的目的數據庫中指定"事務日志備份目錄"。
⑹.若要從默認位置更改事務日志目的數據庫,請在"目錄"框中輸入一個位置。
⑺.如果源數據庫不在目的數據庫上,則選擇"創建新數據庫"復選框。"數據庫名稱"框將默認為源數據庫名。如果想要在目的服務器上用另一個數據庫名,則指定一個新名稱。如果已經選擇了允許該目的數據庫承擔源角色,就無法從默認值改變該數據庫的名稱。
⑻.如果已經選擇了"創建新數據庫"復選框,則還必須在"用于數據"和"用于日志"框中指定目的數據庫上數據和日志的文件目錄。
⑼.如果源數據庫已經存在于目的數據庫上,則選擇"使用現有數據庫"復選框。如果目的服務器上的數據庫名不同,則在"數據庫名稱"框中輸入該名。該數據庫必須是使用 WITH STANDBY 選項還原過的,以便正確接受日志。
⑽.在"初始化目的數據庫"屏幕上,執行下列操作之一:
單擊"立即提取完全數據庫備份"。
-或-單擊"使用最新備份文件"以初始化目的數據庫。
⑾.在"日志傳送調度"屏幕上,查看默認的日志傳送調度。如果要改變調度,請單擊"更改"。
⑿.在"復制/裝載的頻率"框中,設置希望目的服務器從源服務器備份和還原事務日志的頻率(以分鐘計)。
⒀.在"裝載延遲"框中,設置希望目的數據庫從源服務器還原事務日志之前要等待的延遲(以分鐘計)。該框的默認值為 0 分鐘,表示目的數據庫應立即還原所有事務日志備份。
⒁.在"文件保持期"框中指定事務日志在刪除之前應該存留的時間長度。
⒂.從"日志傳送閾值"對話框中,設置"備份警報閾值"。
這是距離源服務器上一次事務日志備份時間的最長期限。一旦時間超過此指定閾值,監視服務器將生成警報。
⒃.在"不同步警報閾值"框中,指定源服務器上最近一次事務日志備份與目的服務器最近一次事務日志還原之間的時間。一旦時間超過此指定閾值,監視服務器將生成警報。
⒄.在"指定日志傳送監視器信息"屏幕中,鍵入將監視日志傳送的服務器名稱。
單擊"使用 Windows 身份驗證"或"使用 SQL Server 身份驗證"連接到監視服務器。log_shipping_monitor_probe 登錄名是固定的,必須使用它連接到監視服務器。如果這是一個新帳戶,則選擇一個新密碼。如果該帳戶已經存在于監視服務器上,則必須指定現有的密碼。
說明 使用數據庫維護向導設置日志傳送,只可以向磁盤傳送日志,而不能使用"備份到磁帶"選項。
13、如何管理或查看 SQL Server 消息(企業管理器)?
答:管理或查看 SQL Server 消息
⑴、展開一個服務器組,然后右擊一個服務器。
⑵、指向"所有任務",然后單擊"管理 SQL Server 消息"命令。
⑶、若要指定搜索選項,請執行以下一個或多個操作:
在"消息正文包含"框中,鍵入要搜索的文本。
在"錯誤號"框中,鍵入要搜索的錯誤號。
在"嚴重度"下,選擇要搜索的嚴重級別。
⑷、若要指定要包含的消息,請執行下列操作之一:
選擇"僅包含已日志記錄的消息"復選框。
-或-選擇"僅包含用戶定義的消息"復選框。
⑸、單擊"查找"以查找所有滿足搜索條件的消息
14、要學習SQL2000應先掌握哪些知識?
答:若要學習SQL2000可以先學習一些數據庫基礎方面的知識,如:FOX、ACCESS等,然后學習SQL2000的操作方面知識,再學習SQL2000 SERVER。
15、對于學生管理軟件應考慮哪些方面的問題?
答:首先:應進行需求分析,因為我們開發的軟件都是為用戶服務的,若脫離客戶而開發,那么開發出來的東西是沒有用的。
其次:考慮程序開發的模塊和算法,對于開發的軟件應將它細化,分成若干多個模塊,每一個實現一部分功能,這樣開發的程序結構清楚。另外就是算法,算法是解決問題的關鍵,沒有好的算法,我們編出的程序效率也是不高的。
第三:就是數據庫的確立,好的數據集合對我們開發者來說是事半功倍,反之就會徒勞,另外的方面就是數據平臺,平臺的好壞對程序的移植和通用性是非常關鍵的。
16、為什么我建的數據庫在有的機器上能打開,在有的機器上不能打開?
答:可能的原因有:
⑴、所使用的數據庫平臺不一樣,如SQL的數據庫在ACCESS上是不能打開的,反之也一樣。
⑵、所使用軟件版本不一樣,一般來說,同一數據庫平臺高版本可以打開低版本的,但低版本不能打開高版本的。
⑶、在移置的過程中數據庫損壞。
17、學習SQL Server多久才能精通?
答:這個問題不能肯定的回答,因為自身因素很重要,若認真學,時間能保證,那最多一個月一定能入門的,要說精通就不一定了,不過多的實驗對熟悉的幫助是很大的,對這個問題再熟悉的人可能都不敢說精通。
18、SQL的作用是什么?
答:能常意義上講的SQL是指數據庫查詢語言,主要用于數據庫的操作、管理和查詢。對于SQL來說它又分了兩方面,即SERVER和CLIENT,SERVER主要提供數據庫平臺,用于數據庫的建立、管理等,而CLIENT主要是提供數據庫連接和操作。
19、如何書寫數據庫報告?
答:書寫數據庫報告可從以下方面進行考慮:
⑴、數據庫建立的環境和必要性
⑵、數據庫建立的平臺
⑶、數據庫建立的具體細節
⑷、操作的方法和技巧
⑸、安全性和穩定性
⑹、可移植性和兼容性
⑺、其他
20、為什么按照書上書寫的SQL語句在Visual Foxpro中不能執行?
答:Visual Foxpro中的SQL語句與書上書寫的標準SQL語句有一些微小的差別,要依據Visual Foxpro中SQL語句的語法規定。同樣SQL Server中書寫的SQL語句要符合SQL Server中SQL語句的語法規定。
21、在什么情況下使用CLUSTERED INDEX 在什么情況下使用nonclustered index呢?
答:聚集 聚集索引基于數據行的鍵值在表內排序和存儲這些數據行。由于數據行按基于聚集索引鍵的排序次序存儲,因此聚集索引對查找行很有效。每個表只能有一個聚集索引,因為數據行本身只能按一個順序存儲。數據行本身構成聚集索引的最低級別。
包含聚集索引時,表內的數據行才按排序次序存儲。如果表沒有聚集索引,則其數據行按堆集方式存儲。
非聚集索引具有完全獨立于數據行的結構。非聚集索引的最低行包含非聚集索引的鍵值,并且每個鍵值項都有指針指向包含該鍵值的數據行。數據行不按基于非聚集鍵的次序存儲。
索引內,從索引行指向數據行的指針稱為行定位器。行定位器的結構取決于數據頁的存儲方式是堆集還是聚集。對于堆集,行定位器是指向行的指針。對于有聚集索引的表,行定位器是聚集索引鍵。
創建了聚集索引時,表內的行才按特定的順序存儲。這些行就基于聚集索引鍵按順序存儲。如果一個表只有非聚集索引,它的數據行將按無序的堆集方式存儲。
另外如果大多數引用 emp_sample 的查詢在它們的 WHERE 子句中有關于 emp_id 的等式或范圍比較,聚集索引將發揮很好的作用。如果大多數查詢的 WHERE 子句引用的是 emp_name 而非 emp_id,則通過將 emp_name 上的索引置為聚集索引可提高性能。
22、在VFP中如何像VB一樣能顯示所有控件代碼?
答:使用VFP中的類設計器即可。
23、在多CPU的機器中,網卡是否總是使用高序號的CPU呢?
答:不一定,在網絡操作系統中,可以使用多個CPU,CPU之間是協作式工作,而不是分工,所以網卡不一定總使用高序號的CPU。
24、你覺得SQL2000 SERVER是管理難學還是編程難呢?
答:針對MCDBA而言相對來說應當是管理比編程難,因為編程只要熟悉了SQL的相關東西和編程的算法要領,問題就不大了。而管理并不是熟悉SQL SERVER就行,而要對出現的各種情況都要能應對,不然即便出現一個很小的問題都會讓你束手無策。
25、現在學那種數據庫最好?
答:這個問題已經很多同學問了,其實每一種數據庫都有它存的價值,不然已經被淘汰了。所以這之中沒有最好,只有最適合,應當說最適合學或用哪種數據庫。其實幾種數據庫都很好,ACCESS主要針對中小型企業管理而作為他們數據庫平臺,VFP則多用于開發數據庫應用程序,MCDBA主要針對MC認證,它之中涉及到SQL2000的管理和應用程序設計,這主要是當前大多大中型企業和網站使用的數據庫平臺和開發工具。所以致于哪種最好,應當說適合自己的就是最好的。
26、問:ACCESS、VFP、SQL有什么區別?適應的環境有什么不同?
答:ACCESS、VFP、SQL都是針對數據庫管理而開發的三個軟件,只是在使用的時候,ACCESS主要用于中小型企業的數據庫管理系統,VFP主要適用于開發數據庫管理系統的應有型開發軟件,SQL主要針對于大中型企業的數據庫平臺。
27.ODBC數據源的具體含意及與其相關的操作有那些?
答:ODBC是一種編程接口,它能使應用程序訪問以結構化查詢語言(SQL)作為數據訪問標準的數據庫管理系統。相關的操作有配置數DNS和數據庫訪問引擎。在應用程序中我們首先要配置ODBC數據源使它能指定到一個具體的數據庫,并為這個數據庫命名一個應用程序訪問的別名,這樣在應用程序中我們就可以通過訪問這個別名來訪問相關數據庫。
28.網頁中,需要將“記錄表”格式化,然后甲方填表后,由乙方檢查補充,再打印保存為數據庫并自動編號。還可按格式化自動查詢“記錄表”,要實現此類功能,應用什么技術可實現,我應該學習哪些網頁編輯軟件或技術才能實現。
答:要實現此類功能,使用可以先學習一些數據庫方面的知識,在其中就講到了相關的技術,如:SQL、Oracle等,另外就是要了解一些有關網絡數據庫的配置技術,如SQL Server 、ODBE 、Inerbase等。作為網頁編輯軟件來說,現在很多軟件都是可行的,我認為要好用一點的就是DREAMWEAVER等。
29.請問SQL2000中的“實例”是什么意思,因怎樣理解呢?
答:SQL實例簡單的說就是一個SQL的進程,類似于操作系統中的進程,它有兩種,即:
SQL Server 的默認實例。
此實例由運行它的計算機的網絡名稱標識。使用以前版本 SQL Server 客戶端軟件的應用程序可以連接到默認實例。SQL Server 6.5 版或 SQL Server 7.0 版服務器可作為默認實例操作。但是,一臺計算機上每次只能有一個版本作為默認實例運行。
SQL Server 的命名實例。
該實例通過計算機的網絡名稱加上實例名稱以<計算機名稱>\<實例名稱>格式進行標識。應用程序必須使用 SQL Server 2000 客戶端組件連接到命名實例。計算機可以同時運行任意數目的 SQL Server 命名實例。同時,命名實例還可作為現有的 SQL Server 6.5 版或 SQL Server 7.0 版安裝運行。該實例名不能超過 16 個字符。
30.SQL中什么是DTS,主要的作用是什么?
答:DTS就是SQL提供的數據轉換服務,使用它可以導入和導出SQL數據。
31.我有一個數據庫是架設在SQL Server2000上的,我想把它轉回SQL7.0,但SQL2000的bak文檔不能在SQL7.0里恢復,請問有辦法讓SQL2000轉回SQL7.0嗎?
答:在 SQL Server 2000 的實例上創建的 DTS 包不能裝載到或運行于 SQL Server 7.0 版(或早期版本)的實例上。如果試圖這么做,則可能會收到下面消息中的一個:
"無效的類字符串。" "參數不正確。"
兩條消息都指明:當前的服務器并不包含用于裝載該包所必須的所有組件,并且不能支持在 DTS 包中所定義的對象(例如任務及轉換)。
但是,如果收到這兩條消息中的一條,仍然可以在 SQL Server 2000 實例上打開并運行包。
當然要將SQL2000中的數據庫移植到SQL以前的版本中還有一個方法就是它提供的數據庫復制向導。
32、如何才能為VF6.0設計一個簡單的啟動程序?利用表單可以嗎?我不想脫開VF?
答:你可以寫一個腳本,在系統的注冊表中加入名稱,利用表單也可以。
33、請問在SQL中的char、nchar、nvarchar、varchar四種數據類型,它們之間有何區別?如何用?
答:char是定長的數據類型,varchar是變成數據類型,nchar和nvarchar相同,但針對多字節nchar定長,nvarchar變長。
34、編程后不脫離VF和脫離有何利弊?
答:沒什么利弊可言。
35、ORACLE數據庫的超級用戶名稱和密碼是什么?
答:system/manager。
36、char和nchar各自最多可存貯多少字節的內容?
答:都是4000個字節。
37、有關MSSQL7的參考書,老師能否給我推薦一下?
答:買什么書主要看你需要哪方面的資料。
38、請問VF的數據可以上傳至SQL服務器?
答:當然可以,如可以參考微軟的資料。
39、可不可以客戶端用VF而服務器用大型的數據庫?
答:當然可以,我以前作過很多這樣的項目。
40、/dev/null的null是什么?
答:表示空值、或長度為0的值。
41、VF與哪些大型數據庫兼容?
答:Oracle,DB2,SQL Server等都可以。
42、哪種大型的數據庫易學易用?
答:SQL Server容易學點。
43、在MYSQL中怎樣使用unix shell建庫?
答:先用腳本寫一個批處理文件然后用shell調用(給予執行權然后就可以執行)。
44、VF中的主關鍵字段名在數據庫建好后還能改名嗎?
答:可以修改。先刪除現有的PK,然后重建。
45、請問何為pk?
答:primary key(主關鍵字)。
46、刪除pk后各表之間的聯結都斷了,怎么辦?
答:刪除后還得把關聯加上是比較麻煩一些,但能恢復。
47、informix中可用/informix/bin/isql 調用isql建庫,但在MYSQL中怎么用?
答:因為MYSQL是運行在unix/linux平臺上的所以用起來會難一些,每一種數據庫都有各自的特點,但會一種之后另一種就很容易了。
48、我的程序為什么不能打包為mdb格式,是因為有宏嗎?
答:有宏也可以打包成mdb格式。
49、對變量名訪問的時候,m.與m->是什么命令?起什么作用?
答:m.中,m是父類名,m->主要用在引用m的對象。
50、請問如何在局域網里共享數據庫?
答:要在局域網中共享數據庫,一般需要一臺數據庫服務器,前臺用瀏覽器或者其他程序對它進行存取訪問。
51、SQL Server 和Oracle 哪個更好?
答:SQL Server屬于中型數據庫,它沒有Oracle通用,但是SQL Server 和NT操作系統結合比較緊密。
52、SQL的全稱是?
答:SQL的全稱是Structured Query Language(結構化查詢語言)
53、大型數據庫除了SQL Server和Oracle,還有哪些?
答:常見的還有Sysbase,DB2和Informix等。AS400則是把硬件,操作系統和數據庫都集成到了一起。
54、怎樣才能學好SQL數據庫?
答:我覺得關系數據庫很多概念都是相通的 不管你學SQL Server還是Access,首先都要注意建立起一些基本的概念,比如說表、查詢、關鍵字等。然后熟悉數據庫管理系統的窗口環境,掌握怎樣創建各種對象,如何修改各種設置項或者屬性。
55、請問怎樣選擇使用哪種數據庫?
答:那要看具體應用的規模和條件了,一般VFP和access屬于桌面數據庫,對于小型的應用性能還是不錯的。網絡環境下一般用SQL Server和Oracle。
Oracle數據庫以其強大的功能和穩定性而著稱,但同時,在開發和管理方面也存在很多困難,在此總結了一些Oracle數據庫開發和管理的常見問題,希望能對大家有所幫助。
56、如果發現表中有壞塊,如何檢索其它未壞的數據?
答:首先需要找到壞塊的ID(可以運行dbverify實現),假設為1234。運行下面的查詢語句查找段名:
select segment_name, segment_type, block_id, blocks from dba_extents
where (1234 between block_id and (block_id + blocks - 1));
一旦找到壞段名稱,若段是一個表,則最好建立一個臨時表,存放好的數據。若段是索引,則刪除它,再重建。
create table good_table
as
select ? from bad_table where rowid not in
( select /?+index(bad_table, any_index)?/ rowid
from bad_table where substr( rowid, 1, 8 ) = 1234)
57、如請問如何關閉FORM調用REPORT時的小窗口?
答:在利用Oracle數據庫的Develop 2000設計開發界面的過程中,當FORM調用REPORT時,會顯示一個背景窗口REPORT BACKGROUD ENGINE,等待FORM對REPORT的調用,當FORM調用其它REPORT時,也使用這個后臺服務器,不論調用多少個REPORT,這個后臺服務器存在且只有一個。但當FORM與REPORT全部退出后,該窗口仍處于等待狀態,不會關閉,這時,我們需要手工將其關閉。
我們可以使用以下參數在FORM調用REPORT時不顯示這個小窗口:
Add_Parameter( pl_id, 'ORACLE_SHUTDOWN',TEXT_Parameter, 'Yes' );
需要注意的是,該參數必須加在所有參數的前面,即它必須為第一個參數。
58、請問如何根據查詢條件在REPORT中動態顯示記錄?
答:
⑴. 在REPORT的“數據模型”下面的“用戶參數”中,創建用戶自定義參數W_CLAUSE,W_CLAUSE為從FORM傳遞過來的查詢條件,數據類型為字符型,缺省值為NULL。
⑵. 修改查詢Q_1,將SQL查詢語句修改為select ? from dept &&w_clause。
⑶. 在運行報表時,報表會自動將符合&&w_clause的查詢條件記錄顯示出來。
如果從FORM傳遞過來的w_clause為where dept=1,本報表的SQL查詢自動轉換為:
select from dept where dept=1,并在報表運行結果中顯示符合該查詢條件的記錄,如果從FORM傳遞過來的w_cluase為where to_char(年度,'YYYY.MM')='2000.03',則在報表運行結果中自動顯示2000年3月份的記錄。
59、在Oracle中,我們如何查看某表上的約束?
答:我們可以使用下面語句從all_constraints視圖中查看某表上的約束:
SELECT constraint_name, table_name, r_owner, r_constraint_name FROM all_constraints
WHERE table_name = 'table_name' and owner = 'owner_name';
另一個視圖ALL_CONS_COLUMNS也包括組成表上約束列的信息。
60、如何將數據庫從noarchivelog方式改變為archivelog方式?
答:首先打開Init.ora文件,確保存檔日志目標指向一有效目錄。
然后啟動Server Manager
svrmgrl〉 shutdown immediate
svrmgrl〉 startup mount
svrmgrl〉 alter database archivelog;
svrmgrl〉 alter database open;
svrmgrl〉 archive log list;
在init.ora中設置參數archive_log_start=TRUE,它設置存檔日志為自動啟動。在Oracle 8i中支持多個存檔日志的目標,因此參數修改為log_archive_dest[n],其中n為1到5。
61、在Oracle數據庫中,我們如何增加表空間的大小?
答: 在開發Oracle數據庫中,我們有兩種方法增加表空間的大小:
⑴.增加額外的數據文件到表空間中
例如:alter tablespace users add datafile '/u01/oradata/orcl/users02.dbf' size 25m;
⑵.修改表空間當前的數據文件
例如:alter database datafile '/u01/oradata/orcl/users01.dbf' resize 50M;
62、請問如何在REPORT中設置動態顯示域?
答:在REPORT中設置動態顯示域的方法如下:
⑴. 在REPORT的“數據模型”下面的“用戶參數”中,創建用戶自定義參數,如RQ,RQ是從FORM傳遞過來的顯示日期,數據類型為字符型。
⑵. 在布局模型中,創建一個顯示域F_1,在屬性選項板中修改該顯示域的源為用戶自定義參數RQ,并且設為“不可見的”。
⑶. 在動態預覽中,創建一個文本域D_1,調整該文本域的位置和寬度,在該域的內容中輸入&&F_1,則該域會動態顯示用戶定義參數RQ的值。
63、有關口令的問題。
我在Solaris系統上運行 Oracle8i 8.1.7企業版。我創建了兩個數據庫:SUGAR和TestDb。將兩者的remote_login_passwordfile都設置為 “獨占(exclusive)”。我試圖以SYSDBA身份連接到TestDb,但未能成功。下面是我的做法:
$sqlplus /nolog
SQL> conn sys/change_on_install@testdb
Connected.(已連接)
SQL> select * from v$pwfile_users;
username sysdb sysop
-----------------------------------------
internal true true
sys true true
SQL> conn sys/change_on_install@testdb as
sysdba
ERROR(錯誤)
ORA-01017: invalid username/password; logon
denied(無效的用戶名/口令,登錄被拒絕)
Warning: You are on longer connected to
ORACLE(警告:你已經與ORACLE斷開連接)
64、我為什么不能以SYSDBA身份連接到TestDb?
答:通常Oracle中的SYS口令與INTERNAL口令是同步的,SYS口令存儲于口令文件中。在上述情況下你建立了包含有一個口令的口令文件,而不是使用缺省的 “change_on_install,”這就是問題之所在。
希望下面的方法對你有所幫助。首先,建立一個口令文件,其中包含一個口令,這個口令不要與系統口令匹配:
$ orapwd file=orapw password=foobar
entries=40
然后,進入服務器,啟動數據庫:
$ svrmgr
SVRMGR> connect internal
Connected.(已連接)
SVRMGR> startup
ORACLE instance started.(ORACLE 實例已啟動)
Total System Global Area (系統全局區域大小)
193073136 bytes
Fixed Size (固定大小)
69616 bytes
Variable Size (可變大小)
141639680 bytes
Database Buffers (數據庫緩沖區)
45056000 bytes
Redo Buffers (重做緩沖區)
6307840 bytes
Database mounted. (數據庫已加載)
Database opened.數據庫已打開。
現在使用SYS用戶的口令,以SYS身份連接:
SVRMGR> connect sys/change_on_install@ora81
Connected.(已連接)
成功了。現在試著以SYSDBA身份連接:
SVRMGR> connect sys/change_on_install@ora81
as sysdba;
ORA-01017: invalid username/password; logon
denied(無效的用戶名/口令;登錄被拒絕)
這里出現了你所說的錯誤。你的SYS口令為:change_on_install,但口令文件中的口令卻是foobar。SYS用戶是專用的,以SYSDBA身份連接就像是以INTERNAL連接,你必須使用口令文件中的口令。試試這樣做:
SVRMGR— connect sys/foobar@ora81 as sysdba;
Connected.(已連接)
并不是每個人都需要使用口令文件中的口令;用戶需要使用他們自己的口令。通過授權SYSDBA給SCOTT,你就可以明白這一點:
SVRMGR> grant sysdba to scott;
Statement processed.(已處理)
這個命令將SCOTT以SCOTT的憑證加入到口令文件中。如果你改變了SCOTT的口令,口令文件也會自動同步改變。現在,你可以試試以SYSDBA身份連接SCOTT了:
SVRMGR> connect scott/tiger@ora81 as sysdba;
Connected.(已連接)
一切正常。現在可以使用ALTER USER 命令來改變SYS用戶的口令。
SVRMGR> alter user sys identified by
change_on_install;
Statement processed.(已成功更改)
SVRMGR≫ connect sys/change_on_install@ora81
as sysdba;
Connected.(已連接)
你還可以用change_on_install,因為改變SYS用戶口令將同時改變口令文件中的口令。當你建立了口令文件后,Oracle數據庫在其中放入兩個賬號:SYS和INTERNAL,并將你在命令行中提供的口令作為這兩個賬戶的口令。當你改變數據庫中的SYS用戶口令時,數據庫將沖掉口令文件中的SYS和INTERNAL口令。下面操作將顯示口令foobar已經是無效的了:
SVRMGR> connect sys/foobar@ora81 as sysdba;
ORA-01017: invalid username/password; logon
denied(無效的用戶名/口令,登錄被拒絕)
65、利用QUERY選項輸出數據。
我知道在Oracle8i中,可以使用QUERY有選擇地輸出表數據。我想用EXP命令來實現,但沒有成功。下面是我所寫的命令,以及得到的錯誤信息:
exp ddd/ddd file=/dbf/u11/customer.dmp
tables=AASC.AST_CUSTOMER_KEEP
query=\'where CUA_TRANS_DTS \<
add_months\(sysdate, -6\)\'
table_export[2]: CUA_TRANS_DTS: not found.(沒有找到)
答:操作系統不同,用來指定QUERY=參數的方法也不同。WHERE 語句里面往往有很多特殊的字符,如=.>.<和空格等等。而UNIX和Windows操作系統中的外殼命令提示是不歡迎這些字符的,這些字符將被忽略。你應該根據不同的操作系統采用不用的方法。我一般使用帶有QUERY選項的參數文件(PARFILE),利用PARFILE,可以不考慮操作系統平臺而使用完全相同的方法。
下面給出一個例子。我用select * from all_objects建立了一個表T,我希望輸出所有object_id 小于5000的行。在Windows中,必須這樣做:
C:\exp>exp userid=tkyte/tkyte tables=t
query="""where object_id < 5000"""
注意:在windows中,需要在WHERE語句的兩端使用三個雙引號。在UNIX中,必須這樣做:
$ exp userid=/ tables=t query=\"where
object_id \< 5000\"
exp userid=/ tables=t parfile=exp.par
如果使用包含query="where object_id < 5000"的PARFILE文件,我可以在兩個系統中使用相同的一個命令:
exp userid=/ tables=t parfile=exp.par
在兩種操作系統中,完全相同。這相對于在不同的平臺中使用不同的QUERY字符串容易多了。
66、DBMS_RANDOM。
您能否告訴我寫一個能產生大于0小于1的隨機數的隨機數產生器的最好方法?
答:Oracle8 8.0版介紹了DBMS_RANDOM包,Oracle8i 8.1.6版介紹了DBMS_RANDOM包的新功能,但Oracle8i 文檔中沒有詳細全面介紹其功能。幸運的是:有一個新的DBMS_RANDOM包函數能夠返回0-1之間的隨機數。這個新函數是:
FUNCTION value RETURN NUMBER;
FUNCTION value (low IN NUMBER, high IN NUMBER) RETURN NUMBER;
FUNCTION normal RETURN NUMBER;
FUNCTION string (opt char, len NUMBER)
RETURN VARCHAR2;
VALUE函數的第一種形式返回一個大于或等于0且小于1的隨機數;第二種形式返回一個大于或等于LOW,小于HIGH的隨機數。下面是其用法的一個示例:
SQL> select dbms_random.value,
dbms_random.value(55,100)
2 from dual;
VALUE DBMS_RANDOM.VALUE(55,100)
--------------- -----------------------------
.782821936 79.6367038
NORMAL函數返回服從正態分布的一組數。此正態分布標準偏差為1,期望值為0。這個函數返回的數值中有68%是介于-1與+1之間,95%介于-2與+2之間,99%介于-3與+3之間。事實上,這就是你在清單1中所看到的。
最后,是STRING函數。它返回一個長度達60個字符的隨機字符串。參數OPT可以是清單2顯示的值中的任何一個單個字符。
關于這些函數及DBMS_RANDOM包的文件都包含在SQLPlus中:
select text
from all_source
where name = 'DBMS_RANDOM' and type = 'PACKAGE' order by line;
67、連接次序與謂詞求值。
在下面的查詢中,WHERE 語句的哪一部分先執行?
Select field names from emp, dept
where emp.dept_num = dept.num and
emp.name Like 'S%' and dept.name='IT';
答:執行次序隨已有的索引、統計、和session/init.ora參數的不同而變化。
假定已有一個建立在DEPT(name)和EMP(dept_num)上的索引。假定優化器認為DEPT是唯一的,它可能按下面的順序進行操作:
利用建立在DEPT(name)上的索引查找dept列
利用建立在EMP(dept_num)上的索引查找匹配的emp列(即連接emp.dept_num = dept.num)
依據建立在emp.ename like 'S%'進行過濾
現在,我們假定沒有建立在EMP(dept_num)上的索引,也沒有建立在DEPT(name)上的索引,而存在建立在EMP(name)和DEPT(num)上的索引。優化器可能按下面的次序進行操作:
利用建立在EMP(name)上的索引找到帶有S的EMPS
利用建立在DEPT(num)上的索引找到匹配項
根據dept.name = 'IT'過濾結果
謂詞求值的次序是不確定的,可以隨時間的改變而改變,并由優化器決定。不要假定任何事情會按一定的次序發生。如果你那么做,隨著時間的推移,你的應用程序可能會出現一些看起來非常奇怪的錯誤。看以下的例子:建立一個表,輸入一些數據。當X='a’時,第二列的數據“Y”是一個數值,當X='b’時,“Y”不是數字。
SQL> create table t ( x varchar2(1), y varchar2(1) );
Table created.
SQL> insert into t values ( 'a', '1' );
1 row created.
SQL> insert into t values ( 'b', 'x' );
1 row created.
現在根據這個表運行一個查詢:查找滿足x='a',y=1的行。
SQL> select * from t where x = 'a' and
y = 1;
ERROR:
ORA-01722: invalid number
no rows selected(錯誤,無效的數字,沒有選擇任何行)
呦,沒有成功。在這種情況下,數據庫首先執行Y=1,當找到Y='X'的行后,很顯然,它不能將'X'轉換為一個數字,所以失敗了。而下面的程序將給出不同的結果:
SQL> analyze table t compute statistics;
Table analyzed.(表已經分析過)
SQL> select * from t where x = 'a' and
y = 1;
X Y
- -
a 1
使用不同的優化器模式,成功了!為什么?優化器說:“嘿,檢查x= 'a'要比檢查y=1來得快,因為在y=1中有一個將y從字符變為數字的轉換。所以,我先檢查x= 'a',然后再檢查y=1。”
這個例子說明謂詞執行的次序可能是不確定的,你不能指望有一種特定的執行次序。也就是說,當你依靠一個隱含的轉換時,必須非常謹慎。
68、顯示SGA--fixed size(固定大小)與variable size(可變大小)。
當在svrmgr提示符下運行 “show SGA”時,fixed size和variable size是什么意思?
答:fixed size就是SGA中固定組件(它在編譯oracle 數據庫本身時就固定于其中)的大小。它是固定大小的內存,用來指向SGA的其它部分。SGA這一部分的大小是不能改變的。
variable size指分配的內存塊大小可變。SGA的可變塊,分為共享池、大池、JAVA池、游標區和其他結構。
上述內容就是數據庫原理疑難問題解答的示例分析,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。