版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
..>OCP/OCA认证考试指南全册OracleDatabase11g〔1Z0-051,1Z0-052,1Z0-053〕练习与知识点Author:Deerfer20140630OracleDatabase11g体系构造概述本章学习内容解释内存构造描述进程构造讲述存储构造练习1-1研究所在环境的DRMS确定自己所在的环境使用的应用程序、应用效劳器和数据库效劳器。然后集中精力研究数据库,体验一下数据库的规模和忙碌程度。考虑用户数量、数据易失性以及数据量。最后考虑它们对组织的重要程度:就每个应用程序和数据库而言,允许多长的停机时间?允许损失多少数据?可以使用财务数字定量分析吗?利用研究的结果,可以了解DBA角色的重要性。应用程序:MDS计量生产调度平台应用效劳器:OracleWebLogicServer11g数据库效劳器:OracleDatabase11g数据库规模:数据量大小、数据库对象多少、用户数、访问并发量、数据库节点格式〔RAC环境〕平均无故障时间MTBFMeanTimeBetweenFailure平均故障修复时间MTTRMeanTimeToRepair练习1-2确定数据库是单实例还是分布式系统的一局部 运行查询来确定数据库是独立系统,还是更大的分布式环境的一局部。作为用户SYSTEM连接到数据库。确定实例是否为RAC数据库的一局部:SELECT*FROMv$instance;SELECTparallelFROMv$instance;--NO:单实例数据库YES:RAC数据库确定数据库是否通过备用数据库的保护来防止数据丧失:SELECT*FROMv$database;SELECTprotection_levelFROMv$database;--UNPROTECTED数据库未受到保护确定是否数据库中配置了流:SELECT*FROMdba_streams_administrator;--如果尚未配置流,则将不返回任何行Tips1:OracleStreamOracleStream功能是为提高数据库的高可用性而设计的,在Oracle9i及之前的版本这个功能被称为AdvanceReplication。OracleStream利用高级队列技术,通过解析归档日志,将归档日志解析成DDL及DML语句,从而实现数据库之间的同步。这种技术可以将整个数据库、数据库中的对象复制到另一数据库中,通过使用Stream的技术,对归档日志的挖掘,可以在对主系统没有任何压力的情况下,实现对数据库对象级甚至整个数据库的同步。练习1-3了解实例的内存构造运行查询来确定构成实例的不同内存构造的当前大小。作为用户SYSTEM连接到数据库。显示可以动态重设大小的SGA组件的当前、最大和最小的容量:SELECTcomponent,current_size,min_size,ma*_sizeFROMv$sga_dynamic_components;查询结果如下:显示的实例不包括流,因此流池的大小为零。自从启动实例后,大池和Java池都未发生变化,但共享池和数据库缓冲区缓存的大小发生了变化。仅配置了数据库缓冲区缓存的默认池,除进展大量调整的数据库外,通常都是这样的配置。确定已经〔以及当前为〕程序全局区分配了多少内存:SELECTNAME,VALUEFROMV$PGASTATWHERENAMEIN('ma*imumPGAallocated','totalPGAallocated');练习1-4了解在实例中运行的进程 将运行查询来查看在实例中运行的后台进程。作为用户SYSTEM了解到数据库。确定哪些进程正在运行,以及每个进程的数量有多少:SELECTprogramFROMv$sessionORDERBYprogram;--有哪些进程SELECTprogramFROMv$processORDERBYprogram;--每个进程的数量这些查询将得到相似结果:每个进程必须有会话〔即使后台进程,也同样如此〕,而每个会话必须有进程。可屡次出现的进程将有个数据后缀,但支持用户会话的进程除外:它们都使用同一个名称。查询结果如下:ORACLE.E*E(CJQ0)ORACLE.E*E(CKPT)ORACLE.E*E(DBW0)ORACLE.E*E(J000)ORACLE.E*E(LGWR)ORACLE.E*E(MMAN)ORACLE.E*E(MMNL)ORACLE.E*E(MMON)ORACLE.E*E(PMON)ORACLE.E*E(PSP0)ORACLE.E*E(QMNC)ORACLE.E*E(RECO)ORACLE.E*E(SMON)ORACLE.E*E(q000)ORACLE.E*E(q001)Tips2:Oracle进程简要说明CJQ:Jobqueue,oracle的JOB进程,停顿后JOB会停顿运行CKPT:checkpoint,检查点进程,CKPT和LGWR这两个进程与DBWn进程互相合作,提供了既平安又高效的写脏数据块的解决方案。DBW:DBWR,databasewriter,就是写数据文件的进程。J000:ora_j***是系统job进程,可以用select*FROMDBA_JOBS_RUNNING查询。LGWR:LogWriter,将日志缓冲区中的所有记录项写到日志文件中MMAN:Memorymanager,内存管理进程,如果设定了SGA自动管理,MMAN用来协调SGA内各组件的大小设置和大小调整MMNL:MemoryMonitorLight,用于填充自开工作负载存储库〔AutomaticWorkloadRepository,AWR〕MMNL进程会根据调度从SGA将统计结果刷新输出至数据库表。MMON:ManageabilityMonitor,MMON从SGA定期捕获统计数据(默认是每小时一次),并将它们写入到数据字典中,在数据字典中,可以无限期地存储它们(不过,默认方式是只存储8天)。PMON:ProcessMonitor,进程监控器,主要负责连接非正常中断后的去除工作,PMON负责释放相应的资源。PSP0:启动其它的Oracle进程〔10g新增加的后台进程〕。QMNC:监视高级队列,并警告从队列中删除等待消息的出队进程RECO:DistributedDatabaseRecovery,负责在分布式数据库环境中自动恢复那些失败的分布式事务,保证分布式事务的一致性,在分布式事务中,要么同时commit,要么同时rollback;SMON:SystemMonitor,系统监控进程,负责在实例启动时执行实例恢复,并清理不再使用的临时段。通过计算效劳器进程数量〔Linu*或Uni*平台上〕或Oracle线程数量〔Windows上〕,演示会话生成后启动的效劳器进程。在Linu*上,从操作系统提示符可以运行以下命令:ps–ef|greporacle|wc-1该语句将计算知名称中包含"Oracle〞字符串的运行进程的数量,将包括所有会话效劳器进程〔或许还包括其它进程〕。在Windows上,启动任务管理器。对其进展配置,以便显示每个进程中的线程数量。练习1-5了解数据库的存储构造 在本练习中,将创立一个表段,然后计算出它的物理位置。〔1〕创立一个未确定表空间的表—将在默认表空间中创立它,并包含一个区间:CREATETABLEtab24(c1VARCHAR2(10));〔2〕确定表所在的表空间、区间大小、区间所在的文件、以及作为区间开场位置的文件块:SELECTTABLESPACE_NAME,E*TENT_ID,BYTES,FILE_ID,BLOCK_IDFROMDBA_E*TENTSWHEREOWNER='SYS'ANDSEGMENT_NAME='TAB24';查询结果如下:〔3〕根据名称确定文件:在看到提示时,替代前面查询中的file_id:SELECTNAMEFROMv$datafileWHEREfile#=&file_id;查询结果如下:准确计算出区间在文件中的位置〔按它在文件中的开场字节数〕。这要求找到表空间的块大小。在看到提示时输入〔2〕中查询返回的block_id和tablespace_name.SELECTBLOCK_SIZE*&BLOCK_ID/1024/1024FROMDBA_TABLESPACESWHERETABLESPACE_NAME='&tablespace_name';查询结果如下:由此可见,表存放于一个64KB的区间中。此区间位于文件"〞中,从文件的大约478MB处开场。本章知识点回忆单实例体系构造Oracle效劳器是连接到数据库的实例。实例包括共享存储块以及一组后台进程。数据库是磁盘上的一组文件。用户会话是连接到数据库效劳器进程的用户进程。实例内存构造实例共享内存是系统全局区〔SGA〕会话的专用区域是程序全局区〔PGA〕SGA由一组子构造构成,其中一些是必须的〔数据库缓冲区缓存、日志缓冲区和共享池〕,而另一些是可选的〔大池、Java池和流池〕。可以动态重调SGA构造的大小,也可对其进展自动化管理,但日志缓冲区除外。实例进程构造当用户连接时,将根据需要启动会话效劳器进程。后台进程在启动实例时启动,在关闭实例前一直存在。效劳器进程从数据库读取,后台进程对数据库执行写操作。*些后台进展始终存在〔特别是SMON、PMON、DBWn、LGWR、CKPT和MMON〕,而其它进程则根据启动的选项进展。数据库存储构造数据库中有三类必须的文件:控制文件、联机重做日志文件和数据文件。控制文件存储完整性信息以及指向数据库其它局部的指针。联机重做日志存储应用于数据库的最新变更向量。数据文件存储数据。外部文件包括:参数文件、口令文件、归档重做日志以及日志和跟踪文件。表空间将逻辑数据存储〔段〕从物理数据存储〔数据文件〕中抽象出来。表空间可有多个数据文件组成。一个段包含多个区间、一个区间包含多个Oracle块、一个Oracle块包含多个操作系统块。一个段可以包含位于多个数据文件的区间。安装和创立数据库本章学习内容了解Oracle数据库管理工具规划Oracle数据库的安装使用OUI安装Oracle软件使用DBCA创立数据库练习2-1在Windows计算机上安装SQLDeveloper在本练习中,将在Windows计算机上安装SQLDeveloper。下载安装SQLDeveloper从命令行提示窗口运行sqldeveloper.e*e可执行文件,确定完成安装。练习2-2确认可用的硬件资源在本练习中,将先后针对Windows和Linu*检查哪些可用的资源。Windows:右键MyComputer图标,翻开Properties对话框。查看RAM容量。RAM至少为512MB,首选容量是1GB。选择Advanced选项卡,此后,在Performance局部单击Settings按钮。在PerformanceOptions对话框中,选择Advanced选型卡。查看虚拟内存设置。这至少应为步骤〔1〕中报告的内存量的1.5倍。翻开命令窗口,使用以下命令找到临时数据目录的位置:C:\>echo%TEMP%这将返回与下面类似的位置:C:\Temp确认返回的文件系统〔在本例中是驱动器C:〕至少具有400MB的可用空间。确定文件系统具有用于Oracle主目录和数据库的5GB空间。这必须是本地磁盘,不能是文件效劳器。如果要复杂媒介安装程序〔你很可能这样做吧〕,还需要另外1.5GB〔可以在文件效劳器上〕。Linu*:在操作系统提示符下,运行free命令来显示主存和交换空间〔理想情况下,至少为1GB〕。这些都是total列的值。运行df–h,显示每个已安装文件系统的可用空间。确认具有用于Oracle主目录和数据库的5GB可用空间的文件系统。确认/tmp中有400MB的可用空间〔如果它作为独立文件系统存在〕使用rmp来检查是否已经安装了所有需要的包〔正确版本和更新版本〕。rpm–qa|grepsysstat使用sysctl来检查是否已经安装了所有需要的内核设置,要执行此操作,必须拥有root用户权限。sysctl–a|grepip_loca_port_range练习2-3安装Oracle主目录使用OUI在Linu*上安装Oracle主目录。以dba成员组的身份登录到Linu*。在下面的练习中,用户是db11g。使用id命令确认用户名和组成员,如下列图:使用su切换到root用户,并使用mkdir命令为OracleBase创立一个符合OFA的目录。在本例中,这是/u02/app/db11g。使用chown和chmod命令。更改目录的所有权和访问模式,使Oracle用户对其拥有完全控制权利,然后退回到Oracle用户。如果使用的不是控制台计算机,请将DISPLAY变量设置为指向正在使用的计算机上的…练习2-4使用DBCA创立一个数据库在本练习中,将创立数据库监听器〔如果还没有的话〕,然后在Windows或Linu*上使用DBCA创立名为ocp11g的数据库。平台组件没有明显差异。Tips3:Oracle几个默认的用户SYS用户,拥有数据字典SYSTEM,用于大多数DBA工作DBSNMP,用于外部监视SYSMAN,供EnterpriseManager使用本章知识点回忆了解Oracle数据库管理工具安装:OUI数据库创立和升级:DBCA、DBUA发送即席SQL:SQL*Plus、SQLDeveloper备份:RMAN、OracleSecureBackup网络管理:OracleNetManager、OracleNetConfigurationAssistant加载和卸载数据的实用程序:DataPump、SQL*Loader管理:OracleEnterpriseManager、DatabaseControl、GridControl规划Oracle数据库的安装硬件要求磁盘空间主存交换空间临时空间图形终端操作系统要求认证的版本必须的包内核设置OFA:适当的OracleBase目录使用OUI安装Oracle软件使用适当的操作系统用户设置必须的环境变量〔Linu*、Uni*〕提供对root用户账户的访问〔Linu*、Uni*〕执行交换式或无提示安装使用DatabaseConfigurationAssistant创立数据库可用使用DBCA或SQL*Plus命令行创立数据库DBCA可以基于保存的模板创立数据库DBCA和SQL*Plus命令可以删除数据库在创立数据库之前,必须首先创立实例对于在创立时未选中的任何选项,可以再以后予以添加实例管理本章学习内容设置数据库初始化参数描述启动和关闭数据库时的多个阶段使用警报日志和跟踪文件使用数据字典和动态性能视图练习3-1查询和设置初始化参数本练习将使用SQL*Plus或SQLDeveloper来管理初始化参数。以用户SYS的身份〔具有SYSDBA权限〕连接到数据库〔必须处于翻开状态〕。使用操作系统身份验证或口令文件身份验证。显示所有根底参数,检查它们已被设置了适当的值,还是使用默认值。SELECTname,value,isdefaultFROMv$parameterWHEREisbasic='TRUE'ORDERBYname;读者应该对具有默认值的根本参数研究一番,看默认值是否适宜。实际上,应该考虑所有的根本参数。将PROCESSES参数更改为200。这是一个静态参数,意味着其值不能在内存中更改并立即生效。必须在静态pfile中设置它,或者如果使用spfile,可以通过指定"scope=spfile〞然后重启数据库进展设置。ALTERSYSTEMSETprocesses=200;--静态参数执行报错ALTERSYSTEMSETprocesses=200scope=SPFILE;--需要重启数据库使其生效重新运行步骤〔3〕的查询。注意PROCESSES和SESSIONS的新值。PROCESSES限制允许连接到实例的的操作系统进程数量,SESSION限制会话数量。这些数字是相关的,因为每个会话后需要进程。SESSION的默认值从PROCESSES派生出来,因此,如果SESSIONS采用默认值,则此时将有一个新值。为会话更改NLS_LANGUAGE参数的值。选择需要的主流语言〔Oracle支持多种语言:截止到目前,支持67种语言〕,当必须使用英文单词指定语言〔例如,使用German,而非Deutsch〕。ALTERSESSIONSETnls_language=German;通过查询系统日期确认更改已经生效。SELECTto_char(SYSDATE,'day')FROMdual;查询结果如下:用户可能需要使用另一个ALTERSESSION命令,将会话语言改回以前的语言,否则在要准备处理的会话正使用的语言的错误信息。更改OPTIMIZER_MODE参数,当仅将作用域限制为运行中的实例,不要更新参数文件。本练习启用了被启用的基于规则的优化器〔可用于测试一些旧代码〕ALTERSYSTEMSEToptimizer_mode=RULESCOPE=MEMORY;确认更改已经生效,但没有写到参数文件中SELECTVALUEFROMV$PARAMETERWHERENAME='optimizer_mode'UNIONSELECTVALUEFROMV$SPPARAMETERWHERENAME='optimizer_mode';查询结果如下:在运行的实例中,将OPTIMIZER_MODE恢复为标准值ALTERSYSTEMSEToptimizer_mode=ALL_ROWSSCOPE=MEMORY;练习3-2启动和关闭数据库这个练习使用SQL*Plus启动一个实例并翻开一个数据库,然后使用DatabaseControl将其关闭。如果数据库已经处于翻开状态,则以其它顺序执行,注意,在windows系统中,需要确认运行了数据库对应的Windows效劳。其名称的格式为OracleServiceSID,其中的SID为实例名称。以拥有ORACLE_HOME的操作系统组成员的身份登录计算机,并为ORACLE_HOME、PATH和ORACLE_SID合理设置环境变量。检查数据库侦听器的状态,如有必要,将其启动。在操作系统命令指示窗口中输入如下命令:lsnrctlstatuslsnrctlstart检查DatabaseControl控制台的状态。如有必要,将其启动。在操作系统命令提示窗口中输入如下命令:emctlstatusdbconsoleemctlstartdbconsole使用/nolog开关启动SQL*Plus,已阻止将立即出现的登录提示。sqlplus/nolog使用操作系统身份验证,以SYS的身份连接数据库。connect/assysdba只启动实例。然后查询V$INSTANCE视图并检查其STATUS列。注意实例的状态是启动"STARTED〞startupnomount;selectstatusfromv$instance;加载数据库并查询实例状态。现在数据库已被实例进展了"加载mount〞。alterdatabasemount;selectstatusfromv$instance;翻开数据库alterdatabaseopen;通过查询V$INSTANCE确认已经翻开了数据库。数据库现在的状态应该为"OPEN〞selectstatusfromv$instance;通过浏览器了解到DatabaseControl控制台。主机名和端口将显示在步骤〔3〕中emctlstatusdbconsole命令的输出结果中。URL将类似于lhost:port/em,端口号一般为1158.以SYS身份,使用创立数据库时选择的口令登录,并从ConnectAS下拉框中选择SYSDBA。在数据库主页中单击Shutdown按钮。练习3-3使用警报日志在本练习中,将定位警报日志,并找到练习3-1中的参数更改条目和练习3-2中的启动和关闭条目。使用SQL*Plus或SQLDeveloper连接到数据库,找到BACKGROUND_DUMP_DEST参数的值。SELECTVALUEFROMv$parameterWHERENAME='background_dump_dest';--告警日志存储路径查询结果如下:注意,也可以在DatabaseControl中找到此值。定位到上面的目录翻开警报日志。此文件称为alert_SID.log,其中SID是实例名。在文件结尾处,看到练习3-1中的ALTERSYSTEM命令以及启动和关闭结果。练习3-4查询数据字典和动态性能视图在本练习中,通过查询视图来了解数据库的物理构造。使用SQL*Plus或SQLDeveloper连接到数据库使用动态性能视图来确定哪些数据文件和表空间构成了数据库以及数据文件的大小。SELECTT.NAME,D.NAME,D.BYTESFROMV$TABLESPACETJOINV$DATAFILEDONT.TS#=D.TS#ORDERBYT.NAME;查询结果如下:从数据字典视图中获取同一信息。SELECTtablespace_name,file_name,BYTESFROMdba_data_filesORDERBYtablespace_name;查询结果如下:确定所有controlfile副本的位置。使用两种技术:SELECT*FROMv$controlfile;查询结果:SELECTVALUEFROMv$parameterWHERENAME='control_files';查询结果:确定联机重做日志文件成员的位置及大小。由于大小是组的特性,并非成员的特性,需要将两个视图连接在一起。SELECT1024/1024FROMv$loggJOINv$logfilemONm.group#=g.group#ORDERBYm.group#,m.member;查询结果:本章知识点回忆描述启动和关闭数据库时的多个阶段包括三个阶段:NOMOUNT、MOUNT和OPENNOMOUNT模式需要参数文件MOUNT模式需要控制文件OPEN模式需要数据文件和联机重做日志文件设置数据库初始化参数不结果关闭/启动过程,就不能更改静态参数文件可以针对实例或会话,以动态方式更改其它参数可以在动态性能视图V$PARAMETER和V$SPPARAMETER中查看参数使用警报日志和跟踪文件警报日志是有关关键操作的连续消息流跟踪文件通常是由于在后台进程中遇到错误生成的使用数据字典和动态性能视图动态性能视图使用实例或控制文件的信息填充数据字典视图使用数据字典的信息填充动态性能视图会聚实例整个生命周期的值,在启动时重新初始化数据字典视图显示关闭和启动期一直持久保存的信息数据字典视图和动态性能视图都通过同义词来发布配置Oracle网络环境本章学习内容配置和管理Oracle网络使用Oracle共享效劳器体系构造练习4-1配置OracleNet在本练习中,将使用图形化工具和命令行工具来创立一个完整的OracleNet环境。由此,读者可以看出在Windows和Linu*系统中的区别。创立OracleNet配置文件使用的目录,并设置指向此位置的TNS_ADMIN变量。目录的位置无关紧要,只要Oracle用户有权执行创立、读取和写入即可。在Linu*系统中:mkdir/01/oracle/net--创立文件路径e*portTNS_ADMIN=/u01/oracle/net--设置环境变量确保从现在开场,都从设置了变量的会话中执行所有工作。在Windows系统中:mkdird:\oracle\net创立注册表项TNS_ADMIN,并将其设置为OracleHome分支的注册表中的字符串变量。这通常是:HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb11g_home1通过从操作系统提示符中运行TNSPING命令来检查是否读取了变量:tnspingorcl启动NetManager。在Linu*系统中,从操作系统提示符中运行netmgr。在Windows系统中,从"开场〞菜单启动它。NetManager窗口最上面的行将显示OracleNet文件的位置。如果这不是新目录,则TNS_ADMIN变量设置的不正确。创立新侦听器:展开导航树的Local分支,突出显示Listeners项,然后点击"+〞图标。输入侦听器名"NEWLIST〞,然后单击OK按钮。单击AddAddress按钮。对于Address1,选择"TCP/IP〞作为协议,并输入"〞作为主机,"1521〞作为端口。创立新效劳名:突出显示导航树的ServiceNaming项,然后单击"+〞图标。输入"NEW〞作为新效劳名,然后单击Ne*t按钮。选择"TCP/IP〞作为协议。然后单击Ne*t按钮。输入"〞作为主机名,"1521〞作为端口,然后单击Ne*t按钮输入"SERV1〞作为效劳名,然后单击Ne*t按钮单击Finish按钮。如果尝试进展尝试,将显示失败通过单击File和SaveNetworkConfiguration菜单项保存配置。。使用编辑器检查这两个文件。文件如下:#GeneratedbyOracleconfigurationtools.LISTENER=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ChuPengfei-PC)(PORT=1521)))TNSNAMES.ora文件如下:ORCL=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ChuPengfei-PC)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)))从操作系统提示符中使用lsnrctlstartlistener启动监听器。在操作系统提示符中使用tnspingorcl尝试连接字符串。使用sqlplus/assysdba,经操作系统省份验证连接到数据库,忽略任何监听器。为正在运行的实例设置service_names参数和local_listener参数〔仅限于内存,不在参数文件中设置〕,并向新侦听器注册新效劳名:ALTERSYSTEMSETservice_names=sercvlSCOPE=MEMORY;ALTERSYSTEMSETlocal_listener=NEWSCOPE=MEMORY;ALTERSYSTEMREGISTER;在操作系统提示符下,使用lsnrctlservicesnewlist,确认已向新侦听器注册了新效劳。通过使用以下代码登录,确认新网络环境已生效:sqlplussystem/oraclenew练习4-2设置共享的效劳器环境本练习是【练习4-1】中步骤〔21〕的延续,用户需要配置共享效劳器。并证实其可以运行。设置dispatchers参数和share_servers参数,并注册到侦听器,命令如下:ALTERSYSTEMSETdispatchers=’(protocol=tcp)(dispatchers=2)’SCOPE=MEMORY;ALTERSYSTEMSETshared_servers=4SCOPE=MEMORY;ALTERSYSTEMREGISTER;通过查询视图V$PROCESS,确认调度程序和共享效劳器已经启动、查找名为S000、S001、S003、D000、D001的进程SELECTprogramFROMv$processORDERBYprogram;在操作系统提示窗口,确认调度程序已经注册到侦听器。lsnrctlserviceslistener通过侦听器进展了解,并确认通过共享效劳器机制执行了连接。SELECTFROMv$dispatcherd,v$shared_servers,v$circuitcWHEREANDs.paddr=c.server;复原到最初的配置以清理环境。ALTERSYSTEMSETlocal_listener=''SCOPE=MEMORY;ALTERSYSTEMSETservice_names=''SCOPE=MEMORY;ALTERSYSTEMSETdispatchers=''SCOPE=MEMORY;ALTERSYSTEMSETshared_servers=0SCOPE=MEMORY;ALTERSYSTEMREGISTER;在操作系统提示窗口,使用命令停顿侦听器lsnrctlstoplistener取消设置TNS_ADMIN变量。在linu*系统中,采用e*portTNS_ADMIN=’’;在Windows系统中,删除TNS_ADMIN注册表项。本章知识点回忆配置和管理Oracle网络效劳器段文件是listener.ora和sqlnet.ora〔可选〕〔可选〕OracleNet文件位于ORACLE_HOME/network/admin,或位于TNS_ADMIN变量指向的目录。名称解析可以本地执行〔使用tnsnames.ora文件〕,也可以在中心位置执行〔使用LDAP目录〕EasyConnect不需要任何名称解析一个侦听器可以侦听多个数据库多个侦听器可以连接一个数据库可以使用静态〔通过在listener.ora文件详细编写代码〕或动态〔由PMON进程更新侦听器〕方法,向侦听器注册实例每个用户进程都存在到专用效劳器进程的持久连接使用Oracle共享效劳器体系构造用户进程连接到调度程序,这些连接是持久的所有调度程序在一个公共队列上放入请求共享效劳器进程从公共队列中取走请求每个调度程序都有自己的响应队列共享效劳器进程将结果放在适当调度程序的响应队列上调度程序取出结果,将结果返回给适当的用户进程共享效劳器至少配置两个实例参数:dispatchers和shared_servers。Oracle存储构造本章学习内容了解表空间和数据文件创立和管理表空间管理表空间中的空间练习5-1了解数据库的数据存储构造在本练习中,将运行查询来了解数据库的物理构造。可以从SQL*Plus或DatabaseControl,交互方式运行这些命令。但最好将它们保存为一个脚本〔针对显示格式做适当的完善,并执行特定站点的自定义〕,可针对任何数据库运行此脚本,这将作为普通空间使用报告的一局部。以用户SYSTEM的身份连接到数据库确定控制文件的名称和大小:SELECTNAME,block_size*file_size_blksbytesFROMv$controlfile;确定联机重做日志文件成员的名称和大小:SELECTMEMBER,bytesFROMv$logJOINv$logfileUSING(group#);确定数据文件和临时文件的名称和大小:SELECT'v$datafile',NAME,BYTESFROMV$DATAFILEUNIONALLSELECT'v$tempfile',NAME,BYTESFROMV$TEMPFILE;练习5-2创立、更改和删除表空间在本练习中,将创立表空间并更改其特性。此后将启用和使用OMF。可以通过DatabaseControl完本钱练习,假设如此,请在所有阶段单击ShowSQL按钮以观察生成的SQL语句。以用户SYSTEM的身份连接到数据库在适当目录〔Oracle所有者拥有写权限的任何目录〕中创立表空间CREATETABLESPACEmpac_lcDATAFILE'D:\oracle\product\10.2.0\oradata\orcl\mpac_lc.dbf'SIZE10mE*TENTMANAGEMENTLOCALAUTOALLOCATESEGMENTSPACEMANAGEMENTAUTO;此命令指定默认选项。这是一项良好的实践,使语句可以自我记录。在新的表空间创立表,并确定第一个区间的大小:CREATETABLElc_test(c1DATE)TABLESPACEmpac_lc;SELECTowner,e*tent_id,bytesFROMdba_e*tentsWHEREsegment_name='LC_TEST';--创立表初始为1个段大小64k,8个块手动添加区间,并通过重复执行以下命令来观察每个新区间的大小,并重复执行区间大小的查询。注意区间大小的增长点。〔手动添加区间,每次增加一个区间〕ALTERTABLElc_testALLOCATEE*TENT;SELECTowner,e*tent_id,bytesFROMdba_e*tentsWHEREsegment_name='LC_TEST';使表空间脱机,观察效果,再使其重新联机。ALTERTABLESPACEmpac_lcOFFLINE;SELECT*FROMlc_test;ORA-00376:file7cannotbereadatthistimeORA-01110:datafile7:'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\MPAC_LC.DBF'ALTERTABLESPACEmpac_lcONLINE;SELECT*FROMlc_test;将表空间设置为只读表空间,观察效果,再将其设置为读写。ALTERTABLESPACEmpac_lcREADONLY;SELECT*FROMlc_test;INSERTINTOlc_testVALUES(SYSDATE);ORA-00372:file7cannotbemodifiedatthistimeORA-01110:datafile7:'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\MPAC_LC.DBF'DROPTABLElc_test;ALTERTABLESPACEmpac_lcREADWRITE;CREATETABLElc_test(c1DATE)TABLESPACEmpac_lc;INSERTINTOlc_testVALUES(SYSDATE);启动OMF来创立数据库文件:ALTERSYSTEMSETdb_create_file_dest='D:\oracle\product\10.2.0\oradata';使用最少的语法创立表空间CREATETABLESPACEmpac_lc_id*;确定OMF文件的特性SELECTFILE_NAME,BYTES/1024/1024,AUTOE*TENSIBLE,MA*BYTES/1024/1024,INCREMENT_BY/1024/1024FROMDBA_DATA_FILESWHERETABLESPACE_NAME='MPAC_LC_ID*';文件名:D:\ORACLE\PRODUCT\.0\ORADATA\ORCL\DATAFILE调整OMF条件,使特性更趋于合理。使用步骤〔9〕返回的系统生成的任何文件名:ALTERDATABASEDATAFILE'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\DATAFILE\O1_MF_MPAC_LC__9V83O8D0_.DBF'RESIZE200m;ALTERDATABASEDATAFILE'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\DATAFILE\O1_MF_MPAC_LC__9V83O8D0_.DBF'AUTOE*TENDONNE*T100mMA*SIZE2g;删除表空间,并使用操作系统命令予以确认:DROPTABLESPACEmpac_lc_id*INCLUDINGCONTENTSANDDATAFILES;DROPTABLESPACEmpac_lc_id*;在表空间中没有对象时,两者效果一样,否则第二条执行将报错。练习5-3更改表空间特性本练习将使用非默认的手动空间管理来创立表空间,以便在升级后模拟到自动段空间管理的转换:以用户SYSTEM的身份连接到数据库。使用手动段空间管理创立表空间。由于【练习5-2】中启用了OMF,所以不需要任何数据文件子句:CREATETABLESPACEmanualsegsSEGMENTSPACEMANAGEMENTMANUAL;使用手动技术确认新表空间的存在:SELECTsegment_space_managementFROMdba_tablespacesWHEREtablespace_name='MANUALSEGS'在表空间中创立表和索引:CREATETABLEmantab(c1NUMBER)TABLESPACEmanualsegs;CREATEINDE*mantabid*ONmantab(c1)TABLESPACEmanualsegs;将使用空闲列表〔而非位图〕来创立这些段。新建将使用自动段空间管理〔默认方式〕的表空间:CREATETABLESPACEautosegs;将对象移入新表空间:ALTERTABLEmantabMOVETABLESPACEautosegs;ALTERINDE*mantabid*REBUILDONLINETABLESPACEautosegs;确认对象位于正确的表空间中:SELECTsegment_name,tablespace_nameFROMdba_segmentsWHEREsegment_nameLIKE'MANTAB%'删除原先的表空:DROPTABLESPACEmanualsegsINCLUDINGCONTENTSANDDATAFILES;将新的表空间重命名为原来的名称。通常这是必需的,因为*些应用程序软件将检查表空间名称:ALTERTABLESPACEautosegsRENAMETOmanualsegs;通过删除表空间进展清理,首先使用以下命令:DROPTABLESPACEmanualsegs;ORA-01549:tablespacenotempty,useINCLUDINGCONTENTSoption由于表空间非空,将引发错误,应对此进展修正:DROPTABLESPACEmanualsegsINCLUDINGCONTENTSANDDATAFILES;TIPS自动段管理和手动段管理的区别TIPS本地区间管理和***的区别本章知识点回忆了解表空间和数据文件一个表空间可能是多个数据文件一个表空间可包含多个段一个段是一个或多个区间一个区间是位于一个数据文件的多个连续的块Oracle块是数据库的根本I/O单元创立和管理表空间SMALLFILE表空间可以有多个数据文件,但BIGFILE表空间只能有一个数据文件默认方式下,表空间采用本地区间管理和自动段空间管理的方式。但统一区间大小并非默认设置。OMF数据文件自动命名,开场为100MB,可以自动拓展,没有上限除非指定了INCLUDINGCONTENTS子句,否则包含段的表空间无法删除可将表空间设置为联机或脱机,设置为读写或只读表空间可以存储三类对象:永久对象、临时对象或撤销段管理表空间中的空间本地区间管理使用每个数据文件中的位图来跟踪区间分配创立表空间时,UNIFORMSIZE子句强制所有的区间采用一样的大小AUTOALLOCATE子句让Oracle确定下一区间的大小,Oracle将根据分配给段的区间数进展确定。自动段空间管理使用位图跟踪区间每个块中的可用空间可将表空间从字典区间管理转换为本地区间管理,但不能讲空闲段管理转换为自动管理。Oracle平安性本章学习内容创立和管理数据库用户账户授予和撤销权限创立和管理角色创立和管理配置文件实现数据库平安和最小权限原则使用标准数据库审核练习6-1创立用户在本练习中,将创立一些用户,本章其余练习将使用这些用户。假设有一个名为STOREDATA的永久表空间和一个名为TEMP的临时表空间。如果这些都不存在,请予以创立,或使用其它任何适当的表空间。使用SQL*Plus,以具有充足权限〔如SYSTEM或SYS〕的用户身份连接到数据库。创立三个用户:CREATEUSERsalesIDENTIFIEDBYsalesDEFAULTTABLESPACEstoredataPASSWORDE*PIRE;--首次登录需要从新设置密码CREATEUSERwebappIDENTIFIEDBYoracleDEFAULTTABLESPACEstoredataQUOTAUNLIMITEDONstoredata;--限制表空间使用大小CREATEUSERaccountsIDENTIFIEDBYoracle;练习6-2授予直接权限在本练习中,将为【练习6-1】中创立的用户赋予一些权限,并证明这些权限已经生效。使用SQL*Plus,以用户SYSTEM的身份连接到数据库。为用户SALES授予CREATESESSION权限。GRANTCREATESESSIONTOsales;翻开另一个SQL*Plus会话,以SALES的身份连接。此次登陆将会成功SQL>connectsales/oracle以SALES的身份,尝试创立表:CREATETABLEt1(c1DATE);ORA-01031:insufficientprivileges这将失败,并弹出消息"ORA-01031:insufficientprivileges〞。在SYSTEM会话中,向SALES授予CREATETABLE权限:SQL>grantcreatetabletosales;在SALES会话中,再尝试一下:CREATETABLEt1(c1DATE);ORA-01950:noprivilegesontablespace'STOREDATA'这将失败,并弹出消息"ORA-01950:noprivilegesontablespace'STOREDATA'〞在SYSTEM会话中,为SALES分配STOREDATA表空间的配额:ALTERUSERsalesQUOTA1mONstoredata;在SALES会话中再次尝试。此次创立将会成功。以SALES的身份,在新表上授予对象权限。GRANTALLONt1TOwebapp;GRANTSELECTONt1TOaccounts;以用户SYSTEM的身份连接到DatabaseControl。确认已经授予了对象权限。在数据库主页中,导航到Schema选项卡,然后单击DatabaseObjects局部中的Tables链接。输入"SALES〞作为Schema,输入"T1〞作为Table,并单击Go按钮。在Action下拉框中,选择ObjectPrivileges。ACCOUNTS只有SELECT权限,WEBAPP拥有全部权限。注意,此窗口还显示是谁授予权限,而且它们都未被授予WITHGRANTOPTION。在DatabaseControl中,确认为SALES授予了哪些权限。在数据库主页上,导航大Server选项卡,然后单击Security局部中的User链接。选中SALES的单项选择按钮,并单击View按钮。您将看到,它有两个系统权限〔CREATESSESSION和CREATETABLE〕,而无ADMINOPTION,在STOREDATA上有1MB的配额,除此无它。使用SQL*Plus检索步骤〔11〕和步骤〔12〕中的一样信息。以SYSTEM的身份,运行这些查询:SELECTgrantee,PRIVILEGE,grantor,grantableFROMdba_tab_privsWHEREowner='SALES'ANDtable_name='T1'SELECT*FROMdba_sys_privsWHEREgrantee='SALES'撤销授予WEBAPP和ACOUNTS的权限:REVOKEALLONsales.t1FROMwebapp;REVOKEALLONsales.t1FROMaccounts;重新运行步骤〔13〕中的第一个查询确认撤销。练习6-3创立和授予角色在本练习中,将创立一些角色,并把这些角色授予用户,演示其有效性。使用SQL*Plus,以SYSTEM用户身份连接到数据库。按一下方式创立两个角色CREATEROLEusr_role;CREATEROLEmgr_role;为这些角色授予一些权限,并将USR_ROLE授予MGR_ROLE;GRANTCREATESESSIONTOusr_role;GRANTSELECTONsales.t1TOusr_role;GRANTusr_roleTOmgr_roleWITHADMINOPTION;GRANTALLONsales.t1TOmgr_role;以用户SYSTEM的身份,将MGR_ROLE角色授予WEBAPP用户:GRANTmgr_roleTOwebapp;以用户WEBAPP的身份连接到数据库:connwebapp/oracle将角色USR_ROLE授予用户ACCOUNTS,:GRANTusr_roleTOaccounts;INSERTINTOsales.t1VALUES(SYSDATE);COMMIT;,但无其它权限。紧跟其后的INSERT语句会失败,并弹出错误消息"ORA-01031:insufficientprivileges〞。SELECT*FROMsales.t1;INSERTINTOsales.t1VALUES(SYSDATE);ORA-01031:insufficientprivileges以用户SYSTEM的身份,对ACCOUNTS进展调整,使其可以在默认情况下登录,但无其它权限:CONNECTaccounts/oracleGRANTCONNECTTOaccounts;ALTERUSERaccountsDEFAULTROLECONNECT;演示角色的启动和禁用。,将弹出"ORA-00942:tableorviewdoesnote*ist〞错误。在启动USER_ROLE后,同样的查询将成功:CONNECTaccounts/oracle;SELECT*FROMsales.t1;ORA-00942:tableorviewdoesnote*istSETROLEusr_role;SELECT*FROMsales.t1;使用DatabaseControl来检查这些角色。在数据库主页上的导航路径是:在Server选项卡上单击Security局部的Roles链接。单击两个新角色对应的链接来查看其权限。要查看为谁授予了角色,在Actions下拉框中,选择ShowGrantees选项,并单击Go按钮。使用下面的查询获取在步骤〔10〕和步骤〔11〕检索的同一个信息:SELECT*FROMDBA_ROLE_PRIVSWHEREGRANTED_ROLEIN('USR_ROLE','MGR_ROLE');SELECTgrantee,owner,table_name,PRIVILEGE,grantableFROMdba_tab_privsWHEREgranteeIN('USR_ROLE','MGR_ROLE')UNIONALLSELECTgrantee,to_char(NULL),to_char(NULL),PRIVILEGE,admin_optionFROMdba_sys_privsWHEREgranteeIN('USR_ROLE','MGR_ROLE')ORDERBYgrantee;练习6-4创立和使用配置文件在本练习中,将创立、分配和测试一个配置文件,此文件将实施一些口令控制。通过SQL*Plus,以system用户的身份连接到数据库创立一个配置文件,如果出现两次口令输入错误,则将锁定账户:CREATEPROFILEtwo_wrongLIMITFAILED_LOGIN_ATTEMPTS2;将新配置文件分配给SALES:ALTERUSERsalesPROFILEtwo_wrong;使SALES成心屡次输入错误口令。在第三次尝试失败后,将得到"ORA-28000:theaccountislocked〞消息:connsales/*******以SYSTEM用户的身份,解除SALES账户的锁定:ALTERUSERsalesACCOUNTUNLOCK;确定SALES此时可以连接:connsales/oracle通过删除配置文件、角色和用户进展清理。在删除配置文件以便从SALES将其删除时,以及在DROPUSER命令上删除其表时使用了CASCADE。即使已将角色分配给用户,也可以删除角色。在删除表时,也将撤销在此表上授予的权限。CONNECTSYSTEM/oracle;DROPPROFILEtwo_wrongCASCADE;DROPROLEusr_role;DROPROLEmgr_role;DROPUSERsalesCASCADE;DROPUSERaccounts;DROPUSERwebapp;练习6-5删除一些有潜在危险的权限本练习将生成一个脚本〔可能需要做一些编辑,具体取决于本地要求〕,以便从PUBLIC删除一些更具危险性的权限。此次使用SQL*Plus以用户SYSTEM的身份连接到数据库编辑SQL*Plus,从其输出中删除无关的字符:setheadersoff;setpagesize0;setfeedbackoff;将输出打印到适当目录的文件中。下面是Uni*和Windows系统中的例如:Spool通过运行以下语句生成SQL命令文件SQL>setpagesize0SQL>setfeedbackoffSQL>setfeedbackoffselect'revokee*ecuteon'||table_name||'frompublic;'fromdba_tab_privswheretable_namelike'UTL_%';revokee*ecuteonUTL_ALL_IND_COMPSfrompublic;revokee*ecuteonUTL_URLfrompublic;revokee*ecuteonUTL_TCPfrompublic;revokee*ecuteonUTL_SMTPfrompublic;revokee*ecuteonUTL_REFfrompublic;revokee*ecuteonUTL_RAWfrompublic;revokee*ecuteonUTL_NLA_ARRAY_INTfrompublic;revokee*ecuteonUTL_NLA_ARRAY_FLTfrompublic;revokee*ecuteonUTL_NLA_ARRAY_DBLfrompublic;revokee*ecuteonUTL_NLAfrompublic;revokee*ecuteonUTL_MATCHfrompublic;revokee*ecuteonUTL_LMSfrompublic;revokee*ecuteonUTL_INADDRfrompublic;revokee*ecuteonUTL_I18Nfrompublic;revokee*ecuteonUTL_frompublic;revokee*ecuteonUTL_GDKfrompublic;revokee*ecuteonUTL_FILEfrompublic;revokee*ecuteonUTL_ENCODEfrompublic;revokee*ecuteonUTL_DBWSfrompublic;revokee*ecuteonUTL_COMPRESSfrompublic;revokee*ecuteonUTL_COLLfrompublic;SQL>spooloff练习6-6使用标准数据库审核本练习将使用DatabaseControl或SQL*Plus启动标准数据库审核,并查看结果。如果使用DatabaseControl,则确保在适当的时候单击ShowSQL按钮来查看生成的SQL语句。以用户SYSTEM的身份连接到数据库,并创立本练习使用的用户和表:CREATEUSERauditorIDENTIFIEDBYoracle;CREATETABLEsystem.audiASSELECT*FROMall_users;GRANTCREATESESSION,SELECTANYTABLETOauditor;GRANTSELECTONsystem.audiTOauditor;使用SQL*Plus,启动对AUDITOR使用SELECTANYPRIVILEGE的审核,以及对表AUDI的所有访问的AUDITSELECTANYTABLEBYACCESS;AUDITALLONsystem.audiBYACCESS;以用户SYS的身份连接到数据库。这是必须的,因为此步骤需要重新启动实例。将审核跟踪目标设置为DB,启用权限用户的审核,关闭并重启实例,按如下所示使用SQL*Plus:ALTERSYSTEMSETaudit_trail='DB_E*TENDED'SCOPE=SPFILE;ALTERSYSTEMSETaudit_sys_operations=TRUESCOPE=SPFILE;startupFORCE;使用DatabaseControl时,数据库主页可能的导航路径为:选择Server选项卡,然后单击Security局部中的AuditSetting链接。如果单击Configuration局部中的AuditTrail链接,将弹出一个窗口,允许修改spfile中的参数设置。另外,在Server选项卡上。单击DatabaseConfiguratuon局部InitializationParameters链接,可以直接进入InitializationParameters窗口。在spfile中设置两个参数,此后,在数据库主页中关闭并重新启动数据库。以SYS身份连接时,将审核所有的语句。运行以下语句:SELECTCOUNT(*)FROMsystem.audi;如果使用Linu*或Uni*,则可以通过查询AUDIT_FILE_DIST参数来确定系统审核跟踪的位置。这将用于审核SYS操作,而不考虑AUDIT_DEST设置。使用SQL*Plus运行以下语句:SELECTVALUEFROMv$parameterWHERENAME='audit_file_dest';使用操作系统导航到此目录,并翻开最新创立的文件。如果使用windows,请在EventViewer中翻开Applicationlog。无论如何,都将看到以SYS身份执行的SELECT语句,以及操作系统用户和主机名的详细信息。以AUDITOR的身份连接到数据库,并运行以下的查询:SELECTCOUNT(*)FROMsystem.audi;SELECTCOUNT(1)FROMduct_user_profile;以用户SYSTEM的身份,运行查询来查看审核事件:SELECTSQL_TE*T,PRIV_USED,ACTION_NAMEFROMDBA_AUDIT_TRAILWHEREUSERNAME='AUDITOR';注意,使用了最低权限:通过SELECT对象权限来访问AUDI表,而非功能更强大的系统权限SELECTANYTABLE〔获取PRODUCT_USER_PROFILE需要此权限〕。进展整理:DROPUSERauditor;DROPtablesystem.audi;本章知识点回忆创立和管理数据库用户账户用户和用户账户连接,而用户账户与模式连接。所有用户都需要在连接前进展身份验证用户想要创立任何对象,必须拥有表空间上的配额。如果不使用CASCADE关键字,将不能删除拥有对象的用户。授予和撤销权限默认方式下,用户什么都不能做,包括不能登录直接权限会始终被启动系统权限的撤销不级联,而对象权限的撤销级联创立和管理角色角色不是模式对象角色包括系统权限和对象权限以及其它角色可以为会话启动或禁用角色创立和管理配置文件配置文件可以管理口令和资源限制口令限制要强制实施,而资源限制取决于实例参数每个用户始终都有配置文件,默认是DEFAULT配置文件数据库平安和最小权限原则未特地允许的所有权限,都要予以拒绝数据库管理员和系统管理员不应由同一个人担任必须监视授予PUBLIC角色的权限必须监视关键的平安实例参数,只有重新启动实例,才能更改它们使用标准数据库审核数据库审核可以针对权限、命令或对象审核记录可以指向数据库表或操作系统文件数据库审核记录存储在SYS.AUD$数据字典表中细粒度审核可以指定特定的行和列可用使用数据库触发器实现审核。DDL和模式对象本章学习内容分类主要的数据库对象回忆表构造列举列可用的数据类型创立简单的表讨论在创立表时如何创立约束描述模式对象的工作方式创立和修改表管理约束创立索引创立和使用临时表创立简单视图和复杂视图从视图中检索数据创立、维护和使用序列创立和维护索引创立私有同义词和公有同义词练习7-1确定会话可以访问哪些对象在这个练习中,将以用户HR身份来查询各种数据字典视图,确定HR模式中有哪些对象以及HR可以访问其它模式中的哪些对象。使用SQL*Plus或SQLDeveloper,以用户HR身份连接到数据库确定HR模式中各种类型的对象数量:SELECTobject_type,COUNT(*)FROMuser_objectsGROUPBYobject_type;USER_OBJECTS视图将列出当前会话连接的模式〔这里是HR〕拥有的所有对象。确定HR有权访问的对象的总数SELECTobject_type,COUNT(*)FROMall_objectsGROUPBYobject_type;ALL_OBJECTS视图将列出用户能够访问的所有对象。确定谁拥有HR能够看到的对象:SELECTDISTINCTownerFROMall_objects;练习7-2研究HR模式中的数据类型在这个练习中,将通过两种方式找出在HR模式中表使用的数据类型:使用SQL*Plus或者SQLDeveloper,以用户HR连接到数据库使用DESCRIBE命令显示*些表的数据类型SQL>describeemployees;SQL>describedepartments;像DESCRIBE命令那样,查询数据字典视图显示组成EMPLOYEES表的列:SELECTcolumn_name,data_type,nullable,data_length,data_precision,data_scaleFROMuser_tab_columnsWHEREtable_name='EMPLOYEES';视图USER_TAB_COLUMNS将显示当前用户模式中每个表的每一列的详细情况。练习7-3创立表这个练习说明案例研究正式开场。现在,您的计算机上应已安装了一个数据库,如果已完成了第5章中的练习。则应有一个STOREDATA表空间,否则应创立一个。在本练习中,使用SQLDeveloper来创立一个堆表。使用子查询来插入一些行,并修改表。使用SQL*Plus进展更多修改,然后删除表。以SYSTEM用户身份连接数据库,创立WEBSTORE用户并指定默认的表空间STOREDATA和临时表空间TEMP。授予WEBSTORE用户在STOREDATA表空间上无限的配额,以及创立会话和创立表的权限。WEBSTORE模式将用于后续练习中。CREATEUSERwebstoreIDENTIFIEDBYwebstoreDEFAULTTABLESPACEstoredata;ALTERUSERwebstoreQUOTAUNLIMITEDONstoredata;GRANTCREATESESSION,CREATETABLETOwebstore;使用SQLDeveloper,以用户WEBSTORE身份连接。右击导航树的Tables分支,单击NewTable选项。将新表命名为CUSTOMERS,使用AddColumn按钮。单击DDL标签,看看是不是已经构造了语句。它应该如下所示CREATETABLEcustomers(customer_idNUMBER(8,0)NOTNULL,join_dateDATENOTNULL,Customer_stausVARCHAR2(8)NOTNULL,customer_nameVARCHAR2(20)NOTNULL,creditratingVARCHAR2(10));返回Table选项卡,单击OK按钮创立表运行以下语句:INSERTINTOCUSTOMERS(CUSTOMER_ID,JOIN_DATE,CUSTOMER_STAUS,CUSTOMER_NAME,CREDITRATING)VALUES(1,SYSDATE,'NEW','Ameetha','Platinum');INSERTINTOCUSTOMERS(CUSTOMER_ID,JOIN_DATE,CUSTOMER_STAUS,CUSTOMER_NAME,CREDITRATING)VALUES(2,SYSDATE,'NEW','Coda','Bronze');COMMIT;右击SQLDeveloper导航中的CUSTOMERS表,单击Column和Add按钮。定义一个新的列EMALI,数据类型为VARCHAR2(50),单击Apply按钮创立新列。ALTERTABLEcustomersADDemailVARCHAR2(50);使用SQL*Plus作为WEBSTORE用户连接到数据库为CUSTOMERS表中的JOIN_DATE列定义一个默认值:ALTERTABLEcustomersMODIFY(join_dateDEFAULTSYSDATE);在没有指定JOIN_DATE值的情况下插入一行,检查新的行有JOIN_DATE日期,而其它行没有:INSERTINTOCUSTOMERS(CUSTOMER_ID,CUSTOMER_STAUS,CUSTOMER_NAME,CREDITRATING)VALUES(3,'NEW','Sid','Gold');SELECTjoin_date,COUNT(1)FROMcustomersGROUPBYjoin_date;创立三个额外的表CREATETABLEorders(order_idNUMBER(8)NOTNULL,order_dateDATENOTNULL,order_statusVARCHAR2(8)NOTNULL,order_amountNUMBER(10,2),
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 数字音乐互动装置创新创业项目商业计划书
- 市场摆摊拖拉车行业跨境出海战略分析报告
- 新形势下工业污水处理行业顺势崛起战略制定与实施分析研究报告
- 2025年杭州市第一人民医院人员招聘考试试卷真题
- 工程部年终工作总结2篇
- 关于2026年客户满意度调查数据反馈函(3篇)
- 2026村文书面试题及答案
- 催办完成资金拨付手续函8篇范本
- 关于确认2026年供应商合作伙伴关系的函(4篇)
- 农业机械智能化升级改造工程实施方案
- 2026年CCAA注册审核员《管理体系认证基础》试题及答案
- 云南大理西电新源开发有限责任公司招聘笔试题库2026
- 康复治疗师岗位技能测试试题及答案
- GB/T 12957-2026用于水泥混合材的工业废渣活性试验方法
- 2026人教版小学四年级下册语文全单元课文易错考点梳理讲义
- 浙江省名校共同体2026年中考模拟考数学试题(6月)
- 合规岗位招聘笔试题及解答(某大型国企)2025年
- 特种设备应急处置规范及流程
- 学堂在线 中国古代礼义文明-礼制 章节测试答案
- DB15∕T 4258-2026 草种子生产基地建设技术规程
- 2026年建筑安全员C证考试题库及答案
评论
0/150
提交评论