Oracle 临时表、数据闪回、查询被锁表、系统常用表、及常用操作

目录

Oracle 系统常用表/视图

Oracle 临时表概述与创建

flashback  闪回表中被删除的数据

flashback  闪回整个被 drop 的表

阻塞 & 锁

查询 Oracle 中被锁定的表

查询 Oracle 中未提交的事务

查看死锁

设置 Oracle 最大连接数

Oracle 数据库表调整字段顺序

查找表的操作记录


Oracle 系统常用表/视图

1、Oracle 内部使用了大量的表和视图来维护用户的数据,所以可以使用 Oracle 内置的表或者视图来进行查询。

静态数据字典中的视图分为三类,它们分别由三个前缀够成: user_* 、 all_* 、dba_* 。
user_*该视图存储了关于当前用户所拥有的对象的信息。(即所有在该用户模式下的对象)
all_*该试图存储 了当前用户能够访问的对象的信息 而不是当前用户拥有的对象。(与 user_* 相比,all_* 并不需要拥有该对象,只需要具有访问该对象的权限即可)
dba_*该视图存储了数据库中所有对象的信息。(前提是当前用户具有访问这些数据库的权限,一般来说必须具有管理员权限)
除了静态数据字典中三类视图, 其他的字典视图中主要的是 V$ 视图,这些视图会不断的进行更新,从而提供了关于内存和磁盘的运行情况,
。 V$ 视图是 SYS 用户所拥有的,在缺省状况下,只有 SYS 用户和拥有 DBA 系统权限的用户可以看到所有的视图 ,没有 DBA 权限的用户可以看到 USER_ 和 ALL_ 视图,但不能看到 DBA_ 视图。
-- 查看所有数据字典对象
select * from dictionary;
-- 查看当前连接用户
select user from dual;
名称类型举例

select * from v$instance; -- 查看数据库实例(含版本信息、启动时间,是否开启等等),需要管理员权限
select * from product_component_version ;-- 查看数据库版本
select * from v$version; -- 查看数据库版本

select * from v$option;  --查看数据库的组件信息

select userenv('language') from dual;  -- 查看字符集

--查询数据库以用户分组连接数。需要管理员权限
select inst_id, username, count(*)  from gv$session group by inst_id, username;

--查询实例当前会话数和启动最高连接会话数量。需要管理员权限
select sessions_current,sessions_highwater from v$license;

--查询给定参数的设置值,示例参数缺省值为300,通常中等规模数据库推荐设置为1000。需要管理员权限
select * from v$parameter where name='open_cursors';
--修改给定的初始化参数,RAC环境需要注意SID参数。需要管理员权限
alter system set open_cursors=1000 comment='default 300' sid='*' scope=both;
--获取会话或全局转储位置,诊断时需检查相应Trace文件内容。
select value from v$diag_info where name='Default Trace File';
select * from sys.sm$ts_used;--查看数据库表空间的使用信息。
select tablespace_name,file_name from dba_data_files;--查看数据库表空间的数据文件信息。

--通过等待事件和等待时间,了解数据库当前连接会话的等待情况。如果会话众多,需要限定查询输出行数。
select sid,event,wait_time_micro from v$session_wait order by 3;
--查看当前数据中TOP10等待事件信息,需要分析和关注非空闲的显著等待。
select * from (select event,total_waits,average_wait,time_waited from v$system_event where wait_class<>'ldle' order by time_waited desc) where rownum<=10;

--查询给定表(需大写)最后的统计信息分析收集时间。
select table_name,last_analyzed from dba_tab_statistics where table_name='&table_name';

--查看系统中分区表的基本信息:分区类型,数量,边界值等。
select table_name,partitioning_type,partition_count,status from dba_part_tables;
select table_name,partition_name,high_value from dba_tab_partitions where rownum <11;

--查看当前用户下分区表的基本信息:分区类型,数量,边界值等。
select table_name,partitioning_type,partition_count,status from user_part_tables;
select table_name,partition_name,high_value from user_tab_partitions where rownum <11;

user_col_comments视图select * from user_col_comments t where t.TABLE_NAME = 'EMP'; --查询表/视图字段的注释信息(不含表/视图本身)
user_tab_comments视图select * from user_tab_comments a;--查询表/视图的注释信息(不含字段)
user_tab_columns视图select table_name ,column_name,data_type,data_length,nullable from user_tab_columns t where t.TABLE_NAME = 'EMP'; --查询表/视图的列信息,如列名称、类型、长度等等
user_tab_cols 视图

select * from user_tab_cols t where t.TABLE_NAME = 'EMP'; --查询表/视图的列信息,如列名称、类型、长度等等。

--查询结果中会出现类似名称为 'SYS_NC00082$' 的列,所以推荐使用 user_tab_cols .

select * from user_tables; -- 查询当前登陆用户下所有的表,其中的 duration(持续时间)为 null 表示非临时表,SYS$SESSION 表示会话临时表,SYS$TRANSACTION 表示事务临时表。

num_rows 表示表中的数据行数

--查看当前用户下表中记录行数最多的10个表,表的基本信息数据:属主,表名,记录行数等。
 select * from (select table_name,num_rows from user_tables order by num_rows desc nulls last) where rownum<11;

--查看全部用户表中记录行数最多的10个表,表的基本信息数据:属主,表名,记录行数等。
 select * from (select owner,table_name,num_rows from dba_tables order by num_rows desc nulls last) where rownum<11;

-- 查看当前用户定义的表, 视图, 同义词、序列
select * from user_catalog t;
-- 查看全部用户定义的表, 视图, 同义词、序列
select * from dba_catalog t;
-- 查看回收站(方式2-推荐)
select * from recyclebin order by droptime desc;--查看当前用户下删除的表、触发器、索引等等对象。
select * from user_recyclebin order by droptime desc;--查看当前用户下删除的表、触发器、索引等等对象。
select * from dba_recyclebin   order by droptime desc;--查看管理员权限下删除的表、触发器、索引等等对象。

select * from user_views;-- 查询当前登陆用户下所有的视图

SELECT * FROM t all_views;-- 查询所有视图(含所有用户)

TEXT_LENGTH:视图内容长度
TEXT:视图完整内容,Long 类型,最大长度限制是 2GB
TEXT_VC:视图内容截断为 VARCHAR2(4000),即展示最长 4000个字符长度,超过的内容会被截断。

dba_jobs视图

oracle 定时任务

-- JOB:每个任务的唯一标识符
-- LOG_USER:提交作业时登录的用户
-- LAST_DATE、LAST_SEC:上次成功执行此作业的日期
-- THIS_DATE、THIS_SEC:当前正在运行的作业的开始时间,不在运行时为 null.
-- NEXT_DATE、NEXT_SEC:下一次执行此作业的日期
-- TOTAL_TIME:系统在此作业上花费的总挂钟时间,以秒为单位
-- BROKEN:如果为Y,则表示此作业已停止运行
-- failures:执行失败的次数

--查询系统全部用户的定时任务(job)信息,确保任务在期望的时间成功执行。
select job,log_user,last_date,next_date,interval,broken,failures from dba_jobs;

--查询当前用户的定时任务(job)信息,确保任务在期望的时间成功执行。
select job,log_user,last_date,next_date,interval,broken,failures from user_jobs;

--查询系统定时调度信息,查询显示了任务名称、初始启动日期以及重复间隔。
select job_name,start_date,repeat_interval from dba_scheduler_jobs;

SELECT T.* FROM all_col_comments t ;-- 查询表/视图字段的注释信息(含所有用户)
SELECT T.* FROM all_tab_comments t ;-- 查询表/视图的注释信息(不含字段,含所有用户)
SELECT T.* FROM all_tab_columns t ;-- 查询表/视图的列信息,如列名称、类型、长度等等(含所有用户)
SELECT T.* FROM all_tab_cols  t ;--查询表/视图的列信息,如列名称、类型、长度等等(含所有用户)
SELECT T.* FROM all_tables t ;-- 查询所有表(含所有用户)
all_objects视图所有用户创建的对象(比如表、视图、索引、定时任务、函数、存储过程、触发器等等),可以查看对象创建的时间,最后修改的时间等等
user_objects视图当前登陆用户创建的对象(比如表、视图、索引、定时任务、函数、存储过程、触发器等等),可以查看对象创建的时间,最后修改的时间等等

--检查数据库中的失效对象信息,通常运行健康的数据库中不应有失效的对象。
select owner,object_name,object_type,status from dba_objects where status<> 'VALID';

--检查当前用户下的失效对象信息,通常运行健康的数据库中不应有失效的对象。
select object_name,object_type,status from user_objects where status<> 'VALID';

user_indexes

dba_indexes

视图查看当前/全部用户下创建的全部索引信息:如索引名称、类型、所属的表名称,是否被禁用等等
--查看当前用户索引对象对应的具体的列信息
select * from user_ind_columns;
--查看全部用户索引对象对应的具体的列信息
select * from dba_ind_columns;
--查询索引的基本信息,输出包括叶块数和聚簇因子等,如聚簇因子接近行数可能代表索引效率不高。
select * from (select index_name,num_rows,leaf_blocks,clustering_factor from dba_indexes order by 4 desc nulls last) where rownum<11;

USER_constraints

dba_constraints

视图

查看当前/全部用户创建的全部约束信息:如约束名称、约束类型、所属的表、最后修改时间、是否启用、约束名称是用户自定义还是系统自动新建等等。

constraint type:约束类型:常见的值为:C(普通约束)、R(外键约束)、P(主键约束)、U(唯一约束)

--查询指定数据表的约束信息,包括名称和类型。
select constraint_name,constraint_type from dba_constraints where table_name=upper('&输入被查的表名');

user_cons_columns

dba_cons_columns

视图

查看当前/全部用户创建的全部约束对应的列名,用于根据约束的名称查询约束对应的列名。

--查找NVARCHAR2的字符集
SELECT * FROM nls_database_parameters WHERE PARAMETER = 'NLS_NCHAR_CHARACTERSET';

--查询VARCHAR2数据类型使用的缺省字符集
SELECT * FROM nls_database_parameters WHERE parameter = 'NLS_CHARACTERSET';

-- ORACLE 查询某个表被所有用户下的哪些视图引用
select * from dba_dependencies where REFERENCED_NAME='表名' and TYPE='VIEW';
-- ORACLE 查询某个表被当前用户下的哪些视图引用
select * from user_dependencies where REFERENCED_NAME='表名' and TYPE='VIEW';

--OWNER:依赖对象所属的用户名称
--NAME:依赖对象的名称,如视图名称,触发器名称等等
--TYPE:依赖对象类型:TRIGGER、PROCEDURE、FUNCTION、TYPE、VIEW 等等
--REFERENCED_OWNER:被依赖对象所属的用户名称
--REFERENCED_NAME:被依赖对象的名称,如表名,视图名称等等
--REFERENCED_TYPE:被依赖对象类型,SYNONYM、PACKAGE、FUNCTION、TYPE、TABLE、VIEW
--REFERENCED_LINK_NAME:如果被倚赖的对象是一个远程表,这里显示dblink的名字,否则为空
--DEPENDENCY_TYPE:从属类型

user_source视图

查询触发器(TRIGGER)、存储过程(PROCEDURE)、函数(FUNCTION),类型(Type) 等对象的源代码。

SELECT * FROM user_source T where t.NAME='xxx' order by t.LINE; 

--查询当前用户下创建的所有序列
SELECT * FROM USER_SEQUENCES;
--查询全部用户下创建的所有序列
SELECT * FROM dba_SEQUENCES;

2、示例:将已经存在的多个表的字段合成一个新表.md

3、统计当前环境的表结构与部标规范的差异.md。

Oracle 临时表概述与创建

临时表概述

1、临时表用于存储"事务"或"会话"的中间结果集数据,临时表中保存的数据只对当前会话或事务可见,所有会话都看不到其他会话的数据,所以临时表不存在并发行为。

2、临时表分事务级临时表和会话级临时表,事务级临时表只对当前事务有效,每次提交或者回滚后 ORACLE 将删除临时表中的数据;会话级临时表只对当前会话有效,当会话中断/结束后,ORACLE 将删除表中所有的数据:

3、创建临时表时,Oracle 只创建了表的结构,并没有初始化内存空间,只有向临时表中插入数据时,才会给临时表分配存储空间。

4、临时表也是实实在在存在的表,可以对它创建索引、视图、触发器等操作,与非临时表的区别主要在于数据的可见性与存在时间。

临时表创建

事务级临时表创建语法:create global temporary table  <temp_table_name> (<column specification>) on commit delete rows;

使用举例(根据现有表创建事务临时表,这里只复制表结构,不复制数据):

create global temporary table transaction_temp_dept on commit delete rows as select * from dept where 1=2;

--省略[on commit delete rows]时,默认也是创建的事务级临时表
create global temporary table transaction_temp_dept2 as select * from dept where 1=2;
create global temporary table transaction_temp_dept3(guid varchar2(38),uuid varchar2(38));

会话级临时表创建语法:create global temporary table <temp_table_name> (<column specification>) on commit preserve rows;

使用举例(根据现有表创建会话临时表,这里只复制表结构,不复制数据):

create global temporary table session_temp_dept on commit preserve rows as select * from dept where 1=2;

//创建临时表即可根本已经存在表进行创建,也可以根据视图创建,如:create global temporary table session_temp_dept on commit preserve rows as select * from vw_dept where 1=2;

温馨提示:

        如果 Java 程序中使用代码自动创建临时表,比如导入数据的时候,如果临时表不存在,则自动创建,如果存在,则直接使用。在 Java 程序运行过程中,如果手动删除临时表,程序访问时会直接报错:"表或者视图不存在",必须重启程序再次访问时才会自动创建。

有时候创建的临时表会存在不允许为 null 的字段,如果允许为 null,则可以进行修改

-- 设置某个的字段允许为 null
declare
cursor vrows is SELECT t.COLUMN_NAME FROM user_tab_columns t where t.TABLE_NAME='BAS_PERSON_IMP_430000000_202009' and t.NULLABLE='Y' order by t.COLUMN_ID;
begin
  for vrow in vrows loop
    dbms_output.put_line('alter table BAS_PERSON_IMP_430000000_202009 modify ' || vrow.COLUMN_NAME || ' null;');
  end loop;
end;

临时表查询

1、查看当前用户下的表是否为临时表:

-- 其中的 duration(持续时间)为 null 表示非临时表,SYS$SESSION 表示会话临时表,SYS$TRANSACTION 表示事务临时表
select * from user_tables where duration is not null;

临时表删除

1、事务临时表提交或者回滚后,只是删除其中的数据,表结构仍然还在,会话临时表也是一样,会话结束后,数据删除了,当表结构还在。

2、如果会话临时表的会话没有结束,则无法删除此临时表,事务临时表也是同理,也只能在未被使用时才能删除。

事务级临时表验证

1、事务级临时表只对当前事务有效,每次提交或者回滚后 ORACLE 将删除临时表中的数据,回滚后删除数据是自然的,无论是否为临时表都会这样,所以主要是验证事务提交数据删除。

会话级临时表验证

1、会话级临时表只对当前会话有效,当会话中断/结束后,ORACLE 将删除表中所有的数据,会话之间也无法相互看到数据。

flashback  闪回表中被删除的数据

1、开发中甚至是生产中偶尔会遇到因为误操作删除了数据,特别是生产中特别危险,鄙人有幸就因为 where 条件写反了,把生产上表中本该删除的数据留下了,本该留下的数据却删除了,当时也是小心脏扑通扑通的。

2、flashback table xxx to timestamp :恢复数据的方式是将整个表中的数据退回到之前的某个时间点,这很像电脑操作系统的恢复功能,同样也是将系统恢复到之前某个快照。

3、flashback table dept to timestamp 方式只适用于 delete 删除的数据,如果 truncate 删除的则没有办法。比如 10点05分15秒误删了,10点10分15秒才发现这个问题,此时将整个表退回到5分钟以前,就意味着这5分钟内表中发生的数据变化,都将因为退回而没有了。

4、所以一旦发生误删数据情况:

第一步:最好暂时先让其它人无法继续修改表中的数据。

第二步:找到之前误删的数据,记录此时间点

第三步:将此时表中的数据进行备份,因为时间差内可能会有数据变化

第四步:将整个表使用 flashback  命令退回到第二步的时间点,此时误删除的数据已经回来了

第五步:比照第四步退回后的数据与第三步最新的数据两者之间的变化,因为这个时间差内可能有用户新增、删除、修改数据,这些变化的数据也需要处理。

5、下面使用 scott 用户的 dept 部门表进行演示:

select * from dept ;--查询数据

delete from dept t where t.deptno in(50,60);--删除删除,假设是误删除

--开始恢复数据

--1、查询数据库当前时间(防止数据库时间与自己参照的时间不一致)
select  to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

--2、查询指定时刻的数据,反复修改时间点,直到找到被删除的数据,越精确越好
select * from dept as of timestamp to_timestamp('2020-07-26 17:00:50','yyyy-mm-dd hh24:mi:ss') where deptno = 10;

--3、恢复表中的数据到某个时刻
flashback table dept to timestamp to_timestamp('2020-07-26 17:00:50','yyyy-mm-dd hh24:mi:ss');

--4、如果第三步恢复报错:ORA-08189:因为未启用行移动功能,不能闪回表;则执行如下语句,然后继续执行第三步即可。
alter table dept enable row movement;

--为指定表关闭行移动功能
alter table tableName disable row movement;

!!!除非百分百确定数据不再需要,否则不要用 truncate 删除,而应该使用 delete 进行删除,truncate 删除的数据无法恢复,或者说难以恢复。

flashback  闪回整个被 drop 的表

1、flashback table xxx to before drop:从回收站中闪回表到删除前,用于闪回被 drop table xxx 的表。

2、特别注意

  • 管理员用户(不包括拥有dba权限的用户)没有回收站,无法使用此种方式闪回,所以管理员删表千万要慎重
  • 通过回收站的中名字可以查询被删除对象的数据使用双引号括起来,比如:select * from "BIN$rWLNVqlxTSubWrDOvJUmfg==$0";

3、下面通过 scott 的 emp 表进行演示:

create table emp_temp as select * from emp; --创建一个表(emp_temp)用于测试

select * from emp_temp;--查询表数据

drop table emp_temp; -- 删除表

-- 查看回收站(方式1

show recyclebin; -- drop(删除)的表会在其中有记录。不能在 PL/SQL 中执行此命令,需要到 sqlplus 等命令行中执行

-- 查看回收站方式2-推荐

select * from recyclebin order by droptime desc;--查看当前用户下删除的表、触发器、索引等等对象。
select * from user_recyclebin order by droptime desc;--查看当前用户下删除的表、触发器、索引等等对象。
select * from dba_recyclebin   order by droptime desc;--查看管理员权限下删除的表、触发器、索引等等对象。

purge recyclebin;    --清空回收站慎用,清空之后将无法使用这种方式再恢复数据。

flashback table emp_temp to before drop; -- 闪回整个表(emp_temp)到删除前,执行之后表就已经恢复了。

-- 如果需要被闪回的表名已经被新建的表占用了,此时直接闪回是会失败的,解决办法是闪回的同时重命名:

flashback table emp_temp to before drop rename to emp_old;


阻塞 & 锁

1、当两个用户希望持有对方的资源时就会发生死锁,即两个用户互相等待对方释放资源时,oracle 认定为产生了死锁,在这种情况下 将以牺牲一个用户作为代价,另一个用户继续执行,牺牲的用户的事务将回滚 。

死锁例子:
a:用户 1 对 A 表进行 Update ,没有提交。
b:用户 2 对 B 表进行 Update ,没有提交。
此时双反不存在资源共享的问题。
c:如果用户 2 此时对 A 表作 update, 则会发生阻塞,需要等到用户一的事物结束。
d:如果此时用户 1 又对 B 表作 update ,则产生死锁此时 Oracle 会选择其中一个用户进行会滚,使另一个用户继续执行操作。

2、通常来讲,系统如果平时运行正常,突然会停止不动,多半是被阻塞( Blocked)住了。当一个会话保持另一个会话正在请求的资源上的锁定时,就会发生阻塞被阻塞的会话将一直挂起,直到持有锁的会话放弃锁定的资源为止。

引起阻塞原因描述
INSERTInsert 发生阻塞的唯一情况是当 2 个会话同时试图向建有主键约束的表中插入相同主键的数据时,其中的一个会话将被阻塞,直到另外一个会话提交或会滚。一个会话提交时,另一个会话将收到主键重复的错误,回滚时,被阻塞的会话将继续执行。
Update
和 Delete
当执行 Update 和 delete 操作的数据行已经被另外的会话锁定时,将会发生阻塞,直到另一个会话提交或会滚。
Select …for update

当一个用户发出select..for update 的错作准备对返回的结果集进行修改时,如果结果集已经被另一个会话锁定,此时 Oracle 已 经对返回的结果集上加了排它的行级锁, 所有其他对这些数据进行的修改或删除操作都必须等待这个锁的释放操作 commit 或 rollback.)rollback.),产生的外在现象就是其他的操作将发生阻塞同样这个查询的事务将会对该表加表级锁,不允许对该表的任何
ddl 操作,否则将会报出 Ora 00054:resource busy and acquire with nowait specified.

外键没有创建索引主表上有频繁的删除操作,以及主键上有频繁的修改操作时,主表会在从表上创建一个锁定,
以保证主表主键的修改不会导致从表的数据在引用上出现问题,这是一个数据引用完整性的要求。
如果主表上出现频繁的删除或者是对主键列频繁的修改,或者每次操作的记录数很多,都将会造成从表长时间被锁定,而影响其他用户的正常操作。
比如主表每次删除 1000 行数据,它就需要扫描从表 1000 次,以确定每一行记录的改变都不会造成从表数据在引用上的不完整。

查询 Oracle 中被锁定的表

--查出锁定表的sid, serial#,os_user_name, machine_name, terminal,锁的type,mode
SELECT l.session_id sid,
    s.serial#,
    l.locked_mode as 锁模式,
    l.oracle_username as  登录用户,
    l.os_user_name as 登录机器用户名,
    s.machine as 机器名,
    'ALTER SYSTEM KILL SESSION ''' || SESSION_ID || ', ' || SERIAL# || '''; ' as 关闭会话sql,
    s.terminal as 终端用户名,
    o.object_name as 被锁对象名,
    s.logon_time as 登录数据库时间
FROM v$locked_object l, all_objects o, v$session s
WHERE l.object_id = o.object_id AND l.session_id = s.sid ORDER BY sid, s.serial#;

查询 Oracle 中未提交的事务

-- 查询未提交的事务,对于应用系统突然故障,查询他未提交的事务很有用
SELECT s.sid,
       s.serial#,
        'ALTER SYSTEM KILL SESSION ''' ||  s.sid || ', ' || s.serial# || '''; ' 关闭会话sql,
       s.username as 用户名,
       s.status as 状态,
       s.machine as 机器名称,
       s.terminal as 终端,
       s.program as 程序,
       a.executions,
       s.sql_id,
       p.spid,
       a.direct_writes,
       s.event as 事件,
       a.sql_text as sql文本,
       a.sql_fulltext
  FROM (SELECT * FROM v$session WHERE status = 'ACTIVE') s
  LEFT JOIN v$sqlarea a
    ON s.sql_id = a.sql_id
 INNER JOIN v$process p
    ON s.paddr = p.addr;

查看死锁

--查看有无死锁对象,如果有,则 kill session
--注意:对于 sid 在 100 以下的应当谨慎,可能该进程对应某个application,如对应某个事务 可以 kill.
SELECT t1.sid, 'alter system kill session ''' || t1.sid || ',' || t1.serial# || ''';' 解除死锁 FROM v$session t1, v$lock t2
 where t2.BLOCK = 1 and t2.SID = t1.SID;

--查看导致死锁的 SQL(根据SID查询)
SELECT s.sid, q.sql_text
  FROM v$sqltext q, v$session s
 WHERE q.address = s.sql_address
   AND s.sid = &sid
 ORDER BY piece;
--查看谁锁了谁——SQL1
SELECT s1.username || '@' || s1.machine || ' ( SID=' || s1.sid ||
       ' ) is blocking ' || s2.username || '@' || s2.machine || ' ( SID=' ||
       s2.sid || ' ) ' AS blocking_status
  FROM v$lock l1, v$session s1, v$lock l2, v$session s2
 WHERE s1.sid = l1.sid
   AND s2.sid = l2.sid
   AND l1.BLOCK = 1
   AND l2.request > 0
   AND l1.id1 = l2.id1
   AND l2.id2 = l2.id2;

--查看谁锁了谁——SQL2
SELECT LPAD(' ', DECODE(l.xidusn, 0, 3, 0)) || l.oracle_username User_name,
       o.owner,
       o.object_name,
       o.object_type,
       s.sid,
       s.serial#
  FROM v$locked_object l, dba_objects o, v$session s
 WHERE l.object_id = o.object_id
   AND l.session_id = s.sid
 ORDER BY o.object_id, xidusn DESC;

设置 Oracle 最大连接数

1、有些时候当我们的应用或者 PL/sql 连接 Oracle 数据时会报如下的错误,表示拒绝连接,这个时候通常是因为连接数过多,从而超出了 Oracle 允许的连接数(默认为150)导致的。假如 10 个服务连接数据库,每个服务启动时初始化20个连接数,则就会导致部分服务启动时或者启动后连接不上数据库,因为超出了 Oralce 的最大允许连接数。

java.sql.SQLException: Listener refused the connection with the following error:
ORA-12519, TNS:no appropriate service handler found

2、可以通过修改 Oracle 最大连接数来解决这个问题:

select count(*) from v$session t; -- 查询 Oracle 当前的会话数
select count(*) from v$process;    --查询 Oracle 当前的连接数
select count(*) from v$session where status='ACTIVE' -- 查询Oracle当前并发连接数
select value from v$parameter where name = 'processes'; -- 查询 Oracle 允许的最大连接数
select value from v$parameter where name = 'sessions';  -- 查询 Oracle 允许的最大会话数

alter system set processes = 1024 scope = spfile; --修改 Oracle 允许的最大连接数.重启数据库服务(OracleServiceORCL)后生效 。

alter system set sessions = 1024 scope=spfile; --修改 Oracle 允许的最大会话数.重启数据库服务(OracleServiceORCL)后生效 。

ORA-32001: 已请求写入 SPFILE, 但是没有正在使用的 SPFILE 报错解决方式。

完整操作演示:https://gitee.com/wangmx1993/my-document/blob/master/sql/Oracle 修改最大连接数.sql

Oracle 数据库表调整字段顺序

1、数据库表结构确定之后,后期再往表中增加字段时,默认会放到表的最后,有时候我们想把有关联性的字段放在一起,或者其它原因需要调整字段顺序。

方式一:如果表中的数据不多,则最简单高效的方式就是重建(优点是方便,缺点是此种建表的方式会丢失主外键,约束,索引等信息):

-- 1、以新的顺序新建表,同时复制旧表中的数据
-- 子查询建的表只复制了目标表的结构(如字段名称、数据类型),却不复制约束、索引(如主外键、约束、索引).
create table emp_temp as select EMPNO, ENAME, JOB, MGR, SAL, HIREDATE, COMM, DEPTNO from emp ;

-- 2、删除旧表或者将旧表重命名做留底
drop table EMP;

-- 3、将新表重命名为原来的表名,新顺序调整完成
alter table emp_temp rename to emp;

查找表的操作记录

--1,首先查找表的操作记录
select A.SQL_ID, A.SQL_TEXT, A.FIRST_LOAD_TIME, A.*
  from v$sqlarea a
 where a.SQL_TEXT like '%BAS_PERSON_INFO%'
 ORDER BY A.FIRST_LOAD_TIME DESC;

--2、从上面的记录中找到最新的sql操作记录,然后找到用户名和主机
select L.OSUSER, L.USERNAME, L.PREV_EXEC_START, S.*
  from sys.v_$session l, sys.v_$sql s
 where s.SQL_ID = 'dzx488n8ak1xp'
   and l.USERNAME is not null
 ORDER BY PREV_EXEC_START DESC;
  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
目录 推荐序 前言 第1章 认识Oracle RAC 1.1 RAC产生的背景 1.2 RAC体系结构 1.2.1整体结构 1.2.2物理层次结构 1.2.3逻辑层次结构 1.3 RAC的特点 1.3.1双机并行 1.3.2高可用性 1.3.3易伸缩性 1.3.4低成本 1.3.5高吞吐量 1.4 RAC存在的问题 1.4.1稳定性 1.4.2高性能 1.5 RAC软件 1.5.1存储管理软件 1.5.2集群管理软件 1.5.3数据库管理软件 1.6本章小结 第2章 搭建类似生产环境的RAC 2.1搭建环境 2.1.1 RAC的物理结构 2.1.硬件环境 2.1.3软件环境 2.2搭建存储服务器 2.2.1安装Openfiler操作系统 2.2.2Openfiler主界面 2.2.3配置iSCSI磁盘 2.3搭建数据库服务器 2.3.1为服务器配置4个网卡 2.3.2安装Linux操作系统 2.3.3挂载iSCSI磁盘 2.3.4配置udev固定iSCSI磁盘设备名称 2.3.5配置服务器的图形化环境 2.4 RAC运行环境安装前检查 2.4.1服务器检查 2.4.2存储检查 2.4.3网络检查 2.5配置数据库服务器 2.5.1安装软件包 2.5.2修改系统参数 2.5.3配置域名解析服务 2.5.4配置hosts文件 2.5.5创建组、用户和目录 2.5.6设置环境变量 2.5.7配置SSH用户等效性 2.5.8配置时间同步服务 2.5.9安装cvuqdisk包 2.5.10 CVU验证安装环境 2.6创建ASM磁盘 2.6.1安装ASMLib驱动 2.6.2创建ASMLib磁盘 2.7部署RAC 2.7.1安装Grid Infrastructure 2.7.2安装Database DBMS 2.7.3创建ASM磁盘组 2.7.4创建RAC数据库 2.8测试RAC 2.8.1连接方式测试 2.8.2异常情况测试 2.9虚拟机搭建RAC 2.9.1虚拟机Xen简介 2.9.2启动主机Xen内核 2.9.3 Xen虚拟机创建网络环境 2.9.4创建Xen存储服务器 2.9.5创建Xen数据库服务器 2.10本章小结 第3章 Clusterware集群软件 3.1 Grid Infrastructure架构 3.1.1 GI的特点 3.1.2 GI的应用 3.1.3 Clusterware的特点 3.1.4 Clusterware增强的特性 3.2 Clusterware磁盘文件 3.2.1决磁盘 3.2.2集群注册 3.2.3本地注册 3.3 Clusterware启动流程 3.3.1启动流程 3.3.2后台进程 3.4 Clusterware隔离机制 3.4.1 Clusterware心跳 3.4.2 Clusterware隔离特性IPMI 3.4.3 RAC隔离体系 3.5网格即插即用 3.5.1 GPnP结构 3.5.2 GPnP profile文件 3.5.3 mDNS服务 3.6日志体系 3.6.1 ADR的特点 3.6.2 ADR目录结构 3.6.3命令行工具ADRCI 3.6.4 Clusterware日志文件 3.6.5 ASM实例和监听日志文件 3.6.6 Database日志文件 3.7本章小结 第4章 ASM存储软件 4.1 ASM简介 4.1.1 ASM的特点 4.1.2 ASM实例的功能 4.2 ASM磁盘组 4.2.1 ASM磁盘 4.2.2共享ASM磁盘组 4.2.3 ASM逻辑结构 4.2.4 ASM故障组 4.2.5 ASM条带化 4.3 ASM文件 4.3.1 ASM文件类型 4.3.2 ASM别名 4.3.3 ASM文件模板 4.4 ASM数据结构 4.4.1物理元数据 4.4.2虚拟元数据 4.5 ASM操作 4.5.1 RDBMS操作ASM文件 4.5.2 ASM文件的分配 4.5.3 ASM区间读写特性 4.5.4 ASM同步技术 4.5.5 ASM实例恢复和Crash恢复 4.5.6 ASM磁盘组操作 4.6 ACFS集群文件系统 4.6.1 ACFS概述 4.6.2 ADVM动态卷管理 4.6.3 ACFS快照 4.6.4 ACFS的备份和恢复 4.6.5 ACFS同ASM整合 4.7本章小结 第5章 RAC工作原理 5.1单实例并发与一致性 5.1.1数据读一致性与写一致性 5.1.2多版本数据块 5.1.3
第一篇 Oracle管理配置 第1章 Oracle安装配置(教学视频:10分钟) 23 1.1 Oracle简介 23 1.1.1 数据库术语 23 1.1.2 主流数据库简介 24 1.1.3 Oracle数据库的特点 24 1.2 安装Oracle数据库 25 1.2.1 Oracle数据库的版本变迁及安装环境 25 1.2.2 安装过程 26 1.2.3 安装中需要注意的问题 27 1.3 本章小结 28 1.4 习题 28 第2章 Oracle常用工具(教学视频:7分钟) 29 2.1 Net Configuration Assistant(网络配置助手) 29 2.1.1 监听程序配置 29 2.1.2 命名方法配置 31 2.1.3 本地Net服务名配置 32 2.2 Net Manager(网络管理员) 34 2.3 本章实例 36 2.4 本章小结 38 2.5 习题 38 第3章 SQL Plus和PL/SQL(教学视频:11分钟) 39 3.1 SQL Plus与PL/SQL简介 39 3.2 使用SQL Plus 40 3.2.1 登录SQL Plus 40 3.2.2 SQL Plus输出结果的格式化 41 3.2.3 SQL Plus小结 46 3.3 PL/SQL 46 3.3.1 PL/SQL常用开发工具 46 3.3.2 开发一个简单的PL/SQL程序 48 3.4 本章实例 49 3.5 本章小结 50 3.6 习题 50 第二篇 Oracle数据库对象 第4章 Oralce数据库(教学视频:15分钟) 51 4.1 创建Oracle数据库 51 4.2 Oracle数据库的相关术语 52 4.2.1 数据库 53 4.2.2 数据库实例和SID 53 4.2.3 ORACLE_SID 54 4.3 Oracle数据库的备份与恢复 55 4.3.1 逻辑备份/恢复(导出/导入) 55 4.3.2 物理备份/恢复 56 4.3.3 利用PL/SQL Developer备份数据库 60 4.4 本章实例 61 4.5 本章小结 61 4.6 习题 62 第5章 Oracle数据对象(教学视频:42分钟) 63 5.1 Oracle空间 63 5.1.1 Oracle空间简介 63 5.1.2 创建Oracle空间 64 5.1.3 查看空间 66 5.1.4 修改数据库默认空间 67 5.1.5 修改空间名称 68 5.1.6 删除空间 69 5.2 创建Oracle数据 70 5.2.1 利用工具创建数据 70 5.2.2 利用工具查看数据 71 5.2.3 利用命令创建数据 72 5.2.4 利用命令查看结构 72 5.3 修改Oracle数据结构 73 5.3.1 利用工具修改数据结构 73 5.3.2 利用命令修改数据结构 74 5.4 删除数据 75 5.4.1 利用工具删除数据 76 5.4.2 利用SQL语句删除数据 76 5.5 备份/恢复数据 76 5.5.1 利用工具备份/恢复数据 77 5.5.2 利用命令备份/恢复数据 82 5.6 临时表 83 5.6.1 临时表简介 83 5.6.2 会话级临时表 84 5.6.3 事务临时表 85 5.6.4 查看临时表数据库中的信息 86 5.6.5 临时表的应用场景 86 5.7 特殊的dual 87 5.7.1 分析dual 87 5.7.2 dual的应用场景 87 5.7.3 修改dual查询结果的影响 88 5.8 本章实例 89 5.9 本章小结 90 5.10 习题 90 第6章 约束(教学视频:43分钟) 91 6.1 主键约束 91 6.1.1 主键简介 91 6.1.2 创建主键约束 92 6.1.3 修改的主键约束 94 6.1.4 主键应用场景 96 6.2 外键约束 97 6.2.1 外键简介 97 6.2.2 创建外键约束 97 6.2.3 级联更新与级联删除 100 6.2.4 修改外键属性 102 6.2.5 外键使用 104 6.3 唯一性约束 105 6.3.1 唯一性约束简介 105 6.3.2 创建唯一性约束 105 6.3.3 修改唯一性约束 107 6.3.4 唯一性约束的使用 108 6.4 检查约束 108 6.4.1 检查约束简介 108 6.4.2 创建检查约束 108 6.4.3 修改检查约束 110 6.4.4 检查约束的使用 111 6.5 默认值约束 111 6.5.1 默认值约束简介 112 6.5.2 创建默认值约束 112 6.5.3 修改默认值约束 113 6.6 本章实例 115 6.7 本章小结 116 6.8 习题 116 第7章 视图(教学视频:50分钟) 117 7.1 关系视图 117 7.1.1 建立关系视图 117 7.1.2 修改/删除视图 118 7.1.3 联接视图 120 7.1.4 编译视图 122 7.1.5 使用force选项强制创建视图 124 7.1.6 利用视图更新数据 125 7.1.7 with check option选项 126 7.1.8 关系视图小结 128 7.2 内嵌视图 128 7.2.1 内嵌视图简介 128 7.2.2 内嵌视图的使用 128 7.2.3 内嵌视图小结 130 7.3 对象视图 131 7.3.1 对象视图简介 131 7.3.2 对象视图简介 131 7.4 物化视图 133 7.4.1 物化视图简介 133 7.4.2 物化视图的使用 133 7.4.3 物化视图的数据加载 135 7.4.4 物化视图的数据更新 135 7.4.5 查询重写 136 7.5 本章小结 136 7.6 本章实例 137 7.7 习题 137 第8章 函数与存储过程(教学视频:48分钟) 138 8.1 函数 138 8.1.1 函数简介 138 8.1.2 创建函数 139 8.1.3 函数中的括号 140 8.1.4 函数的参数 141 8.1.5 函数的确定性 142 8.1.6 典型函数举例 143 8.2 存储过程 144 8.2.1 存储过程简介 144 8.2.2 创建存储过程 144 8.2.3 存储过程的参数——IN参数 146 8.2.4 存储过程的参数——OUT参数 147 8.2.5 存储过程的参数——IN OUT参数 149 8.2.6 存储过程的参数——参数顺序 149 8.2.7 存储过程的参数——参数的默认值 152 8.2.8 存储过程的参数——参数顺序总结 153 8.3 程序包 153 8.3.1 规范 153 8.3.2 主体 155 8.3.3 调用程序包中的函数/存储过程 157 8.3.4 程序包中的变量 158 8.4 本章实例 159 8.5 本章小结 161 8.6 习题 161 …… 第9章 游标(教学视频:36分钟) 162 第10章 触发器(教学视频:58分钟) 178 第11章 序列(教学视频:28分钟) 206 第12章 用户角色与权限控制(教学视频:45分钟) 215 第三篇 Oracle中的SQL 第13章 Oracle数据类型(教学视频:21分钟) 231 第14章 Oracle中的函数与达式(教学视频:111分钟) 240 第15章 Oracle中的控制语句(教学视频:16分钟) 282 第16章 SQL查询(教学视频:55分钟) 290 第17章 SQL更新数据(教学视频:34分钟) 319 第四篇 Oracle编程高级应用 第18章 数据库速度优化与数据完整性(教学视频:32分钟) 332 第19章 数据一致性与事务管理(教学视频:46分钟) 341 第20章 并发控制(教学视频:35分钟) 356 第21章 Oracle中的正则达式(教学视频:29分钟) 369 第五篇 Oracle与编程语言综合使用实例 第22章 Oracle在Java开发中的应用(教学视频:38分钟) 376 第23章 Oracle在C#开发中的应用(教学视频:12分钟) 391
ORACLE常用FAQ V1.0 4 第一部分、SQL&PL/SQL 4 [Q]怎么样查询特殊字符,如通配符%与_ 4 [Q]如何插入单引号到数据库中 4 [Q]怎样设置事务一致性 4 [Q]怎么样利用游标更新数据 4 [Q]怎样自定义异常 4 [Q]十进制与十六进制的转换 4 [Q]怎么样抽取重复记录 5 [Q]怎么样设置自治事务 5 [Q]怎么样在过程中暂停指定时间 5 [Q]怎么样快速计算事务的时间与日志量 5 [Q]怎样创建临时表 6 [Q]怎么样在PL/SQL中执行DDL语句 6 [Q]怎么样获取IP地址 7 [Q]怎么样加密存储过程 7 [Q] 7 [Q] 7 [Q]如果存在就更新,不存在就插入可以用一个语句实现吗 8 [Q]怎么实现左联,右联与外联 9 [Q]怎么实现一条记录根据条件多插入 10 [Q]如何实现行列转换 11 [Q]怎么样实现分组取前N条记录 13 [Q]怎么设置存储过程的调用者权限 13 [Q]怎么快速获得用户下每个分区的记录数 13 [Q]可以利用utl_smtp包发邮件,以下是一个发送简单邮件的例子程序 14 [Q]可以利用utl_file包,但是,在此之前,要注意设置好Utl_file_dir初始化参数 15 第二部分、ORACLE构架体系 16 [Q]ORACLE的有那些数据类型 16 [Q]Oracle有哪些常见关键字,不能被用于对象名 17 [Q]怎么查看数据库版本 18 [Q]怎么查看数据库参数 18 [Q]怎么样查看数据库字符集 19 [Q]怎么样修改字符集 19 [Q]怎样建立基于函数索引 19 [Q]怎么样移动分区 20 [Q]怎么获得当前的SCN 20 [Q]ROWID的结构与组成 20 [Q]怎么样获取对象的DDL语句 20 [Q]如何创建约束的索引在别的空间上 21 [Q]怎么知道那些没有建立主键 21 [Q]dbms_output提示缓冲区不够,怎么增加 22 [Q]怎么样修改的列名 22 [Q]怎么样给sqlplus安装帮助 22 [Q]怎么样快速下载Oracle补丁 22 [Q]如何移动数据文件 23 [Q]如果管理联机日志组与成员 24 [Q]怎么样计算REDO BLOCK的大小 24 [Q]控制文件包含哪些基本内容 25 [Q]如果发现中有坏块,如何检索其它坏的数据 25 [Q]我创建了数据库的所有用户,我可以删除这些用户吗 26 第三部分、备份与恢复 28 [Q]如何开启/关闭归档 28 [Q]怎样设置定时归档 29 [Q]不同版本怎么导出/导入 29 [Q]不同的字符集之前怎么导数据 29 [Q]怎么样备份控制文件 29 [Q]控制文件损坏如何恢复 29 [Q]怎么样热备份一个空间 29 [Q]怎么快速得到整个数据库的热备脚本 30 [Q]丢失一个数据文件,但是没有备份,怎么样打开数据库 30 [Q]丢失一个数据文件,没有备份但是有该数据文件创建以来的归档怎么恢复 30 [Q]联机日志损坏如何恢复 31 [Q]怎么样创建RMAN恢复目录 31 [Q]怎么样在恢复的时候移动数据文件,恢复到别的地点 32 [Q]怎么从备份片(backuppiece)中恢复(restore)控制文件与数据文件 32 [Q]Rman的format格式中的%s类似的东西代什么意义 33 [Q]执行exec dbms_logmnr_d.build('Logminer.ora','file 34 [Q]执行execute 34 第四部分、性能调整 35 [Q]如果设置自动跟踪 35 [Q]如果跟踪自己的会话或者是别人的会话 36 [Q]怎么设置整个数据库系统跟踪 36 [Q]怎么样根据OS进程快速获得DB进程信息与正在执行的语句 37 [Q]怎么样快速重整索引 37 [Q]如何使用Hint提示 38 [Q]怎么样快速复制或者是插入数据 38 [Q]怎么避免使用特定索引 39 [Q]Oracle什么时候会使用跳跃式索引扫描 39 [Q]怎么样创建使用虚拟索引 40 [Q]怎样监控无用的索引 40 [Q]怎么样能固定我的执行计划 41 [Q]v$sysstat中的class分别代什么 42 [Q]怎么杀掉特定的数据库会话 42 [Q]怎么快速查找锁与锁等待 42 [Q] 如何有效的删除一个大(extent数很多的) 43 [Q]如何收缩临时数据文件的大小 43 [Q]怎么清理临时段 44 [Q]怎么样dump数据库内部结构,如上面显示的控制文件的结构 44 [Q]如何获得所有的事件代码 45 [Q]什么是STATSPACK,我怎么使用它? 46 第五部分、ORACLE网络与安全 47 [Q]如何限定特定IP访问数据库 47 [Q]如何穿过防火墙连接数据库 47 [Q]如何利用hostname方式连接数据库 47 [Q]dbms_repcat_admin能带来什么安全隐患 48 [Q]在不知道用户密码的时候,怎么样跳转到另外一个用户执行操作后并不影响该用户? 48 [Q]如何加固你的数据库 49 [Q]如何检查用户是否用了默认密码 49 [Q]如何修改默认的XDB监听端口 50 [Q]怎么捕获用户登录信息,如SID,IP地址等 50
第一部分 ORACLE系统优化基本知识 23 第1章 ORACLE结构回顾 23 §1.1 Oracle数据库结构 23 §1.1.1 Oracle数据字典 23 §1.1.2 空间与数据文件 24 §1.1.3 Oracle实例(Instance) 24 §1.2 Oracle文件 26 §1.2.1 数据文件 26 §1.2.2 控制文件 26 §1.2.3 重做日志文件 26 §1.2.4 其它支持文件 26 §1.3 数据块、区间和段 28 §1.3.1 数据块(data block) 28 §1.3.2 区间(extent) 28 §1.3.3 段(segment) 28 §1.4 SQL语句处理 29 §1.4.1 SQL语句处理顺序 29 §1.4.2 COMMIT语句处理顺序 32 §1.5 共享池 33 §1.6 块缓存(数据高速缓冲区) 33 §1.7 数据库写入进程 34 §1.8 日志写进程 34 §1.9 数据库检查点 34 §1.10 归档处理 35 §1.11 程序全局区(PGA) 35 第2章 警告日志与跟踪日志 35 §2.1 警告与日志文件 36 §2.1.1 经常查看警告日志文件内容 36 §2.1.2 熟悉警告日志的事件或消息 36 §2.1.3 分析警告日志错误 40 §2.2 对警告日志进行归档 43 §2.3 跟踪文件 44 §2.3.1 跟踪文件的产生 44 §2.3.2 分析跟踪文件的信息 45 §2.3.3 跟踪文件的内容 45 §2.4 关于NET的日志与跟踪 47 §2.4.1 日志文件(LOG File) 47 §2.4.1.1 日志中的错误信息 47 §2.4.1.2 日志文件的命名 47 §2.4.1.3 设置日志参数 48 §2.4.1.4 在配置文件中设置日志参数 49 §2.4.1.5 在运行控制实用程序中设置日志参数 50 §2.4.1.6 理解监听日志中信息 50 §2.4.1.7 理解连接管理器信息 53 §2.4.2 跟踪文件( Trace File ) 53 §2.4.2.1 跟踪文件的命名: 54 §2.4.2.2 参数设置与初始化文件: 54 §2.4.2.3 在控制实用程序运行中设置跟踪参数 56 §2.4.2.4 服务器/客户包跟踪 57 §2.4.2.5 评估NET跟踪信息 58 §2.4.2.6 使用跟踪助理(Trace Assistant)检查跟踪文件 60 第3章 初始化参数、SQL脚本文件 63 §3.1 初始化参数文件 63 §3.2 在参数文件中指定参数值 64 §3.2.1 参数文件中的规则控制 64 §3.2.2 在参数值中使用特殊字符 65 §3.2.3 修改参数值 66 §3.2.4 显示当前参数值 69 §3.2.5 参数的使用 69 §3.2.6 参数的类型 69 §3.2.7 不能在参数文件中指定的参数 70 §3.2.8 当参数指定错误时怎么办? 70 §3.3 参数内容说明 70 §3.4 DBA常用参数说明 71 §3.4.1 跟踪文件路径(BACKGROUND_DUMP_DEST) 71 §3.4.2 在缓冲区驻留对象(BUFFER_POOL_KEEP) 71 §3.4.3 版本兼容(COMPATIBLE) 72 §3.4.4 控制文件路径(CONTROL_FILES) 72 §3.4.5 CPU个数(CPU_COUNT) 72 §3.4.6 数据缓冲区块数(DB_BLOCK_BUFFERS) 72 §3.4.7 数据块大小(DB_BLOCK_SIZE) 73 §3.4.8 读数据块数(DB_FILE_MULTIBLOCK_READ_COUNT) 73 §3.4.9 数据文件的数目(DB_FILES) 73 §3.4.10 全局数据库名(GLOBAL_NAMES) 74 §3.4.11 数据库实例名(INSTANCE_NAME) 74 §3.4.12 许可的最大会话数(LICENSE_MAX_SESSIONS) 74 §3.4.13 许可的最大用户数(LICENSE_MAX_USERS) 74 §3.4.14 许可的会话警告(LICENSE_SESSIONS_WARNING) 75 §3.4.15 归档文件目标路径(LOG_ARCHIVE_DEST) 75 §3.4.16 归档文件目标路径(LOG_ARCHIVE_DEST_ n) 75 §3.4.17 日志缓冲区大小(LOG_BUFFER) 76 §3.4.18 检查点块数(LOG_CHECKPOINT_INTERVAL) 76 §3.4.19 检查点间隔(LOG_CHECKPOINT_TIMEOUT) 76 §3.4.20 对大卸出文件大小(MAX_DUMP_FILE_SIZE) 76 §3.4.21 对大回滚段数(MAX_ROLLBACK_SEGMENTS) 77 §3.4.22 打开的光标数(OPEN_CURSORS) 77 §3.4.23 优化方式(OPTIMIZER_MODE) 77 §3.4.24 进程数(PROCESSES) 77 §3.4.25 回滚段名称(ROLLBACK_SEGMENTS) 78 §3.4.26 服务名(SERVICE_NAMES) 78 §3.4.27 会话的数(SESSIONS) 78 §3.4.28 共享池大小(SHARED_POOL_SIZE) 78 §3.4.29 分类区的大小(SORT_AREA_SIZE) 79 §3.4.30 用户卸出文件的路径(USER_DUMP_DEST) 79 §3.5 SQL脚本文件 79 §3.5.1 建立数据字典的脚本 79 §3.5.2 建立附加的数据字典 80 §3.5.3 带“NO”的脚本 81 §3.5.4 移植的脚本 81 §3.5.5 JAVA脚本 81 第6章 性能优化基础知识 82 §5.1 理解ORACLE性能优化 82 §5.1.1 响应时间与吞吐量的折衷 82 §5.1.2 临界资源 83 §5.1.3 过度请求的影响 83 §5.1.4 调整以解决问题 83 §5.2 优化的执行者 84 §5.3 设置性能目标 84 第7章 系统优化方法 85 §6.1 何时优化效率最高 85 §6.1.1 系统设计阶段和开发阶段的优化 85 §6.1.2 改善产品系统的优化 85 §6.2 优化的优先步骤 86 §6.2.1 步骤1:优化商业规则 86 §6.2.2 步骤2:优化数据设计 87 §6.2.3 步骤3:优化应用程序设计 87 §6.2.4 步骤4:优化数据库的逻辑结构 87 §6.2.5 步骤5:优化数据库操作 87 §6.2.6 步骤6:优化访问路径 88 §6.2.7 步骤7:优化内存分配 88 §6.2.8 步骤8:优化I/O和物理结构 89 §6.2.9 步骤9:优化资源争用 89 §6.2.10 步骤10:优化所采用的平台 89 §6.3 应用优化方法 90 §6.3.1 设定明确的优化目标 90 §6.3.2 创建最少可重复测试 90 §6.3.3 测试假想 90 §6.3.4 记录和自动测试 90 §6.3.5 避免常见错误 90 第二部分 ORACLE应用系统设计优化 91 第8章ORACLE数据库系统优化安装 91 §7.1 应用系统环境规划和Oracle系统安装考虑 91 §7.1.1 操作系统安装考虑 91 §7.1.2 Oracle系统安装考虑 92 §7.2 关于创建多个Oracle实例问题 93 §7.3 Oracle系统安装后的优化基础工作 94 §7.3.1 Oracle系统有关目录所有文件的保护 94 §7.3.2 避免新用户使用默认system系统空间 94 §7.4 Oracle系统所在服务器的独立性 94 第9章 项目分析、设计与管理 94 §9.1 项目分析要点考虑 95 §9.1.1 对应用系统类型的认识 95 §9.1.2 软件项目计划 95 §9.1.3 开发环境资源的配置 96 §9.1.4 各种人员的招募要求 96 §9.1.5 开发组工作的开始 96 §9.2 应用系统运行环境分析 96 §9.2.1 数据库服务器性能的考虑 97 §9.2.2 数据库服务器硬盘空间的估计 97 §9.2.3 应用服务器的考虑 98 §9.2.4 网络带宽的考虑 98 §9.4 数据库逻辑设计 98 §9.4.1 系统空间 98 §9.4.2 数据空间和索引空间分开 99 §9.4.3 回滚段设置 99 §9.4.4 临时表空间设计规划 100 §9.4.5 数据文件和日志文件在不同磁盘上 101 §9.5 数据库物理设计 101 §9.5.1 定量估计 101 §9.5.2 空间与数据文件 102 §9.5.3 物理设计原则 103 §9.5.4 数据库物理设计内容和步骤 103 §9.6 开发过程管理 104 §9.6.1 应用软件生命周期阶段的管理 105 §9.6.2 成功的三要素 106 §9.6.3 培植过程 106 §9.6.3.1 定义环境 107 §9.6.3.2 角色定义 107 §9.6.3.3 方案报告 107 §9.7 确定应用程序类型 108 §9.7.1 在线事务处理(OLTP) 108 §9.7.2 决策支持系统(DSS) 109 §9.7.3 多用途应用程序 109 §9.8 注册应用程序 109 §9.9 Oracle配置 110 §9.9.1 分布式系统 110 §9.9.2 多层系统 110 §9.9.3 Oracle并行服务器 110 §9.10 Oracle数据库增长的规划 111 §9.10.1 不同增长的配置 111 §9.10.2 对增长进行规划和分析 112 第10章 数据库结构设计要点 113 §10.1 分析阶段的对的理解 113 §10.2 正确的主键字段的选择 113 §10.3 字段类型及长度的选择 113 §10.3.1 如果能用字符型就不要用数字型 114 §10.3.2 相互产生运算的数字型字段长度和精度要一致 114 §10.3.2 不要为了节省空间而将字段的长度缩小或拆开 115 §10.4 将LOB类型的字段与其它的类型分开 115 §10.5 采用具有编码的设计方法 115 §10.6 建立公共字典 115 §10.7 哪种类型的设为cache 方式 116 §10.8 数据和索引分开原则 116 §10.9 是否采用簇和分区 116 §10.10 和索引的空间预分配 116 §10.11 确定数据库对象存储大小 117 §10.11.1 非簇的大小计算 117 §10.11.2 索引大小计算 119 §10.11.3 簇的大小计算 120 §10.11.4 位图索引的大小计算 122 §10.12 应用类型设计考虑要点 122 §10.13 应用系统性能优化原则 123 §10.13.1 分而治之 123 §10.13.2 预分配,预支取,预编译 123 §10.13.3 筛选 124 §10.13.4 大量(bluk),块和批处理 124 §10.13.5 对应用适当的分段 124 §10.13.6 优化目标 124 §10.13.7 优化步骤和方法 125 §10.13.8 使用ORACLE 诊断工具 126 第三部分 ORACLE应用系统开发优化 128 第11章 诊断与调整工具- 128 §11.1 警告日志文件 128 §11.1.1 警告日志文件管理 128 §11.1.2 参考警告日志文件调整 128 §11.2 后台进程与跟踪文件 128 §11.3 用户跟踪文件 128 §11.4 动态性能视图 129 §11.5 UTLBSTAT和UTLESTAT 129 §11.6 STATSPACK 129 §11.7 Oracle等待事件 129 §11.8 Oracle诊断和调整包 129 第12章 优化SQL语句 130 §12.1 SQL语句的优化方法 130 §12.1.1 重新构造语句 130 §12.1.2 调整或使触发器无效 137 §12.1.3 重组数据 137 §12.2 优化目标 137 §12.2.1 优化序列SQL语句 137 §12.2.2 优化并行执行 138 §12.2.3 调整OLTP应用 138 §12.3 实际优化例子 139 §12.3.1 避免基于规则优化器技术 139 §12.3.2 索引代价 139 §12.3.3 分析统计数据 139 §12.3.4 避免复杂的达式 142 §12.3.5 处理复杂的逻辑 143 §12.3.6 一般的SQL语句优化 143 §12.4 SQL语句优化技巧 144 §12.4.1 对所有SQL语句执行EXPLAIN_PLAN 145 §12.4.2 磁盘读和缓冲区获取 146 §12.4.3 判定式崩溃 146 §12.5 使用EXISTS和IN 148 §12.6 分离事务(Discrete Transactions ) 149 §12.7 测试SQL语句性能 151 §12.7.1 SQL_Trace实用工具 151 §12.7.2 TKPROF实用程序 151 §12.8 使用SQL_Trace和TKPROF 151 §12.8.1 设置跟踪初始化参数 152 §12.8.2 启用SQL_Trace实用工具 152 §12.8.3 用TKPROF格式化跟踪文件 153 §12.8.4 解释TKPROF输出文件 155 §12.8.5 解释计划(Explain Plan)策略 156 §12.8.6 AUTOTRACE 实用程序 157 第13章 数据访问方法 160 §13.1 使用索引的访问方法 161 §13.1.1 何时创建索引 161 §13.1.2 索引列和达式的选择 161 §13.1.3 选择复合索引的主列 161 §13.1.4 要用可选择性索引 162 §13.1.5 测量索引的可选择性 162 §13.1.6 避免全扫描 163 §13.1.7 编写避免使用索引的语句 163 §13.1.8 编写使用索引的语句 164 §13.1.9 重新构造索引 164 §13.1.10 压缩索引 165 §13.2 创建索引和使用索引 165 §13.2.1 使用函数索引 165 §13.2.2 使用位图索引- 166 §13.2.3 使用B树索引- 166 §13.2.4 使用反向键索引- 166 §13.2.5 使用索引组织 166 §13.3 使用范围索引 166 §13.4 使用簇 - 167 §13.5 使用Hash 簇 - 168 §13.5.1 何时创建Hash 簇 168 §13.5.2 创建Hash 簇 168 §13.6 使用实体视图 - 169 §13.6.1 实体视图概念 169 §13.6.2 创建实体视图 169 §13.6.3 使用实体视图 169 §13.6.4 管理实体视图 169 第14章 优化器(Optimizer)简介 170 §14.1 Oracle优化器 170 §14.2 SQL处理体系结构 171 §14.2.1 解析程序 171 §14.2.2 优化程序 172 §14.2.3 行源程序产生器 172 §14.2.4 SQL执行 172 §14.3 EXPLAIN PLAN 172 §14.4 选择优化器路径及目标 172 §14.4.1 OPTIMIZER_MODE初始参数 173 §14.4.2 数据字典中的统计数据 173 §14.4.3 ALTER SESSION语句的OPTIMIZER_GOAL参数 174 §14.4.4 关于提示的改变目标 174 §14.5 基于代价优化器(CBO) 174 §14.5.1 CBO结构调整 175 §14.5.2 CBO需求 175 §14.5.3 使用CBO 176 §14.5.4 CBO访问路径 176 §14.6 基于规则(RBO)的优化程序 177 §14.6.1 RBO访问路径 178 §14.7 优化器操作 179 §14.7.1 可优化的SQL语句 180 §14.7.2 优化程序操作 180 §14.7.3 基于规则或基于代价优化方法 180 §14.8 优化连接* 181 §14.8.1 嵌套连接- 181 §14.8.2 合并连接- 183 第15章 使用优化器提示 183 §15.1 提示(Hint)概念 184 §15.1.1 提示的指定 184 §15.2 使用提示 185 §15.2.1 提示的指定 185 §15.2.1.1 ALL_ROWS 186 §15.2.1.2 FIRST_ROWS 186 §15.2.1.3 CHOOSE 186 §15.2.1.4 RULE 187 §15.2.2 关于访问方法的提示 187 §15.2.2.1 FULL 187 §15.2.2.2 ROWID 188 §15.2.2.3 CLUSTER 188 §15.2.2.3 HASH 188 §15.2.2.4 INDEX 188 §15.2.2.5 INDEX_ASC 189 §15.2.2.6 INDEX_COMBINE 189 §15.2.2.7 INDEX_JOIN 189 §15.2.2.8 INDEX_DESC 189 §15.2.2.9 INDEX_FFS 190 §15.2.2.10 NO_INDEX 190 §15.2.2.11 AND_EQUAL 190 §15.2.2.12 USE_CONCAT 190 §15.2.2.13 NO_EXPAND 190 §15.2.2.14 REWRITE 191 §15.2.2.15 NOWRITE 191 §15.2.3 关于连接次序的提示 191 §15.2.3.1 ORDERED 191 §15.2.3.2 STAR 191 第四部分 ORACLE系统调整 194 第16章 调整信息的来源 194 §16.1 警告日志文件 194 §16.1.1 警告日志文件信息 194 §16.1.2 管理警告日志文件 196 §16.2 后台、事件及用户跟踪文件 196 §16.2.1 后台跟踪文件 196 §16.2.2 事件跟踪 197 §16.2.3 用户跟踪文件 197 §16.2.4 管理跟踪文件 200 §16.3 性能调整视图 200 §16.3.1 常用性能优化视图V$_ 200 §16.3.2 常用性能优化视图DBA_ 201 §16.3.3 视图查询例子 201 §16.4 Oracle支持的调整脚本 202 §16.4.1 UTLBSTAT.SQL与UTLESTAT.SQL 202 §16.4.2 解释REPORT.TXT内容 203 §16.5 Oracle的STATSPACK 203 §16.6 图形性能调整工具 203 §16.6.1 Oracle 企业管理器/Oracle DBA 管理包 203 §16.6.2 OEM使用* 203 第17章 STATSPACK工具 204 §17.1 STATSPACK介绍 204 §17.1.1 STATSPACK与UTLBSTAT/UTLESTAT比较 204 §17.1.2 STATSPACK工作流程 204 §17.2 配置STATSPACK 205 §17.3 statspack安装 205 §17.3.1 交互安装STATSPACK 205 §17.3.2 批模式安装STATSPACK 206 §17.4 使用statspack 206 §17.4.1 取得STATSPACK快照 206 §17.4.2 自动进行统计搜集 207 §17.4.3 运行statspack性能报告 208 §17.4 删除statspack 209 §17.5 statspack支持的脚本和文档 209 第18章 动态性能视图与性能诊断 211 §18.1 当前会话状态视图 211 §18.2 计数和积累视图 211 §18.3 信息视图 212 §18.4 当前统计值与变化比率 213 §18.4.1 当前统计值与变化比率 213 §18.4.2 找出统计值的变化率 213 §18.5 有计划地调整系统的因子 214 §18.6 不足的CPU 214 §18.7 不足的内存 215 §18.8 I/O限制 215 §18.9 网络限制 215 §18.9 软件限制 216 第19章 调整内存分配 217 §19.1 理解内存分配要求 217 §19.2 监测内存分配问题 217 §19.3 调整操作系统内存需求 218 §19.4 调整Redo Log Buffer 219 §19.4.1观察Redo Log Buffer是否有竞争 219 §19.4.1.1 使用V$SYSSTAT 219 §19.4.1.2 使用V$SESSION_WAIT 221 §19.4.1.3 使用REPORT.TXT输出 222 §19.4.1.4 使用OEM监示Redo Log Buffer* 222 §19.4.1.5 使用V$SYSTEM_EVENT 223 §19.4.1.6 使用警告日志(Alert Log) 223 §19.4.2 调整Redo Log Buffer性能 223 §19.4.2.1 将Redo Log Buffer参数改大 223 §19.4.2.2 改善检查点效率 224 §19.4.2.3 加速归档处理 224 §19.4.2.4 减少重做日志产生 224 §19.5 调整共享池 225 §19.5.1 理解共享池的用途 225 §19.5.2 缓存语句的好处 225 §19.5.3 Shared Pool 部件 226 §19.5.4 测试Shared Pool 的性能 227 §19.5.5 用OEM测试Shared Pool 的性能- 231 §19.5.6 改善Shared Pool 的性能 231 §19.5.6.1 较大的Shared Pool 231 §19.5.6.2 给大的PL/SQL 语句一个空间 231 §19.5.6.3 在内存中保持PL/SQL 代码 232 §19.5.6.4 鼓励代码重用 233 §19.5.6.5 建立大的POOL 233 §19.6 调整数据缓冲区 234 §19.6.1 理解数据库缓冲区 234 §19.6.1.1 LRU列 234 §19.6.1.2 脏(Dirty)列 234 §19.6.1.3 用户服务器进程 235 §19.6.1.4 数据库写进程 235 §19.6.2 测试数据库缓冲区 235 §19.6.2.1 查询V$SYSSTAT 235 §19.6.2.2 使用V$SESS_IO和V$SESSION 236 §19.6.2.3 使用REPORT.TXT* 236 §19.6.2.4 使用OEM工具* 236 §19.6.3 改善数据库缓冲区性能* 236 §19.6.3.1 将参数改大些 236 §19.6.3.2 使用多个Buffer Pool 237 §19.6.3.3 将缓存在内存中 242 第20章 调整物理I/O 243 §20.1 理解I/O问题 243 §20.1.1 调整 I/O: 自顶向下和自底向上 243 §20.1.2 分析 I/O需求 244 §20.2 调整数据文件I/O性能 245 §20.2.1 测试数据文件 I/O 245 §20.2.2 改善数据文件 I/O 246 §20.3 调整数据库写入器性能 248 §20.3.1 测试DBWR0 I/O 248 §20.3.2 改善DBWR0 I/O 250 §20.4 调整段的I/O 250 §20.4.1 理解 块I/O 251 §20.4.2 改善段块I/O 251 §20.5 调整checkpoint 和CKPT 的I/O 253 §20.6 调整归档及ARCO的I/O 253 §20.6.1 测量归档和ARCO I/O 254 §20.6.2 改善归档和ARCO I/O 255 §20.7 调整排序的I/O 256 §20.7.1 理解排序活动 256 §20.7.2 改善排序I/O 257 第21章 Oracle系统运行中的资源竞争 259 §21.1 理解锁存器竞争 259 §21.1.1 锁存器概念 259 §21.1.2 锁存器的类型 260 §21.2 检测锁存器竞争问题 260 §21.2.1 从V$LATCH中查询锁存器的竞争 261 §21.2.2 用STATSPACK报告锁存器的竞争 262 §21.3 减少锁存器竞争 262 §21.3.1 减少锁存器竞争的主要点 262 §21.3.2 共享池与库高速缓存锁存器 264 §21.3.3 减少重做日志缓冲区锁存器竞争 264 §21.3.3.1 检查重做日志竞争 268 §21.3.3.2 分析重做日志竞争 269 §21.3.3.3 减少锁存器的竞争 270 §21.3.4 减少对LRU锁存器的竞争 270 §21.4 减少自由列的竞争 270 §21.4.1 检测free list是否存在竞争 271 §21.4.2 调整free list以减少竞争 272 §21.5 减少对并行服务器的竞争 273 §21.5.1 确定并行服务器存在竞争 273 §21.5.2 降低并行服务器竞争 273 第23章 各种锁和完整性 274 §22.1 锁的概念 274 §22.2 分析v$lock 277 §22.2.1 用lock table锁定 278 §22.2.2 会话更新专用锁定的行- 279 §22.2.3 一个会话试图更新另一个会话更新过的行 279 §22.2.4 显式锁下的并发例子- 280 §22.3 监控系统中的锁 281 §22.3.1 查询V$LOCK是否存在争用 282 §22.3.2 查询V$LOCKED_OBJECT是否存在争用 283 §22.3.3 查询DBA_WAITERS是否存在争用 284 §22.3.4 查询DBA_BLOCKERS是否存在争用 285 §22.4 管理锁的竞争 285 §22.4.1 查询产生锁的SQL语句 286 §22.4.2 怎样释放锁 286 §22.5程序死锁的产生与避免 287 §22.5.1 程序死锁原因 287 §22.5.2 避免程序死锁方法 288 §22.5.3 程序死锁例子 288 §22.5.4 避免程序死锁例子 290 第23章 调整回滚段竞争 292 §23.1 回滚段的用途 292 §23.2 监测回滚段的竞争 292 §23.3 调整回滚段的竞争 294 §23.3.1 最小化回滚段的扩展 294 §23.3.2 分布回滚段的I/O 294 §23.3.3 调整回滚段的存储参数 295 §23.3.4 使用较小的回滚段 295 §23.4 Oracle9i的自动撤消管理 296 §23.4.1 自动管理撤消 296 §23.4.2 自动撤消管理空间的建立 296 §23.4.3 检测自动撤消管理空间的使用 297 第25章 调整共享服务器 298 §24.1 查询调度程序视图监测竞争 299 §24.2 降低调度程序竞争 299 §24.3 降低对共享池的竞争 301 §24.4 确定最佳的调度程序和共享服务器数 303 第25章 操作系统与网络调整* 305 §25.1 理解操作系统性能问题 305 §25.1.1操作系统与硬件高速缓存 305 §25.1.2原始设备系统 305 §25.1.3进程调度程序 306 §25.1.4操作系统资源管理器 306 §25.2 检测操作系统性能问题 306 §25.3 解决操作系统性能问题- 307 §25.3.1调整服务器内存相关的参数 307 §25.3.2基于UNIX系统的执行 308 §25.3.3基于NT系统的执行 308 §25.3.4基于大型系统的执行 309 §25.4 网络系统性能问题 309 §25.4.1 网络的连接模式 309 §25.4.1.1 多线程服务配置 309 §25.4.1.2 注册检查 311 §25.4.1.3 预产生专用服务配置 312 §25.4.2 检测网络故障 313 §25.4.2.1 使用动态数据字典检测 313 §25.4.2.2 了解网络环境的速率 313 §25.4.3 解决网络故障 314 §25.4.3.1 分析瓶颈所在 314 §25.4.3.2 分析瓶颈信息 315 §25.4.3.3 调整阵列接口 316 §25.4.3.4 调整数据单元缓冲区大小 316 §25.4.3.5 在protocol.ora中加TCP.NODELAY 316 §25.4.3.6 使用连接管理器 316 第27章 数据库关闭/启动工作 317 §27.1 删除或归档旧的跟踪文件和跟踪日志 317 §27.2 重新命名警报日志 317 §27.3 产生创建控制文件命令* 318 §27.4 驻留程序包 318 §27.5 创建拥有者-对象的位图 319 §27.6 重新计算统计资料 320 §27.7 缩小扩展超过最佳值的回滚段* 320 第48章 调整实例恢复性能*(tuning 24) 321 §48.1 理解实例恢复* 321 §48.2 调整实例延迟及碰撞恢复* 321 §48.3 监示实例恢复* 321 §48.4 实例恢复阶段调整* 321 第49章 应用程序性能调整* 321 §49.1 在基上创建索引 321 §49.1.1 何时创建B*树索引 321 §49.1.2何时创建位图树索引 322 §49.1.3何时创建逆关键字索引 322 §49.1.4何时不要建索引 322 §49.2 在select 语句上使用索引 323 §49.2.1评估索引的使用情况 323 §49.2.2避免不使用索引的SQL语句 323 §49.3 把具有大量数据I/O的处理放在服务器上 324 §49.4 在内存中保持PL/SQL 代码 324 §49.5 鼓励代码重用 325 §49.6 将缓存在内存中 326 §49.7 了解SQL语句的速度差别 326 §49.8 在结构设计和select语句中用decode 327 §49.9 将LOB类型单独存放 328 §49.10 分而治之 329 第50章 内存和CPU的优化 330 §50.1 应用类型 330 §50.1.1 oracle 如何响应OLTP数据访问请求 330 §50.1.2 oracle 如何响应批数据访问请求 330 §50.2 如何计算命中率 331 §50.3 影响命中率的因素 332 §50.3.1 字典活动 332 §50.3.2 临时段的活动 332 §50.3.3 回滚段的活动 332 §50.3.4 索引活动 333 §50.3.5 扫描 333 §50.3.6 OLTP和批应用类型 333 §50.4 内存和CPU的优化调整问题 334 §50.5 为应用选择目标命中率 334 §50.6 内存和CPU 的要求 335 第五部分 ORACLE系统高级用法介绍 340 第52章 安全管理+ 341 §52.1 用户验证 341 §52.1.1 数据库验证 341 §52.1.2 外部验证 341 §52.1.3 企业验证 341 §52.2 数据库权限管理 341 §52.2.1 理解安全角色 341 §52.2.2 理解管理 341 §52.2.3 数据库验证 341 §52.3 ORACLE 企业安全管理器 341 §52.4 监控数据库资产 341 §52.4.1 审计登录 341 §52.4.2 审计数据库操作 341 §52.4.3 审计数据库对象上的DML 341 §52.4.4 管理审计 341 §52.5 保护数据完整性 342 §52.6 Oracle 8I 因特网安全 342 §52.6.1 使用数字证书 342 §52.6.2 使用RADIUS协议的高级验证 342 §52.7 防火墙支持 342 §52.8 好的粒状存取控制 342 §52.9 数据库资源管理器 342 §52.10 硬件安全 342 §52.11 恢复丢失的数据 342 §52.11.1 操作系统备份 342 §52.11.2 逻辑备份 342 第53章 分布式数据库管理 342 §53.1 分布式数据库概念 343 §53.1.1 同质分布数据库 343 §53.1.2 异类分布数据库系统 344 §53.1.3 客户/服务器数据库结构 344 §53.2 数据库连接 344 §53.2.1 为什么使用数据库连接 344 §53.2.2 数据库连接中的全局名称 344 §53.2.3 数据库连接中的命名 345 §53.2.4 数据库连接中的类型 345 §53.3 分布数据库管理 346 §53.3.1 站点自治 346 §53.3.2 分布数据库安全 346 §53.3.3 审计数据库连接 347 §53.3.4 管理工具 347 §53.4 分布数据库事务处理 348 §53.4.1 远程SQL语句 348 §53.4.2 分布SQL语句 349 §53.4.3 远程共享SQL语句和分布语句 349 §53.4.4 远程事务 349 §53.4.5 分布事务 350 §53.4.6 两阶段提交机制 350 §53.4.7 数据库连接名称的解析 350 §53.5 分布数据库应用开发 351 §53.5.1 分布数据库系统的透明性 351 §53.5.2 分布查询的优化 352 §53.6 民族语言的支持 352 §53.7 管理分布系统全局名称 352 §53.7.1 理解全局数据库名字版式 352 §53.7.2 确定全局数据库名字执行 353 §53.7.3 浏览全局数据库名 353 §53.7.4 在全局数据库名中改变域名 354 §53.7.5 改变全局数据库名 354 §53.8 建立数据库连接 357 §53.8.1 建立数据库连接的权限 357 §53.8.2 指定数据库连接类型 357 §53.8.3 指定连接用户 358 §53.9 建立共享数据库连接 359 §53.9.1 建立共享数据库连接 359 §53.9.2 管理数据库连接 360 §53.10 浏览数据库连接 361 §53.11 建立位置透明性 364 §53.12 分布事务 364 §53.13 设置分布事务初始化参数 364 §53.14 查看分布事务信息 365 §53.15 处理怀疑的事务 366 §53.16 手工处理处理怀疑的事务 366 第54章 复制管理- 367 §54.1 复制概念 367 §54.1.1 复制对象、组及站点 367 §54.1.2 复制环境类型 368 §54.1.3 复制环境管理工具 369 §54.2 主机概念与结构 370 §54.2.1 什么是主机复制 370 §54.2.1 主群组 371 §54.2.2 快照组 371 §54.3 传播的类型 371 §54.3.1 异步传播 371 §54.3.2 同步传播 371 §54.4 复制的类型 371 §54.4.1 行级复制 371 §54.4.2 串行传播 371 §54.4.3 并行传播 371 §54.4.4 过程化复制 371 §54.5 冲突解决 371 §54.5.1 冲突的类型 371 §54.5.2 避免冲突 371 §54.5.3 鉴别冲突 371 §54.5.4 解决冲突 371 §54.6 快照 371 §54.7 一些有用的工具 372 §54.8 ORACLE8 和ORACLE8I的新功能 372 §54.8.1 ORACLE8复制的新功能 372 §54.8.2 ORACLE8I复制的新功能 372 §54.9 小结 372 第56章 Oracle并行服务器安装与配置 373 §56.1 硬件环境概述 373 §56.2 Oracle并行服务器 374 §56.2.1 Oracle并行服务器组成 374 §56.2.2 Oracle动态并行执行 375 §56.3 Oracle并行服务器 375 §56.3.1 Oracle并行服务器概述 375 §56.3.2 Oracle并行服务器软件组成 376 §56.3.3 Oracle并行服务器安装概述 376 §56.3.3 数据库配置概述 377 §56.4 Oracle并行服务器安装前任务 377 §56.4.1 并行服务器节点硬件或软件环境需求 377 §56.4.2 企业管理器的硬件或软件环境需求 377 §56.4.3 共享磁盘子系统 378 §56.5 设置原始设备 378 §56.6 安装前步骤 381 §56.7 安装过程 382 §56.8 Oracle的安装配置 382 §56.9 监听器(listener.ora ) 383 §56.10 目录服务访问(ldap.ora ) 384 §56.11 Net服务名(tnsnames.ora ) 384 §56.12 PROFILE文件(SQLNET.ORA ) 386 §56.13 安装之后建立数据库 387 §56.13.1 用Oracle数据库配置助理建立数据库 387 §56.13.2 用手工建立数据库 388 §56.14 以并行模式启动立数据库 388 §56.15 确认实例在运行 389 §56.16 Oracle并行服务器客户端配置 389 §56.17 Oracle并行服务器参数文件 390 §56.18 配置恢复管理器 392 §56.19 为RMAN配置目录 392 §56.20 并行服务器管理结构 395 §56.21 并行实例的启动 395 §56.22 并行实例的关闭 396 第57章 并行环境应用设计 397 §57.1 分析应用 397 §57.1.1 只读的 397 §57.1.2 随机的查询与修改 397 §57.1.3 插入、修改与删除 397 §57.1.4 建立逆序键索引 398 §57.1.5 应用分区技术 398 §57.2 并行环境的数据库设计技术 400 §57.2.1 数据库操作、块类型及访问控制 400 §57.2.2 全局缓冲区的一致性工作和块种类 400 §57.2.3 产生数据库对象参数建议 401 §57.2.4 索引问题 401 §57.2.5 使用序列号 401 §57.2.6 逻辑和物理数据库布局 402 §57.2.6 全局缓存锁分配 403 §57.3 并行缓存设置 403 §57.3.1 并行缓存管理锁的设置 403 §57.3.2 Oracle 如何给块分配锁 404 §57.4 并行服务器应用的调整- 405 §57.4.1 调整并行服务器概述 406 §57.4.2 统计并行服务器性能 406 §57.4.3 确定同步代价 407 §57.4.4 初始化并行执行参数 408 §57.4.5 普通参数的调整 409 §57.4.5.1 并行操作中资源限制的参数 409 §57.4.5.2 影响资源消耗的参数 411 §57.4.5.3 与I/O相关的参数 412 第58章 并行查询管理 414 §58.1 Oracle并行选项、管理及调整 414 §58.1.1 Oracle并行选项 414 §58.1.2 Oracle并行选项设置 414 §58.1.2.1 用户的限制设置 414 §58.1.2.2 分配查询服务器进程 415 §58.1.2.3 并行度及其设置 415 §58.1.2.4 关于提示和查询提示强行并行 417 §58.1.2.5 监视并行查询情况 417 §58.2 并行数据加载(SQL*Loader) 417 §58.3 并行恢复 418 §58.4 并行SQL执行 418 §58.5 可以并行的SQL操作 419 §58.6 理解并行DML 420 §58.7 并行创建数据库和索引 420 §58.7.1 并行创建数据库 421 §58.7.2 并行创建索引 422 §58.8 并行性能有关的视图 422 第60章 高级安全管理 423 §120.1 Oracle的高级安全 423 附录A 动态性能视图(V$) 423 附录B 初始化参数 513 附录C 基本概念解释 514 C.1 分页是什么?,如何避免分页?* 514 C.2 检查点是什么?* 514 C.3 什么是模式? 514 C.4 B树索引 514 C.5 位图索引* 515 C.6 Oracle的锁机制 515 C.6.1 自动锁和显式锁 515 C.6.2 锁的级别 516 C.6.3 DML锁 516 C.6.4 DDL锁 518 C.6.5 锁存器与内部锁(Latches and Internal Locks) 518 C.7 Oracle的哈希簇(HASH CLUSTER) 519 C.7.1 在Hash Cluster中数据是如何存放的 519 C.7.2 Hash 键值 521 C.7.3 Hash 函数 521 C.8 Oracle的嵌套(Nested table) 523

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蚩尤后裔-汪茂雄

芝兰生于深林,不以无人而不芳。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值