ORACLE数据库的部分试题(精选6篇)
ORACLE数据库的部分试题 第1篇
ORACLE数据库的部分试题
1怎样查看数据库引擎的报错
解答:alert log.
2比较truncate和delete 命令
解答:两者都可以用来删除表中所有的记录,区别在于:truncate是DDL操作,它移动HWK,不需要 rollback segment .而Delete是DML操作, 需要rollback segment 且花费较长时间.
3使用索引的理由
解答:快速访问表中的data block
4. 给出在STAR SCHEMA中的两种表及它们分别含有的数据
解答:Fact tables 和dimension tables. fact table 包含大量的主要的信息而 dimension tables 存放对fact table 某些属性描述的信息
10. FACT Table上需要建立何种索引?
解答:位图索引 (bitmap index)
ORACLE数据库的部分试题 第2篇
当我们使用CREATE INDEX来创建索引时,Oracle提供了很多参数来改善创建索引的速度、索引所占用的空间和索引树的层次。
1、速度因素
PARALLEL选项:当创建索引时,Oracle首先会进行全表扫描来收集符号键和ROWID对,而PARALLEL选项允许多处理器并行扫描表,这样就会加速索引的创建过程,
一般推荐的PARALLEL值为CPU数减1。
NOLOGGING选项:NOLOGGING选项因为不写日志,所以大大提高了性能,比不使用NOLOGGING选项大约会节省70%的时间。使用NOLOGGING创建索引的唯一风险就是如果数据库需要做前滚恢复,你将不得不重建索引。
2、空间和结构因素
COMPRESS选项:COMPRESS选项用于在创建非唯一性索引时压缩重复值。对于连接索引(即索引包含多列)来说,COMPRESS选项会使索引的大小减少一半以上。COMPRESS选项也可以设置连接索引的前置长度。
使用大BLOCKSIZE的表空间:将索引建立在大BLOCKSIZE的表空间上,将大大降低索引树的层次。
ORACLE数据库的管理 第3篇
根据ORACLE数据库存储和查询的特点, 对其管理需要从以下几方面入手:
1 ORACLE数据库的日常维护
1.1 定期检查数据库表空间
表空间是存储信息的逻辑实现。在表空间和存储信息的数据文件之间有着直接的关联。当创建一个表空间时, 就明确了ORACLE数据库初始化文件支联系表空间的位置和这个数据文件的大小。由于数据库内数据的日益增多, 所使用的表空间也随之减少, 因此需要定期对表空间进行检查。如出现数据库表空间不够的情况, 暂时关闭应用程序, 添加新的数据文件。
1.2 定期跟踪警告日志
ORACLE数据库对所有的关键性问题均在警告日志中记录, 所列出的信息真实地反映出紧急事件的发生, 并记录其发生时间。警告日志可以帮助数据库管理员规范数据库的历史记录, 并允许数据库管理员对事件的整个生命周期进行跟踪。ORACLE数据库全天候不停地将信息写入警告日志, 这些信息有可能是发生中断性事件的警告信息。如果不及时查看就有可能没有充分的时间对态势发展做出及时的反应, 致使应用程序中断。
2 ORACLE数据库的日常处理
除了每日监视数据库的运行外, 还需要对数据库发生的问题进行处理, 主要有以下几种情况:
2.1 修改参数文件
在参数文件init.ora中定义了数据文件的个数, 如果在增加新的数据文件时报错, 说明参数文件中定义的数据文件个数过小需要修改。修改过参数文件后需要关闭数据库重新启动, 再增加新的数据文件即可。
2.2 重新建立回滚段
在ORACLE数据库中, 有关先前的信息将保留在一个回滚段中, 这样ORACLE数据库能够在事务没有完成的情况下重新显示“前映像”或数据外观。随着应用程序开始在数据库中改变数据, ORACLE数据库也在改变其保存信息的物理块。在将更改后的信息输入到系统全局区 (SGA) 的数据缓冲区或磁盘时, ORACLE数据库将首先把事务分配到一个回滚段中, 然后在这个回滚段中做一个原始信息的副本。在应用程序处理数据时出错, 在警告日志中记录是回滚段的问题, 此时需要重新建立回滚段。
2.3 数据库关闭
在遇到有长事务影响应用程序中需要关闭数据库。在做数据库关闭时有两种选项, 一是shutdown, 二是shutdown immediate。第一种选项执行时间较快, 可以立即关闭数据库, 第二种方式执行时间较长, 这是因为进行长事务处理时, 即使是在关闭数据库的情况下, 数据库还是会将长事务处理完毕后才能将数据库空间释放, 这样就会影响到应用程序的使用。
3 ORACLE数据库的保护
由于金融系统的特殊性, 要求数据库不间断地运行, 因而对数据库的保护是非常重要的。
3.1 数据库备份
随着数据库数据和日益增加, 数据库可能会面临系统数据流失的问题, 这就需要对数据库进行备份。数据库备份分为脱机数据库备份和联机数据库备份。联机数据库备份是在执行数据库备份的同时, 数据保持运行状态, 只对数据文件和控制文件进行同样的文件级复制, 不需要备份重做日志。脱机数据库备份时必须立刻备份数据库中的所有文件, 而在联机数据库备份中, 可以在任何时候备份部分文件或是全部文件。
3.2 逻辑的数据库备份
类似于脱机备份, 备份的实际上是一个时间上的快照。通过它可以给对象及其数据进行二进制复制。备份整个数据库时, 相当于给组成数据库的每个单独表、索引、视图、同义词、包、过程和触发器等对象做了一个拷贝。这种方式的最大优点在于可以方便地根据需要恢复一个或多个表, 或是整个模式。逻辑的数据库备份也相当于对数据库空间碎片进行了整理。
4 ORACLE数据库的安全管理
在ORACLE数据库安装成功后, 会产生三个自动生成的用户, 权限分别为超级用户权限、数据库管理者权限和普通用户权限。这三个用户的进入口令也是为大家熟知的, 因此在应用系统的开发过程中最好新建用户并设置新的密码使用, 同时最好将超级用户权限和数据库管理者权限这两个用户的口令进行定期或不定期地更换, 避免有人恶意地进入到数据库中进行破坏活动, 从而造成整个系统的瘫痪。另外, ORACLE数据库用户的口令也要定期或不定期地进行更换, 而且用户口令要避免使用简单的字母来进行设置。
5 ORACLE数据库的性能优化
随着数据库规模的扩大, 数据和实例的增多, 应用程序可能会变得更加分散, 这就需要对数据库进行优化。一方面需要修改应用程序为表建立合理的索引, 另一方面要从硬件考虑, 对CPU的反应时间进行相应地调整。
ORACLE数据库为应用系统提供了强大的数据存储和查询功能, 对它的管理是否到位也势必影响着应用系统的上正常运行。只有合理地规划才能让其发挥出最大的作用, 从而保证应用系统的快速反应。
参考文献
[1]王兰成等译.Marlene Theriault, Rachel Carmichael, James Viscusi.oracle数据库管理员基础教程[M].北京:机械工业出版社, 2000.
[2]李逸波等译.Eyal Aronoff, Kevin Loney, Noorali Sonawalla.oracle8性能优化和管理手册[M].北京:机械工业出版社, 2000.
创建Oracle数据库的原则 第4篇
关键词:Oracle;数据库;原则
中图分类号:TP311.13 文献标识码:A文章编号:1007-9599 (2010) 14-0000-03
The Principle of Creating Oracle Database
Liu Yin
(China Airlines Clearing Co.,Ltd.,Beijing100028,China)
Abstract:In the China Aviation Clearing Corporation six years of work has been engaged in the Oracle applications database development and maintenance.Application process in the establishment of a database and found that many applications do not meet the Oracle database creation application of the principle database settings. This problem is prevalent in many systems,we consider the availability of more,while ignoring the performance of the database problems.I would like to work according to their own practical experience,according to Oracle applications to talk about the process of database creation and consideration should be noted that some basic principles and requirements.
Keywords:Oracle;Database;Principle
首先我想要申明的是,这个过程是根据NT上Oracle应用数据库建立过程来说明的,但是所说的原则同样适用于其他的操作系统平台(如UNIX)。虽然对于Oracle方面的高手来说,有一点班门弄斧的嫌疑,但是对于一个需要全面了解Oracle建立过程的初、中级用户,仍然还是大有益处的(这个例子中将要建立的实例名和数据库名设为VETO)。
一、初始化文件(initSID.ora)的建立
大家都知道要建立一个初始化文件(例如initAOMN.ora),这个文件可以用写字板进行编辑和修改。这个文件决定了实例的基本配置和性能,中间参数的大小需要根据具体的应用要求决定。用户还可以根据情况的变化,以后进行调整修改。
许多关键的参数Oracle公司都给了大、中、小三个标准,用户可以根据需要确定。除了要修改DB_NAME,将它改为将要建立的数据库名外,还有以下的几个参数要注意:
(一)CONTROL_FILES是指定控制文件的名称和位置。控制文件必须小于8个。但是为了防止控制文件毁坏而导致数据库的崩溃,建议将控制文件指定在不同硬盘上互做备份。文件名最好让人望名知意。
(二)SHARE_POOL_SIZE指的是共享池的大小,如果想加快SQL语句的处理速度,而且操作系统的内存足够的话,可以开大些加快速度
(三)DB_BLOCK_SIZE这个参数设置Oracle块的大小。对于OLTP(在线事务处理系统),应该设置得小点,而对于DDS(数据仓库)而言,应该设置得大点。一旦设定并且数据库建立以后时没有办法修改的。这个问题值得注意。
二、建立实例(Instance)
数据库的实例指的是为处理数据库而分配的内存结构和后台处理过程,它的配置和性能由上面的初始化文件决定的。为了在操作系统中建立这个实例,必须使用Oracle提供的Oradim工具。我们可以在NT Windows菜单的运行中输入:
ORADIM73 -NEW -SID VETO -USRPWD VETO -STARTTYPE SVRC,INST -STARTMODE AUTO -PFILE=D:ORANTDATABASEVETOINITVETO.ORA
这个命令的结果是在操作系统中建立了一个实例,并且实例的启动方式是自动。internal用户的密码是VETO,在系统的服务中建立了OracleStartVeto和OracleServiceVeto两个服务。在开始的时候OracleServiceVeto已经启动,但是OracleStartVeto可能没有启动。所以可用Net Start OralceStartVeto直接将OralceStartVeto和OralceServiceVeto启动,确保这个实例所需的服务都正常启动。即:C:NET START OracleServiceVeto
三、建立数据库(database)
实例的建立只是为数据库的建立做了一个准备,我们可以将实例付给任何一个数据库使用,只要数据库的参数MaxInstances没有被超过。建数据库需要用CREATE DATABASE命令,最好事先将参数写入一个SQL文件中,以被使用和今后的维护。我们需要了解建立数据库时,一些参数的意义,有利于我们对数据库性能的把握。
例如:这里用到的CREATE_DB_VETO.SQL
CREATE DATABASE VETO
CONTROLFILE REUSE
MAXLOGFILES 32MAXLOGMEMBERS 5MAXDATAFILES 50 MAXINSTANCES 2
LOGFILE GROUP 1 ('D:ORANTDATABASEVETOLOGVETO11.RDO',
'D:ORANTDATABASEVETOLOGVETO12.RDO')SIZE 1M,
GROUP 2 ('D:ORANTDATABASEVETOLOGVETO21.RDO',
'D:ORANTDATABASEVETOLOGVETO22.RDO')SIZE 1M
DATAFILE 'D:ORANTDATABASEVETOSYSTEMVETO.DBF' SIZE 100M
CHARACTER SET ZHS16cgb231280;
在这里我们需要注意以下几点要求:
(一)如果initVeto.ora文件中指定的controlfile已经存在才可以在建立数据库时使用CONTROLFILE REUSE,否则不能使用.
(二)MAXLOGFILES指最大的redo log file的group数。MAXLOGMEMBERS指最大的redolog file的group中的member数。MAXDATAFILES指数据库中最大的datafile数。MAXINSTANCES指数据库可被多少个instance使用数。这五个参数将会影响controlfile的大小
(三)LOGFILE指的是redo log file的设置,每个GROUP中的MEMBER文件的大小必须是大小相同的。由于redo log file是循环使用的,所以最少必须有两个GROUP,否则数据库无法建立。虽然每个GROUP的MEMBER文件可以只有一个,但是为了防止某个MEMBER文件的毁坏而导致数据库的不可用,必须在每个GROUP中有多个MEMBER,最好是每个GROUP有相同数目的MEMBER文件。建立数据库的SQL语句写好后,以internal用户进入,重新启动实例并进入数据库的nomount状态,建立数据库并打开数据库。
结果:INSTANCE启动,数据库是OPEN状态,数据库可以被使用。在建立数据库的过程中,数据库中所用到的基表都在这个过程由系统运行sql.bsq自动建立了。
四、建立动态性能视图(data dictionary view)
当数据库建立后,用户仍然不能用system用户的身份进入系统。这是由于数据库的基表虽然已经建立,但是动态性能视图没有建立,所以system的身份无法被系统确认。必须以sys或者internal用户的身份重新进入系统,运行catalog.sql和catproc.sql(这两个文件存在于目录%Oracle_homerdbms73admin中)。catalog.sql的目的是建立动态性能视图。catproc.sql的目的是建立运行SQL,PL/SQL所需的一些函数包和其他帮助工具包。虽然这个时候system用户可以登录数据库,但是可能系统要求运行pupbld.SQL,目的是防止系统设置的确省的profile不能被访问。
五、建立监听器(LISTENER.ORA)
数据库的基本结构已经建立,但是用户仍然无法远程访问数据库,因为操作系统,需要为新建的实例建立一个监听器,监听用户发出的连接请求。首先,我们必须手动的修改D:ORANTNTWORKADMINLISTENER.ORA的最后部分,然后,我们进入操作系统的服务中重启OracleTNSListener服务使修改生效,新的监听器建立。但是我们还是不能远程访问数据库,必须建立数据库别名。
六、建立数据库别名
监听器中的SID_NAME指的VETO是监听器监听的连接串的值。这个值必须等于数据库别名,所以我们必须在SQL NET EASY CONFIG中建立数据库别名,使数据库的能被远程访问数据库。例如:VETOTCP/IP10.1.3.57VETO。上面句中的前一个VETO指的是数据库别名,而后一个VETO指的是实例名。由于为了方便使用和理解,推荐使数据库别名等于实例名。
七、表空间(tablespace)
上面的六步将数据库建立了起来,但是对于一个Oracle应用数据库来说仅仅是将基本的结构建立了起来,为了使数据库能够被应用程序所使用,必须为不同的应用建立不同属性的表空间。首先,建立一个存放应用程序的数据的表空间,在建立这类表空间的时候存在很多问题。我们先来建立一个数据表空间,再讨论一下建立的原则,这些原则是避免问题的关键:
create tablespace DATA
datafile 'd:orantdatabasevetodatveto.ora' size 600M
storage(initial 1600K next 1600K pctincrease 100 minextents 1 maxextents unlimited)autoextend on next 100M maxsize 1000M;
(一)由于许多系统在建表生成的SQL语句中并没有指定表的存储参数, 建表时会使用表空间的存储参数,所以并且在建立表空间时最好指定存储参数。这需要根据具体系统的特点来设置,对于一个数据表空间,由于不同的表的定义和存放的数据量一般有很大的差异,所以建议采取中等的值。
(二)为了防止在分配extent时在表空间的数据文件中产生碎片,initial和next的值必须是db_block_size的整数倍。而且是db_file_multiblock_read_count*db_block_size的整数倍,目的是在全表搜索时速度快。
(三)数据表空间中的数据表比较多,而大量的表的数据比较小,所以initial和next不能太小,也不能太大,minextents设置为1。而且个别表中的数据多,所以maxextents设置为unlimited,pctincrease=100保证数据可以全部导入表中。pctincrease的设置必须满足上面的第二条,也就是接下来建立的extent不会在数据文件中建立碎片,在这里设为100,设所有的分配的EXTENT满足条件。
接下来建立一个存放应用程序代码的表空间,这类表空间中的数据变化不大,并且数据量不大,所以initial和next也不必太大,pctincease设置为0.其他的原则与建立数据表空间的原则一致.
八、建会滚表空间和回滚段(rollback segment)
回滚段是用来记录是数据被DML(数据处理语言)处理前的值,如果事务被回滚,可以将数据恢复到修改前。它还为其他的用户提供读一致性(read consistency),就是数据被一个用户进行DML处理但还没有提交时,其他用户读取数据时看到的值。数据库建立时,会在system表空间中建立一个系统回滚段,这个回滚段是为system/sys/internal用户操作动态性能视图及其基表而使用,其他用户不能使用这个回滚段。所以我们必须为其他用户操作数据库数据而建立回滚段。为了减少因使用回滚段产生的碎片,最好建立一个专门的回滚段表空间。然后就可以建立回滚段了,但有几点必须注意:
(一)在创建时回滚段可以指定为PUBLIC或PRIVATE(默认),在创建后不能更改。一般建立的回滚段为PUBLIC。不能为回滚段指定PCTINCREASE参数,总是设置为0。这一点很多时候都被忽略了。对于回滚段而言,总是使用INITIAL=NEXT,以保证所有的扩展有相同的大小。
(二)OPTIMAL参数,如果设置了,必须至少和回滚读段的初始值相等,而且最好设置,可以保证回滚段在没有事务处理时可以自动的回到OPTIMAL指定的值,释放空间。
(三)按照事务所需的平均空间设置OPTIMAL参数。如果没有适当的数值,把它设置为初始值,以后再调整。不要把MAXEXTENTS设置为UNLIMITED。这可能会导致不必要的回滚段扩展,可能会由于程序错误造成数据文件的扩展。
(四)总是把回滚段放在分离的、独占的表空间中,以便把竞争和碎片降到最低。所以必须专门的建立一个回滚段表空间。回滚段的数量没有详细的规定,但是对于OLTP系统,一般四个事务对应使用一个回滚段。回滚段必须ONLINE后才可以被使用。
九、建临时表空间
很多时候我们忽略了临时表空间的建立,因为它的影响仅仅限于排序查询时,对速度的影响。临时段是在排序结果大于PGA中SORT_AREA_SIZE指定的排序区,在指定的临时表空间存放排序的中间结果时产生的,在实例关闭时才释放。由于临时段产生的碎片比任何段都多,所以必须建立一个专门的临时表空间,虽然在临时表空间中只有一个临时段。
十、建立用户并授权
对于一个应用程序,必须建立不同于SYSTEM用户的其他用户来管理应用程序的数据和代码。所以我们将上面建立的数据表空间和代码表空间分别给用户DATA和CODE,如下:
CREATE USER UNIFACE IDENTIFIED BY ACCA DEFAULT TABLESPACE DATA TEMPORARY TABLESPACE TMP PROFILE DEFAULT;
GRANT RESOURCE TO UNIFACE;
CREATE USER CODE IDENTIFIED BY ACCA DEFAULT TABLESPACE CODE TEMPORARY TABLESPACE TMP PROFILE DEFAULT;
GRANT RESOURCE TO CODE;
要求和原则:
(一)建用户时必须指定用户的确省表空间和临时表空间,确省表空间保存用户所有对象。临时表空间是在排序时作为当排序所需的空间大于SORT_AREA_SIZE时存放临时过程使用的。
(二)用户建立时,系统自动将角色CONNECT付给用户,但是用户如果想拥有建立对象的权利,就必须将角色RESOURCE付给用户。
虽然第二步到第四步在NT上都可以在INSTANCE MANAGER中完成,但是由于不能给大家更加清晰和灵活的配置,建议不要用。而且根据以上十步关于建立Oracle应用数据库的过程,可以将这个过程写成批处理过程,这样不仅有助于保留建立应用数据库的参数,加快数据库的建立过程,而且还有助于日后的对数据库进行性能调整。所以我推荐根据具体的应用系统要求,建立一套标准的建立过程,是很有必要。
ORACLE数据库的部分试题 第5篇
一、Linux平台 Linux平台下卸载Oracle 非常简单,即:删除Oracle安装目录下的所有文件和文件夹即可。
二、Windows平台
其实这篇文章我主要想就在Windows平台上如何彻底的卸载Oracle进行说明。
因为Oracle在Windows下的卸载颇有一些麻烦,如果不能完全卸载有可能影响将来的再次安装!
常规卸载方法是运行Oracle的自带的卸载程序,可遗憾的是我在卸载时总不能完全卸载,当我再次安装Oracle时,就会出现莫名其妙的问题,
并且这种卸载方式比较麻烦,比较慢,下面我介绍一种比较快并且能够彻底卸载Oracle的方法。
1 .关闭oracle所有的服务。可以在windows的服务管理器中关闭;
2 .打开注册表:regedit 打开路径: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices删除该路径下的所有以oracle 开始的服
务名称,这个键是标识Oracle在windows下注册的各种服务!
3 .打开注册表,找到路径: HKEY_LOCAL_MACHINESOFTWAREORACLE 删除该oracle目录,该目录下注册着Oracle数据库的软件安装信息,
4 .删除注册的oracle事件日志,打开注册表 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventlogApplication 删除注册表的
以oracle开头的所有项目。
5 .删除环境变量path中关于oracle的内容。 鼠标右键右单击“我的电脑 -->属性 -->高级 -->环境变量-->PATH 变量。 删除Oracle在该值中的内容。
注意:path中记录着一堆操作系统的目录,在windows中各个目录之间使用分号(;)隔开的,删除时注意。
建议:删除PATH环境变量中关于Oracle的值时, 将该值全部拷贝到文本编辑器中, 找到对应的Oracle的值,删除后,再拷贝修改的串,粘贴到
PATH环境变量中, 这样相对而言比较安全。
6 .重新启动操作系统。 以上1~5个步骤操作完毕后,重新启动操作系统。
7 .重启操作系统后各种Oracle相关的进程都不会加载了。这时删除Oracle_Home下的所有数据。 (Oracle_Home指Oracle程序的安装目录)
8 .删除C:Program Files下oracle目录。 (该目录视Oracle安装所在路径而定)
9 .删除开始菜单下oracle项,如: C:Documents and SettingsAll Users「开始」菜单程序Oracle - Ora10g 不同的安装这个目录稍有不同。
如果不删除开始菜单下的Oracle相关菜单目录,没关系,这个不影响再次安装Oracle.当再次安装Oracle时,该菜单会被替换。至此,Windows
ORACLE数据库的部分试题 第6篇
很多朋友只用了oracle的删除,但很多情况下,他会发现重新安装时,点了下一步安装界面就消失了,往往无奈下只好重装系统,其实只是你数据库没删干净,删干净就不会出现这种情况了。
实现方法:
1、开始->设置->控制面板->管理工具->服务
停止所有Oracle服务。
2、开始->程序->Oracle - OraHome81->Oracle Installation Products->
Universal Installer
卸装所有Oracle产品,但Universal Installer本身不能被删除
5、运行regedit,选择HKEY_LOCAL_MACHINESOFTWAREORACLE,按del键删除这个入口。
6、运行regedit,选择HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices,滚动
这个列表,删除所有Oracle入口。
7、运行refedit,
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventlogApplication,
删除所有Oracle入口,
8、开始->设置->控制面板->系统->高级->环境变量
删除环境变量CLASSPATH和PATH中有关Oracle的设定
9、从桌面上、STARTUP(启动)组、程序菜单中,删除所有有关Oracle的组和图标
10、删除Program FilesOracle目录
11、重新启动计算机,重起后才能完全删除Oracle所在目录
12、删除与Oracle有关的文件,选择Oracle所在的缺省目录C:Oracle,删除这个入
口目录及所有子目录,并从Windows目录(一般为C:WINNT)下删除以下文
件ORACLE.INI、oradim73.INI、oradim80.INI、oraodbc.ini等等。
13、WIN.INI文件中若有[ORACLE]的标记段,删除该段
14、如有必要,删除所有Oracle相关的ODBC的DSN
15、到事件查看器中,删除Oracle相关的日志
说明:
如果有个别DLL文件无法删除的情况,则不用理会,重新启动,开始新的安装。安装时,选择一个新的目录,则,安装完毕并重新启动后,老的目录及文件就可以删除掉了
(责任编辑:铭铭 mingming_ky@126.com TEL:(010)68476636)