同一进程中的不同线程,他们读取到同个共享变量的值为什么会不一致

      处理器可以使用高速缓存加速对内存的访问(或者编译器可以将值存储到寄存器中以便进行更快的访问)。在一些多处理器体系结构上,假如在一个处理器的高速缓存中修改了内存位置,没有必要让其它处理器看到这一修改,直到刷新了写入器的高速缓存并且使读取器的高速缓存无效。
  
  这表示在这样的系统上,对于同一变量,在两个不同处理器上执行的两个线程可能会看到两个不同的值!

      解决这个问题的其中一个方法是用volatile。

      当一个变量被声明成 volatile,任何对该变量的写操作都会绕过高速缓存,直接写入主内存,而任何对该变量的读取也都绕过高速缓存,直接取自主内存。这表示所有线程在任何时候看到的 volatile 变量值都相同。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
net的最近面试经典试题ASP.NET面试题集合 1. 简述 private、 protected、 public、 internal 修饰符的访问权限。 答 . private : 私有成员, 在类的内部才可以访问。 protected : 保护成员,该类内部和继承类可以访问。 public : 公共成员,完全公开,没有访问限制。 internal: 在同一命名空间内可以访问。 2 .列举ASP.NET 页面之间传递的几种方式。 答. 1.使用QueryString, 如....?id=1; response. Redirect().... 2.使用Session变量 3.使用Server.Transfer 3. 一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现。 答:public class MainClass { public static void Main() { Console.WriteLine(Foo(30)); } public static int Foo(int i) { if (i 0 && i <= 2) return 1; else return Foo(i -1) + Foo(i - 2); } } 4.C#的委托是什么?事件是不是一种委托? 答 : 委托可以把一个方法作为参数代入另一个方法。 委托可以理解为指向一个函数的引用。 是,是一种特殊的委托 5.override与重载的区别 答 : override 与重载的区别。重载是方法的名称相同。参数或参数类型不同,进行多次重载以适应不同的需要 Override 是进行基类函数的重写。为了适应需要。 6.如果在一个B/S结构的系统需要传递变量,但是又不能使用Session、Cookie、Application,您有几种方法进行处理? 答 : this.Server.Transfer 7.请编程遍历页面上所有TextBox控件并给它赋为string.Empty? 答: foreach (System.Windows.Forms.Control control in this.Controls) { if (control is System.Windows.Forms.TextBox) { System.Windows.Forms.TextBox tb = (System.Windows.Forms.TextBox)control ; tb.Text = String.Empty ; } } 8.请编程实现一个冒泡排序算法? 答: int [] array = new int ; int temp = 0 ; for (int i = 0 ; i < array.Length - 1 ; i++) { for (int j = i + 1 ; j < array.Length ; j++) { if (array[j] < array) { temp = array ; array = array[j] ; array[j] = temp ; } } } 9.描述一下C#索引器的实现过程,是否只能根据数字进行索引? 答:不是。可以用任意类型。 10.求以下表达式的,写出您想到的一种或几种实现方法: 1-2+3-4+……+m [Page] 答: int Num = this.TextBox1.Text.ToString() ; int Sum = 0 ; for (int i = 0 ; i < Num + 1 ; i++) { if((i%2) == 1) { Sum += i ; } else { Sum = Sum - I ; } } System.Console.WriteLine(Sum.ToString()); System.Console.ReadLine() ; 11.用.net做B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层? 答:一般为3层 数据访问层,业务层,表示层。 数据访问层对数据库进行增删查改。 业务层一般分为二层,业务表观层实现与表示层的沟通,业务规则层实现用户密码的安全等。 表示层为了与用户交互例如用户添加表单。 优点: 分工明确,条理清晰,易于调试,而且具有可扩展性。 缺点: 增加成本。 12.在下面的例子里 using Sy
超级有影响力的Java面试题大全文档 1.抽象: 抽象就是忽略一个主题与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承:  继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。 3.封装:  封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 4. 多态性:  多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 5、String是最基本的数据类型吗?  基本数据类型包括byte、int、char、long、float、double、boolean和short。  java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 6、int 和 Integer 有什么区别  Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型 封装类 boolean Boolean char Character byte Byte short Short int Integer long Long float Float double Double  引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省。对象引用实例变量的缺省为 null,而原始类型实例变量的缺省与它们的类型有关。 7、String 和StringBuffer的区别  JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用 StringBuffers来动态构造字符数据。 8、运行时异常与一般异常有何异同?  异常表示程序运行过程可能出现的非正常状态,运行时异常表示虚拟机的通常操作可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。 9、说出Servlet的生命周期,并说出Servlet和CGI的区别。  Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。 与cgi的区别在于servlet处于服务器进程,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。 10、说出ArrayList,Vector, LinkedList的存储性能和特性  ArrayList 和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。 11、EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。 EJB包括Ses
Oracle9i初始化参数文说明 Blank_trimming: 说明: 如果为TRUE, 即使源长度比目标长度 (SQL92 兼容) 更长, 也允许分配数据。 范围: TRUE | FALSE 默认: FALSE serializable: 说明: 确定查询是否获取表级的读取锁, 以防止在包含该查询的事务处理被提交之前更新任何对象读取。这种操作模式提供可重复的读取, 并确保在同一事务处理种对相同数据的两次查询看到的是相同的范围: TRUE | FALSE 默认: FALSE row_locking: 说明: 指定在表已更新或正在更新时是否获取行锁。如果设置为 ALWAYS, 只有在表被更新后才获取行锁。如果设置为 INTENT, 只有行锁将用于SELECT FOR UPDATE, 但在更新时将获取表锁。 范围: ALWAYS | DEFAULT | INTENT 默认: ALWAYS shared_servers 说明 : 指定在启动例程后, 要为共享服务器环境创建的服务器进程的数量。 范围: 根据操作系统而定。 默认 : 1 circuits: 说明 : 指定可用于入站和出站网络话的虚拟电路总数。 该参数是构成某个例程的总 SGA 要求的若干参数之一。 默认 : 派生: SESSIONS 参数的 (如果正在使用共享服务器体系结构); 否则为 0。 Mts_multiple_listeners: 说明: 指定多个监听程序的地址是分别指定的, 还是用一个 ADDRESS_LIST 字符串指定。如果该为 TRUE, MTS_LISTENER_ADDRESS 参数可被指定为: (ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(PORT=5000)(HOST=zeus)) (ADDRESS=(PROTOCOL=decnet)(OBJECT=outa)(NODE=zeus)) 此参数在 8.1.3 版已废弃。 范围: TRUE | FALSE 默认: FALSE mts_servers: 说明 : 指定在启动例程后, 要为共享服务器环境创建的服务器进程的数量。 范围: 根据操作系统而定。 默认 : 1 mts_service: 说明 : 一个共享服务器参数, 用于指定已在调度程序上注册, 用来建立数据库连接的唯一服务名。如果要在没有调度程序的情况下仍能连接到数据库, 请将该设置为与例程名相同。此参数自 8.1.3 版起已废弃。 范围: 根据操作系统而定。 默认 :0 mts_sessions: 说明 : 指定允许的共享服务器体系结构用户话的总数。设置此参数可为专用服务器保留一些用户话。 范围: 0 到 SESSIONS - 5 默认 : 派生: MTS_CIRCUITS 和 SESSIONS - 5 两者的较小 shared_server_sessions: 说明 : 指定允许的共享服务器体系结构用户话的总数。设置此参数可为专用服务器保留一些用户话。 范围: 0 到 SESSIONS - 5 默认 : 派生: MTS_CIRCUITS 和 SESSIONS - 5 两者的较小 mts_max_dispatchers 说明 : 指定在一个共享服务器环境可同时运行的调度程序进程的最大数量。 范围: 根据操作系统而定。 默认 : 如果已配置了调度程序, 则默认为大于 5 的任何数目或配置的调度程序的数目 mts_max_servers: 说明 : 指定在一个共享服务器环境可同时运行的共享服务器进程的最大数量。 范围: 根据操作系统而定。 默认 : 20 dispatchers: 说明 : 为设置使用共享服务器的共享环境而设置调度程序的数量和类型。可以为该参数指定几个选项。有关详细信息, 请参阅“Oracle8i 管理员指南”和“Oracle Net Administrator's Guide”。这是字符串的一个示例: '(PROTOCOL=TCP)(DISPATCHERS=3)'。 范围: 参数的有效指定。 默认 : NULL max_shared_servers: 说明 : 指定在一个共享服务器环境可同时运行的共享服务器进程的最大数量。 范围: 根据操作系统而定。 默认 : 20 mts_circuits: 说明 : 指定可用于入站和出站网络话的虚拟电路总数。 该参数是构成某个例程的总 SGA 要求的若干参数之一。 默认 : 派生: SESSIONS 参数的 (如果正在使用共享服务器体系结构); 否则为 0。 Mts_listener_address: 说明 : 指定共享服务器的监听程序配置。监听程序进程需要一个监听地址, 以便处理系统所用的各个网络协议的连接请求。 除非 MTS_MULTIPLE_LISTENERS=TRUE, 否则每个条目都必须有一个独立的相邻。此参数自 8.1.3 版起已废弃 语法 : (ADDRESS=(PROTOCOL=tcp)(HOST=myhost)(PORT=7002)) 默认 : NULL mts_dispatchers: 说明 : 为设置使用共享服务器的共享环境而设置调度程序的数量和类型。可以为该参数指定几个选项。有关详细信息, 请参阅“Oracle8i 管理员指南”和“Oracle Net Administrator's Guide”。这是字符串的一个示例: '(PROTOCOL=TCP)(DISPATCHERS=3)'。 范围: 参数的有效指定。 默认 : NULL max_dispatchers: 说明 : 指定在一个共享服务器环境可同时运行的调度程序进程的最大数量。 范围: 根据操作系统而定。 默认 : 如果已配置了调度程序, 则默认为大于 5 的任何数目或配置的调度程序的数目 nls_nchar_conv_excp: 说明: (如果为 TRUE) 当在隐式转换丢失数据时返回错误的参数。 范围: FALSE | TRUE 默认: TRUE nls_numeric_characters: 说明: 指定将用作组分隔符和小数位的字符。组分隔符就是用来分隔整数位组 (如千, 百万等等) 的字符。小数分隔符用来将一个数字的整数部分与小数部分分隔开。其格式是 <decimal_character><group_separator>。 范围: 任何单字节字符, '+', '-', '<', '>' 除外。 默认: 从 NLS_TERRITORY 获得 nls_sort: 说明: 指定 ORDER BY 查询的比较顺序。对于二进制排序, ORDER BY 查询的比较顺序是以数为基础的。对于语言排序, 则需要进行全表扫描, 以便将数据按照所定义的语言排序进行整理。 范围: BINARY 或有效的语言定义名。 默认: 从 NLS_LANGUAGE 获得 nls_territory: 说明: 为以下各项指定命名约定, 包括日期和星期的编号, 默认日期格式, 默认小数点字符和组分隔符, 以及默认的 ISO 和本地货币符号。可支持的区域包括美国, 法国和日本。有关所有区域的信息, 请参阅 Oracle8i National Language Support Guide。 范围: 任何有效的地区名。 默认: 根据操作系统而定 nls_timestamp_format: 说明: 与 NLS_TIME_FORMAT 相似, 只不过它设置的是 TIMESTAMP 数据类型的默认, 该数据类型既存储YEAR, MONTH 和 DAY 这几个日期, 也存储 HOUR, MINUTE 和 SECOND 这几个时间。 语法: TIMESTAMP '1997-01-31 09:26:50.10' (将存储为 11 个字节)。 默认: 从 NLS_TERRITORY 获得 nls_time_format: 说明: 指定一个字符串, 设置 TIME 数据类型的默认, 该数据类型包含 HOUR, MINUTE 和 SECOND 这几个日期时间字段。 语法: TIME '09:26:50' (将存储为 7 个字节)。 默认: 从 NLS_TERRITORY 获得 nls_time_tz_format: 说明: 指定一对 (UTC,TZD), 设置 TIME WITH TIME ZONE 数据类型的默认, 该数据类型包含 HOUR, MINUTE, SECOND, TIMEZONE_HOUR 和 TIMEZONE_MINUTE 这几个日期时间字段。UTC 是世界时而 TZD 是当地时区。 语法: TIME '09:26:50.20+ 02:00' (将存储为 9 个字节)。 默认: 从 NLS_TERRITORY 获得 nls_length_semantics: 说明: 使用字节或码点语义来指定新列的创建, 如 char, varchar2, clob, nchar, nvarchar2, nclob 列。各种字符集对字符都有各自的定义。在客户机和服务器上使用同一字符集时, 应以该字符集所定义的字符来衡量字符串。现有的列将不受影响。 范围: BYTE 或 CHAR。 默认: nls_length_semantics 的数据库字符集的字符所使用的度量单位。BYTE。 nls_date_format: 说明: 指定与 TO_CHAR 和 TO_DATE 函数一同使用的默认日期格式。该参数的默认由 NLS_TERRITORY 确定。该参数的可以是包含在双引号内的任何有效的日期格式掩码。例如: ''MMM/DD/YYYY''。 范围: 任何有效的日期格式掩码, 但不得超过一个固定长度。 默认: 派生 nls_timestamp_tz_format: 说明: 与 NLS_TIME_TZ_FORMAT 相似, 其的一对指定 TIMESTAMP 数据类型的默认, 该类型除存储 YEAR, MONTH 和 DAY 日期, HOUR, MINUTE 和 SECOND 时间, 还存储 TIMEZONE_HOUR 和 TIMEZONE_MINUTE。 语法: TIMESTAMP '1997- 01- 31 09:26:50+ 02:00' (将存储为 13 个字节)。 默认: 从 NLS_TERRITORY 获得 nls_language: 说明: 指定数据库的默认语言, 该语言将用于消息, 日期和月份名, AD, BC, AM 和 PM 的符号, 以及默认的排序机制。可支持的语言包括英语, 法语和日语等等。 范围: 任何有效的语言名。 默认: 根据操作系统而定 nls_comp: 说明: 在 SQL 语句, 应避免使用繁琐的 NLS_SORT 进程。正常情况下, WHERE 子句进行的比较是二进制的, 但语言比较则需要 NLSSORT 函数。可以使用 NLS_COMP 指定必须根据NLS_SORT 话参数进行语言比较。 范围: Oracle8i National Language Support Guide 指定的任何有效的10 字节字符串。 默认: BINARY nls_currency: 说明: 为 L 数字格式元素指定用作本地货币符号的字符串。该参数的默认由 NLS_TERRITORY 确定。 范围: Oracle8i National Language Support Guide 指定的任何有效的10 字节字符串。 默认: 从 NLS_TERRITORY 获得 nls_date_language: 说明: 指定拼写日期名, 月名和日期缩写词 (AM, PM, AD, BC) 的语言。该参数的默认是由 NLS_LANGUAGE指定的语言。 范围: 任何有效的 NLS_LANGUAGE 。 默认: NLS_LANGUAGE 的 nls_dual_currency: 说明: 用于覆盖 NLS_TERRITORY 定义的默认双重货币符号。如果不设置该参数, 就使用默认的双重货币符号; 否则就启动一个为双重货币符号的新话。 范围: 任何有效的格式名。。 默认: 双重货币符号 nls_iso_currency: 说明: 为 C 数字格式元素指定用作国际货币符号的字符串。该参数的默认由 NLS_TERRITORY 确定。 范围: 任何有效的 NLS_TERRITORY 。 默认: 从 NLS_TERRITORY 获得 nls_calendar: 说明: 指定 Oracle 使用哪种日历系统作为日期格式。例如, 如果 NLS_CALENDAR 设置为 'Japanese Imperial', 那么日期格式为 'E YY-MM-DD'。即: 如果日期是 1997 年 5 月 15 日, 那么 SYSDATE 显示为 'H 09-05-15'。 范围: Arabic Hijrah, English Hijrah, Gregorian, Japanese Imperial, Persian, ROC Official (Republic of China) 和 Thai Buddha。 默认: Gregorian plsql_native_c_compiler: 说明: 指定用于将生成的 C 文件编译为目标文件的 C 编译程序的完整路径名。此参数是可选的。随每个平台附带的特有的 make 文件包含此参数的默认。如果为此参数指定了一个, 则该将覆盖 make 文件的默认范围: C 编译程序的完整路径。 默认: 无 remote_dependencies_mode: 说明: 用于指定数据库为远程 PL/SQL 存储的过程处理被依赖对象的方式。如果设置为 TIMESTAMP, 只有在服务器与本地时间戳相匹配的情况下, 才能执行该过程。如果设置为 SIGNATURE, 在签名安全的情况下即可执行该过程。 范围: TIMESTAMP | SIGNATURE 默认: TIMESTAMP utl_file_dir: 说明: 允许数据库管理员指定 PL/SQL 文件 I/O 许可的目录。使用多个 UTL_FILE_DIR 参数即可指定多个目录。请注意所有用户均可读取或写入 UTL_FILE_DIR 参数指定的所有文件。 范围: 任何有效的目录路径。 默认: 无 plsql_v2_compatibility: 说明: 设置 PL/SQL 兼容级。如果设置为 FALSE, 将执行 PL/SQL V3 行为, 而不允许 V2 行为; 否则在运行 PL/SQL V3 时将接受某些 PL/SQL V2 行为。 范围: TRUE | FALSE 默认: FALSE plsql_native_make_utility: 说明: 指定 make 实用程序 (如 UNIX 的 make 或 gmake, 即 GNU make) 的完整路径名。要从生成的 C 源生成共享对象或 DLL, 需要使用 make 实用程序。 范围: make 实用程序的完整路径名。 默认: 无 plsql_native_library_dir: 说明: 由 PL/SQL 编译程序使用。它指定目录名, 其存储了本机编译程序生成的共享对象。 范围: 目录名。 默认: 无 plsql_compiler_flags: 说明: 由 PL/SQL 编译程序使用。它将编译程序标志列表指定为一个用逗号分隔的字符串列表。 范围: native (PL/SQL 模块将按本机代码来编译。), interpreted (然后 PL/SQL 模块将被编译为 PL/SQL 字节代码格式), debug (PL/SQL 模块将用探测调试符号来编译), non_debug。 默认: " interpreted, non_debug " plsql_native_linker: 说明: 此参数指定链接程序 (如: UNIX 的 ld, 或用于将目标文件链接到共享对象或 DLL 的 GNU ld) 的完整路径名。此参数是可选的。随每个平台附带的特有的 make 文件包含此参数的默认。如果为此参数指定了一个, 则该将覆盖 make 文件的默认范围: 链接程序的完整路径名。 默认: 无 plsql_native_make_file_name: 说明: 指定 make 文件的完整路径名。make 实用程序 (由 PLSQL_NATIVE_MAKE_UTILITY 指定) 使用此 make 文件生成共享对象或 DLL。每个平台附带有端口专用的 make 文件, 该文件包含使用 make 实用程序在该平台上生成 DLL 时要遵循的规则。 范围: make 文件的完整路径名。 默认: 无 plsql_v2_compatibility: 说明: 设置 PL/SQL 兼容级。如果设置为 FALSE, 将执行 PL/SQL V3 行为, 而不允许 V2 行为; 否则在运行 PL/SQL V3 时将接受某些 PL/SQL V2 行为。 范围: TRUE | FALSE 默认: FALSE remote_dependencies_mode: 说明: 用于指定数据库为远程 PL/SQL 存储的过程处理被依赖对象的方式。如果设置为 TIMESTAMP, 只有在服务器与本地时间戳相匹配的情况下, 才能执行该过程。如果设置为 SIGNATURE, 在签名安全的情况下即可执行该过程。 范围: TIMESTAMP | SIGNATURE 默认: TIMESTAMP shared_memory_address: 说明: SHARED_MEMORY_ADDRESS 和 HI_SHARED_MEMORY_ADDRESS 指定运行时 SGA 的起始地址。许多平台在链接时间指定 SGA 起始地址, 在这类平台上这些参数将被忽略。如果两个参数都设置为 0 或 NULL, 那么地址将根据平台而定。 范围: 任何整数。 默认: 0 lock_sga: 说明: 用于将整个 SGA 锁定在物理内存。在不支持这种功能的平台上, 该将被忽略。 范围: TRUE | FALSE 默认: FALSE hi_shared_memory_address: 说明: 指定系统全局区 (SGA) 的运行时起始地址。在指定 SGA 连接时起始地址的平台上, 该被忽略。在 64 位平台上, 请使用该来指定高 32 位和低 32 位。如果不指定该, 默认是平台指定的位置。 范围: 任何整数。 默认: 0 pre_page_sga: 说明: 一个根据平台而定的参数, 如果该参数为 TRUE, 将把所有 SGA 页装载到内存, 以便使该例程迅速达到最佳性能状态。这将增加例程启动和用户登录的时间, 但在内存充足的系统上能减少缺页故障的出现。 范围: TRUE | FALSE 默认: FALSE sga_max_size: 说明: 指定例程存活期间所占用的系统全局区的最大大小。 范围: 0 到各操作系统所允许的最大。请注意, 由于该参数的最小在启动时已经调整完毕, 因而它无关紧要。 默认: 如果未指定, sga_max_size 的默认将与启动时 SGA 的最初大小 (比如说 X) 相同。该大小取决于 SGA 各种池的大小, 如缓冲区高速缓存, 共享池, 大型池等。如果指定的小于 X, 则所使用的 sga_max_size 的将为 X。也就是说, 它是 X 与用户指定的 sga_max_size 两者之间的较大。 Fast_start_parallel_rollback: 说明: 执行并行回退时确定进程的最大数量。在多数事务处理的运行时间都较长的系统上, 该很有用。 范围: FALSE | LOW | HIGH 默认: LOW (2 * CPU_COUNT) transaction_auditing: 说明: 确定事务处理层是否生成一个特殊的重做记录, 其包含用户登录名, 用户名, 话 ID, 部分操作系统信息以及客户机信息。在使用某一重做日志分析工具时, 这些记录可能很有用。 范围: TRUE | FALSE 默认: TRUE transactions: 说明: 指定并行事务处理的最大数量。如果将该设置得较大, 将增加 SGA 的大小, 并可增加例程启动过程分配的回退段的数量。默认大于 SESSIONS, 以实现递归事务处理。 范围: 一个数。 默认: 派生 (1.1 * SESSIONS) enqueue_resources: 说明: 入队可使并行进程能够共享资源。例如, Oracle 允许一个进程共享模式锁定一个表, 以共享更新模式锁定另一个表。 范围: 10 - 65535 (7.3) 或 10 - 无限制 (8.1)。 默认: 派生 (该大于 DML_LOCKS + 20 即已足够) dml_locks: 说明: 所有用户获取的表锁的最大数量。对每个表执行 DML 操作均需要一个 DML 锁。例如, 如果 3 个用户修改 2 个表, 就要求该为 6。 范围: 0 或 20 到无限制。 默认: 4 * TRANSACTIONS (派生) hash_join_enabled: 说明: 如果设置为 TRUE, 优化程序将在计算最有效的联接方法时考虑散列联接。Oracle 建议数据仓库应用程序应使用 TRUE范围: TRUE | FALSE 默认: TRUE optimizer_features_enable: 说明: 允许更改 init.ora 参数, 该参数控制着优化程序的行为。受此影响的参数包括 PUSH_JOIN_PREDICATE, FAST_FULL_SCAN_ENABLED, COMPLEX_VIEW_MERGING 和 B_TREE_BITMAP_PLANS。 范围: 8.0.0; 8.0.3; 8.0.4; 8.1.3。 默认: 8.0.0 query_rewrite_integrity: 说明: Oracle Server 执行的查询重写的程度。如果设置为 ENFORCED, Oracle 将保证其一致性和完整性。如果设置为 TRUSTED, 将使用明确声明的关系来允许重写。如果设置为 STALE_TOLERATED, 即使实体化视图与基础数据不一致, 也仍可以进行重写。 范围: ENFORCED, TRUSTED, STALE_TOLERATED 默认: ENFORCED query_rewrite_enabled 说明: 启用或禁用对实体化视图的查询重写。一个特定实体化视图只在如下条件下启用: 话参数和单独实体化视图均已启用, 并且基于成本的优化已启用。 范围: TRUE | FALSE 默认: FALSE partition_view_enabled: 说明: 如果将 PARTITION_VIEW_ENABLED 设置为 TRUE, 该优化程序将剪除 (或跳过) 分区视图不必要的表访问。该参数还能更改基于成本的优化程序从基础表统计信息计算分区视图统计信息的方式。 范围: TRUE | FALSE 默认: FALSE optimizer_max_permutations: 说明: 对带有大量联接的查询进行语法分析时, 优化程序将考虑限制表的交换数。这有助于确保对查询进行语法分析的时间保持在可接受的限制范围内, 但代价是无法找到最佳计划。如果该小于 1000, 就应该可以确保每次查询的时间仅为几秒钟或更短。 范围: 4-2^32 (~4.3 G)。 默认: 80,000 optimizer_index_cost_adj: 说明: 在考虑太多或太少索引访问路径的情况下, 可以用来优化优化程序的性能。该越低, 优化程序越容易选择一个索引。也就是说, 如果将该设置为 50%, 索引访问路径的成本就是正常情况下的一半。 范围: 1 -10000 默认: 100 (一个索引访问路径的常规成本) star_transformation_enabled: 说明: 确定基于成本的查询转换是否将被应用到星型查询。如果设置为 TRUE, 优化程序将考虑将基于成本的转换应用于星型查询; 如果设置为 FALSE, 将不使用任何转换; 如果设置为 TEMP_DISABLE, 将考虑查询转换, 但不使用临时表。 范围: TRUE | FALSE | TEMP_DISABLE 默认: FALSE optimizer_mode: 说明: 指定优化程序的行为。如果设置为 RULE, 就使用基于规则的优化程序, 除非查询含有提示。如果设置为 CHOOSE, 就使用基于成本的优化程序, 除非语句的表不包含统计信息。ALL_ROWS 或 FIRST_ROWS 始终使用基于成本的优化程序。 范围: RULE | CHOOSE | FIRST_ROWS | ALL_ROWS 默认: CHOOSE optimizer_index_caching: 说明: 调整基于成本的优化程序的假定, 即在缓冲区高速缓存期望用于嵌套循环联接的索引块的百分比。它将影响使用索引的嵌套循环联接的成本。将该参数设置为一个较高的, 可以使嵌套循环联接相对于优化程序来说成本更低。 范围: 0 - 100 %。 默认: 0 job_queue_processes: 说明: 只用于复制环境。它指定每个例程的 SNP 作业队列进程的数量 (SNP0, ... SNP9, SNPA, ... SNPZ)。要自动更新表快照或执行由 DBMS_JOB 创建的请求, 请将该参数设置为 1 或更大的范围: 0 到 36 默认: 0 max_transaction_branches: 说明: 控制分布式事务处理分支的数量。将 MAX_TRANSACTION_BRANCHES 设置为较低的, 可以根据 MAX_TRANSACTION_BRANCHES * DISTRIBUTED_TRANSACTIONS * 72 字节, 略微减少共享池的空间量。此参数在 8.1.3 版已废弃。 范围: 1 - 32 默认: 8 compatible: 说明: 允许您使用一个新的发行版, 同时保证与先前版本的向后兼容性。 范围: 默认为当前发行版。 默认: 由发行版确定 archive_lag_target: 说明: 此参数与基于时间的线程高级功能相关联。 范围: 0 或 [60, 7200] 的任意整数。 默认: 0 为默认, 此时将禁用基于时间的线程高级功能。否则, 将代表秒数 aq_tm_processes: 说明: 如果大于零, 就启用对队列消息的时间监视。该时间可用于指定消息的延迟和失效属性 (用于应用程序的开发)。 范围: 0 - 10 默认: 0 tracefile_identifier: spfile: 说明: 指定当前使用的服务器参数文件的名称。 范围: 静态参数 默认: SPFILE 参数可在客户端 PFILE 定义, 以指明要使用的服务器参数文件的名称。服务器使用默认服务器参数文件时, SPFILE 的要由服务器在内部设置。 Logmnr_max_persistent_sessions: Standby_file_management: Trace_enabled: Ifile: 说明: 用于在当前参数文件嵌入其他参数文件。您可以在一个参数文件的多个行上多次使用该参数, 但最多只能有三级嵌套。 范围: 任何有效的参数文件名 (语法是 IFILE = parameter_file_name)。 默认: NULL remote_listener: global_context_pool_size: 说明: 从 SGA 分配的用于存储和管理全局应用程序环境的内存量。 范围: 任意整数。 默认: 1 M plsql_native_library_subdir_count: fixed_date: 说明: SYSDATE 返回的数据。对于必须始终返回固定日期而非系统日期的测试, 该很有用。使用双引号或不使用引号。请勿使用单引号。 范围: YYYY-MM-DD-HH24:MI:SS (或默认的 Oracle 日期格式)。 默认: NULL db_name: 说明: 一个数据库标识符, 应与 CREATE DATABASE 语句指定的名称相对应。 范围: 任何有效名称最多可有 8 个字符。 默认: 无 (但应指定) cluster_database: cluster_interconnects: cluster_database_instances: sql_version: replication_dependency_tracking: 说明: 跟踪相关性对复制服务器以并行方式传播所作的更改至关重要。如果设置为 FALSE, 数据库上的读/写操作将运行得更快, 但无法为复制服务器产生并行传播的相关性信息。 范围: TRUE | FALSE 默认: TRUE (即启用读/写相关性跟踪) remote_os_roles: 说明: 将 REMOTE_OS_ROLES 设置为 TRUE, 允许由远程客户机的操作系统来分配角色。如果设置为 FALSE, 则由远程客户机的数据库来识别和管理角色。 范围: TRUE | FALSE 默认: FALSE remote_os_authent: 说明: 将 REMOTE_OS_AUTHENT 设置为 TRUE, 允许使用 OS_AUTHENT_PREFIX 的来验证远程客户机。 范围: TRUE | FALSE 默认: FALSE open_links: 说明: 指定在一次同时打开的与远程数据库的连接的最大数量。该应等于或超过一个引用多个数据库的单个 SQL 语句引用的数据库的数量, 这样才能打开所有数据库以便执行该语句。 范围: 0 - 255 (如果为 0, 不允许分布式事务处理)。 默认: 4 open_links_per_instance: 说明: 指定 XA 应用程序可移植的打开连接的最大数量。XA 事务处理使用可移植的打开的连接, 以便在提交一个事务处理后能将这些连接高速缓存。如果创建连接的用户就是拥有事务处理的用户, 各事务处理则可共享连接。 范围: 0 - UB4MAXVAL 默认: 4 remote_login_passwordfile: 说明: 指定操作系统或一个文件是否检查具有权限的用户的口令。如果设置为 NONE, Oracle 将忽略口令文件。如果设置为 EXCLUSIVE, 将使用数据库的口令文件对每个具有权限的用户进行验证。如果设置为 SHARED, 多个数据库将共享 SYS 和 INTERNAL 口令文件用户。 范围:NONE | SHARED | EXCLUSIVE 默认: NONE hs_autoregister: 说明: 启用或禁用“异构服务 (HS)”代理的自动自注册。如果启用, 信息将被上载到数据字典, 以便在通过同一代理建立后续连接时降低开销。 范围: TRUE | FALSE 默认: TRUE global_names: 说明: 指定是否要求数据库链接与所连接的数据库同名。如果该为 FALSE, 则不执行检查。要使分布式处理的命名约定一致, 请将该参数设置为 TRUE。 范围: TRUE | FALSE 默认: TRUE distributed_transactions: 说明: 一个数据库一次可参与的分布式事务处理的最大数量。如果由于网络故障异常频繁而减少该, 将造成大量未决事务处理。 范围: 0 - TRANSACTIONS 参数。 默认: 根据操作系统而定 commit_point_strength: 说明: 一个用于确定分布式事务处理提交点的位置的范围: 0 -255 默认: 根据操作系统而定 db_domain: 说明: 指定数据库名的扩展名 (例如:US.ORACLE.COM) 为使一个域创建的数据库名唯一, 建议指定该范围: 由句点分隔的任何字符串, 最长可以有 128 个字符。 默认: WORLD dblink_encrypt_login: 说明: 在连接到其他 Oracle Server 时, 数据库链接是否使用加密口令。 范围: TRUE | FALSE 默认: FALSE backup_tape_io_slaves: 说明: 一个恢复管理器参数, 用于确定读取或写入磁带是否要使用服务器进程或一个附加的 I/O 从属。 范围: TRUE | FALSE 默认: FALSE tape_asynch_io: 说明: 用于控制对顺序设备的 I/O 操作 (例如, 将 Oracle 数据备份或复原到磁带上, 或从磁带上备份或复原 Oracle 数据) 是否异步。只有在您的平台支持对顺序设备的异步 I/O 操作的情况下, 将该设置为 TRUE 才有效; 如果异步 I/O 的执行情况不稳定, 请将该设置为 FALSE。 范围: TRUE | FALSE 默认: FALSE log_file_name_convert: 说明: 将主数据库上的一个日志文件的文件名转换为备用数据库上对等的路径和文件名。将一个日志文件添加到一个主数据库后, 必须将一个相应的文件添加到备用数据库。该参数替代 Oracle7 的 LOG_FILE_NAME_CONVERT 参数。 范围: 任何格式为 ''主体日志文件的路径/文件名'' 和 ''备用日志文件的路径/文件名'' 的有效路径/文件名 默认: NULL fal_server: 说明: 指定此备用数据库的 FAL 服务器。该是一个 Oracle Net 服务名。此 Oracle Net 服务名被假定为已在备用数据库系统上正确配置, 可指向期望的 FAL 服务器。 范围: Oracle Net 服务名的字符串。 Fal_client: 说明: 指定供 FAL 服务 (通过 FAL_SERVER 参数配置) 来引用 FAL 客户机的 FAL 客户机名称。该参数的是一个 Oracle Net 服务名。此 Oracle Net 服务名被假定为已在 FAL 服务器系统上正确配置, 可指向 FAL 客户机 (即: 此备用数据库)。 范围: Oracle Net 服务名的字符串。 Drs_start: 说明: 使 Oracle 可以确定是否应启动 DRMON 进程。DRMON 是一种不导致致命错误的 Oracle 后台进程, 只要例程存在, 该进程就存在。 范围: TRUE | FALSE。 默认: FALSE remote_archive_enable: 说明: 控制是否可向远程目标执行重做日志文件归档操作。必须将该参数设置为 "TRUE", 以便 Oracle 数据库例程对重做日志文件进行远程归档, 并且/或者接收远程归档的重做日志文件。 范围: FALSE | TRUE 默认: TRUE standby_preserves_names: 说明: 表明备用数据库上的文件名是否与主数据库上的文件名相同。 范围: TRUE 或 FALSE。注: 如果将设置为 True, 且备用数据库与主数据库位于同一系统上, 则主数据库文件可能被覆盖。 默认: FALSE。 Standby_archive_dest: 说明: 指定来自一个主例程的归档日志的到达位置。STANDBY_ARCHIVE_DEST 和 LOG_ARCHIVE_FORMAT 用于在备用位置上虚拟完全合格的归档日志文件名。备用数据库上的 RFS 服务器将使用该, 而不是 ARCHIVE_LOG_DEST。 范围: NULL 字符串或非 RAW 类型的有效路径/设备名。 默认: NULL db_file_name_convert: 说明: 将主数据库上的一个新数据文件的文件名转换为备用数据库上的文件名。 范围: 一个有效的主/备用目录和文件名对。 默认: 无 max_enable_roles: 说明: 指定一个用户可以启用的数据库角色 (包括子角色) 的最大数量。用户可启用的角色的实际数量是 2 加上 MAX_ENABLED_ROLES 的, 因为每个用户都有两个附加的角色: PUBLIC 和用户自己的角色。 范围: 0 -148 默认: 20 O7_DICTIONARY_ACCESSIBILITY: 说明: 主要用于从 Oracle7 移植到 Oracle8i。如果该为 TRUE, SYSTEM 权限 (如 SELECT ANY TABLE) 将不限制对 SYS 方案各对象的访问 (Oracle7 行为)。如果该为 FALSE, 只有被授予了 SELECT_CATALOG_ROLE, EXECUTE_CATALOG_ROLE 或 DELETE_CATALOG_ROLE 权限的用户才能访问 SYS 方案的各对象。 范围: TRUE | FALSE 默认: TRUE sql92_security: 说明: 指定要执行一个更新或删除引用表列的是否需要具有表级的 SELECT 权限。 范围: TRUE | FALSE 默认: FALSE audit_trail: 说明: 启用或禁用数据库审计。如果该参数为 TRUE 或 DB, 审计记录将被写入 SYS.AUD$ 表; 如果参数为 OS, 则写入一个操作系统文件。 范围: NONE | FALSE | DB | TRUE | OS 默认: NONE rdbms_server_dn: 说明: RDBMS 服务器的唯一判别名。它用于在一个企业目录服务检索企业角色。有关详细信息, 请参阅“Oracle Advanced Security Administrator's Guide”。 范围: 所有 X.500 唯一判别名格式。 默认: 无 os_roles: 说明: 确定操作系统或数据库是否为每个用户标识角色。如果设置为 TRUE, 将由操作系统完全管理对所有数据库用户的角色授予。否则, 角色将由数据库标识和管理。 范围: TRUE | FALSE 默认: FALSE os_authent_prefix: 说明: 使用用户的操作系统帐户名和口令来验证连接到服务器的用户。该参数的与各用户的操作系统帐户连接在一起。要去除 OS 帐户前缀, 请指定空范围: 任何标识符。 默认: 根据操作系统而定 (通常是 'OPS$') object_cache_max_size_percent: 说明: 指定话对象的高速缓存增长可超过最佳高速缓存大小的百分比, 最大大小等于最佳大小加上该百分比与最佳大小的乘积。如果高速缓存大小超过了这个最大大小, 系统就尝试将高速缓存缩小到最佳大小。 范围: 0% 到根据操作系统而定的最大。 默认: 10% object_cache_optimal_size: 说明: 指定在高速缓存超过最大大小的情况下, 话对象高速缓存将被缩小到的大小。 范围: 10K 到根据操作系统而定的最大。 默认: 100K session_max_open_files: 说明: 指定可在任一给定打开的 BFILE 的最大数量。一旦达到这个数量, 此后将无法在该打开更多文件。该参数还取决于操作系统参数 MAX_OPEN_FILES。 范围: 1 - 至少为 (50, OS 级上的 MAX_OPEN_FILES)。 默认: 10 parallel_execution_message_size: 说明: 指定并行执行 (并行查询, PDML, 并行恢复和复制) 消息的大小。如果大于 2048 或 4096, 就需要更大的共享池。如果 PARALLEL_AUTOMATIC_TUNING = TRUE, 将在大存储池之外指定消息缓冲区。 范围: 2148 - 无穷大。 默认: 如果 PARALLEL_AUTOMATIC_TUNING 为 FALSE, 通常为 2148; 如果 PARALLEL_AUTOMATIC_TUNING 为 TRUE , 则为 4096 (根据操作系统而定)。 Paralle_min_percent: 说明: 指定并行执行要求的线程的最小百分比。设置该参数, 可以确保并行执行在没有可用的恰当查询从属进程时, 显示一个错误消息, 并且该查询因此而不予执行。 范围: 0 -100 默认: 0, 表示不使用该参数。 Parallel_automatic_tuning: 说明: 如果设置为 TRUE, Oracle 将为控制并行执行的参数确定默认。除了设置该参数外, 你还必须为系统的表设置并行性。 范围: TRUE | FALSE 默认: FALSE parallel_threads_per_cpu: 说明: 说明一个 CPU 在并行执行过程可处理的进程线程的数量, 并优化并行自适应算法和负载均衡算法。如果计算机在执行一个典型查询时有超负荷的迹象, 应减小该数范围: 任何非零。 默认: 根据操作系统而定 (通常为 2) parallel_broadcast_enabled: 说明 : 通过使用一个散列联接或合并联接, 可以在将多个大结果集联接到一个小结果集 (以字节而不是行为单位来衡量大小) 时改善性能。如果该设置为 TRUE, 优化程序可以将小结果集内的每个行都传播到大型集内的每个集群数据库处理行范围: TRUE | FALSE 默认 : FALSE parallel_adaptive_multi_user: 说明: 启用或禁用一个自适应算法, 旨在提高使用并行执行方式的多用户环境的性能。通过按系统负荷自动降低请求的并行度, 在启动查询时实现此功能。当 PARALLEL_AUTOMATIC_TUNING = TRUE 时, 其效果最佳。 范围: TRUE | FALSE 默认: 如果 PARALLEL_AUTOMATIC_TUNING = TRUE, 则该为 TRUE; 否则为 FALSE parallel_max_servers: 说明: 指定一个例程的并行执行服务器或并行恢复进程的最大数量。如果需要, 例程启动时分配的查询服务器的数量将增加到该数量。 范围: 0 -256 默认: 由 CPU_COUNT, PARALLEL_AUTOMATIC_TUNING 和 PARALLEL_ADAPTIVE_MULTI_USER 确定 parallel_min_servers 说明: 指定为并行执行启动例程后, Oracle 创建的查询服务器进程的最小数量。 范围: 0 - PARALLEL_MAX_SERVERS。 默认: 0 log_archive_dest_state_3: 说明: 指定相应的归档日志目标参数 (仅 LOG_ARCHIVE_DEST_3) 的可用性状态。如果启用, 日志目标将被归档。如果延迟, 该目标将被排除在归档操作之外直至重新启用。 范围: ENABLE | DEFER 默认: ENABLE log_archive_dest_state_4: 说明: 指定相应的归档日志目标参数 (仅 LOG_ARCHIVE_DEST_4) 的可用性状态。如果启用, 日志目标将被归档。如果延迟, 该目标将被排除在归档操作之外直至重新启用。 范围: ENABLE | DEFER 默认: ENABLE log_archive_dest_state_5: 说明: 指定相应的归档日志目标参数 (仅 LOG_ARCHIVE_DEST_5) 的可用性状态。如果启用, 日志目标将被归档。如果延迟, 该目标将被排除在归档操作之外直至重新启用。 范围: ENABLE | DEFER 默认: ENABLE log_archive_dest_state_6: 说明: 标识特定日志归档目标的最近的用户定义状态。 范围: ENABLE--如果目标属性有效, 则启用归档日志目标; DEFER--即使目标属性有效, 也要延迟处理归档日志目标; 或者是 ALTERNATE--延迟处理归档日志目标, 直到另一个目标的失败导致自动启用了此目标 (前提是备用目标的属性必须有效)。 log_archive_dest_state_7: 说明: 标识特定日志归档目标的最近的用户定义状态。 范围: ENABLE--如果目标属性有效, 则启用归档日志目标; DEFER--即使目标属性有效, 也要延迟处理归档日志目标; 或者是 ALTERNATE--延迟处理归档日志目标, 直到另一个目标的失败导致自动启用了此目标 (前提是备用目标的属性必须有效)。 log_archive_dest_state_8: 说明: 标识特定日志归档目标的最近的用户定义状态。 范围: ENABLE--如果目标属性有效, 则启用归档日志目标; DEFER--即使目标属性有效, 也要延迟处理归档日志目标; 或者是 ALTERNATE--延迟处理归档日志目标, 直到另一个目标的失败导致自动启用了此目标 (前提是备用目标的属性必须有效)。 log_archive_dest_state_9: 说明: 标识特定日志归档目标的最近的用户定义状态。 范围: ENABLE--如果目标属性有效, 则启用归档日志目标; DEFER--即使目标属性有效, 也要延迟处理归档日志目标; 或者是 ALTERNATE--延迟处理归档日志目标, 直到另一个目标的失败导致自动启用了此目标 (前提是备用目标的属性必须有效)。 Log_archive_start: 说明: n只在数据库处于“归档日志”模式的情况下适用。它指定重做日志是自动还是手动复制。建议是 TRUE, 即执行自动归档; 否则就需要手动干预, 使用 ALTER SYSTEM ARCHIVE LOG ... 命令来阻止例程挂起。 范围: TRUE | FALSE 默认: FALSE log_archive_duplex_dest: 说明: 指定 LOG_ARCHIVE_DEST 外的另一个归档目标。在 Oracle8i 企业版, 该参数被 LOG_ARCHIVE_DEST_n 代替。 范围: 一个 NULL 字符串, 或者任何有效的路径或设备名, 原始分区除外。 默认: NULL log_archive_format: 说明: LOG_ARCHIVE_FORMAT 只在数据库处于“归档日志”模式的情况下有用。文本字符串与变量 %s (日志序列号) 和 %t (线程号) 结合使用, 用于指定各归档重做日志文件的唯一文件名。该字符串被附加到 LOG_ARCHIVE_DEST 参数。 范围: 任何有效的文件名。 默认: 根据操作系统而定 log_archive_max_processes: 说明: 指定要求的 ARCH 进程的数量。如果 LOG_ARCHIVE_START = TRUE, 该可以在例程启动时被评估; 也可以在通过 SQL*Plus 或 SQL 语法调用 ARCH 进程时评估。 范围: 1 - 10 (包括端点) 的任何整数。 默认: 1 log_archive_dest_2: 说明: 五个本地 (指定 LOCATION) 或远程 (指定 SERVICE) 目标位置的第二个, 归档重做日志文件可以在这些目标位置上被复制。该参数只在企业版 oracle8i 数据库或更高版本的数据库有效。 范围: 语法为 (null_string | SERVICE=tnsnames-service | LOCATION=directory-spec)[MANDATORY | OPTIONAL][REOPEN=integer] 默认: NULL log_archive_min_succeed_dest: 说明: 定义在可以覆盖日志文件前必须将其复制到的目标的最小数量。该应大于或等于 LOG_ARCHIVE_DEST_n MANDATORY 目标的数量。 范围: 1 - 5 (如果与 LOG_ARCHIVE_DEST 和 LOG_ARCHIVE_DUPLEX_DEST 共同使用, 则限制在 1-2)。 默认: 1 log_archive_trace: 说明: 控制归档日志进程生成的输出。此进程可以通过下列方式启动 ARCn 后台进程 (在输出日志指定为 ARCn) 明确的话调用的前台进程 (在输出日志指定为 ARCH) 或 “受管备用数据库”的远程文件服务器 (RFS) 进程范围: 0: 禁用归档日志跟踪 (这是默认设置) 1: 重做日志文件的追踪归档 2: 每个归档日志目标的追踪归档状态 4: 追踪归档操作阶段 8: 追踪归档日志目标活动 16: 追踪详细的归档日志目标活动 32: 追踪归档日志目标参数修改 64: 追踪 ARCn 进程状态活动 默认: 0 log_archive_dest_10: log_archive_dest_3: 说明: 五个本地 (指定 LOCATION) 或远程 (指定 SERVICE) 目标位置的第三个, 归档重做日志文件可以在这些目标位置上被复制。该参数只在企业版 oracle8i 数据库或更高版本的数据库有效。 范围: 语法为 (null_string | SERVICE=tnsnames-service | LOCATION=directory-spec)[MANDATORY | OPTIONAL][REOPEN=integer] 默认: NULL log_archive_dest: 说明: 五个本地 (指定 LOCATION) 或远程 (指定 SERVICE) 目标位置的第三个, 归档重做日志文件可以在这些目标位置上被复制。该参数只在企业版 oracle8i 数据库或更高版本的数据库有效。 范围: 语法为 (null_string | SERVICE=tnsnames-service | LOCATION=directory-spec)[MANDATORY | OPTIONAL][REOPEN=integer] 默认: NULL log_archive_dest_state_2: 说明: 指定相应的归档日志目标参数 (仅 LOG_ARCHIVE_DEST_2) 的可用性状态。如果启用, 日志目标将被归档。如果延迟, 该目标将被排除在归档操作之外直至重新启用。 范围: ENABLE | DEFER 默认: ENABLE log_archive_dest_5: 说明: 五个本地 (指定 LOCATION) 或远程 (指定 SERVICE) 目标位置的第五个, 归档重做日志文件可以在这些目标位置上被复制。该参数只在企业版 oracle8i 数据库或更高版本的数据库有效。 范围: 语法为 (null_string | SERVICE=tnsnames-service | LOCATION=directory-spec)[MANDATORY | OPTIONAL][REOPEN=integer] 默认: NULL log_archive_dest_6: log_archive_dest_1: log_archive_dest_8: log_archive_dest_9: log_archive_dest_state_1: 说明: 指定相应的归档日志目标参数 (仅 LOG_ARCHIVE_DEST_1) 的可用性状态。如果启用, 日志目标将被归档。如果延迟, 该目标将被排除在归档操作之外直至重新启用。 范围: ENABLE | DEFER 默认: ENABLE log_archive_dest_state_10 说明: 指定归档日志的目标。 范围: 本地文件系统位置 (磁盘位置) 或通过 Oracle Net 服务名 (tns 服务) 指定的远程归档位置。: log_archive_dest_4: 说明: 五个本地 (指定 LOCATION) 或远程 (指定 SERVICE) 目标位置的第四个, 归档重做日志文件可以在这些目标位置上被复制。该参数只在企业版 oracle8i 数据库或更高版本的数据库有效。 范围: 语法为 (null_string | SERVICE=tnsnames-service | LOCATION=directory-spec)[MANDATORY | OPTIONAL][REOPEN=integer] 默认: NULL create_bitmap_area_size: 说明: CREATE_BITMAP_AREA_SIZE 指定为创建位图索引而分配的内存量。 范围: 根据操作系统而定。 默认: 8 MB pga_aggregate_target: 说明: 指定连接到例程的所有服务器进程的目标 PGA 总内存。请在启用自动设置工作区之前将此参数设置为一个正数。这部分内存不驻留在 SGA 。数据库将此参数用作它所使用的目标 PGA 内存量。设置此参数时, 要将 SGA 从可用于 Oracle 例程的系统内存总量减去。然后可将剩余内存量分配给 pga_aggregate_target。 范围: 整数加字母 K, M 或 G, 以将此限指定为千字节, 兆字节或千兆字节。最小为 10M, 最大为 4000G 默认: "未指定", 表示完全禁用对工作区的自动优化。 Sort_area_size: 说明: SORT_AREA_SIZE 以字节为单位, 指定排序所使用的最大内存量。排序完成后, 各行将返回, 并且内存将释放。增大该可以提高大型排序的效率。如果超过了该内存量, 将使用临时磁盘段。 范围: 相当于 6 个数据库块的 (最小) 到操作系统确定的 (最大)。 默认: 根据操作系统而定 sort_area_retained_size 说明: 以字节为单位, 指定在一个排序运行完毕后保留的用户全局区 (UGA) 内存量的最大。最后一行从排序空间被提取后, 该内存将被释放回 UGA, 而不是释放给操作系统。 范围: 从相当于两个数据库块的到 SORT_AREA_SIZE 的。 默认: SORT_AREA_SIZE 的 bitmap_merge_area_size: 说明: 指定合并从对索引的某一范围进行扫描而检索得到的位图要使用的内存量。 范围: 根据系统而定。 默认: 1MB workarea_size_policy: 说明: 指定调整工作区大小的策略。此参数控制优化工作区时所处的模式。 范围: AUTO, MANUAL。 默认: 如果设置了 PGA_AGGREGATE_TARGET, 则为 AUTO; 否则为 MANUAL。 Hash_area_size: 说明: 与并行执行操作和 DML 或 DDL 语句相关。它以字节为单位, 指定要用于散列联接的最大内存量。有关详细信息, 请参阅手册 Oracle8i Concepts。 范围: 0 到根据操作系统而定的。 默认: 派生:2 * SORT_AREA_SIZE 参数 db_create_online_log_dest_4: 说明: 设置所创建的联机日志和控制文件的默认位置。如果在创建联机日志或控制文件时未指定文件名, 则使用默认文件名。 范围: 文件系统目录名。该目录必须已存在。该目录必须具有可让 Oracle 在其创建文件的许可。 db_create_online_log_dest_3: 说明: 设置所创建的联机日志和控制文件的默认位置。如果在创建联机日志或控制文件时未指定文件名, 则使用默认文件名。 范围: 文件系统目录名。该目录必须已存在。该目录必须具有可让 Oracle 在其创建文件的许可。 Db_files: 说明: 可为该数据库打开的数据文件的最大数量。 范围: MAXDATAFILES - 根据操作系统而定。 默认: 根据操作系统而定 (在 Solaris 系统上为 200) db_create_online_log_dest_2: 说明: 设置所创建的联机日志和控制文件的默认位置。如果在创建联机日志或控制文件时未指定文件名, 则使用默认文件名。 范围: 文件系统目录名。该目录必须已存在。该目录必须具有可让 Oracle 在其创建文件的许可。 db_create_online_log_dest_1: 说明: 设置所创建的联机日志和控制文件的默认位置。如果在创建联机日志或控制文件时未指定文件名, 则使用默认文件名。 范围: 文件系统目录名。该目录必须已存在。该目录必须具有可让 Oracle 在其创建文件的许可。 Db_create_file_dest: 说明: 设置所创建的数据文件, 控制文件和联机日志的默认位置。 范围: 文件系统目录名。该目录必须已存在。该目录必须具有可让 Oracle 在其创建文件的许可。 Control_files: 说明: 指定一个或多个控制文件名。Oracle 建议对于不同设备或 OS 文件镜象使用多个文件。 范围: 1 - 8 文件名 (带路径名)。 默认: 根据操作系统而定 db_create_online_log_dest_5: 说明: 设置所创建的联机日志和控制文件的默认位置。如果在创建联机日志或控制文件时未指定文件名, 则使用默认文件名。 范围: 文件系统目录名。该目录必须已存在。该目录必须具有可让 Oracle 在其创建文件的许可。 Large_pool_size: 说明 : 指定大型池的分配堆的大小, 它可被共享服务器用作话内存, 用作并行执行的消息缓冲区以及用作 RMAN 备份和恢复的磁盘 I/O 缓冲区。 范围: 600K (最小); >= 20000M (最大是根据操作系统而定的)。 默认 : 0, 除非配置了并行执行或 DBWR_IO_SLAVES shared_pool_size: 说明: 以字节为单位, 指定共享池的大小。共享池包含如: 共享游标, 存储的过程, 控制结构和并行执行消息缓冲区等对象。较大的能改善多用户系统的性能。 范围:300 KB - 根据操作系统而定。 默认: 如果是 64 位操作系统, 为 64MB; 其他情况下, 为 16MB。 Java_pool_size: 说明: 以字节为单位, 指定 Java 存储池的大小, 它用于存储 Java 的方法和类定义在共享内存的表示法, 以及在调用结束时移植到 Java 话空间的 Java 对象。有关详细信息, 请参阅 Oracle8i Java Developer's Guide。 范围: 根据操作系统而定。 默认: 根据操作系统而定 shared_pool_reserved_size: 说明: 指定要为较大连续共享池内存请求而保留的空间, 以避免由碎片引起的性能下降。该池的大小应符合这样的条件:能存储为防止对象从共享池刷新而普遍要求的所有大型过程和程序包。 范围: SHARED_POOL_RESERVED_MIN_ALLOC 到 SHARED_POOL_SIZE 的一半 (字节)。 默认: SHARED_POOL_SIZE 的 5% cursor_sharing: 说明: 控制可以终止共享相同的共享游标的 SQL 语句类型。 范围: 强制: 强制表达方式不同但语句意思相同的语句共享一个游标。 EXACT: 只令完全相同的 SQL 语句共享一个游标。 默认: EXACT open_cursors: 说明: 指定一个话一次可以打开的游标 (环境区域) 的最大数量, 并且限制 PL/SQL 使用的 PL/SQL 游标高速缓存的大小, 以避免用户再次执行语句时重新进行语法分析。请将该设置得足够高, 这样才能防止应用程序耗尽打开的游标。 范围: 1 - 操作系统限制。 默认: 64 serial_reuse: 说明: 指定何种类型的 SQL 游标应利用串行可重用内存功能。如果 CURSOR_SPACE_FOR_TIME = TRUE, 那么 SERIAL_REUSE 将被忽略, 当作被设置为 DISABLE 或 NULL 的情况处理。 范围: DISABLE | SELECT | DML | PLSQL | ALL | NULL 默认: NULL session_cached_cursors: 说明: 指定要高速缓存的话游标的数量。对同一 SQL 语句进行多次语法分析后, 它的话游标将被移到该话的游标高速缓存。这样可以缩短语法分析的时间, 因为游标被高速缓存, 无需被重新打开。 范围: 0 到根据操作系统而定的。 默认: 0 cursor_space_for_time: 说明: 在一个游标引用共享 SQL 区时, 确定将 SQL 区保留在共享还是从按过期作废处理。 范围: TRUE | FALSE 默认: FALSE (过期作废) rollback_segments: 说明: 指定要在例程启动过程获取的一个或多个回退段, 即使其数量超过了 TRANSACTIONS / TRANSACTIONS_PER_ROLLBACK_SEGMENT 的。公式为 ROLLBACK_SEGMENTS = (rbseg_name [, rbseg_name] ...) 范围:除 SYSTEM 外, DBA_ROLLBACK_SEGS 列出的任何回退段。 默认: NULL (默认情况下使用公用回退段) undo_suppress_errors: 说明: 允许用户在 SMU 模式下尝试执行 RBU 操作 (如 ALTER ROLLBACK SEGMENT ONLINE) 时忽略错误。这样能让用户在将所有应用程序和脚本转换到 SMU 模式之前即可使用 SMU 功能。 范围: True 或 False 默认: False。 Max_rollback_segments: 说明: 指定 SGA 高速缓存的回退段的最大大小。该数指定一个例程可同时保持联机状态 (即状态为 INUSE) 的回退段的最大数量。 范围: 2 -65535 默认: 最大 (30, TRANSACTIONS/TRANSACTIONS_PER_ROLLBACK_SEGMENT) undo_retention: 说明: UNDO_RETENTION 参数用来指定要在数据库保留的已提交的撤消信息总量。可在例程启动时设置该参数。可以计算满足撤消保留要求所需的撤消空间量: UndoSpace = RD * UPS, 其 UndoSpace 以撤消块数来表示, RD 用以秒为单位的 UNDO_RETENTION 来表示, UPS 以每秒撤消块数来表示。 范围: 所允许的最大为 (2 ** 32) 秒。 默认: 30 秒。 Transactions_per_rollback_segment: 说明: 指定每个回退段允许的并行事务处理的数量。启动时获取的回退段的最小数量为 TRANSACTIONS 除以该参数的结果。如果在参数 ROLLBACK_SEGMENTS 命名了其他回退段, 就可以获取这些回退段。 范围: 1 - 根据操作系统而定。 默认: 5 undo_management: 说明: 指定系统应使用哪种撤消空间管理模式。如果设置为 AUTO, 例程将以 SMU 模式启动。否则将以 RBU 模式启动。在 RBU 模式下, 撤消空间象回退段一样在外部分配。在 SMU 模式下, 撤消空间象撤消表空间一样在外部分配。 范围: AUTO 或 MANUAL 默认: 如果启动第一个例程时忽略了 UNDO_MANAGEMENT 参数, 则将使用默认 MANUAL, 并且例程将以 RBU 模式启动。如果这不是第一个例程, 则将按其他现有例程启动时使用的撤消模式来启动该例程。 Undo_tablespace: 说明: 撤消表空间仅用于存储撤消信息。UNDO_TABLESPACE 仅允许在系统管理撤消 (SMU) 模式下使用。例程将使用指定的撤消表空间, <undoname>。如果该表空间不存在, 或不是撤消表空间, 或正在由另一例程使用, 则例程 STARTUP 将失败。 默认: 每个数据库都包含 0 个或更多的撤消表空间。在 SMU 模式下, 将为每个 ORACLE 例程分配一个 (且仅限一个) 撤消表空间。 Instance_name 说明: 在多个例程使用相同服务名的情况下, 用来唯一地标识一个数据库例程。INSTANCE_NAME 不应与 SID 混淆, 它实际上是对在一台主机上共享内存的各个例程的唯一标识。 范围: 任何字母数字字符。 默认: 数据库 SID service_names: 说明 : 为 Oracle Net 监听程序用来识别一个服务 (如: 复制环境的一个特定数据库) 的例程指定服务名。如果该服务没有域, 将附加 DB_DOMAIN 参数。 语法 : SERVICE_NAMES = name1.domain, name2.domain 默认 : DB_NAME.DB_DOMAIN (如果已定义) local_listener: 说明 : 一个 Oracle Net 地址列表, 用于标识 Oracle Net 监听程序所在的同一台计算机上的数据库例程。所有例程和调度程序都在该监听程序上注册, 以便启用客户机连接。该参数覆盖在 8.1 版本废弃的 MTS_LISTENER_ADDRESS 和 MTS_MULTIPLE_LISTENERS 参数。 范围: 一个有效的 Oracle Net 地址列表。 默认: (ADDRESS_LIST=(Address=(Protocol=TCP)(Host=localhost)(Port=1521)) (Address=(Protocol=IPC)(Key=DBname))) license_sessions_warning: 说明: 指定对并行用户话数量的警告限制。达到该限制后, 其他用户仍然可以连接, 但一条消息将被写入 ALERT 文件。具有 RESTRICTED SESSION 权限的用户将收到一条警告消息, 表明系统已接近最大容量。 范围: 0 - LICENSE_MAX_SESSIONS 默认: 0 license_max_sessions: 说明: 指定允许同时进行的并行用户话的最大数量。达到该限制后, 只有具有 RESTRICTED SESSION 权限的用户才能连接到服务器。所有其他用户都收到一条警告消息, 表明已达到系统最大容量的限制。 范围: 0 - 话许可的数量。 默认: 0 license_max_users: 说明: 指定您可在该数据库创建的用户的最大数量。并行话使用许可和用户使用许可不应被同时启用。LICENSE_MAX_SESSIONS 或 LICENSE_MAX_USERS 或这两者的应为零。 范围: 0 - 用户许可的数量。 默认: 0 db_block_checksum: 说明: DBWn, ARCH 和 SQL*loader 是否为每一个数据块读或写计算或校验块的校验和。 范围: TRUE | FALSE 默认: FALSE shadow_core_dump: 说明: 一个针对 UNIX 的参数, 用于指定是否将 SGA 信息转储到一个生成的核心文件。如果设置为 FULL, SGA 将被包括在核心转储。如果设置为 PARTIAL, SGA 将不被转储。 范围: FULL | PARTIAL 默认: FULL db_block_checking: 说明: 用于控制是否检查事务处理管理的块有无损坏。 范围: TRUE | FALSE 默认: FALSE background_core_dump: 说明: 是否将 SGA 信息转储到一个生成的核心文件 (用于 UNIX)。 范围: FULL | PARTIAL 默认: FULL event: 说明: 由 Oracle 技术支持人员使用, 以调试系统。一般情况下, 不应变更该范围:不可用。 默认: 无 user_dump_dest: 说明: 为服务器将以一个用户进程身份在其写入调试跟踪文件的目录指定路径名。例如, 该目录可这样设置: NT 操作系统上的 C:/ ORACLE/UTRC; UNIX 操作系统上的 /oracle/utrc; 或 VMS 操作系统上的 DISK$UR3:[ORACLE.UTRC]。 范围: 一个有效的本地路径名, 目录或磁盘。 默认: 根据操作系统而定 timed_statistics: 说明: 收集操作系统的计时信息, 这些信息可被用来优化数据库和 SQL 语句。要防止因从操作系统请求时间而引起的开销, 请将该设置为零。将该设置为 TRUE 对于查看长时间操作的进度也很有用。 范围: TRUE | FALSE 默认: FALSE timed_os_statistics: 说明 : 由系统管理员使用, 以收集操作系统统计信息。为了有效地使用资源, 请只在需要时才设置该。对于专用服务器, 在用户连接, 断开连接以及弹出调用 (如果超出了指定的时间限制) 的情况下收集操作系统统计信息。对于共享服务器, 将为推入或弹出的调用收集统计信息。 范围: 以秒为单位的时间。 默认 : 0 (操作系统统计信息不被刷新) core_dump_dest: 说明: 指定核心转储位置的目录名 (用于 UNIX)。 范围: 任何有效的目录名。 默认: ORACLE_HOME/dbs oracle_trace_collection_name: 说明: 指定 Oracle Trace 收集名, 并在输出文件名使用 (收集定义文件 .cdf 和数据收集文件 .dat)。如果该参数不为空, 且 ORACLE_TRACE_ENABLE = TRUE, 就启动一个默认的 Oracle Trace 收集, 直到该再次设置为 NULL。 范围: 一个有效的收集名, 最长可为 16 个字符 (使用 8 个字符文件名的平台除外)。 默认: NULL oracle_trace_collection_path: 说明: 指定 Oracle Trace 收集定义文件 (.cdf) 和数据收集文件 (.dat) 所在的目录路径名。 范围: 完整的目录路径名。 默认: 根据操作系统而定 (通常是 ORACLE_HOME/otrace/admin/cdf) background_dump_dest: 说明: 指定在 Oracle 操作过程为后台进程 (LGWR, DBW n 等等) 写入跟踪文件的路径名 (目录或磁盘)。它还定义记录着重要事件和消息的数据库预警文件的位置。 范围: 任何有效的目录名。 默认: ORACLE_HOME/rdbms/log (根据操作系统而定) oracle_trace_enable: 说明: 要为服务器启用 Oracle Trace 收集, 请将该设置为 TRUE。如果设置为 TRUE, 该服务器就可以使用 Oracle Trace。要启动一个收集过程, 请为 ORACLE_TRACE_COLLECTION_NAME 指定一个非空; 或者使用 Oracle Trace Manager 来启动一个收集。 范围: TRUE | FALSE 默认: FALSE oracle_trace_collection_size: 说明: 以字节为单位, 指定 Oracle Trace 收集文件的最大大小。一旦该收集文件的大小达到这个最大, 收集就被禁用。如果范围指定为零, 就表示没有大小限制。 范围: 0 -4294967295 默认: 5242880 oracle_trace_facility_path: 说明: 指定 Oracle TRACE 工具的定义文件 (.fdf) 所在的目录路径名。 范围: 完整的目录路径名。 默认: ORACLE_HOME/otrace/admin/fdf/ (根据操作系统而定) sql_trace: 说明: 禁用或启用 SQL 跟踪设备。如果设置为 TRUE, 将收集优化信息, 这些信息对改善性能很有用。由于使用 SQL 跟踪设备将引发系统开销, 只应在需要优化信息的情况下使用 TRUE。 范围: TRUE | FALSE 默认: FALSE oracle_trace_facility_name: 说明: 指定 Oracle Trace 产品定义文件名 (.fdf 文件名)。该文件包含可为使用 Oracle Trace 数据收集 API 的产品收集的所有事件和数据项的定义信息。Oracle 建议使用默认的文件 ORCLED.FDF。 范围: 一个有效的设备名, 最长可有 16 个字符。 默认: oracled max_dump_file_size: 说明: 指定每个跟踪文件的最大大小。如果您担心跟踪文件占用太多空间, 可更改该限制。如果转储文件可以达到操作系统允许的最大大小, 请将该指定为“无限制”。 范围: 0 - 无限制 (可以用 'K' 或 'M' 为单位) 默认: 10000 块 resource_limit: 说明: 确定是否在数据库概要文件实行资源限制。如果设置为 FALSE, 将禁用资源限制。如果为 TRUE, 即启用资源限制。 范围: TRUE | FALSE 默认: FALSE resource_manager_plan: 说明: 如果指定该, 资源管理器将激活计划和例程的所有子项 (子计划, 指令和使用者组)。如果不指定, 资源管理器将被禁用, 但使用 ALTER SYSTEM 命令还可以启用。 范围: 任何有效的字符串。 默认: NULL sessions: 说明: 指定用户话和系统话的总量。默认数量大于 PROCESSES, 以允许递归话。 范围: 任何整数。 默认: 派生 (1.1 * PROCESSES + 5) java_soft_sessionspace_limit: 说明: 以字节为单位, 指定在 Java 使用的 Java 内存 的 '软限制'。如果用户的话持续时间 Java 状态使用过多的内存, Oracle 将生成一个警告并向跟踪文件写入一则消息。 范围: 0 - 4GB 默认: 0 cpu_count: 说明: Oracle 可用的 CPU 的数目 (用于计算其他参数)。请勿更改该范围: 0 - 无限制。 默认: 由 Oracle 自动设置 java_max_sessionspace_size: 说明: 以字节为单位, 指定可供在服务器运行的 Java 程序所使用的最大内存量。它用于存储每次数据库调用的 Java 状态。如果用户的话持续时间 Java 状态超过了该, 则该由于内存不足而终止。 范围: 根据操作系统而定。 默认: 0 processes: 说明: 指定可同时连接到一个 Oracle Server 上的操作系统用户进程的最大数量。该应允许执行所有后台进程, 如: 作业队列 (SNP) 进程和并行执行 (Pnnn) 进程范围: 6 到根据操作系统而定的一个。 默认: 由 PARALLEL_MAX_SERVERS 确定 control_file_record_keep_time: 说明: 控制文件可重新使用部分的记录必须保留的最短时间 (天数)。 范围: 0 -365 默认: 7 log_checkpoint_timeout: 说明: 指定距下一个检查点出现的最大时间间隔 (秒数)。将该时间指定为 0, 将禁用以时间为基础的检查点。较低的可以缩短例程恢复的时间, 但可能导致磁盘操作过量。 范围: 0 - 无限制。 默认: Oracle8i:900 秒。企业版: 1800 秒 recovery_parallelism: 说明: 指定参与例程或介质恢复的进程的数量。如果为 0 或 1, 就表明恢复将由一个进程以串行方式执行。 范围: 根据操作系统而定 (不能超过 PARALLEL_MAX_SERVERS)。 默认: 根据操作系统而定 fast_start_mttr_target: 说明: 指定从单个数据库例程崩溃恢复所需的时间 (估计秒数)。FAST_START_MTTR_TARGET 将在内部被转换为一组参数, 用于修改数据库的操作, 从而将它的恢复时间控制在总 "恢复平均时间 (MTTR)" 的一定范围之内。只有具有 "快速启动故障恢复" 功能的版本才支持此参数。 范围: [0, 3600]。它将计算数据缓冲区高速缓存条目数之上, 且大于最大日志的块数的限。 默认: 0 log_checkpoints_to_alert: 说明: 指定将检查点信息记录到预警文件。该参数对于确定检查点是否按所需频率出现很有用。 范围: TRUE | FALSE 默认: FALSE fast_start_io_target: 说明: 指定在系统崩溃或例程恢复期间需要的 I/O 数量。该比 DB_BLOCK_MAX_DIRTY_TARGET 对恢复过程的控制更加精确。 范围: 0 (禁用 I/O 恢复限制) 或 1000, 到高速缓存的所有缓冲区数。 默认: 高速缓存的所有缓冲区数 log_checkpoint_interval: 说明: 指定在出现检查点之前, 必须写入重做日志文件的 OS 块 (而不是数据库块) 的数量。无论该如何, 在切换日志时都出现检查点。较低的可以缩短例程恢复所需的时间, 但可能导致磁盘操作过量。 范围: 无限制 (指定 0 即可禁用该参数)。 默认: 根据操作系统而定 log_buffer: 说明: 以字节为单位, 指定在 LGWR 将重做日志条目写入重做日志文件之前, 用于缓存这些条目的内存量。重做条目保留对数据
[client] port = 3306 socket=/home/mysql/data/mysql.sock [mysqld] lower_case_table_names=1 user = mysql #--- 表示MySQL的管理用户 port = 3306 #--- 端口 #basedir=/usr/local/mysql socket=/home/mysql/data/mysql.sock #-- 启动的sock文件 datadir=/home/mysql/data log-bin=/home/mysql/mysql-bin log-error=/home/mysql/log/mysqld.log pid-file =/home/mysql/mysqld.pid bind-address = 0.0.0.0 server-id = 1 #表示是本机的序号为1,一般来讲就是master的意思 skip-grant-tables skip-name-resolve # 禁止MySQL对外部连接进行DNS解析,使用这一选项可以消除MySQL进行DNS解析的时间。但需要注意,如果开启该选项, # 则所有远程主机连接授权都要使用IP地址方式,否则MySQL将无法正常处理连接请求 #skip-networking back_log = 600 # MySQL能有的连接数量。当主要MySQL线程在一个很短时间内得到非常多的连接请求,这就起作用, # 然后主线程花些时间(尽管很短)检查连接并且启动一个新线程。back_log指出在MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈。 # 如果期望在一个短时间内有很多连接,你需要增加它。也就是说,如果MySQL的连接数据达到max_connections时,新来的请求将被存在堆栈, # 以等待某一连接释放资源,该堆栈的数量即back_log,如果等待连接的数量超过back_log,将不被授予连接资源。 # 另外,这(back_log)限于您的操作系统对到来的TCP/IP连接的侦听队列的大小。 # 你的操作系统在这个队列大小上有它自己的限制(可以检查你的OS文档找出这个变量的最大),试图设定back_log高于你的操作系统的限制将是无效的。 max_connections = 500 # MySQL的最大连接数,如果服务器的并发连接请求量比较大,建议调高此,以增加并行连接数量,当然这建立在机器能支撑的情况下,因为如果连接数越多,介于MySQL为每个连接提供连接缓冲区,就开销越多的内存,所以要适当调整该,不能盲目提高设。可以过'conn%'通配符查看当前状态的连接数量,以定夺该的大小。 max_connect_errors = 6000 # 对于同一主机,如果有超出该参数个数的断错误连接,则该主机将被禁止连接。如需对该主机进行解禁,执行:FLUSH HOST。 open_files_limit = 65535 # MySQL打开的文件描述符限制,默认最小1024;当open_files_limit没有被配置的时候,比较max_connections*5和ulimit -n的,哪个大用哪个, # 当open_file_limit被配置的时候,比较open_files_limit和max_connections*5的,哪个大用哪个. table_open_cache = 128 # MySQL每打开一个表,都读入一些数据到table_open_cache缓存,当MySQL在这个缓存找不到相应信息时,才去磁盘上读取。默认64 # 假定系统有200个并发连接,则需将此参数设置为200*N(N为每个连接所需的文件描述符数目); # 当把table_open_cache设置为很大时,如果系统处理不了那么多文件描述符,那么就出现客户端失效,连接不上 max_allowed_packet = 1000000000 # 接受的数据包大小;增加该变量十分安全,这是因为仅当需要时才分配额外内存。例如,仅当你发出长查询或MySQLd必须返回大的结果行时MySQLd才分配更多内存。 # 该变量之所以取较小默认是一种预防措施,以捕获客户端和服务器之间的错误信息包,并确保不因偶然使用大的信息包而导致内存溢出。 binlog_cache_size = 1M # 一个事务,在没有提交的时候,产生的日志,记录到Cache;等到事务提交需要提交的时候,则把日志持久化到磁盘。默认binlog_cache_size大小32K max_heap_table_size = 67108864 # 定义了用户可以创建的内存表(memory table)的大小。这个用来计算内存表的最大行数。这个变量支持动态改变 tmp_table_size = 67108864 # MySQL的heap(堆积)表缓冲大小。所有联合在一个DML指令内完成,并且大多数联合甚至可以不用临时表即可以完成。 # 大多数临时表是基于内存的(HEAP)表。具有大的记录长度的临时表 (所有列的长度的和)或包含BLOB列的表存储在硬盘上。 # 如果某个内部heap(堆积)表大小超过tmp_table_size,MySQL可以根据需要自动将内存的heap表改为基于硬盘的MyISAM表。还可以通过设置tmp_table_size选项来增加临时表的大小。也就是说,如果调高该,MySQL同时将增加heap表的大小,可达到提高联接查询速度的效果 read_buffer_size = 4194304 # MySQL读入缓冲区大小。对表进行顺序扫描的请求将分配一个读入缓冲区,MySQL为它分配一段内存缓冲区。read_buffer_size变量控制这一缓冲区的大小。 # 如果对表的顺序扫描请求非常频繁,并且你认为频繁扫描进行得太慢,可以通过增加该变量以及内存缓冲区大小提高其性能 read_rnd_buffer_size = 4194304 # MySQL的随机读缓冲区大小。当按任意顺序读取行时(例如,按照排序顺序),将分配一个随机读缓存区。进行排序查询时, # MySQL首先扫描一遍该缓冲,以避免磁盘搜索,提高查询速度,如果需要排序大量数据,可适当调高该。但MySQL为每个客户连接发放该缓冲空间,所以应尽量适当设置该,以避免内存开销过大 sort_buffer_size = 4194304 # MySQL执行排序使用的缓冲大小。如果想要增加ORDER BY的速度,首先看是否可以让MySQL使用索引而不是额外的排序阶段。 # 如果不能,可以尝试增加sort_buffer_size变量的大小 join_buffer_size = 8388608 # 联合查询操作所能使用的缓冲区大小,和sort_buffer_size一样,该参数对应的分配内存也是每连接独享 thread_cache_size = 8 # 这个(默认8)表示可以重新利用保存在缓存线程的数量,当断开连接时如果缓存还有空间,那么客户端的线程将被放到缓存, # 如果线程重新被请求,那么请求将从缓存读取,如果缓存是空的或者是新的请求,那么这个线程将被重新创建,如果有很多新的线程, # 增加这个可以改善系统性能.通过比较Connections和Threads_created状态的变量,可以看到这个变量的作用。(–>表示要调整的) # 根据物理内存设置规则如下: # 1G —> 8 # 2G —> 16 # 3G —> 32 # 大于3G —> 64 #query_cache_size = 8M #MySQL的查询缓冲大小(从4.0.1开始,MySQL提供了查询缓冲机制)使用查询缓冲,MySQL将SELECT语句和查询结果存放在缓冲区, # 今后对于同样的SELECT语句(区分大小写),将直接从缓冲区读取结果。根据MySQL用户手册,使用查询缓冲最多可以达到238%的效率。 # 通过检查状态'Qcache_%',可以知道query_cache_size设置是否合理:如果Qcache_lowmem_prunes的非常大,则表明经常出现缓冲不够的情况, # 如果Qcache_hits的也非常大,则表明查询缓冲使用非常频繁,此时需要增加缓冲大小;如果Qcache_hits的不大,则表明你的查询重复率很低, # 这种情况下使用查询缓冲反而影响效率,那么可以考虑不用查询缓冲。此外,在SELECT语句加入SQL_NO_CACHE可以明确表示不使用查询缓冲 #query_cache_limit = 2M #指定单个查询能够使用的缓冲区大小,默认1M key_buffer_size = 1048576 #指定用于索引的缓冲区大小,增加它可得到更好处理的索引(对所有读和多重写),到你能负担得起那样多。如果你使它太大, # 系统将开始换页并且真的变慢了。对于内存在4GB左右的服务器该参数可设置为384M或512M。通过检查状态Key_read_requests和Key_reads, # 可以知道key_buffer_size设置是否合理。比例key_reads/key_read_requests应该尽可能的低, # 至少是1:100,1:1000更好(上述状态可以使用SHOW STATUS LIKE 'key_read%'获得)。注意:该参数设置的过大反而是服务器整体效率降低 ft_min_word_len = 4 # 分词词汇最小长度,默认4 transaction_isolation = REPEATABLE-READ # MySQL支持4种事务隔离级别,他们分别是: # READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE. # 如没有指定,MySQL默认采用的是REPEATABLE-READ,ORACLE默认的是READ-COMMITTED log_bin = mysql-bin binlog_format = mixed expire_logs_days = 30 #超过30天的binlog删除 slow_query_log = 1 long_query_time = 1 #慢查询时间 超过1秒则为慢查询 slow_query_log_file = /home/mysql/data/mysql-slow.log performance_schema = 0 explicit_defaults_for_timestamp #lower_case_table_names = 1 #不区分大小写 skip-external-locking #MySQL选项以避免外部锁定。该选项默认开启 default-storage-engine = InnoDB #默认存储引擎 innodb_file_per_table = 1 # InnoDB为独立表空间模式,每个数据库的每个表都生成一个数据空间 # 独立表空间优点: # 1.每个表都有自已独立的表空间。 # 2.每个表的数据和索引都存在自已的表空间。 # 3.可以实现单表在不同的数据库移动。 # 4.空间可以回收(除drop table操作处,表空不能自已回收) # 缺点: # 单表增加过大,如超过100G # 结论: # 共享表空间在Insert操作上少有优势。其它都没独立表空间表现好。当启用独立表空间时,请合理调整:innodb_open_files innodb_open_files = 500 # 限制Innodb能打开的表的数据,如果库里的表特别多的情况,请增加这个。这个默认是300 innodb_buffer_pool_size = 1048576 # InnoDB使用一个缓冲池来保存索引和原始数据, 不像MyISAM. # 这里你设置越大,你在存取表里面数据时所需要的磁盘I/O越少. # 在一个独立使用的数据库服务器上,你可以设置这个变量到服务器物理内存大小的80% # 不要设置过大,否则,由于物理内存的竞争可能导致操作系统的换页颠簸. # 注意在32位系统上你每个进程可能被限制在 2-3.5G 用户层面内存限制, # 所以不要设置的太高. innodb_write_io_threads = 4 innodb_read_io_threads = 4 # innodb使用后台线程处理数据页上的读写 I/O(输入输出)请求,根据你的 CPU 核数来更改,默认是4 # 注:这两个参数不支持动态改变,需要把该参数加入到my.cnf里,修改完后重启MySQL服务,允许的范围从 1-64 innodb_thread_concurrency = 0 # 默认设置为 0,表示不限制并发数,这里推荐设置为0,更好去发挥CPU多核处理能力,提高并发量 innodb_purge_threads = 1 # InnoDB的清除操作是一类定期回收无用数据的操作。在之前的几个版本,清除操作是主线程的一部分,这意味着运行时它可能堵塞其它的数据库操作。 # 从MySQL5.5.X版本开始,该操作运行于独立的线,并支持更多的并发数。用户可通过设置innodb_purge_threads配置参数来选择清除操作是否使用单 # 独线程,默认情况下参数设置为0(不使用单独线程),设置为 1 时表示使用单独的清除线程。建议为1 innodb_flush_log_at_trx_commit = 2 # 0:如果innodb_flush_log_at_trx_commit的为0,log buffer每秒就被刷写日志文件到磁盘,提交事务的时候不做任何操作(执行是由mysql的master thread线程来执行的。 # 主线每秒将重做日志缓冲写入磁盘的重做日志文件(REDO LOG)。不论事务是否已经提交)默认的日志文件是ib_logfile0,ib_logfile1 # 1:当设为默认1的时候,每次提交事务的时候,都将log buffer刷写到日志。 # 2:如果设为2,每次提交事务都写日志,但并不执行刷的操作。每秒定时刷到日志文件。要注意的是,并不能保证100%每秒一定都刷到磁盘,这要取决于进程的调度。 # 每次事务提交的时候将数据写入事务日志,而这里的写入仅是调用了文件系统的写入操作,而文件系统是有 缓存的,所以这个写入并不能保证数据已经写入到物理磁盘 # 默认1是为了保证完整的ACID。当然,你可以将这个配置项设为1以外的来换取更高的性能,但是在系统崩溃的时候,你将丢失1秒的数据。 # 设为0的话,mysqld进程崩溃的时候,就丢失最后1秒的事务。设为2,只有在操作系统崩溃或者断电的时候才丢失最后1秒的数据。InnoDB在做恢复的时候忽略这个。 # 总结 # 设为1当然是最安全的,但性能页是最差的(相对其他两个参数而言,但不是不能接受)。如果对数据一致性和完整性要求不高,完全可以设为2,如果只最求性能,例如高并发写的日志服务器,设为0来获得更高性能 innodb-buffer-pool-size = 128M innodb_log_buffer_size = 4194304 # 此参数确定些日志文件所用的内存大小,以M为单位。缓冲区更大能提高性能,但意外的故障将丢失数据。MySQL开发人员建议设置为1-8M之间 innodb_log_file_size = 268435456 # 此参数确定数据日志文件的大小,更大的设置可以提高性能,但也增加恢复故障数据库所需的时间 innodb_log_files_in_group = 3 # 为提高性能,MySQL可以以循环方式将日志文件写到多个文件。推荐设置为3 innodb_max_dirty_pages_pct = 90 # innodb主线程刷新缓存池的数据,使脏数据比例小于90% innodb_lock_wait_timeout = 120 # InnoDB事务在被回滚之前可以等待一个锁定的超时秒数。InnoDB在它自己的锁定表自动检测事务死锁并且回滚事务。InnoDB用LOCK TABLES语句注意到锁定设置。默认是50秒 bulk_insert_buffer_size = 1024M # 批量插入缓存大小, 这个参数是针对MyISAM存储引擎来说的。适用于在一次性插入100-1000+条记录时, 提高效率。默认是8M。可以针对数据量的大小,翻倍增加。 myisam_sort_buffer_size = 1024M # MyISAM设置恢复表之时使用的缓冲区的尺寸,当在REPAIR TABLE或用CREATE INDEX创建索引或ALTER TABLE过程排序 MyISAM索引分配的缓冲区 myisam_max_sort_file_size = 10G # 如果临时文件变得超过索引,不要使用快速排序索引方法来创建一个索引。注释:这个参数以字节的形式给出 myisam_repair_threads = 1 # 如果该大于1,在Repair by sorting过程并行创建MyISAM表索引(每个索引在自己的线程内) interactive_timeout = 28800 # 服务器关闭交互式连接前等待活动的秒数。交互式客户端定义为在mysql_real_connect()使用CLIENT_INTERACTIVE选项的客户端。默认:28800秒(8小时) wait_timeout = 28800 # 服务器关闭非交互连接之前等待活动的秒数。在线程启动时,根据全局wait_timeout或全局interactive_timeout初始化话wait_timeout, # 取决于客户端类型(由mysql_real_connect()的连接选项CLIENT_INTERACTIVE定义)。参数默认:28800秒(8小时) # MySQL服务器所支持的最大连接数是有上限的,因为每个连接的建立都消耗内存,因此我们希望客户端在连接到MySQL Server处理完相应的操作后, # 应该断开连接并释放占用的内存。如果你的MySQL Server有大量的闲置连接,他们不仅白白消耗内存,而且如果连接一直在累加而不断开, # 最终肯定达到MySQL Server的连接上限数,这报'too many connections'的错误。对于wait_timeout的设定,应该根据系统的运行情况来判断。 # 在系统运行一段时间后,可以通过show processlist命令查看当前系统的连接状态,如果发现有大量的sleep状态的连接进程,则说明该参数设置的过大, # 可以进行适当的调整小些。要同时设置interactive_timeout和wait_timeout才生效。 [mysqldump] quick max_allowed_packet = 16M #服务器发送和接受的最大包长度 [myisamchk] key_buffer_size = 8M sort_buffer_size = 8M read_buffer = 4M write_buffer = 4M
在《爬虫/蜘蛛程序的制作(C#语言)》一文,已经介绍了爬虫程序实现的基本方法,可以说,已经实现了爬虫的功能。只是它存在一个效率问题,下载速度可能很慢。这是两方面的原因造成的: 1. 分析和下载不能同步进行。在《爬虫/蜘蛛程序的制作(C#语言)》已经介绍了爬虫程序的两个步骤:分析和下载。在单线程的程序,两者是无法同时进行的。也就是说,分析时造成网络空闲,分析的时间越长,下载的效率越低。反之也是一样,下载时无法同时进行分析,只有停下下载后才能进行下一步的分析。问题浮出水面,我想大家都想到:把分析和下载用不同线程进行,问题不就解决了吗? 2. 只是单线程下载。相信大家都有用过网际快车等下载资源的经历,它里面是可以设置线程数的(近年版本默认是10,曾经默认是5)。它将文件分成与线程数相同的部分,然后每个线程下载自己的那一部分,这样下载效率就有可能提高。相信大家都有加多线程数,提升下载效率的经历。但细心的用户发现,在带宽一定的情况下,并不是线程越多,速度越快,而是在某一点达到峰。爬虫作为特殊的下载工具,不具备多线程的能力何以有效率可谈?爬虫在信息时代的目的,难道不是快速获取信息吗?所以,爬虫需要有多线程(可控数量)同时下载网页。 好了,认识、分析完问题,就是解决问题了: 多线程在C#并不难实现。它有一个命名空间:System.Threading,提供了多线程的支持。 要开启一个新线程,需要以下的初始化: ThreadStart startDownload = new ThreadStart( DownLoad ); //线程起始设置:即每个线程都执行DownLoad(),注意:DownLoad()必须为不带有参数的方法 Thread downloadThread = new Thread( startDownload ); //实例化要开启的新类 downloadThread.Start();//开启线程 由于线程起始时启动的方法不能带有参数,这就为多线共享资源添加了麻烦。不过我们可以用类级变量(当然也可以使用其它方法,笔者认为此方法最简单易用)来解决这个问题。知道开启多线程下载的方法后,大家可能产生几个疑问: 1. 如何控制线程的数量? 2. 如何防止多线程下载同一网页? 3. 如何判断线程结束? 4. 如何控制线程结束? 下面就这几个问题提出解决方法: 1. 线程数量我们可以通过for循环来实现,就如同当年初学编程的打点程序一样。 比如已知用户指定了n(它是一个int型变量)个线程吧,可以用如下方法开启五个线程 Thread[] downloadThread;//声名下载线程,这是C#的优势,即数组初始化时,不需要指定其长度,可以在使用时才指定。这个声名应为类级,这样也就为其它方法控件它们提供了可能 ThreadStart startDownload = new ThreadStart( DownLoad );//线程起始设置:即每个线程都执行DownLoad() downloadThread = new Thread[ n ];//为线程申请资源,确定线程总数 for( int i = 0; i < n; i++ )//开启指定数量的线程数 { downloadThread[i] = new Thread( startDownload );//指定线程起始设置 downloadThread[i].Start();//逐个开启线程 } 好了,实现控制开启线程数是不是很简单啊? 2. 下面出现的一个问题:所有的线程都调用DonwLoad()方法,这样如何避免它们同时下载同一个网页呢? 这个问题也好解决,只要建立一下Url地址表,表的每个地址只允许被一个线程申请即可。具体实现: 可以利用数据库,建立一个表,表有四列,其一列专门用于存储Url地址,另外两列分别存放地址对应的线程以及该地址被申请的次数,最后一列存放下载的内容。(当然,对应线程一列不是必要的)。当有线程申请后,将对应线程一列设定为当前线程编号,并将是否申请过一列设置为申请一次,这样,别的线程就无法申请该页。如果下载成功,则将内容存入内容列。如果不成功,内容列仍为空,作为是否再次下载的依据之一,如果反复不成功,则进程将于达到重试次数(对应该地址被申请的次数,用户可设)后,申请下一个Url地址。主要的代码如下(以VFP为例): CREATE TABLE (ctablename) ( curl M , ctext M , ldowned I , threadNum I ) &&建立一个表ctablename.dbf,含有地址、文本内容、已经尝试下载次数、线程标志(初为-1,线程标志是从0开始的整数)四个字段 cfullname = (ctablename) + '.dbf'&&为表添加扩展名 USE (cfullname) GO TOP LOCATE FOR (EMPTY( ALLTRIM( ctext ) ) AND ldowned < 2 AND ( threadNum = thisNum OR threadNum = - 1) ) &&查找尚未下载成功且应下载的属于本线程权限的Url地址,thisNum是当前线程的编号,可以通过参数传递得到 gotUrl = curl recNum = RECNO() IF recNum <= RECCOUNT() THEN &&如果在列表找到这样的Url地址 UPDATE (cfullname) SET ldowned = ( ldowned + 1 ) , threadNum = thisNum WHERE RECNO() = recNum &&更新表,将此记录更新为已申请,即下载次数加1,线程标志列设为本线程的编号。 cfulltablename = (ctablename) + '.dbf' USE (cfulltablename) SET EXACT ON LOCATE FOR curl = (csiteurl) &&csiteurl是参数,为下载到的内容所对应的Url地址 recNumNow = RECNO()&&得到含有此地址的记录号 UPDATE (cfulltablename) SET ctext = (ccontent) WHERE RECNO() = recNumNow &&插入对应地址的对应内容 ctablename = (ctablename) + '.dbf' USE (ctablename) GO TOP SET EXACT ON LOCATE FOR curl = (cnewurl) &&查找有无此地址 IF RECNO() > RECCOUNT() THEN &&如果尚无此地址 SET CARRY OFF INSERT INTO (ctablename) ( curl , ctext , ldowned , threadNum ) VALUES ( (cnewurl) , "" , 0 , -1 ) &&将主页地址添加到列表 好了,这样就解决了多线线程冲突。当然,去重问题也可以在C#语言内解决,只根建立一个临时文件(文本就可以),保存所有的Url地址,差对它们设置相应的属性即可,但查找效率可能不及数据库快。 3. 线程结束是很难判断的,因为它总是在查找新的链接。用者认为可以假设:线程重复N次以后还是没有能申请到新的Url地址,那么可以认为它已经下载完了所有链接。主要代码如下: string url = ""; int times = 0; while ( url == "" )//如果没有找到符合条件的记录,则不断地寻找符合条件的记录 { url = getUrl.GetAUrl( …… );//调用GetAUrl方法,试图得到一个url if ( url == "" )//如果没有找到 { times ++;//尝试次数自增 continue; //进行下一次尝试 } if ( times > N ) //如果已经尝试够了次数,则退出进程 { downloadThread[i].Abort; //退出进程 } else//如果没有尝试够次数 { Times = 0; //尝试次数归零处理 } //进行下一步针对得到的Url的处理 } 4. 这个问题相对简单,因为在问题一已经建议,将线程声名为类级数组,这样就很易于控制。只要用一个for循环即可结束。代码如下: for( int i = 0; i < n; i++ )//关闭指定数量n的线程数 { downloadThread[i].Abort();//逐个关闭线程 } 好了,一个蜘蛛程序就这样完成了,在C#面前,它的实现原来如此简单。 这里笔者还想提醒读者:笔者只是提供了一个思路及一个可以实现的解决方案,但它并不是最佳的,即使这个方案本身,也有好多可以改进的地方,留给读者思考。 最后说明一下我所使用的环境: winXP sp2 Pro VFP 9.0 Visual Studio 2003 .net文企业版 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/peter1_jiang/archive/2007/10/23/1839137.aspx

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值