Oracle常见问题.docx
《Oracle常见问题.docx》由会员分享,可在线阅读,更多相关《Oracle常见问题.docx(76页珍藏版)》请在冰豆网上搜索。
Oracle常见问题
ORACLE常用傻瓜問題1000問全集
作者:
CCBZZP
大家在應用ORACLE的時候可能會遇到很多看起來不難的問題,特別對新手來說,今天我簡單把它總結一下,發布給大家,希望對大家有幫助!
和大家一起探討,共同進步!
對ORACLE高手來說是不用看的.
ORACLE內部函數篇
204.如何得到字符串的第一個字符的ASCII值?
ASCII(CHAR)
SELECTASCII('ABCDE')FROMDUAL;
結果:
65
205.如何得到數值N指定的字符?
CHR(N)
SELECTCHR(68)FROMDUAL;
結果:
D
206.如何連接兩個字符串?
CONCAT(CHAR1,CHAR2)
SELECTCONCAT('ABC','DEFGH')FROMDUAL;
結果:
'ABCDEFGH'
207.如何將列中的數值代替為字符串?
DECODE(CHAR,N1,CHAR1,N2,CHAR2...)
SELECTDECODE(DAY,1,'SUN',2,'MON')FROMDUAL;
208.INITCAP(CHAR)
將字符串CHAR的第一個字符為大寫,其余為小寫.
SELECTINITCAP('ABCDE')FROMDUAL;
209.LENGTH(CHAR)
取一字符串CHAR的長度.
SELECTLENGTH('ABCDE')FROMDUAL;
210.LOWER(CHAR)
將字符串CHAR全部變為小寫.
SELECTLOWER('ABCDE')FROMDUAL;
211.LPAD(CHAR1,N,CHAR2)
用字符串CHAR2包括的字符左填CHAR1,使其長度為N.
SELECTLPAD('ABCDEFG',10'123')FROMDUAL;
結果:
'123ABCDEFG'
212.LTRIM(CHAR,SET)
從字符串CHAR的左邊移去字符串SET中的字符,直到第一個不是SET中的字符為止.
SELECT('CDEFG','CD')FROMDUAL;
結果:
'EFG'
213.NLS_INITCAP(CHAR)
取字符CHAR的第一個字符大寫,其余字符為小寫.
SELECTNLS_INITCAP('ABCDE')FROMDUAL;
214.NLS_LOWER(CHAR)
將字符串CHAR包括的字符全部小寫.
SELECTNLS_LOWER('AAAA')FROMDUAL;
215.NLS_UPPER(CHAR)
將字符串CHAR包括的字符全部大寫.
SELECTNLS_UPPER('AAAA')FROMDUAL;
216.REPLACE(CHAR1,CHAR2,CHAR3)
用字符串CHAR3代替每一個列值為CHAR2的列,其結果放在CHAR1中.
SELECTREPLACE(EMP_NO,'123','456')FROMDUAL;
217.RPAD(CHAR1,N,CHAR2)
用字符串CHAR2右填字符串CHAR1,使其長度為N.
SELECTRPAD('234',8,'0')FROMDUAL;
218.RTRIM(CHAR,SET)
移去字符串CHAR右邊的字符串SET中的字符,直到最后一個不是SET中的字符為止.
SELECTRTRIM('ABCDE','DE')FROMDUAL;
219.SUBSTR(CHAR,M,N)
得到字符串CHAR從M處開始的N個字符.雙字節字符,一個漢字為一個字符的.
SELECTSUBSTR('ABCDE',2,3)FROMDUAL;
220.SUBSTRB(CHAR,M,N)
得到字符串CHAR從M處開始的N個字符.雙字節字符,一個漢字為二個字符的.
SELECTSUBSTRB('ABCDE',2,3)FROMDUAL;
221.TRANSLATE(CHAR1,CHAR2,CHAR3)
將CHAR1中的CHAR2的部分用CHAR3代替.
SELECTTRANSLATE('ABCDEFGH','DE','MN')FROM DUAL;
222.UPPER(CHAR)
將字符串CHAR全部為大寫.
223.ADD_MONTHS(D,N)
將N個月增加到D日期.
SELECTADD_MONTHS(SYSDATE,5)FROMDUAL;
224.LAST_DAY(D)
得到包含D日期的月份的最后的一天的日期.
SELECTLAST_DAY(SYSDATE)FROMDUAL;
225.MONTH_BETWEEN(D1,D2)
得到兩個日期之間的月數.
SELECTMONTH_BETWEEN(D1,D2)FROMDUAL;
226.NEXT_DAY(D,CHAR)
得到比日期D晚的由CHAR命名的第一個周日的日期.
SELECTNEXT_DAY(TO_DATE('2003/09/20'),'SATDAY')FROMDUAL;
227.ROUNT(D,FMT)
得到按指定的模式FMT舍入到的最進的日期.
SELECTROUNT('2003/09/20',MONTH)FROMDUAL;
228.SYSDATE
得到當前系統的日期和時間.
SELECTSYSDATEFROMDUAL;
229.TO_CHAR(D,FMT)
將日期D轉換為FMT的字符串.
SELECTTO_CHAR(SYSDATE,'YYYY/MM/DD')FROMDUAL;
230.TO_DATE(CHAR,FMT)
將字符串CHAR按FMT的格式轉換為日期.
SELECTTO_DATE('2003/09/20','YYYY/MM/DD')FROMDUAL;
231.ABS(N)
得到N的絕對值.
SELECTABS(-6)FROMDUAL;
232.CEIL(N)
得到大于或等于N的最大整數.
SELECTCEIL(5.6)FROMDUAL;
233.COS(N)
得到N的余弦值.
SELECTCOS
(1)FROMDUAL;
234.SIN(N)
得到N的正弦值.
SELECTSIN
(1)FROMDUAL;
235.COSH(N)
得到N的雙曲余弦值.
SELECTCOSH
(1)FROMDUAL;
236.EXP(N)
得到N的E的N次冪.
SELECTEXP
(1)FROMDUAL;
237.FLOOR(N)
得到小于或等于N的最小整數.
SELECTFLOOR(5.6)FROMDUAL;
238.LN(N)
得到N的自然對數.
SELECTLN
(1)FROMDUAL;
239.LOG(M,N)
得到以M為底N的對數.
SELECTLOG(2,8)FROMDUAL;
240.MOD(M,N)
得到M除以N的余數.
SELECTMOD(100,7)FROMDUAL;
241.POWER(M,N)
得到M的N冪.
SELECTPOWER(4,3)FROMDUAL;
242.ROUND(N,M)
將N舍入到小數點后M位.
SELECT(78.87653,2)FROMDUAL;
243.SIGN(N)
當N<0時,得到-1;
當N>0時,得到1;
當N=0時,得到0;
SELECTSIGN(99)FROMDUAL;
244.SINH(N)
得到N的雙曲正弦值.
SELECTSINH
(1)FROMDUAL;
245.SORT(N)
得到N的平方根,N>=0
SELECTSORT(9)FROMDUAL;
246.TAN(N)
得到N的正切值.
SELECTTAN(0)FROMDUAL;
247.TANH(N)
得到N的雙曲正切值.
SELECTTANH(0)FROMDUAL;
248.TRUNC(N,M)
得到在M位截斷的N的值.
SELECTTRUNC(7.7788,2)FROMDUAL;
249.COUNT()
計算滿足條件的記錄數.
SELECTCOUNT(*)FROMTABLE1WHERECOL1='AAA';
250.MAX()
對指定的列求最大值.
SELECTMAX(COL1)FROMTABLE1;
251.MIN()
對指定的列求最小值.
SELECTMIN(COL1)FROMTABLE1;
252.AVG()
對指定的列求平均值.
SELECTAVG(COL1)FROMTABLE1;
253.SUM()
計算列的和.
SELECTSUM(COL1)FROMDUAL;
254.TO_NUMBER(CHAR)
將字符轉換為數值.
SELECTTO_NUMBER('999')FROMDUAL
ORACLE常用傻瓜问题1000问
作者:
CCBZZP
1.Oracle安装完成后的初始口令?
internal/oracle
sys/change_on_install
system/manager
scott/tiger
sysman/oem_temp
2.ORACLE9IASWEBCACHE的初始默认用户和密码?
administrator/administrator
3.oracle8.0.5怎么创建数据库?
用orainst。
如果有motif界面,可以用orainst/m
4.oracle8.1.7怎么创建数据库?
dbassist
5.oracle9i怎么创建数据库?
dbca
6.oracle中的裸设备指的是什么?
裸设备就是绕过文件系统直接访问的储存空间
7.oracle如何区分64-bit/32bit版本?
$sqlplus'/ASSYSDBA'
SQL*Plus:
Release9.0.1.0.0-ProductiononMonJul1417:
01:
092003
(c)Copyright2001OracleCorporation.Allrightsreserved。
Connectedto:
Oracle9iEnterpriseEditionRelease9.0.1.0.0-Production
WiththePartitioningoption
JServerRelease9.0.1.0.0-Production
SQL>select*fromv$version;
BANNER
----------------------------------------------------------------
Oracle9iEnterpriseEditionRelease9.0.1.0.0-Production
PL/SQLRelease9.0.1.0.0-Production
CORE9.0.1.0.0Production
TNSforSolaris:
Version9.0.1.0.0-Production
NLSRTLVersion9.0.1.0.0-Production
SQL>
8.SVRMGR什么意思?
svrmgrl,ServerManager 9i下没有,已经改为用SQLPLUS了
sqlplus/nolog 变为归档日志型的
9.请问如何分辨某个用户是从哪台机器登陆ORACLE的?
SELECTmachine,terminalFROMV$SESSION;
10.用什么语句查询字段呢?
desctable_name可以查询表的结构
selectfield_name,...from...可以查询字段的值
select*fromall_tableswheretable_namelike'%'
select*fromall_tab_columnswheretable_name='?
?
'
11.怎样得到触发器、过程、函数的创建脚本?
descuser_source
user_triggers
12.怎样计算一个表占用的空间的大小?
selectowner,table_name,NUM_ROWS,BLOCKS*AAA/1024/1024"SizeM",EMPTY_BLOCKS,LAST_ANALYZED
fromdba_tables
wheretable_name='XXX';
Here:
AAAisthevalueofdb_block_size;
XXXisthetablenameyouwanttocheck
13.如何查看最大会话数?
SELECT*FROMV$PARAMETERWHERENAMELIKE'proc%';
SQL>
SQL>showparameterprocesses
NAME TYPE VALUE
-------------------------------------------------------------------------
aq_tm_processes integer 1
db_writer_processes integer 1
job_queue_processes integer 4
log_archive_max_processes integer 1
processes integer 200
这里为200个用户。
Select*fromv$license;
其中sessions_highwater纪录曾经到达的最大会话数
14.如何查看系统被锁的事务时间?
select*fromv$locked_object;
15.如何以archivelog的方式运行oracle?
init.ora
log_archive_start=true
RESTARTDATABASE
16.怎么获取有哪些用户在使用数据库?
selectusernamefromv$session;
17.数据表中的字段最大数是多少?
表或视图中的最大列数为1000
18.怎样查得数据库的SID?
selectnamefromv$database;也可以直接查看init.ora文件
19.如何在Oracle服务器上通过SQLPLUS查看本机IP地址?
selectsys_context('userenv','ip_address')fromdual;
如果是登陆本机数据库,只能返回127.0.0.1
20.UNIX下怎么调整数据库的时间?
su-root
date-u08010000
21.在ORACLETABLE中如何抓取MEMO类型栏为空的资料记录?
selectremarkfromoms_flowrecwheretrim(''fromremark)isnotnull;
22.如何用BBB表的资料去更新AAA表的数据(有关联的字段)
UPDATEAAASETBNS_SNM=(SELECTBNS_SNMFROMBBBWHEREAAA.DPT_NO=BBB.DPT_NO)WHEREBBB.DPT_NOISNOTNULL;
23.P4计算机安装方法
将SYMCJIT.DLL改为SYSMCJIT.OLD
24.如何查询SERVER是不是OPS?
SELECT* FROMV$OPTION;
如果PARALLELSERVER=TRUE则有OPS能
25.如何查询每个用户的权限?
SELECT* FROMDBA_SYS_PRIVS;
26.如何将表移动表空间?
ALTERTABLETABLE_NAMEMOVETABLESPACE_NAME;
27.如何将索引移动表空间?
ALTERINDEXINDEX_NAMEREBUILDTABLESPACETABLESPACE_NAME;
28.在LINUX,UNIX下如何启动DBASTUDIO?
OEMAPP DBASTUDIO
29.查询锁的状况的对象有?
V$LOCK,V$LOCKED_OBJECT,V$SESSION,V$SQLAREA,V$PROCESS;
查询锁的表的方法:
SELECTS.SIDSESSION_ID,S.USERNAME,DECODE(LMODE,0,'None',1,'Null',2,'Row-S(SS)',3,'Row-X(SX)',4,'Share',5,'S/Row-X(SSX)',6,'Exclusive',TO_CHAR(LMODE))MODE_HELD,DECODE(REQUEST,0,'None',1,'Null',2,'Row-S(SS)',3,'Row-X(SX)',4,'Share',5,'S/Row-X(SSX)',6,'Exclusive',TO_CHAR(REQUEST))MODE_REQUESTED,O.OWNER||'.'||O.OBJECT_NAME||'('||O.OBJECT_TYPE||')',S.TYPELOCK_TYPE,L.ID1LOCK_ID1,L.ID2LOCK_ID2FROMV$LOCKL,SYS.DBA_OBJECTSO,V$SESSIONSWHEREL.SID=S.SIDANDL.ID1=O.OBJECT_ID;
30.如何解锁?
ALTERSYSTEMKILLSESSION ‘SID,SERIR#’;
31.SQLPLUS下如何修改编辑器?
DEFINE_EDITOR="<编辑器的完整路经>" --必须加上双引号来定义新的编辑器,也可以把这个写在$ORACLE_HOME/sqlplus/admin/glogin.sql里面使它永久有效。
32.ORACLE产生随机数的函数?
DBMS_RANDOM.RANDOM
33.LINUX下查询磁盘竞争状况命令?
sar -d
33.LINUX下查询CPU竞争状况命令?
sar -r
34.查询当前用户对象?
SELECT* FROMUSER_OBJECTS;
SELECT* FROMDBA_SEGMENTS;
35.如何获取错误信息?
SELECT* FROM USER_ERRORS;
36.如何获取链接状况?
SELECT*FROMDBA_DB_LINKS;
37.查看数据库字符状况?
SELECT* FROMNLS_DATABASE_PARAMETERS;
SELECT* FROMV$NLS_PARAMETERS;
38.查询表空间信息?
SELECT* FROM DBA_DATA_FILES;
39.ORACLE的INTERAL用户要口令?
修改SQLNET.ORA
SQLNET.AUTHENTICATION_SERVICES=(NTS)
40.出现JAVA.EXE的解决办法?
一般是将ORACLEORAHOMEXIHTTPSERVER改成手工启动可以的,X是8或9
41.如何给表、列加注释?
SQL>commentontable表is'表注释';
注释已创建。
SQL>commentoncolumn表.列is'列注释';
注释已创建。
SQL>select*fromuser_tab_commentswherecommentsisnotnull;
42.如何查看各个表空间占用磁盘情况?
SQL>coltablespaceformata20
SQL>select
b.file_id 文件ID号,