81. 什么叫视图?游标是什么?
视图是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作,试图通常是有一个表或者多个表的行或列的子集。对视图的修改不影响基本表。它使得我们获取数据更容易,相比多表查询。
游标:是对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行。可以对结果集当前行做修改。一般不使用游标,但是需要逐条处理数据的时候,游标显得十分重要。
82. 锁:共享锁、互斥锁
两段锁协议:阶段1:加锁阶段 阶段2:解锁阶段
83. 死锁及处理:事务循环等待数据锁,则会死锁。
死锁处理:预防死锁协议,死锁恢复机制
84. 存储过程:存储过程就是编译好了的一些sql语句。
1) 存储过程因为SQL语句已经预编绎过了,因此运行的速度比较快。
2) 可保证数据的安全性和完整性。通过存储过程可以使没有权限的用户在控制之下间接地存取数据
库,从而保证数据的安全。通过存储过程可以使相关的动作在一起发生,从而可以维护数据库的完整性。
3) 可以降低网络的通信量。存储过程主要是在服务器上运行,减少对客户机的压力。
4) 存储过程可以接受参数、输出参数、返回单个或多个结果集以及返回值。可以向程序返回错误原因
5) 存储过程可以包含程序流、逻辑以及对数据库的查询。同时可以实体封装和隐藏了数据逻辑。
85. 内联接,外联接区别?
内连接是保证两个表中所有的行都要满足连接条件,而外连接则不然。
在外连接中,某些不满条件的列也会显示出来,也就是说,只限制其中一个表的行,而不限制另一个表的行。分左连接、右连接、全连接三种
86. Coalescing做了什么?
Coalescing针对于字典管理的tablespace进行碎片整理,将临近的小extents合并成单个的大extent.
87. TEMPORARY tablespace和PERMANENT tablespace 的区别是?
A temporary tablespace 用于临时对象例如排序结构而 permanent tablespaces用来存储那些'真实'的对象(例如表,回滚段等)
88. 创建数据库时自动建立的tablespace名称?
SYSTEM tablespace.
89. 创建用户时,需要赋予新用户什么权限才能使它联上数据库。
CONNECT
90. 如何在tablespace里增加数据文件?
ALTER TABLESPACE ADD DATAFILE SIZE
91. 如何变动数据文件的大小?
ALTER DATABASE DATAFILE RESIZE ;
92. 哪个VIEW用来检查数据文件的大小?
DBA_DATA_FILES
93. 哪个VIEW用来判断tablespace的剩余空间
DBA_FREE_SPACE
94. 如何判断谁往表里增加了一条纪录?
auditing
95. 如何重构索引?
ALTER INDEX REBUILD;
96. 解释什么是Partitioning(分区)以及它的优点。
Partition将大表和索引分割成更小,易于管理的分区。
97. 你刚刚编译了一个PL/SQL Package但是有错误报道,如何显示出错信息?
SHOW ERRORS
98. 如何搜集表的各种状态数据?
ANALYZE
The ANALYZE command.
99. 如何启动SESSION级别的TRACE
DBMS_SESSION.SET_SQL_TRACE
ALTER SESSION SET SQL_TRACE = TRUE;
100. IMPORT和SQL*LOADER 这2个工具的不同点
这两个ORACLE工具都是用来将数据导入数据库的。
区别是:IMPORT工具只能处理由另一个ORACLE工具EXPORT生成的数据。而SQL*LOADER可以导入不
同的ASCII格式的数据源
101. 用于网络连接的2个文件?
TNSNAMES.ORA and SQLNET.ORA
102. delete与 delete []区别
delete只会调用一次析构函数,而delete[]会调用每一个成员的析构函数。delete 与New配套,delete []与new []配套。对于内建简单数据类型,delete 和delete[]功能是相同的。对于自定义的复杂数据类型,delete 和delete[]不能互用。delete[]删除一个数组,delete 删除一个指针简单来说,用new分配的内存用delete 删除用new[]分配的内存用delete[]删除delete[]会调用数组元素的析构函数。内部数据类型没有析构函数,所以问题不大。如果你在用delete 时没用括号,delete 就会认为指向的是单个对象,否则,它就会认为指向的是一个数组。
103. 继承的优缺点。
类继承是在编译时刻静态定义的,且可直接使用,类继承可以较方便地改变父类的实现。但是类继承也有一些不足之处。首先,因为继承在编译时刻就定义了,所以无法在运行时刻改变从父类继承的实现。更糟的是,父类通常至少定义了子类的部分行为,父类的任何改变都可能影响子类的行为。如果继承下来的实现不适合解决新的问题,则父类必须重写或被其他更适合的类替换。这种依赖关系限制了灵活性并最终限制了复用性。
104. 子类析构时要调用父类的析构函数吗?
析构函数调用的次序是先派生类的析构后基类的析构,也就是说在基类的的析构调用的时候,派生类的信息已经全部销毁了定义一个对象时先调用基类的构造函数、然后调用派生类的构造函数;析构的时候恰好相反:先调用派生类的析构函数、然后调用基类的析构函数。
105. 多态,虚函数,纯虚函数。
多态:是对于不同对象接收相同消息时产生不同的动作。C++的多态性具体体现在运行和编译两个方
面:在程序运行时的多态性通过继承和虚函数来体现;在程序编译时多态性体现在函数和运算符的重载上。
虚函数:在基类中冠以关键字virtual的成员函数。它提供了一种接口界面。允许在派生类中对基类
的虚函数重新定义。
纯虚函数的作用:在基类中为其派生类保留一个函数的名字,以便派生类根据需要对它进行定义。作
为接口而存在纯虚函数不具备函数的功能,一般不能直接被调用。
从基类继承来的纯虚函数,在派生类中仍是虚函数。如果一个类中至少有一个纯虚函数,那么这个类被称为抽象类(abstract class)。
抽象类中不仅包括纯虚函数,也可包括虚函数。抽象类必须用作派生其他类的基类,而不能用于直接创建对象实例。但仍可使用指向抽象类的指针支持运行时多态性。
106.如何打印出当前源文件的文件名以及源文件的当前行号?
cout << __FILE__ ;
cout<<__LINE__ ;
__FILE__和__LINE__是系统预定义宏,这种宏并不是在某个文件中定义的,而是由编译器定义的。