Oracle 常見問答
2024-08-29 13:40:51
供稿:網友
1、如何使用SQL*Loader?
dragon2> sqlldr userid=c/c control=lc2.ctl log=lc2.log bad=lc2.bad
SQL*Loader: Release 9.2.0.1.0 - PRodUCtion on Wed Jun 4 18:03:53 2003
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Commit point reached - logical record count 50
dragon2>
其中lc2.ctl內容為:
#--------------------------------------------
LOAD DATA
INFILE *
REPLACE
INTO TABLE lc2
FIELDS TERMINATED BY ","
(LCSH,LCZT,LCRQ,LCSJ,LCGH)
BEGINDATA
673969,1,20010205,174948,0000
673969,3,20010205,174709,0000
...
#--------------------------------------------
2、如何知道安裝了哪些Oracle選項?
col PARAMETER for a35
col VALUE for a35
select * from v$option;
[06.04]:如何增加表空間的大小?
(1)、加大表空間中數據文件的大小:
ALTER DATABASE DATAFILE 'filename' RESIZE nn M;
(2)、給表空間添加新的數據文件:
ALTER TABLESPACE tablespacename
ADD DATAFILE 'filename' SIZE nn M;
假如你沒有使用OMF,filename需要包含具體路徑。
3、如何類似創建一個空表?
CREATE TABLE NEW_TABLE_NAME AS
SELECT * FROM OLD_TABLE_NAME WHERE 1=2;
[06.02]:9i eXP blob ORA-01555錯誤?
導致9i exp blob時出現
ORA-01555: snapshot too old: rollback segment number with name "" too small
錯誤的原因是9i blob的bug。
一般來說exp ORA-01555可以通過下面方法來解決:
1)加大所有回滾段且不答應自動收縮(因為我們無法控制EXP具體會使用哪個回滾段);
2)EXP使用consistent = n(只保證一個表內數據是同一時刻的)和direct = y參數;
3)安排在數據庫任務最少的時候做EXP;
4)對于特大表可采用query子句分批EXP該表。
[05.30]:ORA-02049 via db_link?
hawk1:/oracle/oracle9$oerr ora 2049
02049, 00000, "timeout: distributed transaction waiting for lock"
// *Cause: exceeded INIT.ORA distributed_lock_timeout seconds waiting for lock.
// *Action: treat as a deadlock
很多時候DISTRIBUTED_LOCK_TIMEOUT參數是不設的,這個錯誤很多時候是程序引起的。當然有人建議使用DBMS_DEFFR.CALL和DBMS_DEFFR_SYS.PUSH來代替直接的兩段式提交。
4、為何導致連接關閉?
昨天在做一項測試時,我在本地PC設置了NLS_DATE_FORMAT,但手誤寫錯了,把hh24寫成了24hh,當時因為SQL*PLUS有現成的連接在數據庫上,所以也沒發現有什么影響。此后重起PC后無論如何都連不上數據庫了,每次SQL*PLUS都是一閃而過就消失了,我根本看不到它提示的是什么錯誤,弄的我一頭霧水,查遍了我可以想到的原因就是沒發現問題所在,后來嘗試tnsping(因為我一直確信網絡沒有問題)告知日期格式錯誤,才猛然想起。
5、817 EXP 815報錯EXP-00037?
直接使用817的EXP來導出815的數據會報EXP-00037錯誤。
我們可以先使用815 EXP,然后使用817 IMP即可。
6、網上下載的oracle9i是正式版嗎?假如是這樣,oracle通過什么賺錢?
http://otn.oracle.com/software/content.Html 上下載的是正版的,oracle賺錢的方式分兩種:
1)、賣軟件,下載的雖然和正版沒有區別,但他有申明,不得用于商業用途,你假如用下載的軟件來做商業用途,oracle保留告你侵權的權利。所以一般下載的都只是作為測試,或用戶個人學習,真正的商業應用,肯定是會買的。
2)、賣服務,這個才是oracle最賺錢的來源,用的起oracle的公司一般都會考慮買服務的,因為很多問題也只有oracle才能給你解決,再牛的oracle技術高手,沒有oracle這個后臺,都很難完成工作的。
7、如何取得一列中第N大的值?
select * from
(select t.*,dense_rank() over (order by t2 desc) rank from t)
where rank = &N;