网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > SQL语法 > 正文

orale学习资料

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

【网学网提醒】:网学会员为大家收集整理了orale学习资料提供大家参考,希望对大家有所帮助!


    Oracle基本知识一个表空间只能属于一个数据库每个数据库最少有一个控制文件(建议3个,分别放在不同的磁盘上)每个数据库最少有一个表空间(SYSTEM表空间)建立SYSTEM表空间的目的是尽量将目的相同的表存放在一起,以提高使用效率,只应存放数据字典每个数据库最少有两个联机日志组,每组最少一个联机日志文件一个数据文件只能属于一个表空间一个数据文件一旦被加入到一个表空间中,就不能再从这个表空间中移走,也不能再加入到其他表空间中建立新的表空间需要建立新的数据文件数据文件被ORACLE格式化为ORACLE块,Oracle9i以前版本中,ORACLE块的大小是在第一次创建数据库时设定的,并且以后不能改变,要想改变,只能重建数据库一个段segment只能属于一个表空间,但可以属于多个数据文件一个区extent只能属于一个数据文件,即区间(extent)不能跨越数据文件PCTFREE和PCTUSED总和不能大于等于100单独一个事务不能跨越多个回滚段索引表不含ROWID值拥有不同大小的回滚段没有任何益处COMMIT后,数据不一定立即写盘(数据文件)一个事务即使不被提交,也会被写入到重做日志中。Oracle8.0.4中,在初始安装时建立的缺省数据库,实例名为ORCL一个块的最大长度为16KB(有2K、4K、8K、16K)每个数据库最大文件数(按块大小)2K块4K块20000个文件40000个文件
    1
     8K块或以上
    65536个文件
    oracleserver可以同时启动多个数据库一套操作系统上可以安装多个版本的ORACLE数据库系统(UNIX可以,NT不可以)一套ORACLE数据库系统中可以有多个ORACLE数据库及其相对应的实例每个ORACLE数据库拥有一个数据库实例(INSTANCE)(OPS除外)所以,一套操作系统上同时可以有多个oracle数据库实例启动如何在oracle7和oracle8之间exp/imp数据?
    ?
    软件环境:1、WindowsNT4.0+ORACLE8.0.42、ORACLE安装路径为:C:\ORANT
    ?
    实现方法:
    必须先在oracle8数据库上以internal或sys用户运行catexp7.sql
    SVRMGR>connectinternalSVRMGR>@c:\orant\rdbms80\admin\catexp7.sqlSVRMGR>exit如何查看后台进程?
    ?
    系统环境:1、操作系统:Windows2000Server,机器内存128M2、数据库:Oracle8iR2(8.1.6)forNT企业版
    3、安装路径:C:\ORACLE
    ?
    实现步骤:
    ???????SQL>descv$bgprocess名称----------------PADDRNAMEVARCHAR2(5)DESCRIPTIONVARCHAR2(64)--后台进程描述--后台进程名称RAW(4)空?类型-------------------------------------------------
    2
     ?????????????????????????
    ERRORSQL>colDESCRIPTIONformata40SQL>select*fromv$bgprocess;PADDRERROR
    NAMEDESCRIPTION
    NUMBER
    -------------------------------------------------------------02CB8B4CPMON##########00##########00##########00##########02CB8E6CDBW0##########00##########00##########00##########00##########00##########00##########PADDRERROR-------------------------------------------------------------00##########00##########00##########02CBB3ECARC0##########ArchivalProcess0DBW9dbwriterprocess9DBW8dbwriterprocess8DBW7dbwriterprocess7NAMEDESCRIPTIONDBW6dbwriterprocess6DBW5dbwriterprocess5DBW4dbwriterprocess4DBW3dbwriterprocess3DBW2dbwriterprocess2DBW1dbwriterprocess1dbwriterprocess0LMD0lkmgrdaemon0LMONlkmgrmonitorTRWRtracewriterprocessprocesscleanup
    3
     ???????????????????????
    00##########00##########00##########00##########00##########00##########00##########PADDRERROR
    ARC1ARC2ARC3ARC4ARC5ARC6ARC7
    ArchivalProcess1ArchivalProcess2ArchivalProcess3ArchivalProcess4ArchivalProcess5ArchivalProcess6ArchivalProcess7
    NAME
    DESCRIPTION
    -------------------------------------------------------------00##########00##########02CB918CLGWR##########00##########00##########00##########00##########00##########00##########00##########00##########PADDRERRORNAMEDESCRIPTIONLCK7LockProcess7LCK6LockProcess6LCK5LockProcess5LCK4LockProcess4LCK3LockProcess3LCK2LockProcess2LCK1LockProcess1LCK0LockProcess0Redoetc.ARC9ArchivalProcess9ARC8ArchivalProcess8
    4
     ???????????????????????
    -------------------------------------------------------------00##########00##########00##########00##########00##########00##########00##########00##########00##########00##########00##########PADDRERROR-------------------------------------------------------------00##########02CB94ACCKPT##########02CB97CCSMON##########02CB9AECRECO##########00##########02CB9E0CSNP0##########02CBA12CSNP1##########02CBA44CSNP2JobQueueProcess2JobQueueProcess1JobQueueProcess0EMN0EventMonitorProcess0distributedrecoverySystemMonitorProcesscheckpointBSP9BufferServerProcess9NAMEDESCRIPTIONBSP8BufferServerProcess8BSP7BufferServerProcess7BSP6BufferServerProcess6BSP5BufferServerProcess5BSP4BufferServerProcess4BSP3BufferServerProcess3BSP2BufferServerProcess2BSP1BufferServerProcess1BSP0BufferServerProcess0LCK9LockProcess9LCK8LockProcess8
    5
     ##########???????????????????????PADDRERROR-------------------------------------------------------------00##########00##########00SNPJJobQueueProcessJSNPIJobQueueProcessISNPHJobQueueProcessHNAMEDESCRIPTIONPADD
    RERROR-------------------------------------------------------------00##########00##########00##########00##########00##########00##########00##########00##########00##########00##########00##########SNPGJobQueueProcessGSNPFJobQueueProcessFSNPEJobQueueProcessESNPDJobQueueProcessDSNPCJobQueueProcessCSNPBJobQueueProcessBSNPAJobQueueProcessASNP9JobQueueProcess9SNP8JobQueueProcess8SNP7JobQueueProcess7SNP6JobQueueProcess6NAMEDESCRIPTION02CBA76CSNP3##########00##########00##########SNP5JobQueueProcess5SNP4JobQueueProcess4JobQueueProcess3
    6
     ##########??????????????????????PADDRERROR-------------------------------------------------------------00##########00##########00##########00##########00##########00##########00##########00##########00##########00##########00##########QMN2AQTimeManagerProcess2QMN1AQTimeManagerProcess1QMN0AQTimeManagerProcess0SNPZJobQueueProcessZSNPYJobQueueProcessYSNPXJobQueueProcessXSNPWJobQueueProcessWSNPVJobQueueProcessVSNPUJobQueueProcessUSNPTJobQueueProcessTSNPSJobQueueProcessSNAMEDESCRIPTION00##########00##########00##########00##########00##########00##########00##########00##########SNPRJobQueueProcessRSNPQJobQueueProcessQSNPPJobQueueProcessPSNPOJobQueueProcessOSNPNJobQueueProcessNSNPMJobQueueProcessMSNPLJobQueueProcessLSNPKJobQueueProcessK
    7
     ?????????????????????????PADDRERROR-------------------------------------------------------------02CB8B4CPMON##########02CB8E6CDBW0##########02CBB3ECARC0##########02CB918CLGWR##########02CB94ACCKPT##########02CB97CCSMON##########02CB9AECRECO##########02CB9E0CSNP0##########JobQueueProcess0distributedrecoverySystemMonitorProcesscheckpointRedoetc.ArchivalProcess0dbwriterprocess0processcleanupNAMEDESCRIPTIONSQL>select*fromv$bgprocesswherepaddr<>'00';已选择95行。PADDRERROR-------------------------------------------------------------00##########00##########00##########00##########00##########00##########00##########QMN9AQTimeManagerProcess9QMN8AQTimeManagerProcess8QMN7AQTimeManagerProcess7QMN6AQTimeManagerProcess6QMN5AQTimeManagerProcess5QMN4AQTimeManagerProcess4QMN3AQTimeManagerProcess3NAMEDESCRIPTION
    8
     ?????????????????????????????
    02CBA12CSNP1##########02CBA44CSNP2##########02CBA76CSNP3##########已选择11行。
    JobQueueProcess1JobQueueProcess2JobQueueProcess3
    SMONPMONDBWRLGWRCKPT
    系统进程用户进程数据库写入进程日志写入进程检查点进程用
    来减少实例恢复所需时间,init.ora中,log_checkpoint_interval
    =10000,此参数设置检查点出现的频度ARCH归档进程将联机重做日志拷贝到磁盘或磁带,即
    将联机重做日志归档RECO恢复进程用于分布式数据库中的分布式处理,init.ora中,distributed_transactions=10,此参数大于0时才被建立SNPn快照进程数量取决于init.ora中参数
    job_queue_processes=4LCKnDnnn锁进程调度进程可选项,用于并行服务器可选项,仅用于多线程服务器
    如何查看数据库的各种数据文件?
    ?
    系统环境:1、操作系统:Windows2000,机器内存128M2、数据库:Oracle8iR2(8.1.6)forNT企业版
    3、安装路径:C:\ORACLE
    9
     ?
    实现方法:
    ????????????????20?20?10?20?70?20?236??????????NAMESTATUS-----------------------------------------------------------------C:\ORACLE\ORADATA\ORADB\CONTROL01.CTL2、查看控制文件SQL>selectNAME,statusfromv$controlfile;已选择7行。C:\ORACLE\ORADATA\ORADB\SYSTEM01.DBFC:\ORACLE\ORADATA\ORADB\TEMP01.DBFC:\ORACLE\ORADATA\ORADB\RBS01.DBFC:\ORACLE\ORADATA\ORADB\INDX01.DBFC:\ORACLE\ORADATA\ORADB\TOOLS01.DBFC:\ORACLE\ORADATA\ORADB\DR01.DBFFILE_NAMESize(Mb)-------------------------------------------------------------------C:\ORACLE\ORADATA\ORADB\USERS01.DBF1、查看数据文件SQL>selectfile_name,bytes/(1024*1024)m0fromdba_data_files;SQL>setpages100SQL>colfile_nameforma60SQL>colnameforma60SQL>colmemberforma50SQL>colm0form99999heading"Size(Mb)"SQL>SQL>spooldatafile.lstSQL>
    10
     ????????
    C:\ORACLE\ORADATA\ORADB\CONTROL02.CTLC:\ORACLE\ORADATA\ORADB\CONTROL03.CTL
    3、查看日志文件SQL>selectgroup#,member,statusfromv$logfile;GROUP#MEMBERSTATUS-----------------------------------------------------------------1C:\ORACLE\ORADATA\ORADB\REDO03.LOGSTALE2C:\ORACLE\ORADATA\ORADB\REDO02.LOG3C:\ORACLE\ORADATA\ORADB\REDO01.LOGSTALE
    ?????
    如何查看用户表上的约束内容?
    ?
    系统环境:1、操作系统:Windows2000Server,机器内存128M2、数据库:Oracle8iR2(8.1.6)forNT企业版
    3、安装路径:C:\ORACLE
    ?
    实现方法:
    ?????????????SQL>descUSER_CONSTRAINTS名称-------------OWNERVARCHAR2(30)--用户名CONSTRAINT_NAMEVARCHAR2(30)--约束名CONSTRAINT_TYPEVARCHAR2(1)--约束类型NOTNULLNOTNULL空?类型------------------------------------------------SQL>connsystem/managerSQL>grantconnect,resourcetotest1identifiedbypass1;SQL>conntest1/pass1SQL>createtablea(anumberprimarykey);SQL>createtableb(anumberprimarykey,bnumbernotnull,cnumbercheck(c>0));
    11
     ?????????????????????
    ???????
    TABLE_NAMEVARCHAR2(30)--表名SEARCH_CONDITIONR_OWNERVARCHAR2(30)-R_CONSTRAINT_NAMEVARCHAR2(30)-DELETE_RULEVARCHAR2(9)STATUSVARCHAR2(8)DEFERRABLEVARCHAR2(14)-DEFERREDVARCHAR2(9)VALIDATEDVARCHAR2(13)-GENERATEDVARCHAR2(14)-BADVARCHAR2(3)RELYVARCHAR2(4)LAST_CHANGESQL>descUSER_CONS_COLUMNS名称---------------OWNERVARCHAR2(30)--用户名CONSTRAINT_NAMEVARCHAR2(30)--约束名TABLE_NAMEVARCHAR2(30)--约束类型COLUMN_NAMEVARCHAR2(4000)POSITIONSQL>col用户名formata10SQL>col约束名称formata15SQL>col约束类型formata10SQL>col表名formata10SQL>col列名formata10--列名-----状态--
    NOTNULLLONG
    DATE
    空?
    类型
    ------------------------------------------------NOTNULLNOTNULLNOTNULL
    NUMBER
    12
     ????????????????c>0?????????????????????
    SQL>col约束内容formata20SQL>selecta.OWNER用户名,a.CONSTRAINT_NAME约束名称,a.CONSTRAINT_TYPE约束类型,a.TABLE_NAME表名,b.COLUMN_NAME列名,a.SEARCH_CONDITION约束内容fromUSER_CONSTRAINTSa,USER_CONS_COLUMNSbwherea.CONSTRAINT_NAME=b.CONSTRAINT_NAME;用户名束内容-------------------------------------------------------------------------TEST1TEST1TEST1TEST1SYS_C001239SYS_C001240SYS_C001241SYS_C001242PCCPABBBABCA约束名称约束类型表名列名约
    "B"ISNOTNULL
    这样,如果发出以下一样的语句,会出现约束错误,可以根据显示的约束号来查询是违反了哪一列上的约束条件SQL>insertintobvalues(1,1,-1);insertintobvalues(1,1,-1)*ERROR位于第1行:ORA-02290:违反检查约束条件(TEST1.SYS_C001241)SQL>selecta.OWNER用户名,a.CONSTRAINT_NAME约束名称,a.CONSTRAINT_TYPE约束类型,a.TABLE_NAME表名,b.COLUMN_NAME列名,a.SEARCH_CONDITION约束内容fromUSER_CONSTRAINTSa,USER_CONS_COLUMNSbwherea.CONSTRAINT_NAME='SYS_C001241'anda.CONSTRAINT_NAME=b.CONSTRAINT_NAME;用户名束内容约束名称约束类型表名列名约
    13
     ??c>0
    -------------------------------------------------------------------------TEST1SYS_C001241CBC
    如何查看Oracle数据表的建表语句?
    ?
    系统环境:1、操作系统:Windows2000Server,机器内存128M2、数据库:Oracle8iR2(8.1.6)forNT企业版
    3、安装路径:C:\ORACLE
    ?
    实现步骤:1、用EXP工具导出2、导入时使用show=y选项、log选项3、查看、编辑日志文件
    ?
    具体实例:
    ?????????????????????????Export:Release8.1.6.0.0-Productionon星期五12月122:24:162000
    14
    1、调出SQL*Plusconnsystem/managergrantconnect,resourcetoaidentifiedbya;grantconnect,resourcetobidentifiedbyb;conna/acreatetablea(anumber);insertint
    oavalues(1);insertintoavalues(2);insertintoavalues(3);createtableb(anumber,bvarchar2(10));insertintobvalues(1,'1111');insertintobvalues(2,'2222');insertintobvalues(3,'3333');commit;
    2、打开一个DOS窗口、先执行导出E:\>expa/afile=a.dmplog=loga.txt
     ?????????????????????????????????????????E:\>impa/afile=a.dmpshow=ylog=logb.txt3、再执行导入,使用show=y、log这两个选项E:\>连接到:Oracle8iEnterpriseEditionRelease8.1.6.0.0ProductionWiththePartitioningoptionJServerRelease8.1.6.0.0-Production已导出ZHS16GBK字符集和ZHS16GBKNCHAR字符集.正在导出pre-schema过程对象和操作.正在导出用户A的外部函数程序库名称.正在导出用户A的对象类型定义即将导出A的对象....正在导出数据库链接.正在导出序号.正在导出群集定义.即将导出A的表通过常规路径.....正在导出表导出..正在导出表导出.正在导出同义词.正在导出视图.正在导出存储的过程.正在导出运算符.正在导出引用完整性约束条件.正在导出触发器.正在导出索引类型.正在导出位图、功能性索引和可扩展索引.正在导出后期表活动.正在导出快照.正在导出快照日志.正在导出作业队列.正在导出刷新组和子组.正在导出维.正在导出post-schema过程对象和操作.正在导出统计在没有警告的情况下成功终止导出。B3行被A3行被(c)Copyright1999OracleCorporation.Allrightsreserved.
    15
     ??????????????????????????????4、使用编辑器打开logb.txt,里面可以看到DDL语句
    Oracle数据库有哪几种关闭方式?
    Import:Release8.1.6.0.0-Productionon星期五12月122:29:492000(c)Copyright1999OracleCorporation.Allrightsreserved.
    连接到:Oracle8iEnterpriseEditionRelease8.1.6.0.0ProductionWiththePartitioningoptionJServerRelease8.1.6.0.0-Production经由常规路径导出由EXPORT:V08.01.06创建的文件已经完成ZHS16GBK字符集和ZHS16GBKNCHAR字符集中的导入.正在将A的对象导入到A"CREATETABLE"A"("A"NUMBER)1MAXTRANS25""5LOGGINGSTORAGE(INITIAL131072NEXT65536MINEXTENTS1MAXEXTENTS2147483""645PCTINCREASE50FREELISTS1FREELISTGROUPS1BUFFER_POOLDEFAULT)TABLE""SPACE"SYSTEM""..正在跳过表"A""CREATETABLE"B"("A"NUMBER,"B"VARCHAR2(10))PCTUSED40INIT""RANS1MAXTRANS255LOGGINGSTORAGE(INITIAL131072NEXT65536MINEXTENTS1""MAXEXTENTS2147483645PCTINCREASE50FREELISTS1FREELISTGROUPS1BUFFER_P""OOLDEFAULT)TABLESPACE"SYSTEM""..正在跳过表"B"成功终止导入,但出现警告。E:\>PCTFREE10PCTFREE10PCTUSED40IN
    ITRANS
    ?
    说明:
    ???有三种启动方式:1、shutdownnormal
    16
     ???????源),???????
    正常方式关闭数据库。
    2、shutdownimmediate立即方式关闭数据库。在SVRMGRL中执行shutdownimmediate,数据库并不立即关闭,而是在Oracle执行某些清除工作后才关闭(终止会话、释放会话资当使用shutdown不能关闭数据库时,shutdownimmediate可以完成数据库关闭的操作。
    3、shutdownabort直接关闭数据库,正在访问数据库的会话会被突然终止,如果数据库中有大量操作正在执行,这时执行shutdownabort后,重新启动数据库需要很长时间。
    Oracle数据库有哪几种启动方式?
    ?
    说明:
    ?????????????????????3、startupopendbname先执行“nomount”,然后执行“mount”,再打开包括Redolog文件在内的所有数据库文件,执行“nomount”,然后打开控制文件,确认数据文件和联机日志文件的位置,但此时不对数据文件和日志文件进行校验检查。2、startupmountdbname安装启动,这种方式启动下可执行:数据库日志归档、数据库介质恢复、使数据文件联机或脱机,重新定位数据文件、重做日志文件。读取init.ora文件,启动instance,即启动SGA和后台进程,这种启动只需要init.ora文件。有以下几种启动方式:1、startupnomount非安装启动,这种方式启动下可执行:重建控制文件、重建数据库
    17
     ???????????????用?????????????????
    这种方式下可访问数据库中的数据。
    4、startup,等于以下三个命令startupnomountalterdatabasemountalterdatabaseopen
    5、startuprestrict约束方式启动这种方式能够启动数据库,但只允许具有一定特权的用户访问非特权用户访问时,会出现以下提示:ERROR:ORA-01035:ORACLE只允许具有RESTRICTEDSESSION权限的用户使
    6、startupforce强制启动方式当不能关闭数据库时,可以用startupforce来完成数据库的关闭先关闭数据库,再执行正常启动数据库命令
    7、startuppfile=参数文件名带初始化参数文件的启动方式先读取参数文件,再按参数文件中的设置启动数据库例:startuppfile=E:\Oracle\admin\oradb\pfile\init.ora
    8、startupEXCLUSIVE
    如何查看什么时间有哪些数据库对象结构被修改过?
    ?
    系统环境:1、操作系统:Windows20002、数据库:Oracle8iR2(8.1.6)forNT企业版
    3、安装路径:C:\ORACLE
    ?
    说明:
    ??SQL>colOBJECT_NAMEformata20
    18
     ???--对象类型?CREATE_TIME,?MOD_TIME,?--时间戳?--状态???ORACLE回滚段管理(上)
    来源
    :赛迪网作者:汪健平
    SQL>SELECTOBJECT_NAME,--对象名OBJECT_TYPE,TO_CHAR(CREATED,--创建时间TO_CHAR(LAST_DDL_TIME,'YYYY-Mon-DDHH24:MI')--修改时间TIMESTAMP,STATUSFROMWHEREUSER_OBJECTSto_char(LAST_DDL_TIME,'yyyymmdd')>'&;日期变量';'YYYY-Mon-DDHH24:MI')
    回滚段管理一直是ORACLE数据库管理的一个难题,本文通过实例介绍ORACLE回滚段的概念,用法和规划及问题的解决。回滚段概述回滚段用于存放数据修改之前的值(包括数据修改之前的位置和值)。回滚段的头部包含正在使用的该回滚段事务的信息。一个事务只能使用一个回滚段来存放它的回滚信息,而一个回滚段可以存放多个事务的回滚信息。回滚段的作用事务回滚:当事务修改表中数据的时候,该数据修改前的值(即前影像)会存放在回滚段中,当用户回滚事务(ROLLBACK)时,ORACLE将会利用回滚段中的数据前影像来将修改的数据恢复到原来的值。事务恢复:当事务正在处理的时候,例程失败,回滚段的信息保存在重做日志文件中,ORACLE将在下次打开数据库时利用回滚来恢复未提交的数据。读一致性:当一个会话正在修改数据时,其他的会话将看不到该会话未提交的修改。而且,当一个语句正在执行时,该语句将看不到从该语句开始执行后的未提交的修改(语句级读一致性)。当ORACLE执行SELECT语句时,ORACLE依照当前的系统改变号(SYSTEMCHANGENUMBER-SCN)来保证任何前于当前SCN的未提交的改变不被该语句处理。可以想象:当一个长时间的查询正在执行时,若其他会话改变了该查询要查询的某个数据块,ORACLE将利用回滚段的数据前影像来构造一个读一致性视图。
    19
     事务级的读一致性ORACLE一般提供SQL语句级(SQLSTATEMENTLEVEL)的读一致性,可以用以下语句来实现事务级的读一致性。
    SETTRANSACTIONREADONLY;或:
    SETTANNSACTIONSERIALIZABLE;以上两个语句都将在事务开始后提供读一致性。需要注意的是,使用第二个语句对数据库的并发性和性能将带来影响。回滚段的种类系统回滚段:当数据库创建后,将自动创建一个系统回滚段,该回滚段只用于存放系统表空间中对象的前影像。非系统回滚段:拥有多个表空间的数据库至少应该有一个非系统回滚段,用于存放非系统表空间中对象的数据前影像。非系统回滚段又分为私有回滚段和公有回滚段,私有回滚段应在参数文件的ROLLBACKSEGMENTS参数中列出,以便例程启动时自动使其在线(ONLINE)。公有回滚段一般在OPS(ORACLE并行服务器)中出现,将在例程启动时自动在线。DEFERED回滚段:该回滚段在表空间离线(OFFLINE)时由系统自动创建,当表
    空间再次在线(ONLINE)时由系统自动删除,用于存放表空间离线时产生的回滚信息。回滚段的使用分配回滚段:当事务开始时,ORACLE将为该事务分配回滚段,并将拥有最少事务的回滚段分配给该事务。事务可以用以下语句申请指定的回滚段:
    SETTRANSTRACTIONUSEROLLBACKSEGMENTrollback_segment事务将以顺序,循环的方式使用回滚段的区(EXTENTS),当当前区用满后移到下一个区。几个事务可以写在回滚段的同一个区,但每个回滚段的块只能包含一个事务的信息。例如(两个事务使用同一个回滚段,该回滚段有四个区):
    1、事务在进行中,它们正在使用回滚段的第三个区;
    2、当两个事务产生更多的回滚信息,它们将继续使用第三个区;3、当第三个区满后,事务将写到第四个区,当事务开始写到一个新的区时,称为翻转(WRAP);
    4、当第四个区用满时,如果第一个区是空闲或非活动(使用该区的所有事务完成而没有活动的事务)的,事务将接着使用第一个区。
    20
     回滚段的扩张(EXTEND)当当前回滚段区的所有块用完而事务还需要更多的回滚空间时,回滚段的指针将移到下一个区。当最后一个区用完,指针将移到第一个区的前面。回滚段指针移到下一个区的前提是下一个区没有活动的事务,同时指针不能跨区。当下一个区正在使用时,事务将为回滚段分配一个新的区,这种分配称为回滚段的扩展。回滚段将一直扩展到该回滚段区的个数到达回滚段的参数MAXEXTENTS的值时为止。回滚段的回收和OPTIMAL参数OPTIMAL参数指明回滚段空闲时收缩到的位置,指明回滚段的OPTIMAL参数可以减少回滚段空间的浪费。
    ORACLE回滚段管理(下)
    来源:赛迪网作者:汪健平创建回滚段语法:
    CREATE[PUBLIC]ROLLBACKSEGMENTrollback_segment
    [TABLESPACEtablespace]
    [STORAGE([INITIALinteger[K|M]][NEXTinteger[K|M]]
    [MINEXTENTSinteger]
    [MAXTENTS{integer|UNLIMITED}]
    [OPTIMAL{integer[K|M]|NULL}])]注:回滚段可以在创建时指明PRIVATE或PUBLIC,一旦创建将不能修改。MINEXTENTS必须大于等于2PCTINCREASE必须是0OPTIMAL如果要指定,必须大于等于回滚段的初始大小(由MINEXTENTS指定)建议:一般情况下,INITIAL=NEXT21
     设置OPTIMAL参数来节约空间的使用不要设置MAXEXTENTS为UNLIMITED回滚段应创建在一个特定的回滚段表空间内例:
    CREATEROLLBACKSEGMENTrbs01
    TABLESPACErbs
    STORAGE(INITIAL100KNEXT100KMINEXTENTS10
    MAXEXTENTS500OPTIMAL1000K);使回滚段在线当回滚段创建后,回滚段是离线的,不能被数据库使用,为了使回滚段被事务利用,必须将回滚段在线。可以用以下命令使回滚段在线:
    ALTERROLLBACKSEGMENTroll
    back_segmentONLINE;例:
    ALTERROLLBACKSEGMENTrbs01ONLINE;为了使回滚段在数据库启动时自动在线,可以在数据库的参数文件中列出回滚段的名字。例如在参数文件中加入以下一行:
    ROLLBACK_SEGMENT=(rbs01,rbs02)修改回滚段的存储参数可以使用ALTERROLLBACKSEGMENT命令修改回滚段的存储参数(包括OPTIMAL,MAXEXTENTS)。语法:
    ALTERROLLBACKSEGMENTrollback_segment
    [STORAGE([NEXTinteger[K|M]]
    [MINEXTENTSinteger]
    22
     [MAXEXTENTS{integer|UNLIMITED}]
    [OPTIMAL{integer[K|M]|NULL}])]例:
    ALTERROLLBACKSEGMENTrbs01STORAGE(MAXEXTENTS1000);回收回滚段的空间如果指定了回滚段的OPTIMAL参数,ORACLE将自动回收回滚段到OPTIMAL指定的位置。用户也可以手动回收回滚段的空间。语法:
    ALTERROLLBACKSEGMENTrollback_segmentSHRINK[TOinteger[K|M]];说明:如果不指明TOinteger的数值,ORACLE将试图回收到OPTIMAL的位置。例:
    ALTERROLLBACKSEGMENTrbs01SHRINKTO2M;使回滚段离线为了达到以下两个目的将要回滚段离线:
    1.阻止新的事务使用该回滚段;
    2.该回滚段必须删除。语法:
    ALTERROLLBACKSEGMENTrollback_segmentOFFLINE;例:
    ALTERROLLBACKSEGMENTrbs01OFFLINE;说明:如果有事务正在使用该回滚段,运行该命令后,回滚段的状态将是PENDINGOFFLINE。事务结束后,状态将改为OFFLINE,可以通过V$ROLLSTAT查询回滚段的状态。
    23
     删除回滚段当回滚段不再需要或要重建以改变INITIAL,NEXT或MINEXTENTS参数时,可以将其删除。要删除回滚段,不许使该回滚段离线。语法:
    DROPROLLBACKSEGMENTrollback_segment;例:
    DROPROLLBACKSEGMENTrbs01;查询回滚段的信息所用数据字典:DBA_ROLLBACK_SEGS可以查询的信息:回滚段的标识(SEGMENT_ID)、名称(SEGMENT_NAME)、所在表空间(TABLESPACE_NAME)、类型(OWNER)、状态(STATUS)。例:
    SQL>SELECTsegment_name,tablespace_name,owner,statusFROMdba_rollback_segs;回滚段的统计信息数据字典:V$ROLLNAME,V$ROLLSTAT例:
    SQL>SELECTn.name,s.extents,s.rssize,s.optsize,s.hwmsize,s.xacts,s.status
    FROMv$rollnamen,v$rollstats
    WHEREn.usn=s.usn;回滚段的当前活动事务数据字典:V$SESSION,V$TRANSACTION例:
    SQL>SELECTs.username,t.xidusn,t.ubafil,t.ubablk,t.used_ublk
    FROMv$sessions,v$transactiont
    WHEREs.saddr=t.ses_addr;
    24
     USERNAME
    XIDUSN
    UBAFIL
    UBABLK
    USED_UBLK
    -------
    -----------------------------------------
    SYSTEM
    2
    2
    7
    1
    SCOTT
    1
    2
    163
    1
    2rowsselected.回滚段的数量规划对于OLTP系统,存在大量的小事务处理,一般建议:数量多的小回滚段;每四个事务一个回滚段;每个回滚段不要超过十个事务。对于批处理,一般建议:少的大回滚段;每个事务一个回滚段。回滚段的问题及解决方法问题
    一:事务要求的回滚段空间不够,表现为表空间用满(ORA-01560错误),回滚段扩展到达参数MAXEXTENTS的值(ORA-01628)。解决方法:向回滚段表空间添加文件或使已有的文件变大;增加MAXEXTENTS的值。问题二:读一致性错误(ORA-01555SNAPSHOTTOOOLD)解决方法:增加MINEXTENTS的值,增加区的大小,设置一个高的OPTIMAL值。
    >>>>>全文完<<<<<如何查看Oracle版本及安装了哪些选项?
    ?
    系统环境:1、操作系统:Windows20002、数据库:Oracle8iR2(8.1.6)forNT企业版
    3、安装路径:C:\ORACLE
    ?
    说明:
    ?????BANNER1、查看数据库版本SQL>selectbannerfromsys.v_$version;
    25
     ?????????????????????????????
    ---------------------------------------------------------Oracle8iEnterpriseEditionRelease8.1.6.0.0-ProductionPL/SQLRelease8.1.6.0.0-ProductionCORE8.1.6.0.0ProductionTNSfor32-bitWindows:Version8.1.6.0.0-ProductionNLSRTLVersion3.4.1.0.0-Production2、查看安装了哪些选项SQL>colPARAMETERformata60SQL>colVALUEformata10SQL>select*fromsys.v_$option;PARAMETERVALUE--------------------------------------------------------------------PartitioningTRUEObjectsTRUEParallelServerFALSEAdvancedreplicationTRUEBit-mappedindexesTRUEConnectionmultiplexingTRUEConnectionpoolingTRUEDatabasequeuingTRUEIncrementalbackupandrecoveryTRUEInstead-oftriggersTRUEParallelbackupandrecoveryTRUEPARAMETERVALUE--------------------------------------------------------------------Parallelexecution
    26
     TRUE??????????????????????PARAMETERVALUE--------------------------------------------------------------------MaterializedviewwarehouserefreshTRUEDatabaseresourcemanagerTRUESpatialTRUEVisualInformationRetrievalTRUEExporttransportabletablespacesTRUETransparentApplicationFailoverTRUEFast-StartFaultRecoveryTRUESampleScanTRUEDuplexedbackupsTRUEParallelloadTRUEPoint-in-timetablespacerecoveryTRUEFine-grainedaccesscontrolTRUEN-Tierauthentication/authorizationTRUEFunction-basedindexesTRUEPlanStabilityTRUEOnlineIndexBuildTRUECoalesceIndexTRUEManagedStandbyTRUEMaterializedviewrewriteTRUE
    27
     ??????????????
    JavaFALSEOLAPWindowFunctionsTRUE已选择33行。
    SQL>setheadofffeedoffpages0serveroutputonSQL>begin234end;/dbms_output.put_line('PortString:'||dbms_utility.port_string);
    PortString:IBMPC/WIN_NT-8.1.0
    如何查看数据文件是否自动扩展?
    ?
    系统环境:1、操作系统:Windows20002、数据库:Oracle8iR2(8.1.6)forNT企业版
    3、安装路径:C:\ORACLE
    ?
    说明:
    ?????????YES?YES
    ?YES?4C:\ORACLE\ORADATA\ORADB\TEMP01.DBFTEMP3C:\ORACLE\ORADATA\ORADB\USERS01.DBFUSERS2C:\ORACLE\ORADATA\ORADB\RBS01.DBFRBSFILE_IDFILE_NAMETABLESPACE_NAMEAUT-----------------------------------------------------------------------1C:\ORACLE\ORADATA\ORADB\SYSTEM01.DBFSYSTEMSQL>selectfile_id,file_name,tablespace_name,autoextensiblefromdba_data_filesorderbyfile_id;SQL>colFILE_NAMEformata40SQL>colTABLESPACE_NAMEformata20
    28
     YES?YES?YES?YES?NO??????????SQL>createtablespacetestdatafile23'd:\test.dbf'size5Mdefaultstorage(initial1Mnext1Mpctincrease0)
    如何查看用户表所占空间的大小?
    5C:\ORACLE\ORADATA\ORADB\TOOLS01.DBF6C:\ORACLE\ORADATA\ORADB\INDX01.DBF7C:\ORACLE\ORADATA\ORADB\DR01.DBF8D:\TEST.DBF
    TOOLSINDXDRSYSTEST
    已选择8行。
    说明:TEST表空间用以下语句创建的一个实验表空间,没有指定AUTOEXTENDON参数,所以不是自动扩展。
    ?
    说明:
    ???????
    如何查询出primarykey和forgenkey的关系表?
    SQL>colSEGMENT_NAMEformata20SQL>colTABLESPACE_NAMEformata20SQL>selectsegment_name,tablespace_name,bytes,blocksfromuser_segmentswheresegment_type='TABLE';
    ?
    说明:
    ??????????SQL>createtablea1(a11numberprimarykey);SQL>insertintoa1values(1);SQL>insertintoa1values(2);SQL>insertintoa1values(3);SQL>commit;SQL>createuseraidentifiedbya;--创建测试用户aSQL>grantconnect,resourcetoa;SQL>conna/a--给用户a授权--以用户a连接
    29
     ???????????????????????????????????????????selecta.owner外键拥有者,SQL>col外键拥有者formata10SQL>col外键表formata10SQL>col主键拥有者formata10SQL>col主键表formata10SQL>col外键列formata15SQL>col主键列formata15注:以下语句查询primarykey和forgenkey的关系表SQL>createtableb2234567(b21char(1),b22number,foreignkey(b22)referencesa2(a21))/SQL>createtablea2(a21numberprimarykey);SQL>insertintoa2values(1);SQL>insertintoa2values(2);SQL>insertintoa2values(3);SQL>commit;注:a1表中a11列上只有1、2、3这三个值,而b1表中的列b12定义时引用了a1表中的a11列,那么,在向b1表中录入记录时,b12列只能录1、2、3,而不能输入4。SQL>insertintob1values('a',4);insertintob1values('a',4)*ERROR位于第1行:ORA-02291:违反完整约束条件(A.SYS_C001241)-未找到父项关键字SQL>createtableb1234567(b11char(1),b12number,foreignkey(b12)referencesa1(a11))/
    30
     ???????????????????????????A11?A21?
    a.table_name外键表,c.c
    olumn_name外键列,b.owner主键拥有者,b.table_name主键表,d.column_name主键列fromuser_constraintsa,user_constraintsb,user_cons_columnsc,user_cons_columnsdwherea.r_constraint_name=b.constraint_nameanda.constraint_type='R'andb.constraint_type='P'anda.r_owner=b.owneranda.constraint_name=c.constraint_nameandb.constraint_name=d.constraint_nameanda.owner=c.owneranda.table_name=c.table_nameandb.owner=d.ownerandb.table_name=d.table_name/
    外键拥有者外键表键列
    外键列
    主键拥有者主键表
    主
    -----------------------------------------------------------AAB1B2B12B22AAA1A2
    Oracle预定义角色有哪些?
    ?
    软件环境:1、Windows2000+ORACLE8.1.62、ORACLE安装路径为:C:\ORACLE
    ?
    实现方法:
    ???1.CONNECT2.RESOURCE
    31
     ????????????的??????????????????????????????
    3.DBA4.EXP_FULL_DATABASE5.IMP_FULL_DATABASE6.DELETE_CATALOG_ROLE7.EXECUTE_CATALOG_ROLE8.SELECT_CATALOG_ROLE说明:1-3是为了同ORACLE老版本中的概念相兼容而提供的,不能只依赖于这些ROLE4-5是为了使用Import和Export实用程序的方便而提供的6-8是为了数据字典视图和包的卸载而提供的CONNECT角色:--是授予最终用户的典型权利,最基本
    ALTERSESSIONCREATECLUSTERCREATEDATABASELINKCREATESEQUENCECREATESESSIONCREATESYNONYMCREATEVIEW
    --修改会话--建立聚簇--建立数据库链接--建立序列--建立会话--建立同义词--建立视图
    RESOURCE角色:CREATECLUSTERCREATEPROCEDURECREATESEQUENCECREATETABLECREATETRIGGERCREATETYPE
    --是授予开发人员的--建立聚簇--建立过程--建立序列--建表--建立触发器--建立类型
    DBA角色:拥有系统所有系统级权限
    IMP_FULL_DATABASE角色、EXP_FULL_DATABASE角色:BACKUPANYTABLEEXECUTEANYPROCEDURESELECTANYTABLE--备份任何表--执行任何操作--查询任何表
    32
     ???????????SELECT_CATALOG_ROLE角色具有从数据字典查询的权利,EXECUTE_CATALOG_ROLE角色具有从数据字典中执行部分过程和函数的权利。
    如何查出前台正在发出的sql语句?
    DELETE_CATALOG_ROLE角色:这个角色是Oracle8新增加的,如果授予用户这个角色,用户就可以从表sys.aud$中删除记录,sys.aud$表中记录着审计后的记录,使用这个角色可以简化审计踪迹管理。
    SELECT_CATALOG_ROLE角色、EXECUTE_CATALOG_ROLE角色:
    ?
    软件环境:1、Windows2000+ORACLE8.1.62、ORACLE安装路径为:C:\ORANT
    ?
    实现方法:
    ????????????????????SQL>descv$open_cursor名称-----------SADDRSIDRAW(4)NUMBER空?类型------------------------------------------------子
    查询selectsid,serial#,username,programfromv$sessionwherestatus='ACTIVE'查出的是不活动的session的sid。selectuser_name,sql_textfromv$open_cursorwheresidin(selectsidfrom(selectsid,serial#,username,programfromv$sessionwherestatus='ACTIVE'))可以用以下语句:
    33
     ?????
    USER_NAMEVARCHAR2(30)ADDRESSHASH_VALUESQL_TEXTVARCHAR2(60)
    和权限有关的表有哪些?
    RAW(4)NUMBER
    ?
    软件环境:1、Windows2000+ORACLE8.1.62、ORACLE安装路径为:C:\ORACLE
    ?
    实现方法:
    ????????色????????SQL>select*fromdba_sys_privs;SQL>select*fromdba_role_privs;--查询角色的权利--查询角色是谁定义的-SQL>select*fromdba_roles;--查询系统中的角SQL>select*fromuser_sys_privs;权限SQL>select*fromuser_role_privs;--用户有哪些角色SQL>select*fromuser_tab_privs;予其他用户的对象级权限--检查一个用户被授予和授--查看直接授予用户的系统SQL>selecttable_namefromdictwheretable_namelike'%PRIV%';
    SQL>select*fromcolumn_privileges;关系SQL>select*fromrole_sys_privs;权限SQL>select*fromrole_tab_privs;SQL>select*fromsession_privs;SQL>select*fromtab_privileges;
    如何移数据库文件?
    SQL>select*fromrole_role_privs;--查询角色的授予和被授予--查询角色被授予的系统级--查询角色的对象级权限---
    ?
    软件环境:1、Windows2000+ORACLE8.1.62、ORACLE安装路径为:C:\ORACLE
    ?
    实现方法:
    ?
    34
     ?????????????????????????????????
    有两种移动数据库文件的方法:alterdatabase或altertablespace,后者仅用于不包括SYSTEM的表空间、回滚段或临时段的数据文件前者可用于所有数据文件alterdatabase方法:1、创建实验表空间SQL>createtablespacetestdatafile234SQL>表空间已创建。e:为硬盘上的一个逻辑分区,现要把test.dbf文件移到d:盘可使用以下语句查看一下数据文件状态SQL>selectfile_name,file_id,tablespace_name,bytes,statusfromdba_data_files;FILE_NAMETABLESPACE_NAMEBYTESSTATUSFILE_ID'e:\test.dbf'size5Mdefaultstorage(initial1Mnext1Mpctincrease0)/
    ---------------------------------------------------------------------------------------C:\ORACLE\ORADATA\ORADB\SYSTEM01.DBF273154048AVAILABLEC:\ORACLE\ORADATA\ORADB\RBS01.DBF73400320AVAILABLEC:\ORACLE\ORADATA\ORADB\USERS01.DBF20971520AVAILABLEC:\ORACLE\ORADATA\ORADB\TEMP01.DBF20971520AVAILABLEC:\ORACLE\ORADATA\ORADB\TOOLS01.DBF10485760AVAILABLEC:\ORACLE\ORADATA\ORADB\INDX01.DBF20971520AVAILABLEC:\ORACLE\ORADATA\ORADB\DR01.DBF20971520AVAILABLEE:\TEST.ORA5242880AVAILABLE8TEST7DRSYS6INDX5TOOLS4TEMP3USERS2RBS1SYSTEM
    35
     ?????????????
    ?????????????????????????????FILE_NAMEFILE_ID6、查看一下数据文件状态SQL>selectfile_name,file_id,tablespace_name,bytes,statusfromdba_data_files;这时,数据库真正打开,可以执行各种操作5、启动实例SVRMGR>connectinternalSVRMGR>alterdatabaseopen;SVRMGR>connectinternalSVRMGR>shartupmountORCL;SVRMGR>alterdatabaserenamefile>'e:\test.dbf'to>'d:\test.dbf';注意:一定要加单引号'完成这个步骤后,保留数据库日志,并执行步骤5也可以在管理工具中用“服务”工具来启动OracleServiceORCL不过,这时,表面上看OracleServiceORCL服务是启动了,但数据库并没有打开,显示ERROR:ORA-01033:ORACLEinitializationorshutdowninprogress这时,也可用internal/oracle连入SQL*Plus4、装载数据库并用alterdatabase命令来改变数据库中的文件名3、使用操作系统命令来移动数据库文件位置(不关闭,移动不了文件)c:\>movee:\test.dbfd:\test.dbf或在资源管理器中用鼠标“剪切”“粘贴”来完成也可以在管理工具中用“服务”工具来关闭OracleServiceORCL,不用关闭OracleOraHome81TNSListener2、使用SERVERMANAGER关闭实例c:\>svrmgrlSVRMGR>connectinternalSVRMGR>shutdown;SVRMGR>exit;
    36
     TABLESPACE_NAME???????????
    BYTESSTATUS
    ---------------------------------------------------------------------------------------C:\ORACLE\ORADATA\ORADB\SYSTEM01.DBF273154048AVAILABLEC:\ORACLE\ORADATA\ORADB\RBS01.DBF73400320AVAILABLEC:\ORACLE\ORADATA\ORADB\USERS01.DBF20971520AVAILABLEC:\ORACLE\ORADATA\ORADB\TEMP01.DBF20971520AVAILABLEC:\ORACLE\ORADATA\ORADB\TOOLS01.DBF10485760AVAILABLEC:\ORACLE\ORADATA\ORADB\INDX01.DBF20971520AVAILABLEC:\ORACLE\ORADATA\ORADB\DR01.DBF20971520AVAILABLED:\TEST.ORA5242880AVAILABLE8TEST7DRSYS6INDX5TOOLS4TEMP3USERS2RBS1SYSTEM
    Oracle数据库的空间管理技巧
    合肥市电信局计算中心赵晋
    ----在Oracle数据库中,DBA可以通过观测一定的表或视图来了解当前空间的使用状况,进而作出可能的调整决定。----一.表空间的自由空间----通过对表空间的自由空间的观察,可用来判断分配给某个表空间的空间是太多还是不够。请看下列的语句
    SQL>23selecta.file_id"FileNo",a.tablespace_namea.bytes"Bytes",a.bytes-sum(nvl(b.bytes,0))"Used",sum(nvl(b.bytes,0))"Free","%free"
    "Tablespace_name",
    4sum(nvl(b.bytes,0))/a.bytes*1006wherea.file_id=b.file_id(+)7groupbya.tablespace_name,
    5fromdba_data_filesa,dba_free_spaceb
    37
     8a.file_id,a.bytesorderbya.tablespace_name;FileTablespaceUsedFree%free-----------------------------------
    No_nameBytes11IDX_JF
    ---------------
    .146E+098493056001.297E+0960.431806
    9JFSJTS2.146E+091.803E+09343793
    66416.01696110JFSJTS2.146E+091.359E+0978743142436.6855462RBS52323942435980083216343859231.23590912RBS1.610E+091.606E+098RBSJF3104768.192894953.220E+092.716E+0950435686415.662396
    7SFGLTS2.146E+091.228E+0991815936042.7760146SFSJTS2.146E+091.526E+0962009344028.8894571SYSTEM5232394243TEMP4TOOLS5USERS1572864073400325992448046331494488.547407125829128192733184031457282099.88839352323942429491252294451299.943637
    12rowsselected.
    ----可以看出,在FileNo为12的表空间RBS中,只有0.19%的分配空间未被使用,这个比例太小了,而在SYSTEM及TEMP等表空间中,高达80%以上的空间未被利用,对于生产型数据库,这个表空间的设置有些偏高。----关于自由空间的管理,有下面的一些建议:
    1.利用Export及Import命令卸出和装入表空间可以释放大量的空间,从而缓解增加另外的数据文件的要求。2.如果包含具有高插入(insert)和更新(update)活动的表的表空间中自由空间的比重下降到了15%以下,要为此表空间增加更多的空间。3.对于一个基本是静态表数据的表空间,如果有多于20%的自由空间,则可以考虑减少分配给它的文件空间量。4.减少SYSTEM表空间的空间量比较困难,因为那要重建数据库。----二表及索引的扩展
    ----A.为了防止表或索引被过分扩展,及时实现对数据库的调整,用户应当经常对有关对象进行观察。----我们可以认为,扩展区域大于5个的表或索引为过分扩展(overextended)。请看下面的语句:
    SQL>selectsubstr(segment_name,1,15)Segment_name,segment_type,
    38
     2substr(tablespace_name,1,10)Tablepace_name,extents,Max_extents3fromdba_segments4whereextents>5andowner='JFCL'5orderbysegment_name;SEGMENT_NAMESEGMENTEXTENTS_TYPE--------------------------------CHHDFYBTABLEDJHZFYB_BFJFSJTS1112117500CHHDFYB_DHHMINDEXTABLEDJHZFYB_DJHMINDEXDJHZFYB_JZHMINDEXGSMFYBTABLEJFDHTABLEJFDH_DHHMJFDH_JZHMXYKFYBYHDATABLEYHHZFYB_12JFSJTSINDEXINDEXJFSJTS9121JFSJTSIDX_JF6500IDX_JF750011121615006450014500IDX_JFIDX_JFMAX_EXTENTSTABLEPACE_
    JFSJTS
    TABLE
    JFSJTS7121JFSJTS6500JFSJTS10500
    JFSJTS6500TABLE
    YHDA_BAKTABLE
    13rowsselected.
    ----通过观察,DBA可以及时发现问题并进行相应的处理。
    ----我们可以利用export卸出表,然后删除表,再利用import命令将表装入,这样,可以将不连续的区域合并成一个连续的空间。----B.如果用户希望对表的空间设置进行优化,例如,需要改变表EMP的initial参数,可以采用下面的方法:----1.在将EMP表卸出并删除后执行imp命令时使用indexfile参数:----impuserid=scott/tigerfile=emp.dmpindexfile=emp.sqlOracle把表和索引的创建信息写到指定的文件,而不是把数据写回。----2.打开emp.sql文件:
    REMR
    EMREMCREATETABLE"SCOTT"."EMP"("EMPNO"VARCHAR2(10),"JOB"VARCHAR2(9),"SAL"NUMBER(7,2),"COMM"NUMBER
    39
    NUMBER(4,0),"ENAME""MGR"NUMBER(4,0),"HIREDATE"DATE,
     (7,2),"DEPTNO"NUMBER(2,0))REMREMREMREMPCTFREE10PCTUSED40INITRANS110240NEXT10240MINEXTENTS1MAXEXTENTS1FREELISTGROUPS1BUFFER_POOLDEFAULT)...14rowsMAXTRANS255LOGGINGSTORAGE(INITIAL121PCTINCREASE50FREELISTSTABLESPACE"USER_DATA";
    ----对它进行编辑,去除"REM"等信息,找到Initial参数,根据需要改变它。
    ----3.在SQL*plus中执行emp.sql。----4.装入数据:----impuserid=scott/tigerignore=yfile=emp.dmp----需要注意的是,ignore参数必须设为Y.----C.可以用下面的语句来观察表或索引距离达到最大扩展的状况,“UNUSE”为距离达到最大扩展的值,在User_extents表中,extent_id是从0开始记述数的。
    SQL>selecta.table_name"TABLE_NAME",max(a.max_extents)"MAXEXTENTS",235max(b.extent_id)+1"INUSE",MAXfromuser_tablesa,user_extentsbgroupbya.table_nameORDERBY4;(a.max_extents)-(max(b.extent_id)+1)"UNUSE"4wherea.table_name=b.segment_name
    TABLE_NAMEYZPHBSHJYBSHFYBRCHDB981
    MAXEXTENTSINUSEUNUSE97120120120120120120486
    -------------------------------------121112111211
    SJTXDZB1211SJTXDAB1211CHYHBJFDH121150014
    8rowsselected.
    ----如果“UNUSE"小到一定的程度,我们就应该加以关注,进行适当的调整处理。
    40
     ----三关于连续空间----可以用下面的语句来查看数据库中的自由空间:
    SQL>2select*fromdba_free_spaceorderbyblock_id;FILE_IDBLOCK_IDBYTESBLOCKS
    wheretablespace_name='SFSJTS'
    TABLESPACE_NAME
    ---------------------------------SFSJTSSFSJTSSFSJTSSFSJTSSFSJTSSFSJTSSFSJTSSFSJTSSFSJTSSFSJTS6133455613371961338456135275613572161398776143497622024862462286261804106496013010321921261064960130106496013060620873728073728049152074909060901120110
    1064960130
    10rowsselected.
    ----我们可以通过命令的结果来估计相邻自由空间的真正数量。对每一行,用起始快的id(BLOCK_ID)加上自由块(BLOCKS)的数量,如果其和与下一行的块id(BLOCK_ID)相等,则此两行是连续的。如上例第二行和第三行,133719+126=133845,而1338456+130!=135275,所以从block_id为133719开始,有126+130=256个block的连续空间。
    ----在Oracle数据库的后台,系统监视器(SMON)周期性地合并自由空间相邻的块,以得到更大的连续块。DBA可以用SQL命令来完成这个工作:而----altertablespacetablespace_namecoalesce;----Oracle空间管理对数据库的工作性能有重要影响,其管理方法值得我们认真摸索研究。
    ORACLE表空间恢复方案
    一)用户表空间错误:在启动数据库时出现ORA-01157,ORA-01110或操作系统级
    错误例如ORA-07360,在关闭数据库(使用shutdownnormal或shutdownimmediate)时将导致错误ORA
    41
     -01116,ORA-01110以及操作系统级错误ORA-07368解决:以下有两种解决方案:1.用户的表空间可以被轻易地重建即最近导出的对象是可用的或表空间中的对象可以被轻易地重建等.在这种情况下,最简单的方法是offline并删除该数据文件,删除表空间并重建表空间以及所有的对象.svrmgrl>startupmountsvrmgrl>alterdatabasedatafilefilenameofflinedrop;svrmgrl>alterdatabaseopen;svrmgrl>droptablespacetablespace_nameincludingcontents;重建表空间及所有对象.2.用户的表空间不能够被轻易地重建在大多数情况下,重建表空间是不可能及太辛苦的工作.方法是倒备份及做介质恢复.如果您的系统运行在NOARCHIVELOG模式下,则只有丢失的数据在onlineredolog中方可被恢复。步骤如下:1)Restorethelostdatafilefromabackup2)svrmgrl>startupmount3)svrmgrl>selectv1.group#,member,sequence#,first_change#>fromv$logv1,v$logfilev2>wherev1.group#=v2.group#;4)如果数据库运行在NOARCHIVELOG模式下则:svrmgrl>selectfile#,change#fromv$recover_file;如果CHANGE#大于最小的FIRST_CHANGE#则数据文件可以被恢复。如果CHANGE#小于最小的FIRST_CHANGE#则数据文件不可恢复。恢复最近一次的全备份或采用方案一.5)svrmgrl>recoverdatafilefilename;6)确认恢复成功7)svrmgrl>alterdatabaseopenresetlogs;3.只读表空间无需做介质恢复,只要将备份恢复即可.唯一的例外是:表空间在最后一次备份后被改为read-write模式表空间在最后一次备份后被改为read-only模式在这种情况下,均需进行介质恢复二)临时表空间临时表空间并不包含真正的数据,恢复的方法是删除临时表空间并重建即可.三)系统表空间如果备份不可用,则只能采用重建数据库的方法四)回滚表空间有两种情况:1、数据库已经完全关闭(使用shutdownimmediate或shutdown命令)
    42
     1)确认数据库完全关闭2)修改init.ora文件,注释"rollback-segment"3)svrmgrl>startuprestrictmount4)svrmgrl>alterdatabasedatafilefilenameofflinedrop;5)svrmgrl>alterdatabaseopen;基于出现的结果:"statementprocessed"转(7)"ORA-00604,ORA-00376,ORA-01110"转(6)6)svrmgrl>shutdownimmediate修改init.ora文件,增加如下一行:_corrupted_rollback_segments=(,...)svrmgrl>startuprestrict7)svrmgrl>droptablespacetablespace_nameincludingcontents;8)重建表空间及回滚段9)svrmgrl>altersystemdisablerestrictedsession;10)修改init.ora文件2、数据库未完全关闭(数据库崩溃或使用shutdownabort命令关闭数据库)1)恢复备份2)svrmgrl>startupmount3)svrmgrl>selectfile#,name,statusfromv$datafile;svrmgrl>alterdatabasedatafilefilenameonline;4)svrmgrl
    >selectv1.group#,member,sequence#,first_change#>fromv$logv1,v$logfilev2>wherev1.group#=v2.group#;5)svrmgrl>selectfile#,change#fromv$recover_file;见一方案2-46)svrmgrl>recoverdatafilefilename;7)svrmgrl>alterdatabaseopen;3、数据库处于打开状态1)删除回滚段和表空间2)重建表空间和回滚段五)控制文件恢复1.所有的控制文件均被破坏将备份的控制文件拷贝至原目录下对于RAWDEVICE,则:ddif='con.bak'of='/dev/rdrd/drd1'seek=1282.并非所有的控制文件均被破坏用其他的控制文件启动数据库
    如何增加表空间的大小?
    ?
    软件环境:1、WindowsNT4.0+ORACLE8.0.4
    43
     2、ORACLE安装路径为:C:\ORANT
    ?
    实现方法:
    ?????????2、重新调整数据文件的大小SQL>alterdatabasedatafile'/u1/oradata/userdata_001.ora'resize50M;resize50M;--WindowsNT中--Unix中SQL>alterdatabasedatafile'c:\oradata\userdata_002.ora'1、为这个表空间增加一个数据文件SQL>altertablespace表空间名adddatafile'/u1/oradata/userdata_002.ora'size50m;'c:\oradata\userdata_002.ora'size50m;--Unix中--WindowsNT中SQL>altertablespace表空间名adddatafile可以用以下两种方法:
    怎样快速查出Oracle数据库中的锁等待
    ---摘自《计算机世界日报》(文/赵华良)----在大型数据库系统中,为了保证数据的一致性,在对数据库中的数据进行操作时,系统会进行对数据相应的锁定。----这些锁定中有"只读锁"、"排它锁","共享排它锁"等多种类型,而且每种类型又有"行级锁"(一次锁住一条记录)"页级锁",(一次锁住一页,即数据库中存储记录的最小可分配单元)"表级锁",(锁住整个表)。----若为"行级排它锁",则除被锁住的该行外,该表中其它行均可被其它的用户进行修改(Update)或删除(delete)操作,若为"表级排它锁",则所有其它用户只能对该表进行查询(select)操作,而无法对其中的任何记录进行修改或删除。当程序对所做的修改进行提交(commit)或回滚后(rollback)后,锁住的资源便会得到释放,从而允许其它用户进行操作。----但是,有时,由于程序中的原因,锁住资源后长时间未对其工作进行提交;或是由于用户的原因,如调出需要修改的数据后,未及时修改并提交,而是放置于一旁;或是由于客户服务器方式中客户端出现"死机",而服务器端却并未检测到,从而造成锁定的资源未被及时释放,影响到其它用户的操作。----因而,如何迅速地诊断出锁住资源的用户以及解决其锁定便是数据库管理员的一个挑战。----由于数据库应用系统越来越复杂,一旦出现由于锁资源未及时释放的情况,便会引起对一相同表进行操作的大量用户无法进行操作,
    从而影响到系统的使用。此时,DBA应尽量快地解决问题。但是,由于在Oracle8.0.x中执行"获取正在等待锁资源的用户名"的查询语句
    selecta.username,a.sid,a.serial#,b.id1
    44
     fromv$sessiona,v$lockbwherea.lockwait=b.kaddr
    ----十分缓慢,(在Oracle7.3.4中执行很快),而且,执行"查找阻塞其它用户的用户进程"的查询语句
    selecta.username,a.sid,a.serial#,b.id1fromv$sessiona,v$lockbwhereb.id1in(selectdistincte.id1fromv$sessiond,v$lockewhered.lockwait=e.kaddr)anda.sid=b.sidandb.request=0
    ----执行得也十分缓慢。因而,往往只好通过将v$session中状态为"inactive"(不活动)并且最后一次进行操作时间至当前已超过20分钟以上(last_call_et>20*60秒)的用户进程清除,然后才使得问题得到解决。----但是,这种方法实际上是"把婴儿与脏水一起泼掉"。因为,有些用户的进程尽管也为"inactive",并且也已有较长时间未活动,但是,那是由于他们处于锁等待状态。----因而,我想出了一个解决办法。即通过将问题发生时的v$lock,v$session视图中的相关记录保存于自己建立的表中,再对该表进行查询,则速度大大提高,可以迅速发现问题。经实际使用,效果非常好。在接到用户反映后,几秒钟即可查出由于锁住资源而影响其它用户的进程,并进行相应的处理。----首先,以dba身份(不一定为system)登录入数据库中,创建三个基本表:my_session,my_lock,my_sqltext,并在将会进行查询的列上建立相应的索引。语句如下:rem从v$session视图中取出关心的字段,创建my_session表,并在查询要用到的字段上创建索引,以加快查询速度
    droptablemy_session;createtablemy_sessionasselecta.username,a.sid,a.serial#,a.lockwait,a.machine,a.status,a.last_call_et,a.sql_hash_value,a.programfromv$sessionawhere1=2;createuniqueindexmy_session_u1onmy_session(sid);createindexmy_session_n2onmy_session(lockwait);createindexmy_session_n3onmy_session(sql_hash_value);
    ----rem从v$lock视图中取出字段,创建my_lock表,并在查询要用到的字段上创建索引,以加快查询速度
    droptablemy_lock;createtablemy_lockasselectid1,kaddr,sid,request,typefromv$lockwhere1=2;createindexmy_lock_n1onmy_lock(sid);
    45
     createindexmy_lock_n2onmy_lock(kaddr);
    ----rem从v$sqltext视图中取出字段,创建my_sqltext表,并在查询要用到的字段上创建索引,以加快查询速度
    droptablemy_sqltext;createtablemy_sqltextasselecthash_value,sql_textfromv$sqltextwhere1=2;createindexmy_sqltext_n1onmy_sqltext(hash_value);
    ----然后,创建一个SQL脚本文件,以便需要时可从SQL*Plus中直接调用。其中,首先用truncatetable表名命令将表中的记录删
    除。之所以用truncate命令,而不是用delete命令,是因为delete命令执行时,将会产生重演记录,速度较慢,而且索引所占的空间并未真正释放,若反复做insert及delete,则索引所占的空间会不断增长,查询速度也会变慢。而truncate命令不产生重演记录,速度执行较delete快,而且索引空间被相应地释放出来。删除记录后,再将三个视图中的相关记录插入自己创建的三个表中。最后,对其进行查询,由于有索引,同时由于在插入时条件过滤后,记录数相对来说较少,因而查询速度很快,马上可以看到其结果。----此时,若发现该阻塞其它用户进程的进程是正常操作中,则可通知该用户对其进行提交,从而达到释放锁资源的目的;若为未正常操作,即,其状态为"inactive",且其last_call_et已为较多长时间,则可执行以下语句将该进程进行清除,系统会自动对其进行回滚,从而释放锁住的资源。
    altersystemkillsession'sid,serial#';
    ----SQL脚本如下:
    setechooffsetfeedbackoffprompt'删除旧记录.....'truncatetablemy_session;truncatetablemy_lock;truncatetablemy_sqltext;prompt'获取数据.....'insertintomy_sessionselecta.username,a.sid,a.serial#,a.lockwait,a.machine,a.status,a.last_call_et,a.sql_hash_value,a.programfromv$sessionawherenvl(a.username,'NULL')<>'NULL;insertintomy_lockselectid1,kaddr,sid,request,typefromv$lock;insertintomy_sqltextselecthash_value,sql_text
    46
     fromv$sqltexts,my_sessionmwheres.hash_value=m.sql_hash_value;columnusernameformata10columnmachineformata15columnlast_call_etformat99999heading"Seconds"columnsidformat9999prompt"正在等待别人的用户"selecta.sid,a.serial#,a.machine,a.last_call_et,a.username,b.id1frommy_sessiona,my_lockbwherea.lockwait=b.kaddr;prompt"被等待的用户"selecta.sid,a.serial#,a.b.machine,a.last_call_et,a.username,b.type,a.status,b.id1frommy_sessiona,my_lockbwhereb.id1in(selectdistincte.id1frommy_sessiond,my_lockewhered.lockwait=e.kaddr)anda.sid=b.sidandb.request=0;prompt"查出其sql"
    selecta.username,a.sid,a.serial#,b.id1,b.type,c.sql_textfrommy_sessiona,my_lockb,my_sqltextcwhereb.id1in(selectdistincte.id1frommy_sessiond,my_lockewhered.lockwait=e.kaddr)anda.sid=b.sidandb.request=0andc.hash_value=a.sql_hash_value;
    ----以上思路也可用于其它大型数据库系统如Informix,Sybase,DB2中。通过使用该脚本,可以极大地提高获取系统中当前锁等待的情况,从而及时解决数据库应用系统中的锁等待问题。而且,由于实际上已取出其program名及相应的sql语句,故可以在事后将其记录下来,交给其开发人员进行分析并从根本上得到解决。
    漫谈数据库的启动和关闭
    47
     来源:华南网木棉站
    漫谈数据库的启动和关闭
    对于DBA们来说,关闭和重新启动数据库以便优化、调整应用的运行是经常碰到的事情。如果用户已经log进如了数据库,你用SHUTDOWNIMMEDIATE或SHUTDOWNABORT命令来执行关闭数据库,那用户将不能连接,直到数据库重新启动,用户时常会抱怨:怎么又要重起。其实,每次这样的启动关闭都是为了数据库能更好的运做。这篇文章将具体介绍shutdown/startup操作时应想到的步骤和许多注意事项,或许这些能对你有所帮助。NOTE:在执行第一步前,SHUTDOWN数据库,不要提前关闭SQL*NET,直到你确认关闭了SERVER上的数据库后再关闭SQL*NET。因为一旦你关闭了SQL*NET,用户将将失去和数据库的会话。第一步---存档或删除老的第一步存档或删除老的tracefiles和logs当你启动ORACLE的一个实例(INSTANCE)时,ORACLE把关于该实例的诊断信息写入指定的trace和log文件。每个后台进程都增加一个TRACE文件,它被存储在指定的目录(该路径由INIT.ORA或CONFIG.ORA文件中的BACKGROUND_DUMP_DEST参数指定)。用户在数据库中遇到一个内部错误时也增加USERS'TRACE文件,该文件的位置由INIT.ORA或CONFIG.ORA文件中的USER_DUMP_DEST参数指定。TRACE文件的个, 数和名称形式由你的操作系统决定。例如在UNIX下,文件名是一个数字加下画线加后台进程号,类似3_12345.trc,当你下一次启动实例时,一个新的文件将被产生,因为进程号的不同,文件名可能是3_13245.trc。由于每次启动和关闭数据库时,ORACLE并不自动删除TRACE文件,所以如果忽略这个步骤,那这些没有用的文件将占据大量的自由空间。所以DBA应该主动的管理这些文件,或删除或存档在别的指定目录下,如何管理主要是根据你自己的开发环境需要而订了。SQL*NET也产生LOG文件,一般叫LISTENER.LOG,为了能知道他的位置,可以键入命令lsnrctlstatusLISTENER.LOG文件大小也随着启动的次数不断的变大,所以通过妥善管理它也能有效的利用空间。第二步---改名第二步改名ALERTLOG文件ALERTLOG文件也是用来记录INSTANCE的诊断信息的。它的存放目录也通过BACKGROUND_DUMP_DEST参数来指定。一般情况下ALERTLOG文件命名方式为:ALERT_.LOG。ALTERLOG文件包括了一些数据库主要事件信息,例如:startup,dhutdown,redolog的使用,tablespace的改变,文件的改变,内部错误信息,tablespace-backup的状态的改变等。ALTERLOG文件是重要的,同时该文件的大小增长的速度也很惊人,如果你不检查他,一段时间后你想看看它将是很费劲,因为它已经很大了,查起来也费劲。为了既能留下这些有用的信
    息,同时不至于浪费很大的空间,可以用改名的方法。你可以在任
    48
     何时候更改ALTERLOG文件名,甚至在DATABASEOPEN时。当ORACLE不能找到被BACKGROUND_DUMP_DESC指定的文件时,他将增加一个新的ALTERLOG文件。虽然改名不要求SHUTDOW,但选择在SHUTDOWN/STARTUP数据库时更改名字是一个好的主意。NOTE:下面的几步是在restart数据库时做的。第三步---产生一个增加控制文件(第三步产生一个增加控制文件(CREATECONGROLFILE)命令的文件产生一个增加控制文件为了recover一个被破坏的数据库,你不得不用CREATECONTROLFILE命令来重建controlfiles。CREATECONTROLFILE命令有两个使用:1、在你的现有CONTROLFILES文件破化后重建它2、在ALTERDATABASE级别的参数时,如:MAXDATAFILES你可以手输入命令,但最好在STARTUP前发送一命令,以便你拥有最新版本的CREATECONTROLFILE命令。从进入SQLDBA,SERVERMANAGER或者SQL*PLUS,输入:alterdatabasebackupcontrolfiletotrace;该命令在USER_DUMP_DESC参数指定的路径产生一个TRACE文件,名字可能是SIDNAME_PROCESSID.TRC,该文件将包含针对你的数据库的完整的CREATECONTROLFILE语法。第四步--把第四步把PACKAGES和PROCEDURES驻留SGA区众所周知,当PL/SQLOBJECTS被一个用户调用时,它将被存储在SGA区的SQL共享池中,当别人再度调用该OBJECT时直接从SGA区读取,能感受到明显的速度提升。所以,把常用的PACKAGES和PROCEDURES在STARTUP时就载入并驻留SGA,将提高应用的整体性能。通过从新编译、调用等方法可以调用OBJECT(PROCEDURES或CURSORS)进SGA,然后用DBMS_SHARED_POOL.KEEP来驻留SGA。如下:alterpackageAPPOWNER.ADD_CLIENTcompile;executeDBMS_SHARED_POOL.KEEP('APPOWNER.ADD_CLIENT','P');(P代表PROCEDURES,C代表CURSORS)一般每个数据库包括两类驻留程序:1、数据库的核心PACKAGES2、用户自定义的PACKAGES核心PACKAGES包括SYS所有的PACKAGES,STANDARD,DBMS_SQL,DBMS_UTILITY,DIUTIL,为了查看你的INSTANCE中那些被驻留了,查询DBA_OBJECT_SIZE,用下面的语句:selectOwner,Name,Type,Source_Size+Code_Size+Parsed_Size+Error_SizeTotal_BytesfromDBA_OBJECT_SIZEwhereType='PACKAGEBODY'orderby4desc;
    49
     Oracle数据库碎片整理
    ---摘自《计算机世界日报》(文/湖北龚德政)----我们知道,Oracle作为一种大型数据库,广泛应用于金融、邮电、电力、民航等数据吞吐量巨大,计算机网络广泛普及的重要部门。对于系统管理员来讲,如何保证网络稳定运行,如何提高数据库性能,使其更加安全高效,就显得尤为重要。作为影响数据库性能的一大因素--数据库碎片,应当引起DBA的足够重视,及时发现并整
    理碎片乃是DBA一项基本维护内容。----1、碎片是如何产生的----当生成一个数据库时,它会分成称为表空间(Tablespace)的多个逻辑段(Segment)如系统,(System)表空间,临时(Temporary)表空间等。一个表空间可以包含多个数据范围(Extent)和一个或多个自由范围块,即自由空间(FreeSpace)。----表空间、段、范围、自由空间的逻辑关系如下:
    ----当表空间中生成一个段时,将从表空间有效自由空间中为这个段的初始范围分配空间。在这些初始范围充满数据时,段会请求增加另一个范围。这样的扩展过程会一直继续下去,直到达到最大的范围值,或者在表空间中已经没有自由空间用于下一个范围。最理想的状态就是一个段的数据可被存在单一的一个范围中。这样,所有的数据存储时靠近段内其它数据,并且寻找数据可少用一些指针。但是一个段包含多个范围的情况是大量存在的,没有任何措施可以保证这些范围是相邻存储的,如图〈1〉。当要满足一个空间要求时,数据库不再合并相邻的自由范围(除非别无选择),而是寻找表空间中最大的自由范围来使用。这样将逐渐形成越来越多的离散的、分隔的、较小的自由空间,即碎片。例如:
    ----2、碎片对系统的影响----随着时间推移,基于数据库的应用系统的广泛使用,产生的碎片会越来越多,将对数据库有以下两点主要影响:----(1)导致系统性能减弱
    50
     ----如上所述,当要满足一个空间要求时,数据库将首先查找当前最大的自由范围,而"最大"自由范围逐渐变小,要找到一个足够大的自由范围已变得越来越困难,从而导致表空间中的速度障碍,使数据库的空间分配愈发远离理想状态;----(2)浪费大量的表空间----尽管有一部分自由范围(如表空间的pctincrease为非0)将会被SMON(系统监控)后台进程周期性地合并,但始终有一部分自由范围无法得以自动合并,浪费了大量的表空间。----3、自由范围的碎片计算----由于自由空间碎片是由几部分组成,如范围数量、最大范围尺寸等,我们可用FSFI--FreeSpaceFragmentationIndex(自由空间碎片索引)值来直观体现:
    FSFI=100*SQRT(max(extent)/sum(extents))*1/SQRT(SQRT(count(extents)))
    ----可以看出,FSFI的最大可能值为100(一个理想的单文件表空间)。随着范围的增加,FSFI值缓慢下降,而随着最大范围尺寸的减少,FSFI值会迅速下降。----下面的脚本可以用来计算FSFI值:
    remrem
    FSFIValueComputefsfi.sql
    columnFSFIformat999,99selecttablespace_name,sqrt(max(blocks)/sum(blocks))*(100/sqrt(sqrt(count(blocks))))FSFIfromdba_free_spacegroupbytablespace_nameorderby1;spo
    olfsfi.rep;/spooloff;
    ----比如,在某数据库运行脚本fsfi.sql,得到以下FSFI值:
    TABLESPACE_NAMERBSSYSTEMTEMPTOOLSUSERSUSER_TOOLSYDCX_DATAYDCX_IDXYDJF_DATAYDJF_IDX
    FSFI74.06100.0022.8275.79100.00100.0047.3457.1933.8075.55
    -------------------------------------
    ----统计出了数据库的FSFI值,就可以把它作为一个可比参数。在一个有着足够有效自由空间,且FSFI值超过30的表空间中,很少会遇见有效自由空间的问题。当一个空间将要接近可比参数时,就需要做碎片整理了。----4、自由范围的碎片整理51
     ----(1)表空间的pctincrease值为非0----可以将表空间的缺省存储参数pctincrease改为非0。一般将其设为1,如:
    altertablespacetempdefaultstorage(pctincrease1);
    ----这样SMON便会将自由范围自动合并。也可以手工合并自由范围:
    altertablespacetempcoalesce;
    ----5、段的碎片整理----我们知道,段由范围组成。在有些情况下,有必要对段的碎片进行整理。要查看段的有关信息,可查看数据字典dba_segments,范围的信息可查看数据字典dba_extents。如果段的碎片过多,将其数据压缩到一个范围的最简单方法便是用正确的存储参数将这个段重建,然后将旧表中的数据插入到新表,同时删除旧表。这个过程可以用Import/Export(输入/输出)工具来完成。----Export()命令有一个(压缩)标志,这个标志在读表时会引发Export确定该表所分配的物理空间量,它会向输出转储文件写入一个新的初始化存储参数--等于全部所分配空间。若这个表关闭,则使用Import()工具重新生成。这样,它的数据会放入一个新的、较大的初始段中。例如:
    expuser/passwordfile=exp.dmpcompress=Ygrants=Yindexes=Ytables=(table1,table2);
    ----若输出成功,则从库中删除已输出的表,然后从输出转储文件中输入表:
    impuser/passwordfile=exp.dmpcommit=Ybuffer=64000full=Y
    ----这种方法可用于整个数据库。----以上简单分析了Oracle数据库碎片的产生、计算方法及整理,仅供参考。数据库的性能优化是一项技术含量高,同时又需要有足够耐心、认真细致的工作。对数据库碎片的一点探讨,----如果能起到抛砖引玉,对大家有所启发的话,便是作者最大的心愿。如何修改internal的口令?
    ?
    软件环境:1、WindowsNT4.0+ORACLE8.0.42、ORACLE安装路径为:C:\ORANT
    ?
    实现方法:用法:orapwdfile=password=entries=参数解释:file-nameofpasswordfile(mand),password-passwordforSYSandINTERNAL(mand),entries-maximumnumberofdistinctDBAandOPERs(opt),Therearenospacesaroundtheequal-to(=)character.1、进入DOS下2、默认internal密码文件在c:\orant\database下,是隐藏属性,
    文件名称与数据库实例名有关
    52
     如默认ORACLE实例名为ORCL,则internal密码文件名为pwdorcl.ora3、建立新的internal密码文件,起个新名字为pwdora8.ora--注:password项一
    orapwd80file=pwdora8.orapassword=Bentries=5定要用大写,并且不要用单引号4、拷贝pwdora8.ora文件到c:\orant\database目录下
    5、运行regedit,修改口令文件指向6、找到HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE项定位ORA_ORCL_PWFILE子项,改变其值为c:\orant\database\pwdora8.ora7、关闭ORACLE数据库,重新启动8、进入svrmgr30服务程序,测试internal密码是否更改成功如何取出某一用户的密码,再原封不动的改回去?
    ?
    软件环境:1、WindowsNT4.0+ORACLE8.0.42、ORACLE安装路径为:C:\ORANT
    ?
    需求说明:1、???
    ?
    实现方法:SQL>connsystem/manager
    SQL>selectpasswordfromdba_userswhereusername='USER1';(用户名一定要用大写)结果:1F8E5A929B6861AC(这就是此用户的密码)
    SQL>alteruserUSER1identifiedbyaaa;(改变此用户的密码为aaa)
    SQL>connuser1/aaa(连接到用户上,???)SQL>执行你想要的操作...
    53
     SQL>connsystem/manager
    SQL>alteruserUSER1identifiedbyvalues'1F8E5A929B6861AC';(改回原有密码)怎样查看SGA值?
    ?
    软件环境:1、WindowsNT4.0+ORACLE8.0.42、ORACLE安装路径为:C:\ORANT
    ????????
    实现方法:
    C:\>svrmgr30SVRMGR>connectinternalSVRMGR>showsgaSQL>connsystem/managerSQL>select*fromv$sga;
    怎样查看init.ora文件?
    ?
    软件环境:1、WindowsNT4.0+ORACLE8.0.42、ORACLE安装路径为:C:\ORANT
    ?????????????????
    实现方法:
    1、C:\>svrmgr30SVRMGR>connectinternalSVRMGR>showparameter2、SQL>connsystem/managerSQL>selectname,valuefromv$parameterorderbyname;3、查看C:\ORANT\DATABASE\Initorcl.ora文件(假设Oracle为默认安装,实例名为ORCL)4、使用OracleEnterpriationManger(OEM)工具InstanceManager
    如何设置BLOCK_SIZE大于2K,如:4K、16K?
    54
     ?
    系统环境:1、操作系统:Windows2000Server,机器内存128M2、数据库:Oracle8iR2(8.1.6)forNT企业版
    3、安装路径:C:\ORACLE
    ?
    说明:
    ???
    如何手工指定使用哪个回退段?
    只能在新安装数据库时,指定BLOCK_SIZE的大小,8.0.4默认安装是2K,8.1.6版默认安装是8K。
    ?
    软件环境:1、WindowsNT4.0+ORACLE8.0.42、ORACLE安装路径为:C:\ORANT
    ?
    说明:在执行大事务时,有时oracle会报出如下的错误:
    ORA-01555:snapshottooold(rollbacksegmenttoosmall)这说明oracle给此事务随机分配的回滚段太小了,这时可以为它指定一个足够大的回滚段,以确保这个事务的成功执行。例如:SQL>settransactionuserollbacksegment
    回滚段名;怎样查看哪些用户拥有SYSDBA、SYSOPER权限?
    ?
    软件环境:1、WindowsNT4.0+ORACLE8.0.42、ORACLE安装路径为:C:\ORANT
    ??????
    实现方法:
    SQL>connsys/change_on_installSQL>select*fromV_$PWFILE_USERS;
    USERNAME
    SYSDBSYSOP
    ---------------------------------------55
     ?
    INTERNALSYS
    TRUETRUE
    TRUETRUE
    Oracle常用系统文件有哪些?
    ?
    软件环境:1、WindowsNT4.0+ORACLE8.0.42、ORACLE安装路径为:C:\ORANT
    ?
    说明:ORACLE有四种文件:数据文件、日志文件、控制文件、参数文件通过以下视图显示这些文件信息:v$database,v$datafile,v$logfilev$controlfilev$parameter监听器日志文件:监听器参数文件:TNS连接文件:Sql*Net环境文件:警告日志文件:基本结构:建立数据字典视图:
    c:\orant\NET80\log\listener.logc:\orant\NET80\admin\listener.orac:\orant\NET80\admin\Tnsnames.orac:\orant\NET80\admin\sqlnet.orac:\orant\RDBMS80\trace\orclALRT.LOG
    c:\orant\RDBMS80\admin\Standard.sqlc:\orant\RDBMS80\admin\CATALOG.SQL
    建立审计用数据字典视图:c:\orant\RDBMS80\admin\CATAUDIT.SQL建立快照用数据字典视图:c:\orant\RDBMS80\admin\catsnap.sql如何查看数据库的字符集?
    ?
    软件环境:1、WindowsNT4.0+ORACLE8.0.42、ORACLE安装路径为:C:\ORANT
    ????????????
    实现方法:
    SQL>connsys/change_on_installSQL>descprops$SQL>setarraysize1SQL>colvalue$formata40字符宽SQL>selectname,value$fromprops$wherename='NLS_CHARACTERSET';SQL>connsystem/managerSQL>select*fromnls_database_parameters;SQL>select*fromV$NLS_PARAMETERS;SQL>select*fromnls_database_parameters;
    56
    --格式化value$的输出为40个
     ???????????????????????????????????查询到11记录.
    listener.log的内容增长很快,是否可以删除重建?
    PARAMETERNLS_LANGUAGENLS_TERRITORYNLS_CURRENCYNLS_ISO_CURRENCYNLS_NUMERIC_CHARACTERSNLS_CALENDARNLS_DATE_FORMATNLS_DATE_LANGUAGENLS_CHARACTERSETNLS_SORTNLS_NCHAR_CHARACTERSETNLS_RDBMS_VERSION查询到12记录.SQL>select*fromV$NLS_PARAMETERS;PARAMETERNLS_LANGUAGENLS_TERRITORYNLS_CURRENCYNLS_ISO_CURRENCYNLS_NUMERIC_CHARACTERSNLS_CALENDARNLS_DATE_FORMATNLS_DATE_LANGUAGENLS_CHARACTERSETNLS_SORTNLS_NCHAR_CHARACTERSET
    VALUEAMERICANAMERICA$AMERICA.,GREGORIANDD-MON-YYAMERICANZHS16GBKBINARYZHS16GBK8.0.4.0.0
    -----------------------------------------------------------
    VALUESIMPLIFIEDCHINESECHINARMBCHINA.,GREGORIANDD-MON-YYSIMPLIFIEDCHINESEZHS16GBKBINARYZHS16GBK
    -----------------------------------------------------------
    ?
    软件环境:1、WindowsNT4.0+ORACLE8.0.42、ORACLE安装路径为:C:\ORANT
    ?
    说明:1、listener.log是监听器日志文件。57
     2、不能删掉文件,但可删掉里面的内容。Oracle如何决定使用哪个回退段?
    ?
    软件环境:1、WindowsNT4.0+ORACLE8.0.42、ORACLE安装路径为:C:\ORANT
    ?
    说明:1.首先分配那些拥有最少事务的回退段2.如果有两个或更多个回退段拥有最少数量的事务,则分配其中最近使用过的回退段,这样可以保证把回退保持更长时间。如何查看数据文件所在的路径?
    ?
    软件环境:1、WindowsNT4.0+ORACLE8.0.42、ORACLE安装路径为:C:\ORANT
    ???????????
    SQL语句:
    SQL>colfile_nameformata50SQL>selecttablespace_name,file_id,bytes/1024/1024,file_namefromdba_data_filesorderbyfile_id;TABLESPACE_NAMEFILE_IDBYTES/1024/1024FILE_NAME
    --------------------------------------------------------------------------SYSTEMC:\ORANT\DATABASE\SYS1ORCL.ORAUSER_DATAC:\ORANT\DATABASE\USR1ORCL.ORAROLLBACK_DATAC:\ORANT\DATABASE\RBS1ORCL.ORATEMPORARY_DATAC:\ORANT\DATABASE\TMP1ORCL.ORA
    如何查看各个表空间占用磁盘情况?
    1234
    200138102
    ?
    软件环境:1、WindowsNT4.0+ORACLE8.0.458
     2、ORACLE安装路径为:C:\ORANT
    ????????????????????
    SQL语句:
    SQL>coltablespaceformata20SQL>selectb.file_idb.tablespace_nameb.bytes(b.bytes-sum(nvl(a.bytes,0)))sum(nvl(a.bytes,0))sum(nvl(a.bytes,0))/(b.bytes)*100fromdba_free_spacea,dba_data_filesbwherea.file_id=b.file_idgroupbyb.tablespace_name,b.file_id,b.bytesorderbyb.file_id/文件ID号,表空间名,字节数,已使用,剩余空间,剩余百分比
    文件ID号表空间名余百分比
    字节数
    已使用
    剩余空间剩
    --------------------------------------------------------------------------1SYSTEM52.4511722USER_DATA86.2630213ROLLBACK_DATA68.7109384TEMPORARY_DATA99.9023442097152031457285242880209715299717124321281640448204810999808271360036024322095104
    ?????
    ROLLBACK不能回滚的命令
    ????????
    解释:
    某些命令隐含自动提交功能,最常见的有:ALTER:修改表、索引、用户、表空间等CREATE:创建表、视图、同义词、触发器、数据库链路、快照、序列、用户、表空间等对象DROP:删除已创建的任何对象
    59
     ???
    哪些初始化参数最影响Oracle系统性能
    RENAME:修改表、索引、视图的名字
    ?
    什么是SGA(系统全局区)1、系统全局区(SGA)是一个分配给Oracle的包含一个Oracle实例的数据库的控制信息内存段。主要包括数据库高速缓存(thedatabasebuffercache),重演日志缓存(theredologbuffer),共享池(thesharedpool),数据字典缓存(thedatadictionarycache)以及其它各方面的信息。
    ?
    db_block_buffers1、数据高速缓冲区2、访问过的数据都放在这一片内
    存区域,该参数越大,Oracle在内存中找到相同数据的可能性就越大,也即加快了查询速度。3、db_block_buffers以块为单位,假如DB_BLOCK_SIZE=2K,db_block_buffers=3200,则占用内存=3200*2K=6400K。
    ?
    share_pool_size1、SQL共享缓冲池2、该参数是库高速缓存和数据字典的高速缓存。
    ?
    Log_buffer1、重演日志缓冲区
    ?
    sort_area_size1、排序区
    ?
    processes1、同时连接的进程数
    ?
    global_names1、“数据库链路名”如果和它所要连接的“数据库”拥有相同的名字,则设置global_names=TRUE,否则,设置global_names=FALSE
    60
     ?
    db_block_size1、数据库块大小2、Oracle默认块为2KB,太小了,因为如果我们有一个8KB的数据,则2KB块的数据库要读4次盘,才能读完,而8KB块的数据库只要1次就读完了,大大减少了I/O操作。3、数据库安装完成后,就不能再改变db_block_size的值了,只能重新建立数据库并且建库时,要选择手工安装数据库。
    ?
    open_links1、同时打开的链接数
    ?
    dml_locks1、用户一次可对表设定锁的最大数目2、如果有三个用户修改6个表,则需18个DML锁来实现并行操作,如果设定DML_LOCKS不够大,操作时执行将中断,你可以通过你的应用程序的操作规模和最大的并行使用的用户数来估算系统所需要的DML_LOCKS的值,但该值的大小对数据库的其他性能没有影响,所以一般都把它设得很大,远超过实际中可能达到的值,如果在系统运行中经常发生表锁死的现象,就应该考虑加大该值。
    ?
    open_cursors1、打开光标数2、这个参数可以同时被每个用户进程拥有,这个参数的最大值依操作系统不同而不同。3、在创建一个包含很多表的合成视图时,如果此参数很小,则视图创建会不成功。
    ?
    dbwr_io_slaves1、后台写进程数如何查看SGA区剩余可用内存?
    ?
    系统环境:1、操作系统:Windows2000,机器内存128M2、数据库:Oracle8iR2(8.1.6)forNT企业版
    3、安装路径:C:\ORACLE
    ?
    实现方法:
    ????SQL>colOBJECT_NAMEformata20SQL>col自由空间百分比(%)format90.99齐为两位--格式化,把小数点对
    61
     ???????????????????????和?????????????
    SQL>selectname,sgasize/1024/1024bytes/1024round(bytes/sgasize*100,2)fromwhereNAME比(%)----------------------------------------------------------------freememory20.84freememory1.08freememory31.90以下为查看sys.v_$sgastat相关SQL>descsys.v_$sgastat名称--------------------POOLNAMEBYTESSQL>selectsum(bytes)sgasizefromsys.v_$sgastat;VARCHAR2(11)VARCHAR2(26)NUMBER--SGA区总空?类型-------------------
    -----------------------------54.44911191778854.449111960054.449111911619.457sys.v_$sgastatff.name='freememory';Allocated(M)自由空间(K)自由空间百分"Allocated(M)","自由空间(K)","自由空间百分比(%)"
    (selectsum(bytes)sgasizefromsys.v_$sgastat)s,
    SGASIZE---------57094032SQL>select*fromsys.v_$sgastat;POOLNAMEfixed_sgadb_block_bufferslog_buffersharedpoolfreememoryBYTES70924167772166656011935052
    -----------------------------------------------
    62
     ????????????????????????????????????????????
    sharedpoolmiscellaneoussharedpoolPLSnon-libhpsharedpoolStateobjectssharedpoolKGFFheapsharedpoolcharactersetobjectsharedpoolKGKheapsharedpooldb_filesPOOLNAME
    566128209613457265525893617568370988BYTES4144430828184003203715729676861832520669001392180152BYTES11226010726133629635623115252712135888278528113286873764933812BYTES4720014710889636800023184098328
    ----------------------------------------------sharedpooljoxlod:inphesharedpoolKQLSheapsharedpooltablecolumnssharedpoolfixedallocationcallbacksharedpoolPL/SQLDIANAsharedpoolenqueue_resourcessharedpoolPL/SQLMPCODEsharedpooltriggerinformsharedpooltransactionssharedpooltriggerdefinisharedpooldistributed_transactionsPOOLNAME
    ----------------------------------------------sharedpoolVIRTUALCIRCUITSsharedpoolviewcolumnsdsharedpoolSYSTEMPARAMETERSsharedpooldictionarycachesharedpoolmessagepoolfreequeuesharedpooljoxlod:inehesharedpoolcharactersetmemorysharedpooldb_block_bufferssharedpoollibrarycachesharedpoolCheckpointqueuesharedpoolsqlareaPOOLNAME
    ----------------------------------------------sharedpoolprocessessharedpoolsessionssharedpooljoxsheapinitsharedpooltransaction_branchessharedpooleventstatisticspersesssharedpooldb_block_hash_buckets
    63
     ???????
    sharedpoolfile#translationtablelargepooljavapooljavapoolfreememoryfreememorymemoryinuse
    65572614400182149122756608
    已选择43行。
    SQL中查找字符集的SQL语句:语句:
    select*fromv$nls_parameters;打开注册表命令:REGEDIT
    如何单独备份一个或多个表?如何单独备份一个或多个表?
    命令详解:D:\>exp用户/密码tables=表D:\>exp用户/密码tables=(表1,…,表2)D:\>expsystem/managertables=(用户.表)D:\>expsystem/managertables=(用户1.表1,用户2.表2)如何导入指定表?命令详解:D:\>expscott/tigerfile=a.dmpD:\>imptest/testfromuser=scotttables=empfile=a.dmpD:\>imptest/testtables=deptfile=a.dmp说明:如果导出用户没有DBA权限,则导入用户可以不用指定fromuser、touser参数如果导出用户拥有DBA权限,则导入用户也
    必须拥有DBA权限PB7连接Oracle的配置方法
    ?
    系统环境:1、操作系统:Windows20002、数据库:Oracle8iR2(8.1.6)forNT企业版3、安装路径:C:\ORACLE
    ?
    访问方法:
    ???????????)test1=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.1.1.1)(PORT=1521))配置C:\Oracle\Ora81\network\ADMIN\tnsnames.ora文件,创建连接到服务器的数据库别名1、首先安装好Oracle客户端应用程序,确保Oracle网络连通
    64
     ????????????????注:)
    (CONNECT_DATA=(SERVICE_NAME=oradb))
    服务器端Oracle数据库实例名:oradb服务器端IP地址:192.1.1.1确认在客户端SQL*Plus中可以用system/manager@test1连接上
    2、打开PB7编辑、配置DBProfile
    ????在Oracle数据库接口上,点击“New”
    ????Profilename:随意起一个易记的名字Server:添数据库别名
    65
     ???
    LoginID:Password:
    服务器端Oracle数据库用户名用户密码
    ????如上图添好后,点击“OK”
    ?
    66
     ?????如果屏幕左下脚出现如下图所示,则表明连接成功用鼠标选中刚刚建立的“to_oradb”,然后点“Connect”,进行连接测试
    ?
    手工创建数据库的全部脚本及说明
    ?
    系统环境:1、操作系统:Windows2000Server,机器内存128M2、数据库:Oracle8iR2(8.1.6)forNT企业版
    3、安装路径:D:\ORACLE
    ??????????????????????????
    建库步骤:
    1、手工创建相关目录D:\Oracle\admin\testD:\Oracle\admin\test\adhocD:\Oracle\admin\test\bdumpD:\Oracle\admin\test\cdumpD:\Oracle\admin\test\createD:\Oracle\admin\test\expD:\Oracle\admin\test\pfileD:\Oracle\admin\test\udumpD:\Oracle\oradata\testD:\Oracle\oradata\test\archive2、手工创建初始化启动参数文件:D:\Oracle\admin\test\pfile\inittest.ora,内容:3、手工创建D:\Oracle\Ora81\DATABASE\inittest.ora文件,内容:IFILE='D:\Oracle\admin\test\pfile\inittest.ora'4、使用orapwd.exe命令,创建D:\Oracle\Ora81\DATABASE\PWDtest.ora命令:D:\Oracle\Ora81\bin\orapwdfile=D:\Oracle\Ora81\DATABASE\PWDtest.orapassword=ORACLEentries=5
    5、通过oradim.exe命令,在服务里生成一个新的实例管理服务,启动方式为手工
    67
     ???????????????????????????????????????
    setORACLE_SID=testD:\Oracle\Ora81\bin\oradim-new-sidtest-startmodemanual-pfile"D:\Oracle\admin\test\pfile\inittest.ora"6、生成各种数据库对象D:\>svrmgrl--创建数据库connectINTERNAL/oraclestartupnomountpfile="D:\Oracle\admin\test\pfile\inittest.ora"CREATEDATABASEtestLOGFILE'D:\Oracle\oradata\test\redo01.log'SI
    ZE2048K,'D:\Oracle\oradata\test\redo02.log'SIZE2048K,'D:\Oracle\oradata\test\redo03.log'SIZE2048KMAXLOGFILES32MAXLOGMEMBERS2MAXLOGHISTORY1DATAFILE'D:\Oracle\oradata\test\system01.dbf'SIZE58MNEXT640KMAXDATAFILES254MAXINSTANCES1CHARACTERSETZHS16GBKNATIONALCHARACTERSETZHS16GBK;控制文件、日志文件在上面语句执行时生成REUSEAUTOEXTENDON
    connectINTERNAL/oracle--修改系统表空间ALTERTABLESPACESYSTEMDEFAULTSTORAGE(INITIAL64KNEXT64KMINEXTENTS1MAXEXTENTSUNLIMITEDPCTINCREASE50);ALTERTABLESPACESYSTEMMINIMUMEXTENT64K;--创建回滚表空间CREATETABLESPACERBSDATAFILE'D:\Oracle\oradata\test\rbs01.dbf'SIZE256MREUSEAUTOEXTENDONNEXT5120KMINIMUMEXTENT512KDEFAULTSTORAGE(INITIAL512KNEXT512KMINEXTENTS8MAXEXTENTS4096);--创建用户表空间CREATETABLESPACEUSERSDATAFILE'D:\Oracle\oradata\test\users01.dbf'SIZE128MREUSEAUTOEXTENDONNEXT1280K
    68
     ?????????????????????????????????????
    MINIMUMEXTENT128KDEFAULTSTORAGE(INITIAL128KNEXT128KMINEXTENTS1MAXEXTENTS4096PCTINCREASE0);--创建临时表空间CREATETABLESPACETEMPDATAFILE'D:\Oracle\oradata\test\temp01.dbf'SIZE32MREUSEAUTOEXTENDONNEXT640KMINIMUMEXTENT64KDEFAULTSTORAGE(INITIAL64KNEXT64KMINEXTENTS1MAXEXTENTSUNLIMITEDPCTINCREASE0)TEMPORARY;--创建工具表空间CREATETABLESPACETOOLSDATAFILE'D:\Oracle\oradata\test\tools01.dbf'SIZE64MREUSEAUTOEXTENDONNEXT320KMINIMUMEXTENT32KDEFAULTSTORAGE(INITIAL32KNEXT32KMINEXTENTS1MAXEXTENTS4096PCTINCREASE0);--创建索引表空间CREATETABLESPACEINDXDATAFILE'D:\Oracle\oradata\test\indx01.dbf'SIZE32MREUSEAUTOEXTENDONNEXT1280KMINIMUMEXTENT128KDEFAULTSTORAGE(INITIAL128KNEXT128KMINEXTENTS1MAXEXTENTS4096PCTINCREASE0);--创建回滚段CREATEPUBLICROLLBACKSEGMENTRBS0TABLESPACERBSSTORAGE(OPTIMAL4096K);CREATEPUBLICROLLBACKSEGMENTRBS1TABLESPACERBSSTORAGE(OPTIMAL4096K);CREATEPUBLICROLLBACKSEGMENTRBS2TABLESPACERBSSTORAGE(OPTIMAL4096K);CREATEPUBLICROLLBACKSEGMENTRBS3TABLESPACERBSSTORAGE(OPTIMAL4096K);CREATEPUBLICROLLBACKSEGMENTRBS4TABLESPACERBSSTORAGE(OPTIMAL4096K);CREATEPUBLICROLLBACKSEGMENTRBS5TABLESPACERBSSTORAGE(OPTIMAL4096K);CREATEPUBLICROLLBACKSEGMENTRBS6TABLESPACERBSSTORAGE(OPTIMAL4096K);CREATEPUBLICROLLBACKSEGMENTRBS7TABLESPACERBSSTORAGE(OPTIMAL4096K);CREATEPUBLICROLLBACKSEGMENTRBS8TABLESPACERBSSTORAGE(OPTIMAL4096K);CREATEPUBLICROLLBACKSEGMENTRBS9TABLESPACERBSSTORAGE(OPTIMAL4096K);CREATEPUBLICROLLBACKSEGMENTRBS10TABLESPACERBSSTORAGE(OPTIMAL4096K);CREATEPUBLICROLLBACKSEGMENTRBS11TABLESPACERBSSTORAGE(OPTIMAL4096K);CREATEPUBLICROLLBACKSEGMENTRBS12TABLESPACERBSSTORAGE(OPTIMAL4096K);CREATEPUBLICROLLBACKSEGMENTR
    BS13TABLESPACERBSSTORAGE(OPTIMAL4096K);CREATEPUBLICROLLBACKSEGMENTRBS14TABLESPACERBSSTORAGE(OPTIMAL4096K);
    69
     ????????????????????????????????????????????
    CREATEPUBLICROLLBACKSEGMENTRBS15TABLESPACERBSSTORAGE(OPTIMAL4096K);CREATEPUBLICROLLBACKSEGMENTRBS16TABLESPACERBSSTORAGE(OPTIMAL4096K);CREATEPUBLICROLLBACKSEGMENTRBS17TABLESPACERBSSTORAGE(OPTIMAL4096K);CREATEPUBLICROLLBACKSEGMENTRBS18TABLESPACERBSSTORAGE(OPTIMAL4096K);CREATEPUBLICROLLBACKSEGMENTRBS19TABLESPACERBSSTORAGE(OPTIMAL4096K);CREATEPUBLICROLLBACKSEGMENTRBS20TABLESPACERBSSTORAGE(OPTIMAL4096K);CREATEPUBLICROLLBACKSEGMENTRBS21TABLESPACERBSSTORAGE(OPTIMAL4096K);CREATEPUBLICROLLBACKSEGMENTRBS22TABLESPACERBSSTORAGE(OPTIMAL4096K);CREATEPUBLICROLLBACKSEGMENTRBS23TABLESPACERBSSTORAGE(OPTIMAL4096K);CREATEPUBLICROLLBACKSEGMENTRBS24TABLESPACERBSSTORAGE(OPTIMAL4096K);--使回滚段在线ALTERROLLBACKSEGMENT"RBS0"ONLINE;ALTERROLLBACKSEGMENT"RBS1"ONLINE;ALTERROLLBACKSEGMENT"RBS2"ONLINE;ALTERROLLBACKSEGMENT"RBS3"ONLINE;ALTERROLLBACKSEGMENT"RBS4"ONLINE;ALTERROLLBACKSEGMENT"RBS5"ONLINE;ALTERROLLBACKSEGMENT"RBS6"ONLINE;ALTERROLLBACKSEGMENT"RBS7"ONLINE;ALTERROLLBACKSEGMENT"RBS8"ONLINE;ALTERROLLBACKSEGMENT"RBS9"ONLINE;ALTERROLLBACKSEGMENT"RBS10"ONLINE;ALTERROLLBACKSEGMENT"RBS11"ONLINE;ALTERROLLBACKSEGMENT"RBS12"ONLINE;ALTERROLLBACKSEGMENT"RBS13"ONLINE;ALTERROLLBACKSEGMENT"RBS14"ONLINE;ALTERROLLBACKSEGMENT"RBS15"ONLINE;ALTERROLLBACKSEGMENT"RBS16"ONLINE;ALTERROLLBACKSEGMENT"RBS17"ONLINE;ALTERROLLBACKSEGMENT"RBS18"ONLINE;ALTERROLLBACKSEGMENT"RBS19"ONLINE;ALTERROLLBACKSEGMENT"RBS20"ONLINE;ALTERROLLBACKSEGMENT"RBS21"ONLINE;ALTERROLLBACKSEGMENT"RBS22"ONLINE;ALTERROLLBACKSEGMENT"RBS23"ONLINE;ALTERROLLBACKSEGMENT"RBS24"ONLINE;--修改sys用户的临时表空间为TEMPalterusersystemporarytablespaceTEMP;--创建数据字典表@D:\Oracle\Ora81\Rdbms\admin\catalog.sql;@D:\Oracle\Ora81\Rdbms\admin\catexp7.sql
    70
     ????????????????????????
    @D:\Oracle\Ora81\Rdbms\admin\catproc.sql@D:\Oracle\Ora81\Rdbms\admin\caths.sqlconnectsystem/manager@D:\Oracle\Ora81\sqlplus\admin\pupbld.sqlconnectinternal/oracle@D:\Oracle\Ora81\Rdbms\admin\catrep.sqlexit--生成SQL*Plus帮助系统sqlplusSYSTEM/manager@D:\Oracle\Ora81\sqlplus\admin\help\helpbld.sqlhelpus.sqlexit--修改system用户默认表空间和临时表空间svrmgrlconnectinternal/oraclealterusersystemdefaulttablespaceTOOLS;alterusersystemtemporarytablespaceTEMP;exit7、将test实例启动服务设置成自动启动方式D:\Oracle\Ora81\bin\oradim-edit-sidtest-
    startmodeauto
    如何单独备份一个或多个用户?
    ?
    命令详解:
    ???件?
    如何单独备份一个或多个表?
    D:\>expscott/tigerfile=导出文件D:\>expsystem/managerowner=(用户1,用户2,…,用户n)file=导出文
    ?
    命令详解:
    ?????D:\>exp用户/密码tables=表D:\>exp用户/密码tables=(表1,…,表2)D:\>expsystem/managertables=(用户.表)D:\>expsystem/managertables=(用户1.表1,用户2.表2)
    如何导入指定表?
    ?
    命令详解:
    ?
    71
     ?????????
    D:\>expscott/tigerfile=a.dmpD:\>imptest/testfromuser=scotttables=empfile=a.dmpD:\>imptest/testtables=deptfile=a.dmp说明:如果导出用户没有DBA权限,则导入用户可以不用指定fromuser、touser参数如果导出用户拥有DBA权限,则导入用户也必须拥有DBA权限
    FORM中,如何使用警告?
    ????????????????????????????????
    DECLAREINUMBER;BEGINSET_ALERT_BUTTON_PROPERTY('警告名',ALERT_BUTTON1,LABEL,'提示1');SET_ALERT_BUTTON_PROPERTY('警告名',ALERT_BUTTON2,LABEL,'提示2');SET_ALERT_BUTTON_PROPERTY('警告名',ALERT_BUTTON3,LABEL,'提示3');SET_ALERT_PROPERTY('警告名',ALERT_MESSAGE_TEXT,'提示信息');SET_ALERT_PROPERTY('警告名',TITLE,'标题');I:=SHOW_ALERT('警告名');IFI=ALERT_BUTTON1THENMESSAGE('.......');ELSIFI=ALERT_BUTTON2THENMESSAGE('.......');ELSIFI=ALERT_BUTTON3THENMESSAGE('.......');ENDIF;END;例如:在退出按钮中DECLAREIBEGINSET_ALERT_BUTTON_PROPERTY('ALERT',ALERT_BUTTON1,LABEL,'退出');SET_ALERT_BUTTON_PROPERTY('ALERT',ALERT_BUTTON2,LABEL,'返回');SET_ALERT_PROPERTY('ALERT',ALERT_MESSAGE_TEXT,'是否退出');SET_ALERT_PROPERTY('ALERT',TITLE,'询问');I:=SHOW_ALERT('ALERT');IFI=ALERT_BUTTON1THENEXIT_FORM(ASK_COMMIT);ELSEGO_BLOCK(块名);NUMBER;
    72
     ??????????????????????
    ENDIF;END;在删除按钮上DECLAREINUMBER;BEGINSET_ALERT_BUTTON_PROPERTY('ALERT',ALERT_BUTTON1,LABEL,'是(Y)');SET_ALERT_BUTTON_PROPERTY('ALERT',ALERT_BUTTON2,LABEL,'否(N)');SET_ALERT_PROPERTY('ALERT',ALERT_MESSAGE_TEXT,'是否删除?);SET_ALERT_PROPERTY('ALERT',TITLE,'询问');I:=SHOW_ALERT('ALERT');IFI=ALERT_BUTTON1THENDELETE_RECORD;ELSEGO_BLOCK(块名);ENDIF;END;
    73
    
    
  • 上一篇资讯: ora日志查看资料
  • 下一篇资讯: oralce学习资料总结
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师