oracle数据库日志文件在哪(oracle数据库日志文件在哪个视图)

oracle数据库日志文件在哪(oracle数据库日志文件在哪个视图),第1张

1,默认情况下,oracle的日志文件记录在$ORACLE/rdbms/log目录下

[plain]viewplaincopy

[oracle@oraclelog]$pwd

/home/oracle/oracle/proct/1020/db_1/rdbms/log

日志文件为(alert_log):

[plain]viewplaincopy

[oracle@oraclelog]$ll

总计848

-rw-rw-r--1aaaaaa96206-2015:57alert_TESTDBlog

2,如果不是在默认位置,则可通过sql查询日志文件位置:

[plain]viewplaincopy

SQL

NAMETYPE

VALUE

background_mp_deststring

/home/oracle/oracle/admin/TESTDB/bmp

core_mp_deststring

/home/oracle/oracle/admin/TESTDB/cmp

user_mp_deststring

/home/oracle/oracle/admin/TESTDB/ump

其中background_mp_dest的value值即为日志文件存放位置

2直接拷贝数据库文件mdf和日志文件ldf的方式。 下面我们来讲解一下在只有mdf文件时,应当如何进行恢复:◆1我们使用默认方式建立一个供恢复使用的数据库(如test)。可以在SQL Server Enterprise Manager里面建立。 ◆2停掉数据库服务器。 ◆3将刚才生成的数据库的日志文件test_logldf删除,用要恢复的数据库mdf文件覆盖刚才生成的数据库数据文件test_datamdf。 ◆4启动数据库服务器。此时会看到数据库test的状态为“置疑”。这时候不能对此数据库进行任何 *** 作。 ◆5设置数据库允许直接 *** 作系统表。此 *** 作可以在SQL Server Enterprise Manager里面选择数据库服务器,按右键,选择“属性”,在“服务器设置”页面中将“允许对系统目录直接修改”一项选中。 ◆6设置test为紧急修复模式 update sysdatabases set status=-32768 where dbid=DB_ID('test')此时可以在SQL Server Enterprise Manager里面看到该数据库处于“只读置疑脱机紧急模式”可以看到数据库里面的表。 ◆7下面执行真正的恢复 *** 作,重建数据库日志文件 dbcc rebuild_log('test','C:Program FilesMicrosoft SQL ServerMSSQLDatatest_logldf')执行过程中,如果遇到下列提示信息:服务器: 消息 5030,级别 16,状态 1,行 1未能排它地锁定数据库以执行该 *** 作。 DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。说明您的其他程序正在使用该数据库,如果刚才您在F步骤中使用SQL Server Enterprise Manager打开了test库的系统表,那么退出SQL Server Enterprise Manager就可以了。正确执行完成的提示应该类似于:警告: 数据库 'test' 的日志已重建。已失去事务的一致性。应运行 DBCC CHECKDB 以验证物理一致性。将必须重置数据库选项,并且可能需要删除多余的日志文件。 DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。此时打开在SQL Server Enterprise Manager里面会看到数据库的状态为“只供DBO使用”。 至此,我们就可以访问数据库里面的用户表了。

先提供一种复杂的方法压缩日志及数据库文件如下:

1清空日志

  dump transaction 库名 with no_log

2截断事务日志:

  backup log 数据库名 with no_log

3收缩数据库文件(如果不压缩,数据库的文件不会减小

  企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件

  --选择日志文件--在收缩方式里选择收缩至xxm,这里会给出一个允许收缩到的最小m数,直接输入这个数,确定就可以了

  --选择数据文件--在收缩方式里选择收缩至xxm,这里会给出一个允许收缩到的最小m数,直接输入这个数,确定就可以了

  也可以用sql语句来完成

  --收缩数据库

  dbcc shrinkdatabase(客户资料)

  --收缩指定数据文件,1是文件号,可以通过这个语句查询到:select from sysfiles

  dbcc shrinkfile(1)

4为了最大化的缩小日志文件(如果是sql 70,这步只能在查询分析器中进行)

  a分离数据库:

  企业管理器--服务器--数据库--右键--分离数据库

  b在我的电脑中删除log文件

  c附加数据库:

  企业管理器--服务器--数据库--右键--附加数据库

  此法将生成新的log,大小只有500多k

  或用代码:

  下面的示例分离 pubs,然后将 pubs 中的一个文件附加到当前服务器。

  a分离

  e x e c sp_detach_db @dbname = 'pubs'

  b删除日志文件

  c再附加

  e x e c sp_attach_single_file_db @dbname = 'pubs',

  @physname = 'c:\program files\microsoft sql server\mssql\data\pubsmdf'

5为了以后能自动收缩,做如下设置:

  企业管理器--服务器--右键数据库--属性--选项--选择"自动收缩"

  --sql语句设置方式:

  e x e c sp_dboption '数据库名', 'autoshrink', 'true'

6如果想以后不让它日志增长得太大

  企业管理器--服务器--右键数据库--属性--事务日志

  --将文件增长限制为xm(x是你允许的最大数据文件大小)

  --sql语句的设置方式:

  alter database 数据库名 modify file(name=逻辑文件名,maxsize=20)

您好,是这样的:

1首先确认已经备份了mdf和ldf文件。

2

在SQL

Server中新建一个同名的数据库,然后停止SQL

Server服务。

3

用原有的mdf和ldf文件覆盖新建数据库对应的mdf和ldf文件。

4

重新启动SQL

Server服务,这是应该会看到这个数据库处于置疑(Suspect)状态。

5

在SQL查询分析器中执行以下命令,以允许更新系统表:use

mastergosp_configure

"allow

updates",1reconfigurewithoverridego。

6

将这个数据库置为紧急模式:update

sysdatabases

set

status

=

32768

where

name="db_name"go。

7

使用DBCC

CHECKDB命令检查数据库中的错误:DBCC

CHECKDB("db_name")GO。

8

如果DBCC

CHECKDB命令失败,请转至第10步,否则先将数据库置为单用户模式,再尝试对其进行修复:sp_dboption

"db_name","single

user","true"DBCCCHECKDB("db_name",REPAIR_ALLOW_DATA_LOSS)GO

如果在执行DBCCCHECKDB("db_name",REPAIR_ALLOW_DATA_LOSS)命令时提示说数据库未处于单用户模式状态的话,则重新启动SQLServer服务,然后继续尝试。

9

如果DBCCCHECKDB("db_name",REPAIR_ALLOW_DATA_LOSS)命令失败,请转至第10步,否则若成功修复了数据库中的错误:

重新执行DBCC

CHECKDB("db_name")命令,确认数据库中已没有错误存在。

清除数据库的置疑状态:sp_resetstatus

"db_name"

清除数据库的单用户模式状态:sp_dboption

"db_name","single

user","false"

重新启动SQL

Server服务,如果一切正常的话,则数据库已经成功恢复。

10如果以上步骤都不能解决问题的话,请参考附件中的文档尝试通过重建事务日志来恢复数据库中的数据。如果您只有MDF文件,问题就更加复杂一些,我们需要直接重建事务日志了:

1

在SQL

Server中新建一个同名的数据库,然后停止SQL

Server服务。

2

用原有的ldf文件覆盖新建数据库对应的mdf文件,将其日志文件(ldf)删除。

3

启动SQL

Server服务,并将数据库置为紧急模式(同上:

步骤5和步骤6)。

4

停止并重新启动SQL

Server服务。

5

执行以下命令重建数据库日志文件:(下面是个示例,您要用您实际的数据库名)

DBCC

REBUILD_LOG("cas_db",

"D:\cas_db\cas_db_LogLDF")

6

重新将该数据库置为单用户模式。

7

再次尝试使用DBCC

CHECKTABLE或DBCC

CHECKDB命令检查并修复数据库中。

最近的项目主要做数据的归档 把数据从一个数据库拉到另一个数据库 造成新数据库的日志文件非常大 或者数据库在使用过程中会使日志文件不断 增加 使得数据库的性能下降 并且占用大量的磁盘空间 于是想把日志文件删除 最简单就是先分离数据库 》删除日志文件 》最后附加数据 我这里需要在 SSIS中调用 所以已sql脚本为主

两种简单的清除日志的方法

一分离附加法 首先把数据库分离 分离数据库之前一定要做好数据库的全备份 选择数据库——右键——任务——分离 其中药勾选删除连接!

分离后在数据库列表将看不到已分离的数据库 删除数据库的LOG文件数据库文件夹下的对应数据库的 ldf文件 附加数据库 附加的时候会提醒找不到log文件 到时附加上后会自动创建一个新的日志文件 从而达到清理数据库的目的

二 sql语句清除mssql日志 DUMP TRANSACTION TestDB WITH NO_LOG 清除日志 DBCC SHRINKFILE ( TestDB_log ) 收缩数据库文件 BACKUP LOG TestDB WITH NO_LOG 截断事务日志 该命令在SQL Server 也是不支持 在SQL Server 和 可以使用

首先我们需要获取数据库文件的路径

declare @logfilename varchar( )  declare @datafilename varchar( ) select @logfilename=physical_name from sys database_files where type= select @datafilename=physical_name from sys database_files where type=

然后切换到master下 分离数据库

use master exec sp_detach_db @dbname= TestVFA ;

紧接下来就是删除数据库 日志文件 Remove file DECLARE @Result int DECLARE @FSO_Token int EXEC @Result = sp_OACreate Scripting FileSystemObject @FSO_Token OUTPUT EXEC @Result = sp_OAMethod @FSO_Token DeleteFile NULL @logfilename EXEC @Result = sp_OADestroy @FSO_Token 最后就是附加数据库 exec sp_attach_single_file_db @dbname= TestVFA @physname=@datafilename

注意 默认Ole Automation Procedures 是禁用的我们需要启用它

lishixinzhi/Article/program/MySQL/201311/29584

1假设用户abc

2写登录触发器,只要abc用户登录数据库就跟踪它

create or replace trigger sys_logon

after logon

on database

begin

if user='ABC' then

alter session set sql_trace=true;

end if;

end;

/

3到user_dump_dest去找trace文件,用户abc执行的sql都在里面。

上面写的触发器可能会有些问题,没有环境不好测试,但是基本的原理是这样的,网上查找一下sql_trace的用法,应该比较清楚。还有,在一大堆文件里找那个trace文件可是不容易,你得想办法知道登录用户的 *** 作系统进程号才好找。

以上就是关于oracle数据库日志文件在哪(oracle数据库日志文件在哪个视图)全部的内容,包括:oracle数据库日志文件在哪(oracle数据库日志文件在哪个视图)、SQL Server数据库LOG丢失后应当如何恢复、数据库日志已满,如何处理等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9727791.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存