东南dx7论坛手柄旁的按纽坏了怎么办

麦柯斯转向灯开关手柄头上那个按纽_百度知道
麦柯斯转向灯开关手柄头上那个按纽
我有更好的答案
好,问汽车大师。4S店专业技师,问价格还是想问在哪里能买到【汽车有问题,你想问什么问题,10分钟解决
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁安装手柄驱动程序时出现需要DX7.0提示 看下图_百度知道
安装手柄驱动程序时出现需要DX7.0提示 看下图
hiphotos安装手柄驱动程序时出现需要DX7.baidu./zhidao/wh%3D600%2C800/sign=/zhidao/pic//zhidao/wh%3D450%2C600/sign=26cffc697fb7b68cf95cad1c8a309c93d71cf50f7://g.jpg" target="_blank" title="点击查看大图" class="ikqb_img_alink"><img class="ikqb_img" src="http. 看下图<a href="http.baidu://g://g.jpg" esrc="http.0提示&nbsp
很高兴回答您的问题://zhidao://zhidao,我们会24小时为你做解答.baidu:您好,祝您生活愉快.com/c/ijinshan/" target="_blank" title="http:)或金山企业平台提问。金山企业平台如您的问题没有得到解决。如仍有疑问,安装后.baidu.baidu.baidu://zhidao,很高兴回答您的问题您好
我安装好了之后 还是没用
重新安装N多遍了 就是没有用阿 .
检查下是否该手柄驱动程序不兼容您的电脑呢?您是第一次安装这个驱动程序吗?
可以说是第一次
安装上去就是提示这个东西 就是没用
兼容性也修改过都是一样. 你看看?
具体的手柄驱动程序是什么呢?如何正确安装,建议参考下下述内容的网页:
这还是95 98系统的好不好,
现在都win7了。亲!
安装的原理是类似的,可以试试。如果安装过程遇到什么问题,建议具体说明,看看提示。
来自团队:
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁怎样用VB.NET取得游戏手柄按键的键值(北通手柄)_操作excel文件如何在末尾追加_明日看__脚本百事通
稍等,加载中……
^_^请注意,有可能下面的2篇文章才是您想要的内容:
怎样用VB.NET取得游戏手柄按键的键值(北通手柄)
操作excel文件如何在末尾追加
怎样用VB.NET取得游戏手柄按键的键值(北通手柄)
怎样用VB.NET获得游戏手柄按键的键值(北通手柄)我想实现游戏手柄上按那一个键,软件上要显示出来。------解决方案--------------------查看DirectX文档------解决方案--------------------
Option Strict Off
Option Explicit On
Public Class Form1
Dim oDX As New DxVBLibA.DirectX8
Dim oDI As DxVBLibA.DirectInput8
Dim oDID As DxVBLibA.DirectInputDevice8
Dim oDIED As DxVBLibA.DirectInputEnumDevices8
Dim EventHandle As Integer
Dim oDIDC As DxVBLibA.DIDEVCAPS
Dim oDIJS As DxVBLibA.DIJOYSTATE
Dim oDIProp_Dead As DxVBLibA.DIPROPLONG
Dim oDIProp_Range As DxVBLibA.DIPROPRANGE
Dim oDIProp_Saturation As DxVBLibA.DIPROPLONG
Dim IsAxisPresent(2) As Boolean
Dim Running As Boolean
Sub init()
oDI = oDX.DirectInputCreate()
oDIED = oDI.GetDIDevices(DxVBLibA.CONST_DI8DEVICETYPE.DI8DEVCLASS_GAMECTRL, DxVBLibA.CONST_DIENUMDEVICESFLAGS.DIEDFL_ATTACHEDONLY)
If oDIED.GetCount = 0 Then
MsgBox("NO JOY")
Me.Close()
' EventHandle = oDX.CreateEvent(Me)
Error_Out:
MsgBox("there was a problem initializing directinput.")
Me.Close()
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Running = True
Private Sub cmdGetJoystick_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdGetJoystick.Click
getjoystick()
Private Sub DirectxEvent8_DXCallback(ByVal eventid As Long)
Dim i As Integer
If oDID Is Nothing Then Exit Sub
On Error Resume Next
oDID.GetDeviceStateJoystick(oDIJS)
If Err.Number = DxVBLibA.CONST_DINPUTERR.DIERR_NOTACQUIRED Or Err.Number = DxVBLibA.CONST_DINPUTERR.DIERR_INPUTLOST Then
oDID.Acquire()
For i = 0 To 1
If Me.IsAxisPresent(i) Then
Select Case i
If Me.oDIJS.x & 5000 Then
Me.Panel1.Left = Me.Panel1.Left - 50
ElseIf Me.oDIJS.x & 5000 Then
Me.Panel1.Left = Me.Panel1.Left + 50
If Me.oDIJS.y & 5000 Then
Me.Panel1.Top = Me.Panel1.Top - 50
ElseIf Me.oDIJS.y & 5000 Then
Me.Panel1.Top = Me.Panel1.Top + 50
End Select
err_DXCallBack:
MsgBox(Err.Description & " : " & Err.Number, MsgBoxStyle.ApplicationModal)
Private Sub GetJoystick()
On Error Resume Next
If Not oDID Is Nothing Then
oDID.Unacquire()
oDID = Nothing
oDID = oDI.CreateDevice(oDIED.GetItem(1).GetGuidInstance)
oDID.SetCommonDataFormat(DxVBLibA.CONST_DICOMMONDATAFORMATS.DIFORMAT_JOYSTICK)
oDID.SetCooperativeLevel(Me.Handle.ToInt32, DxVBLibA.CONST_DISCLFLAGS.DISCL_FOREGROUND Or DxVBLibA.CONST_DISCLFLAGS.DISCL_NONEXCLUSIVE)
oDID.GetCapabilities(oDIDC)
GetAxes(oDID)
Call oDID.SetEventNotification(EventHandle)
With oDIProp_Dead
.lData = 1000
.lHow = DxVBLibA.CONST_DIPHFLAGS.DIPH_BYOFFSET
.lObj = DxVBLibA.CONST_DIJOYSTICKOFS.DIJOFS_X
oDID.SetProperty("DIPROP_DEADZONE", oDIProp_Dead.lObj)
.lObj = DxVBLibA.CONST_DIJOYSTICKOFS.DIJOFS_Y
oDID.SetProperty("DIPROP_DEADZONE", oDIProp_Dead.lObj)
With oDIProp_Saturation
.lData = 9500
.lHow = DxVBLibA.CONST_DIPHFLAGS.DIPH_BYOFFSET
.lObj = DxVBLibA.CONST_DIJOYSTICKOFS.DIJOFS_X
oDID.SetProperty("DIPROP_SATURATION", oDIProp_Saturation.lObj)
.lObj = DxVBLibA.CONST_DIJOYSTICKOFS.DIJOFS_Y
oDID.SetProperty("DIPROP_SATURATION", oDIProp_Saturation.lObj)
On Error Resume Next
With oDIProp_Range
.lHow = DxVBLibA.CONST_DIPHFLAGS.DIPH_DEVICE
.lMax = 10000
oDID.Acquire()
DirectxEvent8_DXCallback(0)
While Running = True
System.Windows.Forms.Application.DoEvents()
oDID.Poll()
Sub GetAxes(ByVal oDID As DxVBLibA.DirectInputDevice8)
Dim oDIEDO As DxVBLibA.DirectInputEnumDeviceObjects
Dim oDIDOI As DxVBLibA.DirectInputDeviceObjectInstance
Dim I As Integer
For I = 0 To 1
IsAxisPresent(I) = False
oDIEDO = oDID.GetDeviceObjectsEnum(DxVBLibA.CONST_DIDFTFLAGS.DIDFT_AXIS)
Dim SGUID As String
For I = 0 To oDIEDO.GetCount
oDIDOI = oDIEDO.GetItem(1)
SGUID = oDIDOI.GetGuidType
Select Case SGUID
Case "GUID_XAxis"
IsAxisPresent(1) = True
Case "GUID_YAxis"
IsAxisPresent(2) = True
End Select
以上代码能检测到手柄,单一采集数据就不行。不知是什么原因。------解决方案--------------------望哪位能帮忙一下,我就卡在这里了,搞定后,小辈以全新北通BTP-2188薄礼答谢,不成敬意。在线等,拜托拜托了。------解决方案--------------------试过WINIO没?------解决方案--------------------问题解决了么,我也想要这个代码
操作excel文件如何在末尾追加
操作excel文件怎么在末尾追加?
private void ExportToExcel(string FileName)
if (FileName.IndexOf(".") &= 0)
FileName = FileName + ".xls";
string[] str = FileName.Split('.');
if (str.Length & 2)
FileName = str[0] + str[str.Length - 1];
app = new Excel.Application();
ClsCommFuncs.Alert("没有安装Excel程序或者安装错误");
app.Workbooks.Add(true);
app.Visible =
Excel.Workbooks books = (Excel.Workbooks)app.W
Excel.Workbook book = (Excel.Workbook)books.Add(Type.Missing);
int iget = 1;
int dwindex = 0;
if (panelHide1.Visible == true)
foreach (DataGridViewColumn datcol in dgvLog.Columns)
app.Cells[iget, dwindex + 1] = datcol.HeaderT
dwindex++;
app.Cells[iget, 1] = dgvLog.Columns[0].HeaderT
app.Cells[iget, 2] = dgvLog.Columns[1].HeaderT
app.Cells[iget, 3] = dgvLog.Columns[2].HeaderT
app.Cells[iget, 4] = dgvLog.Columns[5].HeaderT
int nIndex = 0;
foreach (TLogData t in m_tLogDataList)
app.Cells[iget, 1] = (++nIndex).ToString();
app.Cells[iget, 2] = t.GetTime();
app.Cells[iget, 3] = t.GetLogType();
if (panelHide1.Visible == true)
app.Cells[iget, 4] = t.GetLogCategory();
app.Cells[iget, 5] = t.GetUserName();
app.Cells[iget, 6] = t.GetLogDecs();
app.Cells[iget, 4] = t.GetLogDecs();
app.Cells.EntireColumn.AutoFit();
book.SaveAs(FileName, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlExclusive,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
ClsCommFuncs.Alert("导出失败,确认文件没有打开或Excel安装成功");
book.Close(false, Type.Missing, Type.Missing);
books.Close();
app.Quit();
GC.Collect();
}其中写内容的这么一段需要不断的写,也就是m_tLogDataList会不断的更新
int nIndex = 0;
foreach (TLogData t in m_tLogDataList)
app.Cells[iget, 1] = (++nIndex).ToString();
app.Cells[iget, 2] = t.GetTime();
app.Cells[iget, 3] = t.GetLogType();
if (panelHide1.Visible == true)
app.Cells[iget, 4] = t.GetLogCategory();
app.Cells[iget, 5] = t.GetUserName();
app.Cells[iget, 6] = t.GetLogDecs();
app.Cells[iget, 4] = t.GetLogDecs();
我尝试将首尾以及写内容的分成三个部分,这样写内容的那段就可以重复使用,可是总是报“因为应用程序正在发送一个输入同步呼叫,所以无法执行传出的呼叫”,这样的错误!
不知道怎么解决了,请各位帮忙看看!
------解决方案--------------------我是笨方法.
全部数据变成DataTable.追加完后.再变成Xls------解决方案--------------------
我是笨方法.
全部数据变成DataTable.追加完后.再变成Xls
看错.不是普通的格式.不适合------解决方案--------------------每次写完记录下Cells[iget, 4]
下次写时 从iget+1开始写------解决方案--------------------
引用:建议像这种情况可以在导出时在数据集里将要加的内容加进去。
可能有10万条数据的,但是服务器一次只返回15条,如果攒到10万条再写,这样链表是不是太大了?
而且导出是允许中断的,这样全部写到链表中就不太好了吧!
假如中间内容一直都是变化的那导出的意思在哪里?
不太理解业务要求。------解决方案--------------------
引用:引用:引用:建议像这种情况可以在导出时在数据集里将要加的内容加进去。
可能有10万条数据的,但是服务器一次只返回15条,如果攒到10万条再写,这样链表是不是太大了?
而且导出是允许中断的,这样全部写到链表中就不太好了吧!
假如中间内容一直都是变化的那导出的意思在哪……
这样的话就关闭不了了。没办法真正完成导出操作。可以将导出的内容做标识,然后再导出一部分。将内容导成几个文件。
解决问题:TNS或者数据库不能登录。 最简单有效方法:使用oracle系统提供的工具 netca 配置(把原来的删除掉重新配置) netca是oracle net configuration assistance的简称,主要作用是配置监听程序、命名方法配置、本地net服务吗配置、目录使用配置。简单说一下,就是可以配置一个监听程序和服务名,从而可以使oracle client连接至数据库进行相关操作。监听的文件存放位置在:$ORACLE_HOME\NETWORK\ADMIN\listener.ora服务名的文件存放位置在:$ORACLE_HOME\NETWORK\ADMIN\tnsnames.ora $netca 俺仍有的疑问: 如何指定'listener.ora'存放的目录?不要默认目录($ORACLE_HOME/network/admin) 方法1: 在 '.profile' 中加入(例) TNS_ADMIN=/f01/oracle11/app/oracle/product/8.0.6/network/admin export TNS_ADMIN      首先来说Oracle的网络结构,往复杂处说能加上加密、LDAP等等。。这里不做讨论,重点放在基本的网络结构也就是我们最常用的这种情况      三个配置文件      listener.ora、sqlnet.ora、tnsnames.ora ,都是放在$ORACLE_HOME\network\admin目录下。      --begin 重点:三个文件的作用和使用      #-----------------------     sqlnet.ora(客户及服务器端) --作用类似于linux或者其他unix的nsswitch.conf文件,通过这个文件来决定怎么样找一个连接中出现的连接字符串,      例如我们客户端输入      sqlplus sys/oracle@orcl      假如我的sqlnet.ora是下面这个样子      SQLNET.AUTHENTICATION_SERVICES= (NTS)      NAMES.DIRECTORY_PATH= (TNSNAMES,HOSTNAME)      那么,客户端就会首先在tnsnames.ora文件中找orcl的记录.如果没有相应的记录则尝试把orcl当作一个主机名,通过网络的途径去解析它的ip地址然后去连接这个ip上GLOBAL_DBNAME=orcl这个实例,当然我这里orcl并不是一个主机名      如果我是这个样子      NAMES.DIRECTORY_PATH= (TNSNAMES)      那么客户端就只会从tnsnames.ora查找orcl的记录      括号中还有其他选项,如LDAP等并不常用。      #------------------------     Tnsnames.ora(客户及服务器端) --这个文件类似于unix 的hosts文件,提供的tnsname到主机名或者ip的对应,只有当sqlnet.ora中类似      NAMES.DIRECTORY_PATH= (TNSNAMES) 这样,也就是客户端解析连接字符串的顺序中有TNSNAMES是,才会尝试使用这个文件。      例子中有两个,ORCL 对应的本机,SALES对应的另外一个IP地址,里边还定义了使用主用服务器还是共享服务器模式进行连接,一句一句说      #你所要连接的时候输入得TNSNAME      ORCL =      (DESCRIPTION =      (ADDRESS_LIST =      #下面是这个TNSNAME对应的主机,端口,协议      (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))      )      (CONNECT_DATA =      #使用专用服务器模式去连接需要跟服务器的模式匹配,如果没有就根据服务器的模式      #自动调节      (SERVER = DEDICATED)      #对应service_name,SQLPLUS&show parameter service_      #进行查看      (SERVICE_NAME = orcl)      )      )      #下面这个类似      SALES =      (DESCRIPTION =      (ADDRESS_LIST =      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.188.219)(PORT = 1521))      )      (CONNECT_DATA =      (SERVER = DEDICATED)      (SERVICE_NAME = sales)      )      )      #----------------------     listener.ora(服务器端) --listener监听器进程的配置文件      关于listener进程就不多说了,接受远程对数据库的接入申请并转交给oracle的服务器进程。所以如果不是使用的远程的连接,listener进程就不是必需的,同样的如果关闭listener进程并不会影响已经存在的数据库连接。      Listener.ora文件的例子      #listener.ora Network Configuration File: #E:\oracle\product\10.1.0\Db_2\NETWORK\ADMIN\listener.ora      # Generated by Oracle configuration tools.      #下面定义LISTENER进程为哪个实例提供服务      #这里是ORCL,并且它对应的ORACLE_HOME和GLOBAL_DBNAME      #其中GLOBAL_DBNAME不是必需的除非使用HOSTNAME做数据库连接      SID_LIST_LISTENER =      (SID_LIST =      (SID_DESC =      (GLOBAL_DBNAME = boway)      (ORACLE_HOME = E:\oracle\product\10.1.0\Db_2)      (SID_NAME = ORCL)      )      )      #监听器的名字,一台数据库可以有不止一个监听器      #再向下面是监听器监听的协议,ip,端口等,这里使用的tcp1521端口,并且使#用的是主机名      LISTENER =      (DESCRIPTION =      (ADDRESS = (PROTOCOL = TCP)(HOST = boway)(PORT = 1521))      )      上面的例子是一个最简单的例子,但也是最普遍的。一个listener进程为一个instance(SID)提供服务。
--end 重点:三个文件的作用和使用
--===================================================================      监听器的操作命令      $ORACLE_HOME/bin/lsnrctl start,其他诸如stop,status等。具体敲完一个lsnrctl后看帮助。      上面说到的三个文件都可以通过图形的配置工具来完成配置      $ORACLE_HOME/netca 向导形式的      $ORACLE_HOME/netmgr      本人比较习惯netmgr,      profile 配置的是sqlnet.ora也就是名称解析的方式      service name 配置的是tnsnames.ora文件      listeners配置的是listener.ora文件,即监听器进程      具体的配置可以尝试一下然后来看一下配置文件。      这样一来总体结构就有了,是当你输入sqlplus sys/oracle@orcl的时候      1. 查询sqlnet.ora看看名称的解析方式,发现是TNSNAME      2. 则查询tnsnames.ora文件,从里边找orcl的记录,并且找到主机名,端口和service_name      3. 如果listener进程没有问题的话,建立与listener进程的连接。      4. 根据不同的服务器模式如专用服务器模式或者共享服务器模式,listener采取接下去的动作。默认是专用服务器模式,没有问题的话客户端就连接上了数据库的server process。      5. 这时候网络连接已经建立,listener进程的历史使命也就完成了。 #---------------      几种连接用到的命令形式      1.sqlplus / as sysdba 这是典型的操作系统认证,不需要listener进程      2.sqlplus sys/oracle 这种连接方式只能连接本机数据库,同样不需要listener进程      3.sqlplus sys/oracle@orcl 这种方式需要listener进程处于可用状态。最普遍的通过网络连接。      以上连接方式使用sys用户或者其他通过密码文件验证的用户都不需要数据库处于可用状态,操作系统认证也不需要数据库可用,普通用户因为是数据库认证,所以数据库必需处于open状态。      然后就是      #-------------      平时排错可能会用到的      1.lsnrctl status查看服务器端listener进程的状态      LSNRCTL& help      The following operations are available      An asterisk (*) denotes a modifier or extended command:      start stop status      services version reload      save_config trace change_password      quit exit set*      show*      LSNRCTL& status      2.tnsping 查看客户端sqlnet.ora和tnsname.ora文件的配置正确与否,及对应的服务器的listener进程的状态。      C:\&tnsping orcl      TNS Ping Utility for 32-bit Windows: Version 10.1.0.2.0 - Production on 16-8月 -      :08      Copyright (c) , Oracle. All rights reserved.      Used parameter files:      E:\oracle\product\10.1.0\Db_2\network\admin\sqlnet.ora      Used TNSNAMES adapter to resolve the alias      Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)      (HOST = 127.0.0.1)(PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_      NAME = orcl)))      OK (20 msec)      3.      SQL&show sga 查看instance是否已经启动      SQL& select open_mode from v$ 查看数据库是打开还是mount状态。      OPEN_MODE      ----------      READ WRITE      #-----------------      使用hostname访问数据库而不是tnsname的例子      使用tnsname访问数据库是默认的方式,但是也带来点问题,那就是客户端都是需要配置tnsnames.ora文件的。如果你的数据库服务器地址发生改变,就需要重新编辑客户端这个文件。通过hostname访问数据库就没有了这个麻烦。      需要修改      服务器端listener.ora      #监听器的配置文件listener.ora      #使用host naming则不再需要tnsname.ora文件做本地解析      # listener.ora Network Configuration File: d:\oracle\product\10.1.0\db_1\NETWORK\ADMIN\listener.ora      # Generated by Oracle configuration tools.      SID_LIST_LISTENER =      (SID_LIST =      (SID_DESC =      # (SID_NAME = PLSExtProc)      (SID_NAME = orcl)      (GLOBAL_DBNAME = boway)      (ORACLE_HOME = d:\oracle\product\10.1.0\db_1)      # (PROGRAM = extproc)      )      )      LISTENER =      (DESCRIPTION_LIST =      (DESCRIPTION =      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))      )      (DESCRIPTION =      (ADDRESS = (PROTOCOL = TCP)(HOST = boway)(PORT = 1521))      )      )      客户端sqlnet.ora 如果确认不会使用TNSNAME访问的话,可以去掉TNSNAMES      # sqlnet.ora Network Configuration File: d:\oracle\product\10.1.0\db_1\NETWORK\ADMIN\sqlnet.ora      # Generated by Oracle configuration tools.      SQLNET.AUTHENTICATION_SERVICES= (NTS)      NAMES.DIRECTORY_PATH= (HOSTNAME)      Tnsnames.ora文件不需要配置,删除也无所谓。      下面就是网络和操作系统的配置问题了,怎么样能够解析我的主机名的问题了      可以通过下面的方式连接      sqlplus sys/oracle@boway      这样的话,会连接boway这台服务器,并且listener来确定你所要连接的service_name。 ------------------------------------------- from:http://www.ixdba.net/hbcms/article/ec/231.html 总结: 1:监听文件listener.ora
tnsnames.ora中关于host的配置建议都用ip来表示, 2:如果监听不能启动或者启动后不能正常使用, (1)首先确认你的OS的hostname,执行hostname命令,尝试ping "hostname",看是否能通, (2)然后检查监听的listener.ora ,tnsnames.ora这两个配置文件中关于host的信息是否是用主机名表示的。 (3)如果是,更改到新的主机名,然后把新的主机名加入系统的hosts文件,linux下为/etc/ 然后ping 新主机名,应该能通的。 (4)如果全部是用ip表示的,那么直接将新的主机名加入系统的hosts文件即可。 然后ping 新主机名,也应该能通的。 3:如果第二步还是解决不了问题, (1)检查启动的oracle的instance信息,select * fromv$ 然后查看本级系统的主机名,两者应该是相等的。 (2)如果查询出来的是老的主机名,尝试"ping老主机名"应该不通, 通过listener也应该是连结不上; (3)如果是新的主机名,如果"ping新主机名"不通, 请修改/etc/hosts文件增加新主机名,确认能ping通,然后重启oracle 4:注意tns和listener文件的设置。 具体操作步骤: 1)修改hostname为www.ixdba.net 2)修改/etc/hosts,去掉原来的主机名的行,增加该行
192.168.60.253 www.ixdba.net 3)重启数据库,查询instance信息
select * from v$
得到新的HOST_NAME为www.ixdba.net 4)修改listener.ora,把HOST改成新的主机名 5)修改tnsname.ora,修改对应的HOST为新的主机名 6)重启listener 然后connect oracle/oracle@standby应该可以成功的。 4.参数文件 。初始化参数文件(initialization parameter files) PFILE,文本文件,可手工修改 。服务器参数文件(server parameter files)
SPFILE,二进制文件,不能手工修改 cd /var/oracle11g/app/dbs file init.ora file spfilehugwww.oraSPFILE文件,对于参数的修改都可以在命令行完成,在sqlplus中通过alter system 修改参数 select sid,name,value from v$spparameter whe
show spparameter memory_在通过pfile中调用spfile,使用后设置的参数复盖spfile中的参数设置,是解决spfile中参数设置错误的一种方法5.修改参数 可以通过alter system或者导入导出来更改spfile的内容 scope新选项,有3个可选值: memory
只改变当前实例,重启数据库后失效 spfile
只改变spfile的设置,不改变当前实例,重启数据库后生效 both
同时改变实例及spfile,当前更改立即生效,重启后仍然有效 在rac环境,可以指定sid=&实例名&用法: 1).scope=memory show parameter db_cache_ad alter system set db_cache_advice=off scope= show parameter db_cache_ad 重启数据库后更改失效2).scope=spfile alter system set db_cache_advice=off scope= show parameter db_cache_ad 当前实例不受影响,重启后生效3).scope=both alter system set db_cache_advice=off scope= alter system set db_cache_advice= show parameter db_cache_ad 不带scope参数和scope=both是一样的,如果修改的是静态参数,那么需要指定spfile参数,不能指定both参数,否则会报错 如: alter system set sql_trace=false scope= alter system set sql_trace=false scope=6.在关闭数据库状态修改spfile 如果错误修改了参数导致数据库无法启动,则可以通过创建pfile文件,修改其中的参数,再由pfile创建spfile的方式解决,最后由 spfile正常启动数据库,通过这种方式,可以快速修正spfile中的错误参数定义故障演示,修改db_block_buffers=1000导致数据库不能启动
alter system set db_block_buffers=1000 scope=
解决方法: crea !vi /var/oracle11g/app/dbs/inithugwww.ora 将包含db_block_buffers=1000的那行删除 crea 7.其他 重置spfile中设置的参数 alter system reset parameter &scope=memory|spfile|both&判断是否使用了spfile 如果查询返回空值,那么说明在使用pfile 方法1: select name,value from v$parameter where name=’spfile’; 方法2: show parameter spfile指定pfile文件启动实例 startup pfile=$ORACLE_HOME/dbs/inityang.ora8.spfile的备份与恢复 oracle把spfile也放到rman的备份恢复策略当中,如果配置了控制文件自动备份,oracle会在数据库发生重大变化时自动进行 控制文件及spfile文件的备份。 1)设置控制文件自动备份 rman target / configure contr 查询: sql&select * from v$rman_2)更改自动备份的位置 rman&configure controlfile autobackup format for device type disk to ‘/var/oracle11g/obak/control%F’3)检查自动备份 sql&select * from v$backup_ rman target / l4)记录数据库变化 create tablespace yang datafile ‘/var/oracle11g/app/base/oradata/hugwww/yang01.dbf’ size 5M;5)测试 rman target / restore spfile to ‘/tmp/spfileyang.ora’ restore controlfile to ‘/tmp/control01.ctl’ls -ltr /tmp/*如果数据库无法mount,是不能使用以上方法恢复自动备份的控制文件或者参数文件,可手工临时编辑一个pfile文件启动 实例,即可进行spfile恢复注意:自动备份功能缺省是关闭的,强烈推荐大家用上面的方法打开这个功能。9.oracle11g参数文件恢复 从oracle11g开始,恢复实例参数引入了一个新的命令 create &spfile|pfile& create spfile=’/tmp/spfile.ora’10.如何设置events事件 events事件是oracle重要的诊断工具及问题解决办法,很多时候需要通过events设置来屏蔽或更改oracle的行为 alter system set event=’10841 trace name context forver’ scope=
show parameter event取消event参数设置 show parameter event alter system reset event scope=spfile sid=’*';
show parameter event从oracle10g开始,修改数据库的归档模式不需要设置log_archive_start参数,通过以下方法设置: sqlplus "/as sysdba"
注意:鉴于告警日志文件的重要作用,当数据库出现故障时,通过我们最先的处理步骤是检查日志文件,以便发现相关错误信息,快 速找到问题所在,这是dba必须明确的一个知识点 位置: show parameter background_dump_显示错误号的意思,用如下命令 $oerr ora 30012完成A、 Cman.oraLdap.oraOracle TNS简述o
什么是TNS?TNS是Oracle Net的一部分,专门用来管理和配置Oracle数据库和客户端连接的一个工具,在大多数情况下客户端和数据库要通讯,必须配置TNS,当然在少数情况下,不用配置TNS也可以连接Oracle数据库,比如通过JDBC.如果通过TNS连接Oracle,那么客户端必须安装Oracle client程序.Oracle中TNS的完整定义:Transparence Network Substrate,透明网络底层。监听服务是它重要的一部分,不是全部,不要把TNS当作只是监听器。   ORACLE当中,如果想访问某个服务器,必须要设置TNS,它不像SQL SERVER那样在客户端自动列举出在局域网内所有的在线服务器,只需在客户端选择需要的服务器,然后使用帐号与密码登录即可。而ORCAL不能自动列举出网内的服务器,需要通过读取TNS配置文件才能列出经过配置的服务器名。o TNS有那些配置文件?TNS的配置文件包括服务器(安装Oracle数据库的机器)端和客户端两部分.服务器有listener.ora,sqlnet.ora,tnsnames.ora,如果通过OCM(Oracle Connection Manage)和域名服务管理客户端连接,服务器端可能还包括cman.ora等文件;客户端有tnsnames.ora,sqlnet.ora. listener.ora:监听器配置文件,成功启动后是驻留在服务器端的一个服务.什么是监听器?监听器是用来侦听客户端的连接请求以及建立客户端和服务器端连接通道的一个服务程序.默认情况下Oracle在1521端口上侦听数据库连接请求. sqlnet.ora:用来管理和约束或限制tns连接的配置,通过在该文件中设置一些参数,可以管理TNS连接.根据参数作用的不同,需要分别在服务器和客户端配置. tnsnames.ora:配置客户端到服务器端的连接服务,包括客户端要连接到的服务器和数据库的配置信息.Oracle所有的TNS配置文件都存放在unix/linux: $ORACLE_HOME/network/admin windows: %ORACLE_HOME%/network/admino TNS有那些配置工具?我们可以手动配置,也可以通过Oracle Net Configuretion Assitant配置.o OracleTNS配置流程首先在Oracle server端安装完成之后,因该先着手配置LISTENER,listenerr是进行Oracle通讯的首要组件,紧接着在客户端安装Oracle client,同时配置tnsnames.ora文件.o LISTENER(监听器)配置首先监听器包括两个部分:Oracle要监听的地址、端口、通讯协议;Oracle要监听的数据库实例.非RAC环境下,LISTENER只能监听本服务器的地址和实例,RAC环境下,LISTENER还可以监听远程服务器.每个数据库最少要配置一个监听器LISTENER= (DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521)) (ADDRESS=(PROTOCOL=ipc)(KEY=extproc)) ) ) SID_LIST_LISTENER= (SID_LIST= (SID_DESC= (SID_NAME=plsextproc) (ORACLE_HOME=/oracle10g) (PROGRAM=extproc) ) (SID_DESC= (SID_NAME=mayp) (ORACLE_HOME=/oracle10g) ) )listener部分配置了Oracle要监听的地址信息;SID_LIST_LISTENER部分配置了Oracle需要监听的实例.HOST参数即可以是hostname,也可以是ip地址.在一个多IP的服务器上可以配置listener同时监听多个地址.比如下面的配置:LISTENER= (DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.10)(PORT=1521)) (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.2.1) (PORT=1521)) ) )或者可以配置多个监听器,分别监听不同的IP地址.Oracle Net支持的通讯协议有:■ TCP/IP ■ TCP/IP with SSL ■ Named Pipes ■ SDPOracle 9i引入了动态监听服务注册,指的是我们不需要在listener.ora中配置oracle要监听的数据库实例信息,数据库启动的时候, PMON进程可以自动注册当前数据库实例到listener的监听列表.也就是说上面的SID_LIST_LISTENER部分就不用配置了。使用动态监听服务器端必须满足以下条件:
数据库必须设置INSTANCE_NAME和SERVICE_NAME参数;
监听器采用默认的TCP协议并使用1521端口进行监听;
■ 如果在配置监听器时采用了其他通讯协议或者侦听端口,进行以下设置告诉Oracle采用自定义监听器:
1、通过LOCAL_LISTENER参数明确设置当前使用的监听器,
2、在服务器端都tnsnames.ora文件中加入自定义监听器的配置信息.如果采用了OCM,那么还可以在cman.ora中加入监听器的配置信息..LOCAL_LISTENER 可以通过ALTER SYSTEM动态设置.ALTER SYSTEM SET LOCAL_LISTENER=’listener_alias’;一个动态监听配置的示例:listener.ora文件的配置:LISTENER1 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.205.73)(PORT = 1421)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.200.64)(PORT = 1421)) (ADDRESS = (PROTOCOL = IPC)(KEY = extproc)) ) )LOCAL_LISTENER参数的配置(因为这里采用非1521的端口):SQL& show parameter local_listener NAME TYPE VALUE ------------------------------------ ------------ ----------- local_listener string listener1tnsnames.ora的配置:LISTENER1= (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = dbtest)(PORT = 1421)(IP = FIRST)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.205.73)(PORT = 1421)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.200.64)(PORT = 1421)) ) mayp = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = dbtest)(PORT = 1421)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.200.64)(PORT = 1421)) ) (CONNECT_DATA = (SERVICE_NAME = mayp) (SERVER = DEDICATED) ) )o TNS配置我们说的TNS配置其实就是对tnsnames.ora文件的配置,tnsnames.ora 有客户端的配置,也有服务器端的配置.客户端和服务器端配置的区别是因为服务器端的配置跟LISTENER的配置相关.下面是一个简单的配置示例:mayp = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = dbtest)(PORT = 1421)) ) (CONNECT_DATA = (SERVICE_NAME = mayp) (SERVER = DEDICATED) ) )同样tnsnames.ora也包括两部分,ADDRESS_LIST 部分包含了远程数据库服务器的监听地址信息,也就是要告诉TNS远程数据库可通过乃些地址和CLIENT通讯;CONNECT_DATA 定义了CLIENT要连接的数据库,还有数据库的连接方式,(专用或共享)。在一个多ip环境中,TNS也可以配置多个远程IP地址:mayp = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = dbtest)(PORT = 1421)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.200.64)(PORT = 1421)) ) (CONNECT_DATA = (SERVICE_NAME = mayp) (SERVER = DEDICATED) ) )一般在多IP环境中,还可以在TNS端配置load_balance和failover特性.这些特性在RAC环境下比较流行,load_balance特性可以让client在连接数据库是选择任意地址进行连接,是各地址的连接均衡.failover开启Oracle特有的 TAF特性,TAF为Transparent Application Failover的缩写.load_balance可以在客户端配置,也可以在服务器端配置.下面是一个客户端的配置示例:mayp = (DESCRIPTION = (ADDRESS_LIST = (LOAD_BALANCE=ON) (FAILOVER=ON) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.205.73)(PORT = 1421)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.200.64)(PORT = 1421)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = MAYP) (FAILOVER_MODE = (TYPE = SELECT) (METHOD = BASIC) ) ) )o sqlnet.ora的配置sqlnet.ora是个很重要的配置,他可以控制和管理Oracle连接的属性,根据参数作用的不同决定在客户端配置还是在server端配置.sqlnet.ora的配置是全局性的,也就说sqlnet.ora的配置是对所有的连接起作用,如果想对某个特殊的连接或服务进行约束或限制,可以在TNS配置相应参数.详细参数可以参考:Oracle(R) Database Net Services Reference
RAC的结构图Oracle RAC是Oracle Real Application Cluster的简写,官方中文文档一般翻译为“真正应用集群”,是Oracle9i新版数据库中采用的一项新技术,也是Oracle数据库支持网格计算环境的核心技术。它的出现解决了传统数据库应用中面临的一个重要问题:高性能、高可伸缩性与低价格之间的矛盾!   它一般有两台或者两台以上同构计算机及共享存储设备构成,可提供强大的数据库处理能力,现在是Oracle 10g Grid应用的重要组成部分。   Oracle RAC主要支持Oracle9i、10g、11g版本,可以支持24 x 7 有效的数据库应用 系统,在低成本服务器上构建高可用性数据库系统,并且自由部署应用,无需修改代码。   在Oracle RAC环境下,Oracle集成提供了集群软件和存储管理软件,为用户降低了应用成本。当应用规模需要扩充时,用户可以按需扩展系统,以保证系统的性能。   Oracle RAC一般也可构建于大型SMP主机,IBM的AIX系列服务器往往是其中高端平台,Intel Linux往往作为其低端平台。当AIX UNIX用来运行Oracle RAC作为大型数据库系统平台时,其集群系统构建、实施、运维、高可用设置,有其平台特点。可以参照《Oracle大型数据库系统在AIX/UNIX上的实战详解》,该书以AIX UNIX平台为主线,以其他UNIX系统为参照,描述了数据库系统Oracle 10g、Oracle 11g的RAC的构架方法和过程。在Linux平台,则《大话OracleRAC集群、高可用性、备份与恢复》有着很好的论述。 编辑本段2.2 关键特性  高可用性   Oracle Real Application Clusters 提供一个高性能低成本的应用平台,支持所有类型的应用系统,无论是事务处理型应用还是分析型应用。所有应用共享同样的服务器和存储资源。出现任何的服务器或磁盘故障,系统会自动重新接管发生故障的功能。这些对前端用户的完全透明的。同样,如果您需要增加服务器或改变其他组件的配置也不会影响到应用系统。   高性能   Oracle Real Application Clusters保持着TPC-C的记录,达到每分钟 118万个事务的处理能力,和仅仅 $5.52 每tpmC的成本。在3,000 GB的 TPC-H数据仓库Benchmark 测试中, Oracle RAC同样保持性价比的领先地位,保证我们的用户能够达到更好更快的 ROI。这仅仅是Oracle 保持的多项Benchmark 记录中的最 近的一些指标。   按需扩充   您现有的系统可能是基于当前的工作负载而构建的,当 应用规模需要扩充时(支持更多的数据、用户或应用),您就需要扩展您的系统以保证系统的性能。当您的应用是构建于大型的SMP主机时,您可能需要购买另一 台昂贵的主机,但可能只能使用到其处理能力的很小一部分。但是如果您使用Oracle RAC的话,您可以通过增加一台或多台低成本的服务器来扩充您的应用系统的处理能力,满足应用需求。   第三方应用支持   Oracle RAC数据库服务器象一个单一镜像的数据库服务 器,所有的应用无需任何改动都可以直接部署 (例如Oracle EBS, SAP, Siebel, 您自己的应用), 同时可以提高应用性能和可靠性。 Oracle和SAP的应用在RAC上完成了一系列的benchmarks性能测试,获 得了非常优异的测试结果, 象ABB 和Colgate一些大客户都是在Oracle RAC上运行他们的 SAP 应用软件。 编辑本段2.3 技术应答  我听说RAC无法证明其在超过4个处理器的集群上的伸缩性 – 您有什么证据来证明RAC 的高可用性、高伸缩性和高可靠性?   标准的benchmark 性能测试表 明 SAP 运 行于RAC上可以达到80%的伸缩性。一个明显的例证是最近在HP上所作的标准 TPC-C测试。第一个测试是Oracle运行于有64个Intel Itanium2& CPU 的HP SuperDome SMP巨型服务器。第二个测试是16个节点的集群系统,每个节点是4个CPU的SMP服务器。测试结果表明RAC环境性能超过SuperDome 18% ,这两个测试使用了完全同样的 Itanium2& CPU,处理器总数都是64。所以在同样的CPU处理能力下,RAC具有更好的伸缩性。   当您再进一步考察这两种方案的成本时,您会发现RAC的成本更低。HP SuperDome 将近800万美元,而同样的集群系统的成本仅仅不到300万美元, 其成本只是大型机的1/3。   为什么说Oracle Real Application Clusters 10g 要远远超过它的竞争对手?   最基本的不同是,Oracle Real Application Clusters 10g 中所有服务器都可以直接访问数据库中的所有数据,其他的数据库在开放系统中都做不到这点, 正是由于这个原因,您可以非常方便地根据需求随时增加服务器来扩充您的系统,无需重新分布数据和应用。Real Application Clusters象一个单一的系统一样工作,任何节点的故障都不会影响其他节点对数据的访问。所以说增加服 务器就增加了系统的可靠性。另外一点,对用户来说RAC是一个数据库系统,对它的维护管理如同单机一样简单方便。   Microsoft SQL Server和IBM DB2都有active-active 的故障切换方式,为什么我要采用Oracle Real Application Cluster 10g ?   其他的数据库系统都无法 真正的支持 active-active方式的集群系统,即集群的两个节点可以支持同样的应用。实际上,他们只能支持双向的active-passive 架 构,即节点 A 运行应用A,同时节点B 运行应用B,每个节点作为另一个节点的备份节点。但是同样的应用无法同时运行在两个不同的节点。在Oracle Real Application Cluster 10g 中,同样的应用可以运行在两个或更多的节点,每一个节点都可作为所有其它节点的备份机。当 出现单点故障时,整个Real Application Clusters数据库系统的效率只会有很小的降低。   我的分布式应用 系统运行非常好,为什么我要把我的数据库进行集中?   如果您的应用系统正运行 于Oracle上,他们当然可以支持您的业务需求。但是集群的数据库可以让您管理更少的数据库,意味着更 少的管理成本。同时如果您把数据集中到Oracle Real Application Cluster 10g 上,您可以提高整个系 统的可用性,达到99.99%甚至更高。   我们已经有了集 群硬件环境,并且可以进行应用的切换,为什么我还需要Oracle Real Application Clusters 10g?   当您在集群环境下运行您 的应用,如果不采用Oracle Real Application Clusters 10g 的话,您的应用是运行于单例程状态下。虽然您的服务 器是集群的一部分,但实际上相当于只运行在一台单机上。在硬件集群环境下,如HP ServiceGuard、 Sun Cluster 和 Microsoft Cluster Services, 您可以在集群的任何一个 节点重新启动 Oracle数据库 (因为硬盘可以共享). 这就是我们所说的 ‘cold failover’。’Cold failover’ 切 换速度依赖于相关硬件资源的切换速度,这可能需要5到 25 分钟的时间恢复。如果使用Oracle Real Application Clusters 10g, 在服务器发生故障时,其他存活的服务器可以自动快速的恢复故障服务器的例程。Oracle Real Application Clusters 10g 可以提供业界最快的系统恢复,在60秒内可以对系统故障进行恢复,这至少比硬件的 ‘cold failover’方 案快5倍。   我们使用Data Guard来实现故障切换,为什么我还需要Oracle Real Application Clusters 10g?   使用Data Guard来保护您的数 据是一个正确的选择 - Data Guard可以在各种故障情况(无论是数据坏块还是人为失误)下保护您的数据,Data Guard 也确实提供故障切换的功能,但是切换时间可能会需 要10分 钟,RAC可 以提供低于60秒的切换。同时RAC还可以提供无限的伸缩性,Data Guard 只能提供有限的伸缩性。RAC和Data Guard提供100% 技术来最大程度地保护 您的数据库应用。   为什么选择Linux? 为什么选择Linux 环境下的Oracle Real Application Clusters 10g?   采用SMP UNIX服务器的原因是他 们在过去可以为您的业务系统提供高可用性和伸缩性。在今天对成本非常敏感的环境下,我们需要一种低成本的可以提供高可用性和高质量的系统。通过把您的应用 系统迁移到Linux环境下的Oracle Real Application Clusters 10g ,您可以得到比SMP服务器更好的可用性,同时可以方便地扩充您的系统,最关键的是总体拥有成本可以控制的很 低。使用小型 Intel 服务器构建集群成本远远低于大型的SMP 服务器,同时可以拥有无限的伸缩性。   Oracle Real Application Clusters只是Oracle Parallel Server的新的版本, 是吗?   Real Application Clusters是一个全新的产品,10g 是它的第二个版本。在RAC中,我们有多项新的专利技术,专注于如何为应用系统创建一个高可用性、高伸缩性和高效的集 群系统,而无需修改现有的应用系统。同时,我们在RAC的易管理性上作了大量工作。 RAC系统架构把所有复杂的内部结构都封装起来,对开发人员和用 户完全透明。   您认为Oracle RAC的典型硬件配 置是什么样的?   首先我们知道 RAC选件支持所有的Oracle数据库支持的平台,如: Windows, Linux, Solaris, HP-UX等等。所以无论您选择什么样的系统,RAC都可以非常好的运行。如果是 系统选型,那要取决于您的应用需求。我们可以看到Windows 和Linux平台都是常用的基于Intel架构的平台,RAC 在这些平台都有很好的表现,这意味着您可以以低成本得到更高的可用性、可靠性和伸缩性。同 时,RAC可 以在任何价位上获得良好的性能,您可以在HP SuperDomes、Sun boxes或Linux/Windows Intel 服务器上非常方便地配置RAC。一、Oracle跟踪文件
Oracle跟踪文件分为三种类型,一种是后台报警日志文件,记录数据库在启动、关闭和运行期间后台进程的活动情况,如表空间创建、回滚段创建、某些alter命令、日志切换、错误消息等。在数据库出现故障时,应首先查看该文件,但文件中的信息与任何错误状态没有必然的联系。后台报警日志文件保存BACKGROUND_DUMP_DEST参数指定的目录中,文件格式为SIDALRT.LOG。另一种类型是DBWR、LGWR、SMON等后台进程创建的后台跟踪文件。后台跟踪文件根据后台进程运行情况产生,后台跟踪文件也保存在BACKGROUND_DUMP_DEST参数指定的目录中,文件格式为siddbwr.trc、sidsmon.trc等。还有一种类型是由连接到Oracle的用户进程(Server Processes)生成的用户跟踪文件。这些文件仅在用户会话期间遇到错误时产生。此外,用户可以通过执行oracle跟踪事件(见后面)来生成该类文件,用户跟踪文件保存在USER_DUMP_DEST参数指定的目录中,文件格式为oraxxxxx.trc,xxxxx为创建文件的进程号(或线程号)。二、Oracle跟踪事件
Oracle提供了一类命令,可以将Oracle各类内部结构中所包含的信息转储(dump)到跟踪文件中,以便用户能根据文件内容来解决各种故障。设置跟踪事件有两种方法,一种是在init.ora文件中设置事件,这样open数据库后,将影响到所有的会话。设置格式如下:
EVENT="eventnumber trace name eventname [forever,] [level levelnumber] : ......."
通过:符号,可以连续设置多个事件,也可以通过连续使用event来设置多个事件。
另一种方法是在会话过程中使用alter session set events命令,只对当前会话有影响。设置格式如下:
alter session set events '[eventnumber|immediate] trace name eventname [forever] [, level levelnumber] : .......'
通过:符号,可以连续设置多个事件,也可以通过连续使用alter session set events 来设置多个事件。
格式说明:eventnumber指触发dump的事件号,事件号可以是Oracle错误号(出现相应错误时跟踪指定的事件)或oralce内部事件号,内部事件号在1之间,不能与immediate关键字同用。
immediate关键字表示命令发出后,立即将指定的结构dump到跟踪文件中,这个关键字只用在alter session语句中,并且不能与
eventnumber、forever关键字同用。
trace name 是关键字。
eventname指事件名称(见后面),即要进行dump的实际结构名。若eventname为context,则指根据内部事件号进行跟踪。
forever关键字表示事件在实例或会话的周期内保持有效状态,不能与immediate同用。
level为事件级别关键字。但在dump错误栈(errorstack)时不存在级别。
levelnumber表示事件级别号,一般从1到10,1表示只dump结构头部信息,10表示dump结构的所有信息。
1、buffers事件:dump SGA缓冲区中的db buffer结构
alter session set events 'immediate trace name buffers level 1'; --表示dump缓冲区的头部。
2、blockdump事件:dump数据文件、索引文件、回滚段文件结构
alter session set events 'immediate trace name blockdump level 66666'; --表示dump块地址为6666的数据块。
在Oracle 8以后该命令已改为:
alter system dump datafile 11 block 9; --表示dump数据文件号为11中的第9个数据块。
3、controlf事件:dump控制文件结构
alter session set events 'immediate trace name controlf level 10'; --表示dump控制文件的所有内容。
4、locks事件:dump LCK进程的锁信息
alter session set events 'immediate trace name locks level 5';
5、redohdr事件:dump redo日志的头部信息
alter session set events 'immediate trace name redohdr level 1'; --表示dump redo日志头部的控制文件项。
alter session set events 'immediate trace name redohdr level 2'; --表示dump redo日志的通用文件头。
alter session set events 'immediate trace name redohdr level 10'; --表示dump redo日志的完整文件头。
注意:redo日志的内容dump可以采用下面的语句:
alter system dump logfile 'logfilename';
6、loghist事件:dump控制文件中的日志历史项
alter session set events 'immediate trace name loghist level 1'; --表示只dump最早和最迟的日志历史项。
levelnumber大于等于2时,表示2的levelnumber次方个日志历史项。
alter session set events 'immediate trace name loghist level 4'; --表示dump 16个日志历史项。
7、file_hdrs事件:dump 所有数据文件的头部信息
alter session set events 'immediate trace name file_hdrs level 1'; --表示dump 所有数据文件头部的控制文件项。
alter session set events 'immediate trace name file_hdrs level 2'; --表示dump 所有数据文件的通用文件头。
alter session set events 'immediate trace name file_hdrs level 10'; --表示dump 所有数据文件的完整文件头。
8、errorstack事件:dump 错误栈信息,通常Oracle发生错误时前台进程将得到一条错误信息,但某些情况下得不到错误信息,可以采用这种方式得到Oracle错误。
alter session set events '604 trace name errorstack forever'; --表示当出现604错误时,dump 错误栈和进程栈。
9、systemstate事件:dump所有系统状态和进程状态
alter session set events 'immediate trace name systemstate level 10'; --表示dump 所有系统状态和进程状态。
10、coalesec事件:dump指定表空间中的自由区间
levelnumber以十六进制表示时,两个高位字节表示自由区间数目,两个低位字节表示表空间号,如0x表示dump系统表空间中的5个自由区间,转换成十进制就是327680,即:
alter session set events 'immediate trace name coalesec level 327680';
11、processsate事件:dump进程状态
alter session set events 'immediate trace name processsate level 10';
12、library_cache事件:dump library cache信息
alter session set events 'immediate trace name library_cache level 10';
13、heapdump事件:dump PGA、SGA、UGA中的信息
alter session set events 'immediate trace name heapdump level 1';
14、row_cache事件:dump数据字典缓冲区中的信息
alter session set events 'immediate trace name row_cache level 1';
三、内部事件号1、10013:用于监视事务恢复2、10015:转储UNDO SEGMENT头部
event = "10015 trace name context forever"3、10029:用于给出会话期间的登陆信息4、10030:用于给出会话期间的注销信息5、10032:转储排序的统计信息6、10033:转储排序增长的统计信息7、10045:跟踪Freelist管理操作8、10046:跟踪SQL语句
alter session set events '10046 trace name context forever, level 4'; --跟踪SQL语句并显示绑定变量
alter session set events '10046 trace name context forever, level 8'; --跟踪SQL语句并显示等待事件9、10053:转储优化策略10、10059:模拟redo日志中的创建和清除错误11、10061:阻止SMON进程在启动时清除临时段12、10079:转储 SQL*NET统计信息13、10081:转储高水标记变化14、10104:转储Hash连接统计信息15、10128:转储分区休整信息16、10200:转储一致性读信息17、10201:转储一致性读中Undo应用18、10209:允许在控制文件中模拟错误19、10210:触发数据块检查事件
event = "10210 trace name context forever, level 10"20、10211:触发索引检查事件21、10213:模拟在写控制文件后崩溃22、10214:模拟在控制文件中的写错误
levelnumber从1-9表示产生错误的块号,大于等于10则每个控制文件将出错23、10215:模拟在控制文件中的读错误24、10220:转储Undo头部变化25、10221;转储Undo变化26、10224:转储索引的分隔与删除27、10225:转储基于字典管理的区间的变化28、10229:模拟在数据文件上的I/O错误29、10231:设置在全表扫描时忽略损坏的数据块
alter session set events '10231 trace name context off'; -- 关闭会话期间的数据块检查
event = "10231 trace name context forever, level 10" -- 对任何进程读入SGA的数据块进行检查30、10232:将设置为软损坏(DBMS_REPAIR包设置或DB_BLOCK_CHECKING为TRUE时设置)的数据块dump到跟踪文件31、10235:用于内存堆检查
alter session set events '10235 trace name context forever, level 1';32、10241:转储远程SQL执行33、10246:跟踪PMON进程34、10248:跟踪dispatch进程35、10249:跟踪MTS进程36、10252:模拟写数据文件头部错误37、10253:模拟写redo日志文件错误38、10262:允许连接时存在内存泄漏
alter session set events '10262 trace name context forever, level 300'; -- 允许存在300个字节的内存泄漏39、10270:转储共享游标40、10285:模拟控制文件头部损坏41、10286:模拟控制文件打开错误42、10287:模拟归档出错43、10357:调试直接路径机制44、10500:跟踪SMON进程45、10608:跟踪位图索引的创建46、10704:跟踪enqueues47、10706:跟踪全局enqueues48、10708:跟踪RAC的buffer cache49、10710:跟踪对位图索引的访问50、10711:跟踪位图索引合并操作51、10712:跟踪位图索引OR操作52、10713:跟踪位图索引AND操作53、10714:跟踪位图索引MINUS操作54、10715:跟踪位图索引向ROWID的转化55、10716:跟踪位图索引的压缩与解压56、10719:跟踪位图索引的修改57、10731:跟踪游标声明58、10928:跟踪PL/SQL执行59、10938:转储PL/SQL执行统计信息
最后要说明的是,由于版本不同以上语法可能有些变化,但大多数还是可用的。附完整的跟踪事件列表,event No.10000 to 10999SET SERVEROUTPUT ONDECLAREerr_msg VARCHAR2(120);BEGINdbms_output.enable (1000000);FOR err_num IN 1LOOPerr_msg := SQLERRM (-err_num);IF err_msg NOT LIKE '%Message '||err_num||' not found%' THENdbms_output.put_line (err_msg);END IF;END LOOP;END;/1.select sid,serial#,username,osuser,machine from v$查询session的sid,serial#2.exec dbms_system.set_sql_trace_in_session(141,6,true);开始跟踪3.exec dbms_system.set_sql_trace_in_session(141,6,true) 停止跟踪4.tkprof *.trc *.txt1.select sid,serial#,username,osuser,machine from v$查询session的sid,serial#2.exec dbms_system.set_sql_trace_in_session(141,6,true);开始跟踪3.exec dbms_system.set_sql_trace_in_session(141,6,true) 停止跟踪4.tkprof *.trc *.txt5.查看文件6.get trace file name select
d.value||'/'||lower(rtrim(i.instance, chr(0)))||'_ora_'||p.spid||'.trc' trace_file_name
( select p.spid
from sys.v$mystat m,sys.v$session s,sys.v$process p where m.statistic# = 1 and s.sid = m.sid and p.addr = s.paddr) p,
( select t.instance from sys.v$thread
t,sys.v$parameter
where v.name = 'thread' and (v.value = 0 or t.thread# = to_number(v.value))) i, ( select value from sys.v$parameter where name = 'user_dump_dest') d /
如果您想提高自己的技术水平,欢迎加入本站官方1号QQ群:&&,&&2号QQ群:,在群里结识技术精英和交流技术^_^
本站联系邮箱:

我要回帖

更多关于 东南dx7怎么样 的文章

 

随机推荐