威尼斯www.9778.com-威尼斯正版官方网站

在 .NET 中使用 Oracle 数据库事务

日期:2019-12-25编辑作者:数据库

随着 Microsoft 的 .NET 框架的逐渐流行,许多开发人员迫切想了解关于将 .NET 应用程序与 Oracle 集成的最好的方式的信息 不仅在基本的连通性方面,还包括与使用 Visual Studio.NET (VS.NET) 进行有效的应用程序开发的关系。

由于System.Data.OracleClient.dll从.NET Framework4.0之后已被弃用,所以我们无法在.NET Framework高版本中使用。一番搜索之后,发现好多文章提到.NET连接Oracle需要安装客户端,安装驱动,各种配置...感觉无比麻烦。

在本文中,您将了解到如何在 Visual Basic .NET (VB.NET) 和 Visual C# .NET (C#) 中使用数据库事务。具体来讲,您将系统学习数据库事务、在 .NET 程序中使用 OracleTransaction 对象以及如何设置事务保存点。本文中引用的所有脚本和文件都在这里提供。本文假定您大体上熟悉 C# 和 VB.NET 编程。

在本文中,我将说明构建使用 Oracle 数据库的 .NET 应用程序所涉及到的基本但不可或缺的过程,包括: 如何添加工程引用,以在您的 .NET 工程中支持 Oracle 类 如何创建 Oracle 数据库连接字符串 如何使用 Connection、Command 和 DataReader 对象。 您将有机会应用您在三个上机操作实践中学到的内容,难度范围从比较容易到更复杂。

Oracle Entity Framework使用基本配置

Oracle官方推出了对于.NET的支持【Oracle Data Provider for .NET】,根据我的Visual Studio下载了一个对应版本的组件,安装很简单,没有什么选项。
图片 1
安装完之后,可以通过Visual Studio创建个应用,然后来体验ODP.NET。
项目创建之后,选择添加组件【 ADO.NET实体对象模型】
图片 2
跟随向导一路点击,这里我选择数据库先行
图片 3
选择【新建一个连接】->选择【Oracle数据源】
图片 4
配置数据库库连接属性,我们需要数据库的用户名、密码,连接方式选择EZ连接,然后写上你的数据库所在服务器的ip或者服务器主机名(注:数据库主机名和数据库服务名不是同一个东西),Oracle端口一般默认为1521
图片 5
配置完成后,修改连接串的名字,当然这不是必要的
图片 6
最后选择需要操作的数据库表、存储过程、视图...
图片 7
等待vsiual studio将代码自动生成后,即可操作数据库访问

using (var dbContext=new OracleDbContext())
{
    foreach (var item in dbContext.TMODALs)
    {
        Console.WriteLine("{0} {1}",item.C_ORG_CODE, item.C_USR_CODE);
    }
}

所需软件

.NET Data Provider

Oracle.ManagedDataAccess

在ODP.NET中包含了Oracle.ManagedDataAccess.dll组件,它是.NET连接Oracle的驱动,有了它你不需要再安装Oracle数据库客户端软件就可以连接数据库。你可以通过Nuget直接安装这个dll组件
图片 8
调用代码和其他数据库的写法没什么区别,只要注意连接串中数据库主机名(ip),数据库服务名,账号,密码只要配置好几本不会出什么问题。

 string connectionString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ZHYW)));Persist Security Info=True;User ID=root;Password=root;";
 using (OracleConnection oracleConnection = new OracleConnection(connectionString))
 {
     oracleConnection.Open();
     string cmdText = "SELECT * FROM TMODAL";
     OracleCommand oracleCommand = new OracleCommand(cmdText,oracleConnection);
     OracleDataReader oracleDataReader = oracleCommand.ExecuteReader();
     if (oracleDataReader.HasRows)
     {
         while (oracleDataReader.Read())
         {
             Console.WriteLine("{0} {1}", oracleDataReader[0], oracleDataReader[1]);
         }
     }
 }

如果您要跟随我们逐步完成本文中给出的示例,那么您需要安装以下软件:

除了基本的 Oracle 客户端连通性软件,.NET 应用程序还需要使用称为 managed data provider的工具。 数据供应程序是 .NET 应用程序代码和 Oracle 客户端连通性软件之间的层。 在几乎所有情况下,最优的性能都是通过使用为特定数据库平台优化了的供应程序而不是一般的 .NET OLE DB 数据供应程序实现的。

常见的一些错误

server explore 中的连接"*****" 具有相同的身份证明
图片 9
这是由于服务器资源管理器中已经存在该名字的连接,你可以通过【视图】->【服务器资源管理器】->【数据库】中把同名连接删除

ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务
图片 10
这个有可能是你的数据库服务名写错了,也就是数据库连接串中的SERVICE_NAME

  • Windows NT 4.0、Windows 2000、Windows XP Professional 或 Windows Server 2003
  • 能够访问一个已安装的 Oracle 数据库(Oracle8i 版本 3 8.1.7 或更高版本)
  • Oracle 客户机(版本 10.1.0.2.0 或更高版本)

  • Oracle Net(版本 10.1.0.2.0 或更高版本)

  • Oracle Data Providers for .NET(版本 10.1.0.2.0 或更高版本)

  • Microsoft .NET Framework(版本 1.0 或更高版本)
  • Microsoft .NET 框架 SDK(版本 1.0 或更高版本)

Oracle、Microsoft 和第三方供应商都提供了针对 Oracle 产品进行了优化的数据供应程序。 Oracle 和 Microsoft 免费提供其 Oracle 数据供应程序。 一些第三方数据供应程序支持 Oracle 的较早的版本,或者不需要安装 Oracle 客户端软件。 在本文中,我们假设使用 Oracle Data Provider for .NET (ODP.NET),并单独提供下载。

如果您打算使用企业服务事务或分布式事务来开发和运行应用程序,那么您还需要安装 Oracle Services for Microsoft Transaction Server(10.1.0.2.0 或更高版本)。

当安装了 ODP.NET 和所有要求的 Oracle 客户端连通性软件时,就可以开始使用 Visual Studio.NET 进行应用程序开发了。 在开始开发前,请先确认客户端连通性。 如果您在 VS.NET 所在的计算机上使用 SQL*Plus 能够与 Oracle 连接,那么证明您已经正确地安装和配置了 Oracle 客户端软件。

您需要分别下载和安装 .NET 框架以及 SDK(先安装框架)。您还需要下载和安装 Oracle 数据库 10g,它包括 Oracle Data Provider for .NET (ODP.NET)。您可以选择在不同计算机或同一计算机上安装 ODP.NET 和数据库服务器。

如果您刚接触 Oracle,那么请参阅 Oracle Data Provider for .NET 开发人员指南 10g 版本 1 (10.1) 中的与 Oracle 数据库连接部分,以了解 ODP.NET 的背景信息,或参阅 Oracle 数据库管理员指南 10g 版本 1 (10.1),以了解关于管理 Oracle 数据库的通用信息。 您还可以查阅使用 ODP.NET 与 Oracle 数据库连接示例代码方法文档。

注意:ODP.NET 驱动程序针对 Oracle 数据库访问进行了优化,因此可以获得最佳性能,并且它们还支持 Oracle 数据库的丰富特性,如 BFILE、BLOB、CLOB、XMLType 等。如果您正在开发基于 Oracle 数据库的 .NET 应用程序,那么就特性和性能来讲,ODP.NET 无疑是最佳的选择。

在 Visual Studio.NET 中创建工程

数据库模式设置

在启动 VS.NET 之后,第一个任务是创建一个工程。 您可以单击 New Project 按钮或选择 File | New | Project...

首先,您需要设置数据库模式,在此我们使用一个简化的 Web 商店示例。您必须首先创建一个名为 store 的用户并按以下方式将所需的权限授予该用户(您必须首先以拥有 CREATE USER 权限的用户身份登录数据库才能创建用户):

图 1: 在 Visual Studio.NET 中创建一个新工程

CREATE USER store IDENTIFIED BY store;
GRANT connect, resource TO store;

出现一个 New Project 对话框。 在对话框左侧的 Project Types 下,选择您的编程语言。 在这个例子中,我们选择 VB.NET。 在右侧的 Templates 下,选择一个工程模板。 为简单起见,这里选择 Windows Application。

注意:您会在源代码文件 db1.sql 中找到前两个语句和该部分中出现的设置 store 模式的其他语句。

图 2: 使用 New Project 对话框

接下的语句以 store 用户身份进行连接:

您将需要为工程和解决方案指定有意义的名称。 一个解决方案包含一个或多个工程。 当一个解决方案仅包含一个工程时,许多人对二者使用相同的名称。

CONNECT store/store;

添加引用

以下语句创建了所需的两个数据库表,名称分别为 product_types 和 products:

因为我们的工程必须与 Oracle 数据库连接,因此必须添加一个到包含我们选择的数据供应程序的 dll 的引用。 在 Solution Explorer 内,选择 References 节点,右键单击并选择 Add Reference。 或者,您可以转至菜单栏并选择 Project,然后选择 Add Reference

CREATE TABLE product_types (
product_type_id INTEGER
CONSTRAINT product_types_pk PRIMARY KEY,
name VARCHAR2(10) NOT NULL
);
CREATE TABLE products (
product_id INTEGER
CONSTRAINT products_pk PRIMARY KEY,
product_type_id INTEGER
CONSTRAINT products_fk_product_types
REFERENCES product_types(product_type_id),
name VARCHAR2(30) NOT NULL,
description VARCHAR2(50),
price NUMBER(5, 2)
);

图 3: 添加引用

注意:如果您在一个不同的模式中为 store 用户创建了这些数据库表,那么您将需要修改示例配置文件(您稍后将看到)中的模式名称。

出现 Add Reference 对话框。

表 product_types 用于存储示例在线商店可能库存的产品类型的名称,表 products 包含了所销售产品的详细信息。

图 4: 选择 ODP.NET 管理的数据供应程序

下面的 INSERT 语句为表 product_types 和 products 添加行:

从列表中选择 Oracle.DataAccess.dll,然后单击 Select 按钮,最后单击 OK 按钮,使您的工程能够找到 ODP.NET 数据供应程序。

INSERT INTO product_types (
product_type_id, name
) VALUES (
1, 'Book'
);
INSERT INTO product_types (
product_type_id, name
) VALUES (
2, 'DVD'
);
INSERT INTO products (
product_id, product_type_id, name, description, price
) VALUES (
1, 1, 'Modern Science', 'A description of modern science', 19.95
);
INSERT INTO products (
product_id, product_type_id, name, description, price
) VALUES (
2, 1, 'Chemistry', 'Introduction to Chemistry', 30.00
);
INSERT INTO products (
product_id, product_type_id, name, description, price
) VALUES (
3, 2, 'Supernova', 'A star explodes', 25.99
);
INSERT INTO products (
product_id, product_type_id, name, description, price
) VALUES (
4, 2, 'Tank War', 'Action movie about a future war', 13.95
);
COMMIT;

接下来,您将了解有关数据库事务的内容。

数据库事务简介

数据库事务是由一组 SQL 语句组成的一个逻辑工作单元。您可以把事务看作是一组不可分的 SQL 语句,这些语句作为一个整体永久记录在数据库中或一并撤销。比如在银行帐户之间转移资金:一条 UPDATE 语句将从一个帐户的资金总数中减去一部分,另一条 UPDATE 语句将把资金加到另一个帐户中。减操作和加操作必须永久记录在数据库中,或者必须一并撤销 — 否则将损失资金。这个简单的示例仅使用了两条 UPDATE 语句,但一个更实际的事务可能包含许多 INSERT、UPDATEDELETE 语句。

要永久记录一个事务中的 SQL 语句的结果,您可以通过 COMMIT 语句来执行提交。要撤销 SQL 语句的结果,您可以使用 ROLLBACK 语句来执行回滚,这会把所有的行重设为它们原来的状态。只要您事先没有与数据库断开,则您在执行回滚之前所做的任何修改都将被撤销。您还可以设置一个保存点,以便将事务回滚至该特定的点,同时保持事务中的其他语句原封不动。

在 C# 和 VB.NET 中使用数据库事务

您可以使用 OracleTransaction 类的一个对象来表示一个事务。OracleTransaction 类包含多个属性,其中的两个为 Connection(指定与事务关联的数据库连接)和 IsolationLevel(指定事务隔离级别);本文稍后将向您介绍更多有关事务隔离级别的内容。

OracleTransaction 类包含许多操控事务的方法。您可以使用 Commit() 方法永久提交 SQL 语句,并可以使用 Rollback() 撤销这些语句。您还可以使用 Save() 在事务中设置一个保存点。

我现在将带着您逐步完成两个示例程序 — 一个用 C# 编写 (TransExample1.cs),另一个用 VB.NET 编写 (TransExample1.vb)。这些程序演示了如何执行一个包含了两条 INSERT 语句的事务。第一条 INSERT 语句将在表 product_types 中添加一行,第二条将在表 products 中添加一行。

导入命名空间

以下 C# 程序语句指定在程序中使用 System 和 Oracle.DataAcess.Client 命名空间:

using System;
using Oracle.DataAccess.Client;

下面是等价的 VB.NET 语句:

Imports System
Imports Oracle.DataAccess.Client

Oracle.DataAccess.Client 命名空间是 ODP.NET 的一部分,它包含许多类,其中有 OracleConnection、OracleCommand 和 OracleTransaction。示例程序用到了这些类。

第 1 步

创建一个 OracleConnection 对象连接到 Oracle 数据库,然后打开该连接。

在 C# 中:

OracleConnection myOracleConnection =
new OracleConnection(
"User Id=store;Password=store;Data Source=ORCL"
);
myOracleConnection.Open();

在 VB.NET 中:

Dim myOracleConnection As New OracleConnection( _
"User Id=store;Password=store;Data Source=ORCL")
myOracleConnection.Open()

User Id 和 Password 属性指定了您所要连接到的模式的数据库用户和口令。Data Source 属性指定了数据库的 Oracle Net 服务名称;初始数据库的默认服务名称为 ORCL。如果您使用的不是初始数据库,或者您的服务名称不同,那么您需要在程序中修改 Data Source 属性的设置。

第 2 步

创建一个 OracleTransaction 对象,然后调用 OracleConnection 对象的 BeginTransaction() 方法启动事务。

在 C# 中:

OracleTransaction myOracleTransaction =
myOracleConnection.BeginTransaction();

In VB.NET:

Dim myOracleTransaction As OracleTransaction = _
myOracleConnection.BeginTransaction()

第 3 步

创建一个 OracleCommand 对象,用于存储 SQL 语句。

在 C# 中:

OracleCommand myOracleCommand = myOracleConnection.CreateCommand();

在 VB.NET 中:

Dim myOracleCommand As OracleCommand =
myOracleConnection.CreateCommand

因为 OracleCommand 对象使用 OracleConnection 对象的 CreateCommand() 方法创建的,所以它自动使用在第 2 步中为 OracleConnection 对象设置的事务。

第 4 步

将 OracleCommand 对象的 CommandText 属性设为向表 product_types 中添加一行的第一条 INSERT 语句。

在 C# 中:

myOracleCommand.CommandText =
"INSERT INTO product_types (" +
"  product_type_id, name" +
") VALUES (" +
"  3, 'Magazine'" +
")";

在 VB.NET 中:

myOracleCommand.CommandText = _
"INSERT INTO product_types (" & _
"  product_type_id, name" & _
") VALUES (" & _
"  3, 'Magazine'" & _
")"

第 5 步

使用 OracleCommand 对象的 ExecuteNonQuery() 方法运行 INSERT 语句。

在 C# 中:

myOracleCommand.ExecuteNonQuery();

在 VB.NET 中:

myOracleCommand.ExecuteNonQuery()

第 6 和第 7 步

将 OracleCommand 对象的 CommandText 属性设为向表 Products 中添加一行的第二条 INSERT 语句,并运行它。

在 C# 中:

myOracleCommand.CommandText =
"INSERT INTO products (" +
"  product_id, product_type_id, name, description, price" +
") VALUES (" +
"  5, 3, 'Oracle Magazine', 'Magazine about Oracle', 4.99" +
")";
myOracleCommand.ExecuteNonQuery();

在 VB.NET 中:

myOracleCommand.CommandText = _
"INSERT INTO products (" & _
"  product_id, product_type_id, name, description, price" & _
") VALUES (" & _
"  5, 3, 'Oracle Magazine', 'Magazine about Oracle', 4.99" & _
")"
myOracleCommand.ExecuteNonQuery()

第 8 步

使用 OracleTransaction 对象的 Commit() 方法提交数据库中的事务。

在 C# 中:

myOracleTransaction.Commit();

在 VB.NET 中:

myOracleTransaction.Commit()

在完成 Commit() 方法之后,由 INSERT 语句添加的两行将在数据库中永久记录。

第 9 步

使用 Close() 方法关闭 OracleConnection 对象。

在 C# 中:

myOracleConnection.Close();

在 VB.NET 中:

myOracleConnection.Close()

编译并运行示例程序

要编译 C# 示例程序,您可以使用 csc 命令运行 C# 编译器。因为程序使用 Oracle Data Access DLL,所以您应使用 /r 选项指定该 DLL 的完整路径,例如:

csc TransExample1.cs /r:C:oracleproduct10.1.0
Client_1binOracle.DataAccess.dll

注意:您需要用您计算机上的相应路径来替换该 DLL 的路径。此外,如果您的计算机找不到 csc 编译器,那么您可能需要运行 Microsoft sdkvars.bat 脚本来首先设置 .NET SDK 的环境变量;您可以在安装 .NET SDK 的 bin 目录中找到该脚本。

如果您遇到以下错误:

Example1.cs(10,7):error CS0246:The type or namespace name 'Oracle'
could not be found (are you missing a using directive or an assembly reference?)

这说明您没有在编译命令中正确指定 Oracle Data Access DLL。(有关设置的信息,请参阅 John Paul Cook 的技术文章“在 Oracle 数据库上构建 .NET 应用程序”。)

下面是用于编译 VB.NET 程序的等价命令:

vbc TransExample1.vb /r:C:oracleproduct10.1.0
Client_1binOracle.DataAccess.dll /r:system.dll /r:system.data.dll

接下来,输入以下命令,运行示例:

TransExample1

您将看到程序的输出。不过,如果您遇到类似以下的异常:

An exception was thrown
Message = ORA-12514:TNS:listener does not currently know
of service requested in connect descriptor

这说明 OracleConnection 对象的连接字符串中的 Data Source 的设置不正确。您应当咨询您的 DBA 或查阅 Oracle Net 文档以获得更多详细信息。

如果您使用的是 VS .NET,那么您可以遵循以下指示来编译和运行 C# 程序 TransExample1.cs:

  1. 创建一个新的 C# 控制台应用程序。File>New Project,然后选择 Visual C# Projects,Console Application。
  2. 将项目命名为 TransExample1。
  3. 用 TransExample1.cs 中的代码替换 VS .NET 生成的所有代码。
  4. 选择 Project>Add Reference 添加对 Oracle.DataAccess.dll 的引用,然后浏览至您安装 ODP.NET 的目录(在我的计算机上,它是 C:oracleproduct10.1.0Client_1binOracle.DataAccess.dll),然后双击 Oracle.DataAccess.dll。
  5. 选择 Debug>Start without Debugging 运行该程序。

要编译和运行 TransExample1.vb,您可以执行类似的一系列步骤,但第 1 步应选择一个 Visual Basic 控制台应用程序,并在第 3 步用 TransExample1.vb 中的代码替换生成的代码。

 

查看程序的运行结果

 

当您运行完 C# 或 VB .NET 程序时,您可以在 SQL*Plus 中使用以下 SELECT 语句查看事务的结果:

SELECT p.product_id, p.product_type_id, pt. name, p.name, p.description, p.price
FROM products p, product_types pt
WHERE p.product_type_id = pt.product_type_id
AND p.product_id = 5;

您将看到以下结果:

PRODUCT_ID PRODUCT_TYPE_ID NAME       NAME
---------- --------------- ---------- -----------------------
DESCRIPTION                                             PRICE
-------------------------------------------------- ----------
5               3 Magazine   Oracle Magazine
Magazine about Oracle                                    4.99

接下来,您将了解如何设置事务保存点。

 

在 .NET 程序中设置事务保存点

正如本文前面所提到的那样,您可以设置一个保存点,以便将事务回滚至该特定的点,同时保持事务中的其他语句原封不动。您可以使用 OracleTransaction 类的 Save() 方法在事务中设置保存点。

如果您有一个非常长的事务并且希望能够仅回滚到某个特定的时间点,那么您可能要使用保存点。例如,您可能想对 10 个产品做一些更改,然后设置一个保存点,然后再对另 10 个产品做更改;如果您在进行第二批更改时出现了错误,那么您可以回滚至保存点,使您的第一批更改原封不动。

我将带您逐步完成演示如何使用保存点的 C# (TransExample2.cs) 示例程序和 VB.NET (TransExample2.vb) 示例程序中的相关新步骤。这些程序向表 products 中添加一行,设置一个保存点,向表 products 中添加另一行,回滚至保存点,然后从表 products 中读取这些行。在回滚至保存点后,只有添加到表 products 中的第一行保留了下来:第二行将已被删除。

第 1 到第 3 步与“在 C# 和 VB.NET 中使用数据库事务”部分中所示的步骤相同,因此在这里将其省略。

第 4 步

向表 products 中添加一行,该行的产品 ID 为 6。

在 C# 中:

myOracleCommand.CommandText =
"INSERT INTO products (" +
"  product_id, product_type_id, name, description, price" +
") VALUES (" +
"  6, 2, 'Man from Another World', 'Man from Venus lands on Earth', 24.99" +
")";
myOracleCommand.ExecuteNonQuery();

在 VB.NET 中:

myOracleCommand.CommandText = _
"INSERT INTO products (" & _
"  product_id, product_type_id, name, description, price" & _
") VALUES (" & _
"  6, 2, 'Man from Another World', 'Man from Venus lands on Earth', 24.99" & _
")"
myOracleCommand.ExecuteNonQuery()

第 5 步

使用 OracleTransaction 的 Save() 方法设置一个名为 SaveProduct 的保存点。

在 C# 中:

myOracleTransaction.Save("SaveProduct");

在 VB.NET 中:

myOracleTransaction.Save("SaveProduct")

第 6 步

向表 products 中添加另一行,该行的产品 ID 为 7。

在 C# 中:

myOracleCommand.CommandText =
"INSERT INTO products (" +
"  product_id, product_type_id, name, description, price" +
") VALUES (" +
"  7, 2, 'Z-Files', 'Mysterious stories', 14.99" +
")";
myOracleCommand.ExecuteNonQuery();

在 VB.NET 中:

myOracleCommand.CommandText = _
"INSERT INTO products (" & _
"  product_id, product_type_id, name, description, price" & _
") VALUES (" & _
"  7, 2, 'Z-Files', 'Mysterious stories', 14.99" & _
")"
myOracleCommand.ExecuteNonQuery()

第 7 步

回滚到先前在第 5 步中设置的 SaveProduct 保存点。

在 C# 中:

myOracleTransaction.Rollback("SaveProduct");

在 VB.NET 中:

myOracleTransaction.Rollback("SaveProduct")

完成回滚后,在第 6 步中添加的第二行已被删除,而在第 4 步中添加的第一行保留了下来。

TransExample2.cs 和 TransExample2.vb 中剩下的步骤显示表 products 的内容,回滚整个事务并从数据库断开。

用于 Microsoft Transaction Server 的 Oracle 事务服务的快速说明

Microsoft Transaction Server 是一个运行在互联网或网络服务器上的专有事务处理系统。Microsoft Transaction Server 为客户端计算机部署和管理应用程序和数据库事务请求。

 

Microsoft Transaction Server 是以服务器为中心的三层体系结构模型的一个组件。这种方法实现了将应用程序的表示、业务逻辑和数据元素清晰地分布到在一个网络中连接的不同计算机上。无需专门集成,您就可以在与 Oracle 数据库服务器 8.0.6 版或更高版本连接的 Microsoft Transaction Server 中部署一个组件,但首先您必须安装 Oracle Services for Microsoft Transaction Server。

 

结论

 

在本文中,您系统学习了在 .NET 程序中使用数据库事务。您了解了如何创建 OracleTransaction 对象并用它们将事务提交给数据库,如何使用保存点部分回滚一个事务,以及 Oracle 数据库如何分离并发事务。

本文由威尼斯www.9778.com发布于数据库,转载请注明出处:在 .NET 中使用 Oracle 数据库事务

关键词:

新Orcas语言特性

New "Orcas" Language Feature: Query Syntax Saturday, April 21, 2007 2:12   LINQ To SQL 语法及实例大全   上个月我开始了一个贴子系列,...

详细>>

Oracle数据库及应用程序优化开荒者网络Oracle

[NextPage] 2.3优化规划重演日志文件 2.3.1重演日志文件的大小由于数据库在选用重演日志文件时是循环使用它们的,而且...

详细>>

oracle 10g常见问题精选 (2)

安装Oracle9I出现"加载数据库时出错:areasQueries错误",提示停止该组件或所有组件安装,之后安装不能进行。 在penti...

详细>>

Serv-U 创立FTP服务器教程

5.2.3 建立管理员 (7) 单击Next按钮,打开Lock in homedirectory对话框,选择Yes单选按钮,锁定匿名访问目录。这样,匿名登...

详细>>