仓酷云

标题: MYSQL网页设计ORACLE之经常使用FAQ V1.0 (2) [打印本页]

作者: 分手快乐    时间: 2015-1-16 22:43
标题: MYSQL网页设计ORACLE之经常使用FAQ V1.0 (2)
有的时候,一些缺失的功能可以通过别的办法来实现,例如,在MySQL4.1以前,你可以通过使用join方法来替代子查询的功能。在MySQL5.0中,大多数关系型数据库所要求的功能已经都具备。oracle第二部分、ORACLE构架系统
[Q]ORACLE的有那些数据范例
[A]罕见的数据范例有
CHAR流动长度字符域,最年夜长度可达2000个字节
NCHAR多字节字符集的流动长度字符域,长度随字符集而定,最多为2000个字符或2000个字节
VARCHAR2可变长度字符域,最年夜长度可达4000个字符
NVARCHAR2多字节字符集的可变长度字符域,长度随字符集而定,最多为4000个字符或4000个字节
DATE用于存储全体日期的流动长度(7个字节)字符域,工夫作为日期的一部分存储个中。除非
经由过程设置init.ora文件的NLS_DATE_FORMAT参数来代替日期格局,不然查询时,日期以
DD-MON-YY格局暗示,如13-APR-99暗示1999.4.13
NUMBER可变长度数值列,同意值为0、负数和正数。NUMBER值一般以4个字节或更少的字节存储,最多21字节
LONG可变长度字符域,最年夜长度可到2GB
RAW暗示二进制数据的可变长度字符域,最长为2000个字节
LONGRAW暗示二进制数据的可变长度字符域,最长为2GB
MLSLABEL只用于TrustedOracle,这个数据范例每利用用2至5个字节
BLOB二进制年夜工具,最年夜长度为4GB
CLOB字符年夜工具,最年夜长度为4GB
NCLOB多字节字符集的CLOB数据范例,最年夜长度为4GB
BFILE内部二进制文件,巨细由操纵体系决意
ROWID暗示RowID的二进制数据,Oracle8RowID的数值为10个字节,在Oracle7中利用的限制
RowID格局为6个字节
UROWID用于数据寻址的二进制数据,最年夜长度为4000个字节
[Q]Oracle有哪些罕见关头字,不克不及被用于工具名
[A]以8i版本为例,一样平常保存关头字不克不及用做工具名
ACCESSADDALLALTERANDANYASASCAUDITBETWEENBYCHARCHECKCLUSTERCOLUMNCOMMENTCOMPRESSCONNECTCREATECURRENTDATEDECIMALDEFAULTDELETEDESCDISTINCTDROPELSEEXCLUSIVEEXISTSFILEFLOATFORFROMGRANTGROUPHAVINGIDENTIFIEDIMMEDIATEININCREMENTINDEXINITIALINSERTINTEGERINTERSECTINTOISLEVELLIKELOCKLONGMAXEXTENTSMINUSMLSLABELMODEMODIFYNOAUDITNOCOMPRESSNOTNOWAITNULLNUMBEROFOFFLINEONONLINEOPTIONORORDERPCTFREEPRIORPRIVILEGESPUBLICRAWRENAMERESOURCEREVOKEROWROWIDROWNUMROWSSELECTSESSIONSETSHARESIZESMALLINTSTARTSUCCESSFULSYNONYMSYSDATETABLETHENTOTRIGGERUIDUNIONUNIQUEUPDATEUSERVALIDATEVALUESVARCHARVARCHAR2VIEWWHENEVERWHEREWITH
具体信息能够检察v$reserved_words视图
[Q]怎样检察数据库版本
[A]select*fromv$version
包括版本信息,中心版本信息,位数信息(32位或64位)等
至于位数信息,在linux/unix平台上,能够经由过程file检察,如
file$ORACLE_HOME/bin/oracle
[Q]怎样检察数据库参数
[A]showparameter参数名
如经由过程showparameterspfile能够检察9i是不是利用spfile文件
大概select*fromv$parameter
除这部分参数,Oracle另有大批隐含参数,能够经由过程以下语句检察:
SELECTNAME
,VALUE
,decode(isdefault,TRUE,Y,N)as"Default"
,decode(ISEM,TRUE,Y,N)asSesMod
,decode(ISYM,IMMEDIATE,I,
DEFERRED,D,
FALSE,N)asSysMod
,decode(IMOD,MODIFIED,U,
SYS_MODIFIED,S,N)asModified
,decode(IADJ,TRUE,Y,N)asAdjusted
,description
FROM(--GV$SYSTEM_PARAMETER
SELECTx.inst_idasinstance
,x.indx+1
,ksppinmasNAME
,ksppity
,ksppstvlasVALUE
,ksppstdfasisdefault
,decode(bitand(ksppiflg/256,1),1,TRUE,FALSE)asISEM
,decode(bitand(ksppiflg/65536,3),
1,IMMEDIATE,2,DEFERRED,FALSE)asISYM
,decode(bitand(ksppstvf,7),1,MODIFIED,FALSE)asIMOD
,decode(bitand(ksppstvf,2),2,TRUE,FALSE)asIADJ
,ksppdescasDESCRIPTION
FROMx$ksppix
,x$ksppsvy
WHEREx.indx=y.indx
ANDsubstr(ksppinm,1,1)=_
ANDx.inst_id=USERENV(Instance)
)
ORDERBYNAME
[Q]怎样检察数据库字符集
[A]数据库服务器字符集select*fromnls_database_parameters,其来历于props$,是暗示数据库的字符集。
客户端字符集情况select*fromnls_instance_parameters,其来历于v$parameter,
暗示客户真个字符集的设置,多是参数文件,情况变量大概是注册表
会话字符集情况select*fromnls_session_parameters,其来历于v$nls_parameters,暗示会话本人的设置,多是会话的情况变量大概是altersession完成,假如会话没有特别的设置,将与nls_instance_parameters分歧。
客户真个字符集请求与服务器分歧,才干准确显现数据库的非Ascii字符。假如多个设置存在的时分,altersession>情况变量>注册表>参数文件
字符集请求分歧,可是言语设置却能够分歧,言语设置倡议用英文。如字符集是zhs16gbk,则nls_lang能够是American_America.zhs16gbk。
[Q]怎样修正字符集
[A]8i以上版本能够经由过程alterdatabase来修正字符集,但也只限于子集到超集,不倡议修正props$表,将大概招致严峻毛病。
Startupnomount;
Alterdatabasemountexclusive;
Altersystemenablerestrictedsession;
Altersystemsetjob_queue_process=0;
Alterdatabaseopen;
Alterdatabasecharactersetzhs16gbk;
[Q]如何创建基于函数索引
[A]8i以上版本,确保
Query_rewrite_enabled=true
Query_rewrite_integrity=trusted
Compatible=8.1.0以上
Createindexindexnameontable(function(field));
[Q]怎样挪动表或表分区
[A]挪动表的语法
Altertabletablenamemove
[Tablespacenew_name
Storage(initial50Mnext50M
pctincrease0pctfree10pctused50initrans2)nologging]
挪动分区的语法
altertabletablenamemove(partitionpartname)
[updateglobalindexes]
以后以后必需重修索引
Alterindexindexnamerebuild
假如表有Lob段,那末一般的Alter不克不及挪动Lob段到其余表空间,而仅仅是挪动了表段,能够接纳以下的办法挪动Lob段
altertabletablenamemove
lob(lobsegname)storeas(tablespacenewts);
[Q]怎样取得以后的SCN
[A]9i以下版本
selectmax(ktuxescnw*power(2,32)+ktuxescnb)fromx$ktuxe;
假如是9i以上版本,还能够经由过程以下语句猎取
selectdbms_flashback.get_system_change_numberfromdual;
[Q]ROWID的布局与构成
[A]8以上版本的ROWID构成
OOOOOOFFFBBBBBBRRR
8以下ROWID构成(也叫受限Rowid)
BBBBBBBB.RRRR.FFFF
个中,O是工具ID,F是文件ID,B是块ID,R是行ID
假如我们查询一个表的ROWID,依据个中块的信息,能够晓得该表切实占用了几个块,进而晓得占用了几数据空间(此数据空间不即是表的分派空间)
[Q]怎样猎取工具的DDL语句
[A]第三方工具就不说了次要说一下9i以上版本的dbms_metadata
1、取得单个工具的DDL语句
setheadingoff
setechooff
setfeedbackoff
setpagesoff
setlong90000
selectdbms_metadata.get_ddl(TABLE,TABLENAME,SCAME)fromdual;
假如猎取全部用户的剧本,能够用以下语句
selectdbms_metadata.get_ddl(TABLE,u.table_name)fromuser_tablesu;
固然,假如是索引,则必要修正相干table到index
[Q]怎样创立束缚的索引在其余表空间上
[A]1、先创立索引,再创立束缚
2、使用以下语句创立
createtabletest
(c1numberconstraintpk_c1_idprimarykey
usingindextablespaceuseridex,
c2varchar2(10)
)tablespaceuserdate;
[Q]怎样晓得那些表没有创建主键
[A]一样平常的情形下,表的主键是需要的,没有主键的表能够说是不切合计划标准的。
SELECTtable_name
FROMUser_tablest
WHERENOTEXISTS
(SELECTtable_name
FROMUser_constraintsc
WHEREconstraint_type=P
ANDt.table_name=c.table_name)
别的相干数据字典注释
user_tables表
user_tab_columns表的列
user_constraints束缚
user_cons_columns束缚与列的干系
user_indexes索引
user_ind_columns索引与列的干系
[Q]dbms_output提醒缓冲区不敷,怎样增添
[A]dbms_output.enable(20000);
别的,假如dbms_output的信息不克不及显现,
必要设置
setserveroutputon
[Q]怎样修正表的列名
[A]9i以上版本能够接纳rname命令
ALTERTABLEUserName.TabName
RENAMECOLUMNSourceColumnTODestColumn
9i以下版本能够接纳createtable……asselect*fromSourceTable的体例。
别的,8i以上能够撑持删除列了
ALTERTABLEUserName.TabName
SETUNUSED(ColumnName)CASCADECONSTRAINTS
ALTERTABLEUserName.TabName
DROP(ColumnName)CASCADECONSTRAINTS
[Q]怎样给sqlplus安装匡助
[A]SQLPLUS的匡助必需手工安装,shell剧本为$ORACLE_HOME/bin/helpins
在安装之前,必需先设置SYSTEM_PASS情况变量,如:
$setenvSYSTEM_PASSSYSTEM/MANAGER
$helpins
假如不设置该情况变量,将在运转剧本的时分提醒输出情况变量
固然,除shell剧本,还能够使用sql剧本安装,那就不必设置情况变量了,可是,我们必需以system登录。
$sqlplussystem/manager
SQL>@?/sqlplus/admin/help/helpbld.sqlhelpus.sql
安装以后,你就能够象以下的办法利用匡助了
SQL>helpindex
[Q]怎样疾速下载Oracle补钉
[A]我们先取得下载服务器地点,在http页面上有
ftp://updates.oracle.com
然后用ftp登录,用户名与暗码是metalink的用户名与暗码
如我们晓得了补钉号3095277(9204的补钉集),则
ftp>cd3095277
250ChangeddirectoryOK.
ftp>ls
200PORTcommandOK.
150Openingdataconnectionforfilelisting.
p3095277_9204_AIX64-5L.zip
p3095277_9204_AIX64.zip
……
p3095277_9204_WINNT.zip
226Listingcomplete.Dataconnectionhasbeenclosed.
ftp:208bytesreceivedin0.02Seconds13.00Kbytes/sec.
ftp>
晓得了这个信息,我们用用flashget,收集蚂蚁就能够下载了。
增加以下毗连
ftp://updates.oracle.com/3095277/p3...04_AIX64-5L.zip
或交换前面的部分为所必要的内容
注重,假如是flashget,收集蚂蚁请输出认证用户名及暗码,就是你的metalink的用户名与暗码!
[Q]怎样挪动数据文件
[A]1、封闭数据库,使用os拷贝
a.shutdownimmediate封闭数据库
b.在os下拷贝数据文件到新的地址
c.Startupmount启动到mount下
d.Alterdatabaserenamedatafile老文件to新文件;
e.Alterdatabaseopen;翻开数据库
2、使用Rman联机操纵
RMAN>sql"alterdatabasedatafilefilenameoffline";
RMAN>run{
2>copydatafileoldfilelocation
3>tonewfilelocation;
4>switchdatafileoldfilelocation
5>todatafilecopynewfilelocation;
6>}
RMAN>sql"alterdatabasedatafilefilenameonline";
申明:使用OS拷贝也能够联机操纵,不封闭数据库,与rman的步骤一样,使用rman与使用os拷贝的道理一样,在rman中copy是拷贝数据文件,相称于OS的cp,而switch则相称于alterdatabaserename,用来更新把持文件。
[Q]假如办理联机日记组与成员
[A]以下是罕见操纵,假如在OPA/RAC下注重线程号
增添一个日记文件组
Alterdatabaseaddlogfile[groupn]文件全名size10M;
在这个组上增添一个成员
Alterdatabaseaddlogfilemember文件全名togroupn;
在这个组上删除一个日记成员
Alterdatabasedroplogfilemember文件全名;
删除全部日记组
Alterdatabasedroplogfilegroupn;
[Q]怎样盘算REDOBLOCK的巨细
[A]盘算办法为(redosize+redowastage)/redoblockswritten+16
详细见以下例子
SQL>selectname,valuefromv$sysstatwherenamelike%redo%;
NAMEVALUE
--------------------------------------------------------------------------
redosynchwrites2
redosynchtime0
redoentries76
redosize19412
redobufferallocationretries0
redowastage5884
redowriterlatchingtime0
redowrites22
redoblockswritten51
redowritetime0
redologspacerequests0
redologspacewaittime0
redologswitchinterrupts0
redoorderingmarks0
SQL>select(19412+5884)/51+16"Redoblack(byte)"fromdual;
Redoblack(byte)
------------------
512
[Q]把持文件包括哪些基础内容
[A]把持文件次要包括以下条目,能够经由过程dump把持文件内容看到
DATABASEENTRY
CHECKPOINTPROGRESSRECORDS
REDOTHREADRECORDS
LOGFILERECORDS
DATAFILERECORDS
TEMPFILERECORDS
TABLESPACERECORDS
LOGFILEHISTORYRECORDS
OFFLINERANGERECORDS
ARCHIVEDLOGRECORDS
BACKUPSETRECORDS
BACKUPPIECERECORDS
BACKUPDATAFILERECORDS
BACKUPLOGRECORDS
DATAFILECOPYRECORDS
BACKUPDATAFILECORRUPTIONRECORDS
DATAFILECOPYCORRUPTIONRECORDS
DELETIONRECORDS
PROXYCOPYRECORDS
INCARNATIONRECORDS
[Q]假如发明表中有坏块,怎样检索别的未坏的数据
[A]起首必要找到坏块的ID(能够运转dbverify完成),假定为,假定文件编码为。运转上面的查询查找段名:
SELECTsegment_name,segment_type,extent_id,block_id,blocks
fromdba_extentst
where
file_id=
ANDbetweenblock_idand(block_id+blocks-1)
一旦找到坏段称号,若段是一个表,则最好创建一个一时表,寄存好的数据。若段是索引,则删除它,再重修。
createtablegood_table
as
selectfrombad_tablewhererowidnotin
(selectrowid
frombad_tablewheresubstr(rowid,10,6)=)
在这里要注重8之前的受限ROWID与如今ROWID的不同。
还可使用诊断事务10231
SQL>ALTERSYSTEMSETEVENTS10231tracenamecontextforever,level10;
创立一个一时表good_table的表中除坏块的数据都检索出来
SQL>CREATETABLEgood_tableasselect*frombad_table;
最初封闭诊断事务
SQL>ALTERSYSTEMSETEVENTS10231tracenamecontextoff;
关于ROWID的布局,还能够参考dbms_rowid.rowid_create函数。
[Q]我创立了数据库的一切用户,我能够删除这些用户吗
[A]ORACLE数据库创立的时分,创立了一系列默许的用户和表空间,以下是他们的列表
·SYS/CHANGE_ON_INSTALLorINTERNAL
体系用户,数据字典一切者,超等权限一切者(SYSDBA)
创立剧本:?/rdbms/admin/sql.bsqandvariouscat*.sql
倡议创立后当即修正暗码
此用户不克不及被删除
·SYSTEM/MANAGER
数据库默许办理用户,具有DBA脚色权限
创立剧本:?/rdbms/admin/sql.bsq
倡议创立后当即修正暗码
此用户不克不及被删除
·OUTLN/OUTLN
优化企图的存储纲目用户
创立剧本:?/rdbms/admin/sql.bsq
倡议创立后当即修正暗码
此用户不克不及被删除
---------------------------------------------------
·SCOTT/TIGER,ADAMS/WOOD,JONES/STEEL,CLARK/CLOTHandBLAKE/PAPER.
实行、测试用户,含有例表EMP与DEPT
创立剧本:?/rdbms/admin/utlsampl.sql
能够修正暗码
用户能够被删除,在产物情况倡议删除或锁定
·HR/HR(HumanResources),OE/OE(OrderEntry),SH/SH(SalesHistory).
实行、测试用户,含有例表EMPLOYEES与DEPARTMENTS
创立剧本:?/demo/schema/mksample.sql
能够修正暗码
用户能够被删除,在产物情况倡议删除或锁定
·DBSNMP/DBSNMP
OracleIntelligentagent
创立剧本:?/rdbms/admin/catsnmp.sql,calledfromcatalog.sql
能够改动暗码--必要安排新暗码到snmp_rw.ora文件
假如不必要IntelligentAgents,能够删除
---------------------------------------------------
以下用户都是可选安装用户,假如不必要,就不必要安装
·CTXSYS/CTXSYS
OracleinterMedia(ConTextCartridge)办理用户
创立剧本:?/ctx/admin/dr0csys.sql
·TRACESVR/TRACE
OracleTraceserver
创立剧本:?/rdbms/admin/otrcsvr.sql
·ORDPLUGINS/ORDPLUGINS
ObjectRelationalData(ORD)UserusedbyTimeSeries,etc.
创立剧本:?/ord/admin/ordinst.sql
·ORDSYS/ORDSYS
ObjectRelationalData(ORD)UserusedbyTimeSeries,etc
创立剧本:?/ord/admin/ordinst.sql
·DSSYS/DSSYS
OracleDynamicServicesandSyndicationServer
创立剧本:?/ds/sql/dssys_init.sql
·MDSYS/MDSYS
OracleSpatialadministratoruser
创立剧本:?/ord/admin/ordinst.sql
·AURORA$ORB$UNAUTHENTICATED/INVALID
UsedforuserswhodonotauthenticateinAurora/ORB
创立剧本:?/javavm/install/init_orb.sqlcalledfrom?/javavm/install/initjvm.sql
·PERFSTAT/PERFSTAT
OracleStatisticsPackage(STATSPACK)thatsupersedesUTLBSTAT/UTLESTAT
创立剧本:?/rdbms/admin/statscre.sql
DBaaS和其他云服务之间的区别是:DBaaS专注于提供类似关系数据库管理系统RDBMS(比如SQLServer、MySQL和Oracle)的数据库功能。事实上,RDBMS已被证明是一种适合于在各种情况下管理结构化数据的有效工具。
作者: 再见西城    时间: 2015-1-19 21:45
原来的计算字段其实和虚拟字段很像。只是管理方面好了而已,性能方面提高不多。但是SQL2005提供了计算字段的持久化,这就提高了查询的性能,但是会加重insert和update的负担。OLTP慎用。OLAP可以大规模使用。
作者: 蒙在股里    时间: 2015-1-26 23:47
代替了原来VB式的错误判断。比Oracle高级不少。
作者: 小女巫    时间: 2015-2-4 22:58
是否碎片会引发效率问题?这都是需要进一步探讨的东西。varbinary(max)代替image也让SQLServer的字段类型更加简洁统一。
作者: 愤怒的大鸟    时间: 2015-2-10 22:32
我是一个ERP初学者,对于前台运用基本熟悉,但对于后台SQLServer的运用一点也不懂,特想学习下相关资料。至少懂得一些基本的运用。希望各位能给于建议,小弟再谢过!
作者: 冷月葬花魂    时间: 2015-3-1 16:51
学习SQL语言的话如果要学会去做网站就不是很难!但是要做数据库管理的话就有难度了!
作者: 飘飘悠悠    时间: 2015-3-10 21:08
我个人认为就是孜孜不懈的学习
作者: 海妖    时间: 2015-3-17 10:10
发几份SQL课件,以飨阅者
作者: 分手快乐    时间: 2015-3-17 10:10
XML字段类型更好的解决了XML数据的操作。XQuery确实不错,但是个人对其没好感。(CSDN的开发者应该是相当的熟了!)
作者: 谁可相欹    时间: 2015-3-24 06:36
但换公司用MSSQL2K感觉自己好像根本就不了解MSSQL。什么DTS触发器以前根本没用过。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2