数据库dump mysql中的dump命令用法
今天给各位分享数据库dump的知识,其中也会对mysql中的dump命令用法进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
Oracle数据库event事件与dump文件介绍
一 Oracle跟踪文件
Oracle跟踪文件分为三种类型一种是后台报警日志文件记录数据库在启动关闭和运行期间后台进程的活动情况如表空间创建回滚段创建某些alter命令日志切换错误消息等
在数据库出现故障时应首先查看该文件但文件中的信息与任何错误状态没有必然的联系后台报警日志文件保存BACKGROUND_DUMP_DEST参数指定的目录中文件格式为SIDALRT LOG另一种类型是DBWR LGWR SMON等后台进程创建的后台跟踪文件后台跟踪文件根据后台进程运行情况产生后台跟踪文件也保存在BACKGROUND_DUMP_DEST参数指定的目录中文件格式为siddbwr trc sid*** on 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内部事件号内部事件号在到之间不能与immediate关键字同用
immediate关键字表示命令发出后立即将指定的结构dump到跟踪文件中这个关键字只用在alter session语句中并且不能与 eventnumber forever关键字同用
trace name是关键字
eventname指事件名称(见后面)即要进行dump的实际结构名若eventname为context则指根据内部事件号进行跟踪
forever关键字表示事件在实例或会话的周期内保持有效状态不能与immediate同用
levelnumber表示事件级别号一般从到表示只dump结构头部信息表示dump结构的所有信息
buffers事件 dump SGA缓冲区中的db buffer结构
alter session set events immediate trace name buffers level;表示dump缓冲区的头部
blockdump事件 dump数据文件索引文件回滚段文件结构
alter session set events immediate trace name blockdump level;表示dump块地址为的数据块
在Oracle以后该命令已改为
alter system dump datafile block;表示dump数据文件号为中的第个数据块
controlf事件 dump控制文件结构
alter session set events immediate trace name controlf level;表示dump控制文件的所有内容
locks事件 dump LCK进程的锁信息
alter session set events immediate trace name locks level;
redohdr事件 dump redo日志的头部信息
alter session set events immediate trace name redohdr level;表示dump redo日志头部的控制文件项
alter session set events immediate trace name redohdr level;表示dump redo日志的通用文件头
alter session set events immediate trace name redohdr level;表示dump redo日志的完整文件头
注意 redo日志的内容dump可以采用下面的语句:
alter system dump logfile logfilename;
loghist事件 dump控制文件中的日志历史项
alter session set events immediate trace name loghist level;表示只dump最早和最迟的日志历史项
levelnumber大于等于时表示的levelnumber次方个日志历史项
alter session set events immediate trace name loghist level;表示dump个日志历史项
file_hdrs事件 dump所有数据文件的头部信息
alter session set events immediate trace name file_hdrs level;表示dump所有数据文件头部的控制文件项
alter session set events immediate trace name file_hdrs level;表示dump所有数据文件的通用文件头
alter session set events immediate trace name file_hdrs level;表示dump所有数据文件的完整文件头
errorstack事件 dump错误栈信息通常Oracle发生错误时前台进程将得到一条错误信息但某些情况下得不到错误信息可以采用这种方式得到Oracle错误
alter session set events trace name errorstack forever;表示当出现错误时 dump错误栈和进程栈
systemstate事件 dump所有系统状态和进程状态
alter session set events immediate trace name systemstate level;表示dump所有系统状态和进程状态
coalesec事件 dump指定表空间中的自由区间
levelnumber以十六进制表示时两个高位字节表示自由区间数目两个低位字节表示表空间号如 x表示dump系统表空间中的个自由区间转换成十进制就是即
alter session set events immediate trace name coalesec level;
processsate事件 dump进程状态
alter session set events immediate trace name processsate level;
library_cache事件 dump library cache信息
alter session set events immediate trace name library_cache level;
heapdump事件 dump PGA SGA UGA中的信息
alter session set events immediate trace name heapdump level;
row_cache事件 dump数据字典缓冲区中的信息
alter session set events immediate trace name row_cache level;
三内部事件号
用于监视事务恢复
转储UNDO SEGMENT头部
event= trace name context forever
用于给出会话期间的登陆信息
用于给出会话期间的注销信息
转储排序的统计信息
转储排序增长的统计信息
跟踪Freelist管理操作
跟踪SQL语句
alter session set events trace name context forever level;跟踪SQL语句并显示绑定变量
alter session set events trace name context forever level;跟踪SQL语句并显示等待事件
转储优化策略
模拟redo日志中的创建和清除错误
阻止SMON进程在启动时清除临时段
转储 SQL*NET统计信息
转储高水标记变化
转储Hash连接统计信息
转储分区休整信息
转储一致性读信息
转储一致性读中Undo应用
允许在控制文件中模拟错误
触发数据块检查事件
event= trace name context forever level
触发索引检查事件
模拟在写控制文件后崩溃
模拟在控制文件中的写错误
levelnumber从表示产生错误的块号大于等于则每个控制文件将出错
模拟在控制文件中的读错误
转储Undo头部变化
;转储Undo变化
转储索引的分隔与删除
转储基于字典管理的区间的变化
模拟在数据文件上的I/O错误
设置在全表扫描时忽略损坏的数据块
alter session set events trace name context off;关闭会话期间的数据块检查
event= trace name context forever level对任何进程读入SGA的数据块进行检查
将设置为软损坏(DBMS_REPAIR包设置或DB_BLOCK_CHECKING为TRUE时设置)的数据块dump到跟踪文件
用于内存堆检查
alter session set events trace name context forever level;
转储远程SQL执行
跟踪PMON进程
跟踪dispatch进程
跟踪MTS进程
模拟写数据文件头部错误
模拟写redo日志文件错误
允许连接时存在内存泄漏
alter session set events trace name context forever level;允许存在个字节的内存泄漏
转储共享游标
模拟控制文件头部损坏
模拟控制文件打开错误
模拟归档出错
调试直接路径机制
跟踪SMON进程
跟踪位图索引的创建
跟踪enqueues
跟踪全局enqueues
跟踪RAC的buffer cache
跟踪对位图索引的访问
跟踪位图索引合并操作
跟踪位图索引OR操作
跟踪位图索引AND操作
跟踪位图索引MINUS操作
跟踪位图索引向ROWID的转化
跟踪位图索引的压缩与解压
跟踪位图索引的修改
跟踪游标声明
跟踪PL/SQL执行
转储PL/SQL执行统计信息
最后要说明的是由于版本不同以上语法可能有些变化但大多数还是可用的
附完整的跟踪事件列表 event No to
SET SERVEROUTPUT ONDECLAREerr_msg VARCHAR();BEGINdbms_output enable();FOR err_num IN LOOPerr_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;/
select sid serial# username osuser machine from v$session;查询session的sid serial#
exec dbms_system set_sql_trace_in_session( true);开始跟踪
exec dbms_system set_sql_trace_in_session( true)停止跟踪
tkprof* trc* txt
select sid serial# username osuser machine from v$session;查询session的sid serial#
exec dbms_system set_sql_trace_in_session( true);开始跟踪
exec dbms_system set_sql_trace_in_session( true)停止跟踪
tkprof* trc* txt
查看文件
get trace file nameselectd value||/||lower(rtrim(i instance chr()))|| _ora_||p spid|| trc trace_file_namefrom( select p spidfrom sys v$mystat m sys v$session s sys v$process pwhere m statistic#= and s sid= m sid and p addr= s paddr) p( select t instance from sys v$thread t sys v$parameter vwhere v name= thread and(v value= or t thread#= to_number(v value))) i( select value from sys v$parameter where name= user_dump_dest) d
lishixinzhi/Article/program/Oracle/201311/17136mysql怎么导出整个数据库
1、 mysqldump命令备份数据
在MySQL中提供了命令行导出数据库数据以及文件的一种方便的工具mysqldump,我们可以通过命令行直接实现数据库内容的导出dump,首先我们简单了解一下mysqldump命令用法:
#MySQLdump常用
mysqldump-u root-p--databases数据库1数据库2> xxx.sql
2、 mysqldump常用操作实例
2.1备份全部数据库的数据和结构
mysqldump-uroot-p123456-A>/data/mysqlDump/mydb.sql
2.2备份全部数据库的结构(加-d参数)
mysqldump-uroot-p123456-A-d>/data/mysqlDump/mydb.sql
2.3备份全部数据库的数据(加-t参数)
mysqldump-uroot-p123456-A-t>/data/mysqlDump/mydb.sql
2.4备份单个数据库的数据和结构(,数据库名mydb)
mysqldump-uroot-p123456 mydb>/data/mysqlDump/mydb.sql
2.5备份单个数据库的结构
mysqldump-uroot-p123456 mydb-d>/data/mysqlDump/mydb.sql
2.6备份单个数据库的数据
mysqldump-uroot-p123456 mydb-t>/data/mysqlDump/mydb.sql2
2.7备份多个表的数据和结构(数据,结构的单独备份方法与上同)
mysqldump-uroot-p123456 mydb t1 t2>/data/mysqlDump/mydb.sql
2.8一次备份多个数据库
mysqldump-uroot-p123456--databases db1 db2>/data/mysqlDump/mydb.sql
mysql中的dump命令用法
用到MySQL的mysqldump工具,基本用法是:
shell> mysqldump [OPTIONS] database [tables]
如果你不给定任何表,整个数据库将被导出。
通过执行mysqldump--help,你能得到你mysqldump的版本支持的选项表。
注意,如果你运行mysqldump没有--quick或--opt选项,mysqldump将在导出结果前装载整个结果集到内存中,如果你正在导出一个大的数据库,这将可能是一个问题。
1.1、mysqldump支持下列选项:
--add-locks
在每个表导出之前增加LOCK TABLES并且之后UNLOCK TABLE。(为了使得更快地插入到MySQL)。
--add-drop-table
在每个create语句之前增加一个drop table。
--allow-keywords
允许创建是关键词的列名字。这由表名前缀于每个列名做到。
-c,--complete-insert
使用完整的insert语句(用列名字)。
-C,--compress
如果客户和服务器均支持压缩,压缩两者间所有的信息。
--delayed
用INSERT DELAYED命令插入行。
-e,--extended-insert
使用全新多行INSERT语法。(给出更紧缩并且更快的插入语句)
-#,--debug[=option_string]
跟踪程序的使用(为了调试)。
--help
显示一条帮助消息并且退出。
LOAD DATA INFILE
--fields-terminated-by=...
--fields-enclosed-by=...
--fields-optionally-enclosed-by=...
--fields-escaped-by=...
--fields-terminated-by=...
这些选择与-T选择一起使用,并且有相应的LOAD DATA INFILE子句相同的含义。
LOAD DATA INFILE语法。
-F,--flush-logs
在开始导出前,洗掉在MySQL服务器中的日志文件。
-f,--force,
即使我们在一个表导出期间得到一个SQL错误,继续。
-h,--host=..
从命名的主机上的MySQL服务器导出数据。缺省主机是localhost。
-l,--lock-tables.
为开始导出锁定所有表。
-t,--no-create-info
不写入表创建信息(CREATE TABLE语句)
-d,--no-data
不写入表的任何行信息。如果你只想得到一个表的结构的导出,这是很有用的!
--opt
同--quick--add-drop-table--add-locks--extended-insert--lock-tables。
应该给你为读入一个MySQL服务器的尽可能最快的导出。
-pyour_pass,--password[=your_pass]
与服务器连接时使用的口令。如果你不指定“=your_pass”部分,mysqldump需要来自终端的口令。
-P port_num,--port=port_num
与一台主机连接时使用的TCP/IP端口号。(这用于连接到localhost以外的主机,因为它使用 Unix套接字。)
-q,--quick
不缓冲查询,直接导出至stdout;使用mysql_use_result()做它。
-S/path/to/socket,--socket=/path/to/socket
与localhost连接时(它是缺省主机)使用的套接字文件。
-T,--tab=path-to-some-directory
对于每个给定的表,创建一个 table_name.sql文件,它包含SQL CREATE命令,和一个table_name.txt文件,它包含数据。注意:这只有在mysqldump运行在mysqld守护进程运行的同一台机器上的时候才工作。.txt文件的格式根据--fields-xxx和--lines--xxx选项来定。
-u user_name,--user=user_name
与服务器连接时,MySQL使用的用户名。缺省值是你的Unix登录名。
-O var=option,--set-variable var=option设置一个变量的值。可能的变量被列在下面。
-v,--verbose
冗长模式。打印出程序所做的更多的信息。
-V,--version
打印版本信息并且退出。
-w,--where=''''where-condition''''
只导出被选择了的记录;注意引号是强制的!
"--where=user=''''jimf''''""-wuserid>1""-wuserid<1"
1.2、最常见的mysqldump的一个备份:
虽然mysqldump支持的命令有很多,对于大多数人而言,我们只需要使用-opt这个命令就已经足够了,为你的数据库做一个完整的备份:
mysqldump--opt database> backup-file.sql
但是它对用来自于一个数据库的信息充实另外一个MySQL数据库也是有用的:
mysqldump--opt database| mysql--host=remote-host-C database
1.3、使用mysqldump导出的文件恢复数据库
由于mysqldump导出的是完整的SQL语句,所以用mysql客户程序很容易就能把数据导入了:
shell> mysqladmin create target_db_name
shell> mysql target_db_name< backup-file.sql
就是
shell> mysql库名<文件名
二、使用mysqldump定时备份数据库的脚本
2.1、备份脚本
使用脚本每天定期执行数据库备份操作,对每个使用mysql数据库的人来说都很有必要,这样的脚本网上有很多,这里摘抄一个朋友的脚本 dbbackup:
这个脚本每天最多只执行一次,而且只保留最近五天的备份在服务器上。
dbbackup代码:
#!/bin/bash
#This is a ShellScript For Auto DB Backup
#Powered by aspbiz
#2004-09
#Setting
#设置数据库名,数据库登录名,密码,备份路径,日志路径,数据文件位置,以及备份方式
#默认情况下备份方式是tar,还可以是mysqldump,mysqldotcopy
#默认情况下,用root(空)登录mysql数据库,备份至/root/dbxxxxx.tgz
DBName=mysql
DBUser=root
DBPasswd=
BackupPath=/root/
LogFile=/root/db.log
DBPath=/var/lib/mysql/
#BackupMethod=mysqldump
#BackupMethod=mysqlhotcopy
#BackupMethod=tar
#Setting End
NewFile="$BackupPath"db$(date+%y%m%d).tgz
DumpFile="$BackupPath"db$(date+%y%m%d)
OldFile="$BackupPath"db$(date+%y%m%d--date=''''5 days ago'''').tgz
echo"-------------------------------------------">>$LogFile
echo$(date+"%y-%m-%d%H:%M:%S")>>$LogFile
echo"--------------------------">>$LogFile
#Delete Old File
if [-f$OldFile ]
then
rm-f$OldFile>>$LogFile 2>&1
echo"[$OldFile]Delete Old File Success!">>$LogFile
else
echo"[$OldFile]No Old Backup File!">>$LogFile
fi
if [-f$NewFile ]
then
echo"[$NewFile]The Backup File is exists,Can''''t Backup!">>$LogFile
else
case$BackupMethod in
mysqldump)
if [-z$DBPasswd ]
then
mysqldump-u$DBUser--opt$DBName>$DumpFile
else
mysqldump-u$DBUser-p$DBPasswd--opt$DBName>$DumpFile
fi
tar czvf$NewFile$DumpFile>>$LogFile 2>&1
echo"[$NewFile]Backup Success!">>$LogFile
rm-rf$DumpFile
;;
mysqlhotcopy)
rm-rf$DumpFile
mkdir$DumpFile
if [-z$DBPasswd ]
then
mysqlhotcopy-u$DBUser$DBName$DumpFile>>$LogFile 2>&1
else
mysqlhotcopy-u$DBUser-p$DBPasswd$DBName$DumpFile>>$LogFile 2>&1
fi
tar czvf$NewFile$DumpFile>>$LogFile 2>&1
echo"[$NewFile]Backup Success!">>$LogFile
rm-rf$DumpFile
;;
*)
/etc/init.d/mysqld stop>/dev/null 2>&1
tar czvf$NewFile$DBPath$DBName>>$LogFile 2>&1
/etc/init.d/mysqld start>/dev/null 2>&1
echo"[$NewFile]Backup Success!">>$LogFile
;;
esac
fi
echo"-------------------------------------------">>$LogFile
2.2、放入crontab定期执行dbbackup
假定dbbackup在/root目录下。我们通过使用crontab命令,设置每天0点10分执行/root/dbbakup脚本。
1、使用 crontab–e编辑crontab
2、在crontab中加入:
#back for jabber database
10 0***/root/dbbackup
OK,本文到此结束,希望对大家有所帮助。