《Oracle 9i & 10g编程艺术》

1、理解“怎么做”固然很重要,但理解“什么时候做”和“为什么这样做”也很重要。
2、使用绑定变量。
3、实例指的是oracle的进程和内存,数据库指的是保存数据的物理文件。可以从多个实例访问数据库,但是一个实例一次只能访问一个数据库。
4、如果数据需要写到在线重做日志中,则在写至磁盘之前要在重做缓存区中临时缓存这些数据。
LGWR会在以下某个情况发生时启动对这个区的刷新输出。
--每三秒一次,
--无论何时有人提交请求,
--要求LGWR切换日志文件,
--重做缓存区1/3满,或者包含了1MB的缓存重做日志数据。
5、连接是从客户到oracle实例的一条物理路径。连接可以在网络上建立,或者通过IPC机制建立。
会话是实例中存在的一个逻辑实体。这就是你的会话状态,也就是表示特定会话的一组内存中的数据结构。
6、redo是oracle在线重做日志中记录的信息,万一出现失败时可以利用这些数据来“重放”事物。
undo是oracle在undo段中记录的信息,用于取消或回滚事务。
7、除了直接路径加载和直接路径插入,都是会生产redo日志的。
8、临时表不会为它们的块生成redo。因此,对临时表的操作是不可恢复的。但临时表还是会生产undo,而且这个undo会记入日志。因此,临时表也会生成一些redo。
9、关于临时表上的DML活动,可以得出以下一般结论,
--Insert会生成很少甚至不生成undo/redo活动。
--Delete在临时表上生成的redo与在永久表上生成的redo同样多。
--临时表的update会生成永久表update一半的redo。
10、一个表最多可以有1000列。
11、段是占用磁盘上存储空间的一个对象。段类型有聚蔟、表、表分区或子分区、索引、索引分区、lob分区、lob子分区、lob索引、lob段、嵌套表、回滚段。
12、位图索引在读密集的环境中能很好地工作,但是对于写密集的环境则极不适用。
原因在于,一个位图索引键条目指向多行,如果一个会话修改了有索引的数据,那么在大多数情况下,这个索引条目指向的所有行都会被锁定。
13、B*树索引不会存储为null的条目,而位图和聚蔟索引则不同。
14、ROWID实际上是数据库中一行的10字节地址。ROWID中编码有足够的信息,足以在磁盘上定位这一行,以及标识ROWID指向的对象(表等)。
15、使用UTF8之类的多字节字符集时,使用varchar2(80 char)而不是varchar2(80),因为varchar2(80)实际是varchar2(80 byte)。
16、使用oracle DATE类型时,我有以下建议:
--使用NUMTODSINTERVAL内置函数来增加小时、分钟和秒;
--使用一个简单的数来增加天;
--使用ADD_MONTHS内置函数来增加月和年。
17、散列分区数使用2的幂,这样行才能在多个分区上均匀地分布。
18、在应用并行执行之前,需要保证以下两点成立。
--必须有一个非常大的任务。
--必须有足够的可用资源。
19、使用UNIFORM与AUTOALLOCATE本地管理表空间的区段截取。

你可能感兴趣的:(oracle)