
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丢失后应当如何恢复、数据库日志已满,如何处理等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)