1、1. 对字符串操作的函数? 答:ASCII() -函数返回字符表达式最左端字符的 ASCII 码值CHR() -函数用于将 ASCII 码转换为字符-如果没有输入 0 255 之间的 ASCII 码值 CHR 函数会返回一个 NULL 值-应该是必须给 chr()赋数字值 concat(str,str)连接两个字符串LOWER() -函数把字符串全部转换为小写UPPER() -函数把字符串全部转换为大写 LTRIM() -函数把字符串头部的空格去掉RTRIM() -函数把字符串尾部的空格去掉TRIM() -同时去掉所有两端的空格实际上 LTRIM(),RTRIM(),TRIM()是将指定的字符
2、从字符串中裁减掉其中 LTRIM(),RTRIM()的格式为 xxxx(被截字符串,要截掉的字符串),但是TRIM()的格式为 TRIM(要截掉的一个字符 from 被截的字符串)SUBSTR() -函数返回部分字符串INSTR(String,substring) -函数返回字符串中某个指定的子串出现的开始位置,如果不存在则返回 0REPLACE(原来的字符串,要被替换掉的字符串,要替换成的字符串)SOUNDEX() -函数返回一个四位字符码 -SOUNDEX 函数可用来查找声音相似的字符串但 SOUNDEX 函数对数字和汉字均只返回 NULL 值 2、 事务概念答案:事务是这样一种机制,它确
3、保多个 SQL 语句被当作单个工作单元来处理。事务具有以下的作用: * 一致性:同时进行的查询和更新彼此不会发生冲突,其他用户不会看到发生了变化但尚未提交的数据。 * 可恢复性:一旦系统故障,数据库会自动地完全恢复未完成的事务。 3、oracle 中查询系统时间答:select sysdate from dual4、 触发器的作用,什么时候用触发器,创建触发器的步骤,触发器里是否可以有 commit, 为什么?答案:触发器是可以由事件来启动运行的,存在于数据库服务器中的一个过程。他的作用:可以实现一般的约束无法完成的复杂约束,从而实现更为复杂的完整性要求。使用触发器并不存在严格的限定,只要用户
4、想在无人工参与的情况下完成一般的定义约束不可以完成的约束,来保证数据库完整性,那么就可以使用触发器。由于触发器主要是用来保证数据库的完整性的,所以要创建一个触发器,首先要明确该触发器应该属于那一种(DML,INSTEAD OF,SYSTEM)因为他们各有个的用途;其次就是要确定触发器被触发以后所设计到的数据。出发器中不可以使用 COMMIT。5数字函数abs()绝对值 exp(value)e 的 value 次幂 ceil()大于等于该值的最小整数 floor()小于等于该值的最大整数 trunc(value,precision)保留 precision 个小数截取 value round(v
5、alue,precision)保留 precision 个小数对 value 进行四舍五入 sign()根据值为正负零返回 1,-1,0 mod()取模操作 power(value,exponent)value 的 exponent 次幂 sqrt()求平方根4、 关系数据库系统与文件数据库系统的区别在那里?关系数据库系统一般适用那些方面? 答案: 关系数据库系统文件系统的区别在于:首先,关系性数据库的整体数据是结构化的,采用关系数据模型来描述,这是它与文件系统的根本区别。(数据模型包括:数据结构,数据操作以及完整性约束条件)其次,关系数据库系统的共享性高,冗余低可以面向整个系统,而文件系统则
6、具有应用范围的局限性,不易扩展。第 三,关系数据库系统采用两级映射机制保证了数据的高独立性,从而使得程序的编写和数据都存在很高的独立性。这方面是文件系统无法达到的,它只能针对于某一 个具体的应用。(两级映射:保证逻辑独立性的外模式/模式映射和保证物理独立性的内模式/模式映射。外模式:用户模式,是数据库用户的局部数据的逻辑结构 特征的描述。模式:数据库全体数据的逻辑结构特征的描述。内模式:也就是数据最终的物理存储结构的描述。)第四,就是关系性数据库系统由统一的 DBMS 进行管理,从而为数据提供了如安全性保护,并发控制,完整性检查和数据库恢复服务。5、 触发器的概念,存储过程的概念. 答案: 触
7、发器: 是存储在数据库中的过程,当表被修改(增、删、改)时它隐式地被激发。存储过程:是数据库语言 SQL 的集合,同样也存储在数据库中,但是他是由其他应用程序来启动运行或者也可以直接运行。6、 基本 SQL 语句有哪些. 答案: select、insert、update、delete、create、drop、truncate1. 中级8、什么是事务一致性 ? 选择熟悉的数据库实现一个事务处理,如信用卡提款. 答案: 事务的一致性:是事务原子性的体现,事务所对应的数据库操作要么成功要么失败没有第三种情况。事务不管是提交成功与否都不能影响数据库数据的一致性状态。事务:用户定义的一个数据库操作序列,
8、这些操作要么全部成功完成要么全部不做,是一个不可分割的整体。定义事务的 SQL 语句有:BEGIN TRANSACTION,COMMIT,ROLLBACK。事务的原子性:就是事务所包含的数据库操作要么都做,要么都不做.事务的隔离性:事务对数据的操作不能够受到其他事务的影响。事务的持续性:也就是说事务对数据的影响是永久的。对信用卡提款这一事务而言就是要保证提取到现金和卡帐号余额的修改要同时成功或失败.BEGIN TRANSACTION读取 A 的帐户余额 BALANCE;BALANCE=BALANCE-AMOUNT 转帐金额;IF(BALANCE=2. 哪个实现 IFTHENELSE 逻辑?A.
9、 INITCAP()B. REPLACE()C. DECODE()D. IFELSE()3. 以下哪行有错?1 SELECT deptno2 FROM emp3 GROUP BY deptno4 HAVING COUNT(deptno)=5 (SELECT max(count(deptno)6 FROM emp7 GROUP BY deptno);A. Line 3B. Line 4C. Line 5D. Line 7E. 都没错.4. 当一个程序执行了 SELECT.FOR UPDATE 语句, 以下哪个步骤必须需要完成?A. 执行 COMMIT or ROLLBACK 结束 transac
10、tion, 即使并没有数据改变。B. 如果有数据改变,则需要执行 commit or rollback 来结束 transaction。C. 由于只有数据确实改变后,一个 transaction 才会开始,所以现在不需要 COMMIT or ROLLBACK 被执行。5. 以下哪个命令可以被用来从表 STATE 中 drop 列 UPDATE_DT ?A. ALTER TABLE STATE DROP COLUMN UPDATE_DT;B. ALTER TABLE STATE REMOVE COLUMN UPDATE_DT;C. DROP COLUMN UPDATE_DT FROM STATE
11、;D. 你不能从这个表中 DROP 该列.6. 哪个命令用来创建一个 primary key constraintpk_books 在表 BOOKS, 列 ISBN 上? 请选择一个。A. create primary key on books(ISBN);B. create constraint pk_books primary key on books(ISBN);C. alter table books add constraint pk_books primary key (ISBN);D. alter table books add primary key (ISBN);7. 以下哪
12、行有错 r?1 X :=Y +200;2 IF X connect /as sysdbasqlshutdown normal;(2) 用拷贝命令备份全部的时间文件、重做日志文件、控制文件、初始化参数文件sqlcp (3) 重启 Oracle 数据库sqlstartup三、 热备份热备份是在数据库运行的情况下,采用 archivelog mode 方式备份数据库的方法。所以,如果你有昨天夜里的一个冷备份而且又有今天的热备份文件,在发生问题时,就可以利用这些资料恢复更多的信息。热备份要求数据库在Archivelog 方式下操作,并需要大量的档案空间。一旦数据库运行在archivelog 状态下,就
13、可以做备份了。热备份的命令文件由三部分组成:1. 数据文件一个表空间一个表空间的备份。(1) 设置表空间为备份状态(2) 备份表空间的数据文件(3) 回复表空间为正常状态2. 备份归档 log 文件(1) 临时停止归档进程(2) log 下那些在 archive rede log 目标目录中的文件(3) 重新启动 archive 进程(4) 备份归档的 redo log 文件3. 用 alter database bachup controlfile 命令来备份控制文件热备份的优点是:1. 可在表空间或数据库文件级备份,备份的时间短。2. 备份时数据库仍可使用。3. 可达到秒级恢复(恢复到某一
14、时间点上)。4. 可对几乎所有数据库实体做恢复5. 恢复是快速的,在大多数情况下爱数据库仍工作时恢复。热备份的不足之处:1. 不能出错,否则后果不堪设想。2. 假如热备份不成功,所得结果则不能用于时间点的恢复。3. 因为难于维护,所以需要特别仔细小心,不允许在操作时半途而废。1.给出在 star schema 中的两种表及它们分别含有的数据?fact tables 和 dimension tables。fact table 主要包含大量的主要信息而dimension tables 中存放着对 fact table 的某些属性描述的信息。2.fact table 上需要建立何种索引?位图索引(b
15、itmap index)3.给出两种相关约束?主键和外键4.如何在不影响子表的前提下,重建母表?使子表的外键强制失效,重建母表,激活外键5.解释$Oracle_home 和$oracle_base 的区别?$oracle_home 是 Oracle 的产品目录$Oracle_base 是 Oracle 的根目录6.如何判断数据库的时区?select dbtimezone from dual;7.解释 function、procedure 和 package 的区别?function 和 procedure 都是 PL/SQL 的代码集合,都是为了完成一个任务。procedure 不需要返回值而
16、 function 将返回一个值;package 是一个为了完成一组商业功能的 function 和 procedure 的集合。8.解释 table function 的用途?table function 是通过 PL/SQL 逻辑返回一组记录,它用于表或者视图。也可以用于 pipeline 或者 etl 过程。9.当用户进程出错,哪个后台进程负责清理它?pmon10.描述什么是 redo logs?redo logs 是用于存放数据库数据改动的物理和逻辑结构。用于恢复数据库。11.如何强制 log swith?alter System switch logfile;12.temporary
17、 tablespace 和 permanent tablespace 的区别?temporary tablespace 用于临时对象,例如排序结果;permanent tablespace用于存储“真实”的对象,例如表、回滚段。13.创建数据库时,自动建立的 tablespace 的名称?System tablespace14.创建用户时,需要赋予用户什么权限才能使它连接上数据库?connect15.如何在 tablespace 里增加数据文件?alter tablespace add datafilesize;16.如何变动数据文件的大小?alter database datafile re
18、size;17.哪些 View 用来检查数据文件的大小?dba_data_files18.哪些 View 用来判断 tablespace 的剩余空间?dba_free_space19.如何重构索引?alter index rebuild;20.解释什么是 partition 以及它的优点?partition 是将大表和者索引分割成更小的、易于管理的分区。21. IMPORT 和 SQL*LOADER 这 2 个工具的不同点?这两个 ORACLE 工具都是用来将数据导入数据库的。区别是:IMPORT 工具只能处理由另一个 ORACLE 工具 EXPORT 生成的数据。而SQL*LOADER 可以
19、导入不同的 ASCII 格式的数据源。1.解释冷备份与热备份的不同及各自的优缺点?热备份是针对归档模式的数据库,数据库仍处于工作状态时进行备份,而冷备份是在数据库关闭后,进行备份,适合所有模式的数据库。热备份时,数据库仍然可以 被使用并且可以恢复到任意一个时间点。冷备份时,它的备份和恢复操作相当简单,由于冷备份的数据库可以工作在非归档模式下,数据库的性能要比归档模式稍 好。(因为不用将 archive log 写入磁盘)2.你必须利用备份恢复数据库,但是没有控制文件,如何解决问题?重建控制文件,用带 backup control file 子句的 recover 命令恢复数据库。3.如何生成
20、explain plan?运行 utlxplan.sql 建立 plan 表针对特定的 sql 语句。使用 explain plan set statement_id=sts1into plan_table 运行 utlxplp.sql 和 utlxpls.sql 观察 explain plan。4.解释 global_name 设置为 TRUE 的用途?global_name 是指明数据库的连接方式。如果这个参数设置为 TRUE,那么在建立数据库连接时就必须使用相同名连接远程数据库。5.如何加密 PL/SQL 程序?WRAP6.举出三种可以收集 three advisory statisti
21、cs?buffer cache advice segment statistics timed statistics7.audit trace 存放在哪个 Oracle 的目录中?Unix$oracle_home/rdbms/audit windows the event viewer8.解释 materialized views 的作用?materialized View 用于减少那些汇总、集合和分组的信息的集合数量。它们适合数据仓库和 dds 系统。9.哪个后台进程刷新 materialized Views?the job queue processes10.如何判断哪个 session
22、正在连接以及它们正在等待的资源?V$session v$session_wait11.举出两个判断 DDL 改动的方法?logminer 和 streams12.coalescing 做了什么?coalescing 针对于字典管理的 tablespace 进行碎片整理。将临近的小的extents 合并成单个大的 extent。13.如何判断往表里增加了一条数据?auditing14.你刚刚编译了一个 PL/SQL package 但是有错误报道,如何显示出错误?show errors15.如何搜索表的各种状态?analyzethe analyze command16. 如何启动 session
23、 级别的 trace?dbms_session.set_SQL_tracealter session set SQL_trace=TRUE;17.用于网络连接的两个文件?tnsnames.ora 和 SQLnet.ora1 关于优化器的优化配置介绍 oracle 数据库优化的基本方式,基于规则的优化,基于规则包括全表扫描,扫描第一行(需要上网查看一下)基于成本的优化,基于选择的优化也就是 oracle 的 3 种优化器,关于优化器的配置可以通过 oracle 数据库启动的时候通过初始化数据库配置文件来配置 通过配置 init.ora 文件的 optimizer_mode 也就是优化模式的参数来
24、配置这个配置是一个全局的共享配置。优化模式可以根据具体的生产环境在用户会话级别和 sql级别进行在配置 ,来覆盖全局的优化模式配置使用基于成本的优化器要运行一个命令 analyze(分析)让 oracle 分析表 统计统计数据对象达到更好的优化效果.(如果针对表执行了 analyze 将自动使用基于成本的优化器)2oracle 访问表的方式优化a 全表扫描模式 全表扫面 oracle 采用读取数据块的方式对全部表进行扫面块的大小可以在init.ora 中配置 数据块的大小应该是系统的数据块的整数倍。适当调节数据块的大小可以起到性能优化的作用b 通过 rowid 访问数据表 rowid 表记录的
25、物理位置信息标记,oracle 通过索引与 rowid 建立联系通过适当的在字段上建立索引可以高速高效的访问数据表的记录,从而达到数据库优化查询的目的。3 共享 sql 语句为了不重复解析 SQL 语句 oracle 采用共享 SQL 的方式提高 SQL 语句执行效率。oracle 把执行过的语句放入到一个叫做 SGA 内存区域的 share buffer pool 中 也就是系统全局区域的缓存共享池如果客户端执行的 SQL 语句完全相同 oracle 首先查找 share buffer pool 如果存在这个语句直接执行这个语句。不过 oracel 对 SQL 语句的匹配要求很严格是在字符级
26、别进行匹配的,包括执行语句的字符匹配。所以在实际的项目中尽量要求编码人员统一规范编写SQL 语句尽量做到统一以提高数据库的性能和执行效率。还有就是 oracle 基于对象的共享匹配,包括用户对象,变量的绑定在权限对象分配中和 dba 沟通做好系统优化的准备。我们可以适当的提高 SGA 中 share buffer pool 的大小 来优化数据库的执行效率4 根据 oracle 的 SQL 语句解析器进行优化首先解释一下 oracle 解释 SQL 的语句的顺序,oracle 在解释 SQL 语句的时候是按照从右到左的顺序进行解析。所有要把检索效率最高的表,记录最少的表写在 FROM 的最右表也
27、就是基础表的选择5 交叉表优先选择在多对多的表关联中会遇到这样的情况。在 sql 语句的书写方面尽量把引用表放在 FROM 的右边6 基于 wher 条件书写顺序的解释优化首先介绍一下 oracle以上两个数据库优化的基本原则就是根据 oracle 解析 sql 语句和 oracle 自身对在扫描表的时候做的优化基础上尽量优先选择出记录少的表放在 from 的最右边7 尽量减少与数据库的交互减少系统的 IO 访问量8 不要用*9 使用 decode 函数减少处理时间10 整合简单的无关联的数据库访问 较少数据库服务器的 IO 操作11 删除重复记录 尽量使用 RID12 用 TRUNCATE
28、替代 DELETE13 在编写 pl/sql 时候尽量多使用 cimmit 以便释放系统资源只要有可能,在程序中尽量多使用 COMMIT, 这样程序的性能得到提高,需求也会因为 COMMIT 所释放的资源而减少:COMMIT 所释放的资源:a. 回滚段上用于恢复数据的信息.b. 被程序语句获得的锁c. redo log buffer 中的空间d. ORACLE 为管理上述 3 种资源中的内部花费14. 用 Where 子句替换 HAVING 子句避免使用 HAVING 子句, HAVING 只会在检索出所有记录之后才对结果集进行过滤.这个处理需要排序,总计等操作. 如果能通过 WHERE 子句
29、限制记录的数目,那就能减少这方面的开销.例如:低效:SELECT REGION,AVG(LOG_SIZE)FROM LOCATIONGROUP BY REGIONHAVING REGION REGION != SYDNEYAND REGION != PERTH高效SELECT REGION,AVG(LOG_SIZE)FROM LOCATIONWHERE REGION REGION != SYDNEYAND REGION != PERTHGROUP BY REGION(译者按: HAVING 中的条件一般用于对一些集合函数的比较,如 COUNT() 等等.除此而外,一般的条件应该写在 WHERE
30、 子句中)15 尽量少用子查询 合并可以合并的子查询例如:低效SELECT TAB_NAMEFROM TABLESWHERE TAB_NAME = ( SELECT TAB_NAMEFROM TAB_COLUMNSWHERE VERSION = 604)AND DB_VER= ( SELECT DB_VERFROM TAB_COLUMNSWHERE VERSION = 604)高效SELECT TAB_NAMEFROM TABLESWHERE (TAB_NAME,DB_VER)= ( SELECT TAB_NAME,DB_VER)FROM TAB_COLUMNSWHERE VERSION =
31、604)Update 多个 Column 例子:低效:UPDATE EMPSET EMP_CAT = (SELECT MAX(CATEGORY) FROM EMP_CATEGORIES),SAL_RANGE = (SELECT MAX(SAL_RANGE) FROM EMP_CATEGORIES)WHERE EMP_DEPT = 0020;高效:UPDATE EMPSET (EMP_CAT, SAL_RANGE)= (SELECT MAX(CATEGORY) , MAX(SAL_RANGE)FROM EMP_CATEGORIES)WHERE EMP_DEPT = 0020;15. 使用表的别名
32、(Alias)当在 SQL 语句中连接多个表时, 请使用表的别名并把别名前缀于每个 Column 上.这样一来,就可以减少解析的时间并减少那些由 Column 歧义引起的语法错误.(译者注: Column 歧义指的是由于 SQL 中不同的表具有相同的 Column 名,当 SQL 语句中出现这个 Column 时,SQL 解析器无法判断这个 Column 的归属)1、long i = 1int i = 1double a = 1.0float a = 1.0 哪个错了?float a = 1.0f;不带 f,默认为 double 类型。编译器会报错。2、varchar 和 varchar2 的
33、区别。varchar 是工业标准数据类型,varchar2 是 oracle 自己开发的数据类型,oracle 推荐使用的。如果想兼容 oracle 的新版本,向后兼容,用 varchar2,如果想兼容各种数据库,用 varchar嗯,雪姐,你说的是 varchar 和 char 的区别。char 不可变,varchar 可变。char 如果你定义 char(20),那么他就是二十,如果你输入 10 个,剩下那 10 个会用空格填满,varchar2 是你输入多少个就是多少个。不会用空格填满。什么是数据库监听?答:数据库监听是数据库启动后台进程的一部分,是数据库正常工作的必要条件,类似人的五脏
34、六腑;数据库的启动顺序?答:创建数据库、启动数据库实例、装载数据库数据库服务器端如何配置?答:在数据库的安装目录(E:appAdministratorproduct11.1.0db_1NETWORKADMIN)下的tnsnames.ora 文件修改 HOST(服务器端的 IP 地址)与 PORT(对应端口)部分两表不能更新也不能修改,如何定位?答:1、重启数据库,2、表与表可能被锁定,要解锁;3、重启数据库各个服务什么是端口?答:端口指的是网络与网络之间通信并开放的唯一口子数据库启动时后台进程有哪些?答:service 服务进程、监听进程什么是数据库实例?有哪些部分组成?答:数据库实例就是后台
35、进程和数据库文件的集合你曾经用过的是数据库哪个版本?答:oracle11G 版本的数据库启动不了,有哪些原因导致?答:网络原因,安装原因数据库客户端与服务器端连接不上,为什么?说明三点原因答:1、服务端文件配置错误;2、监听服务没有启动;3、用户名与密码错误当一个 Oracle 实例接收一条 sql 后1、Create a Cursor 创建游标2、Parse the Statement 分析语句3、Describe Results of a Query 描述查询的结果集4、Define Output of a Query 定义查询的输出数据5、Bind Any Variables 绑定变量6、Parallelize the Statement 并行执行语句7、Run the Statement 运行语句8、Fetch Rows of a Query 取查询出来的行9、Close the Cursor 关闭游标