使用Hibernate进行编程有以下好处:
1,消除了代码的映射规则,它全部分离到了xml或者注解里面去配置。
2,无需在管理数据库连接,它也配置到xml里面了。
3,一个会话中不需要 *** 作多个对象,只需要 *** 作Session对象。
4,关闭资源只需要关闭一个Session便可。
这就是Hibernate的优势,在配置了映射文件和数据库连接文件后,Hibernate就可以通过Session *** 作,非常容易,消除了jdbc带来的大量代码,大大提高了编程的简易性和可读性。Hibernate还提供了级联,缓存,映射,一对多等功能。Hibernate是全表映射,通过HQL去 *** 作pojo进而 *** 作数据库的数据。
Hibernate的缺点:
1,全表映射带来的不便,比如更新时需要发送所有的字段。
2,无法根据不同的条件组装不同的SQL。
3,对多表关联和复杂的sql查询支持较差,需要自己写sql,返回后,需要自己将数据封装为pojo。
4,不能有效的支持存储过程。
5,虽然有HQL,但是性能较差,大型互联网系统往往需要优化sql,而hibernate做不到。
Mybatis:
为了解决Hibernate的不足,Mybatis出现了,Mybatis是半自动的框架。之所以称它为半自动,是因为它需要手工匹配提供POJO,sql和映射关系,而全表映射的Hibernate只需要提供pojo和映射关系即可。
Mybatis需要提供的映射文件包含了一下三个部分:sql,映射规则,pojo。在Mybatis里面你需要自己编写sql,虽然比Hibernate配置多,但是Mybatis可以配置动态sql,解决了hibernate表名根据时间变化,不同条件下列不一样的问题,同时你也可以对sql进行优化,通过配置决定你的sql映射规则,也能支持存储过程,所以对于一些复杂和需要优化性能的sql查询它就更加方便。Mybatis几乎可以做到jdbc所有能做到的事情。
什么时候使用Hibernate,Mybatis
Hibernate作为留下的Java orm框架,它确实编程简易,需要我们提供映射的规则,完全可以通过IDE生成,同时无需编写sql确实开发效率优于Mybatis。此外Hibernate还提供了缓存,日志,级联等强大的功能,但是Hibernate的缺陷也是十分明显,多表关联复杂sql,数据系统权限限制,根据条件变化的sql,存储过程等场景使用Hibernate十分不方便,而性能又难以通过sql优化,所以注定了Hibernate只适用于在场景不太复杂,要求性能不太苛刻的时候使用。
如果你需要一个灵活的,可以动态生成映射关系的框架,那么Mybatis确实是一个最好的选择。它几乎可以替代jdbc,拥有动态列,动态表名,存储过程支持,同时提供了简易的缓存,日志,级联。但是它的缺陷是需要你提供映射规则和sql,所以开发工作量比hibernate要大些。
转换数据库
我用的是L-Blog V108 (SE) To PJBlog25数据库转换程序,也放上来给有需要的朋友下载。 点击下载程序
更改默认的“Cookie,Application域”
一个服务器上如果存在多个Cookies域一样的PJBlog,那么这些Bolg都将无法运行,所以要将Cookies修改一下。修改方法:打开Blog根目录下的“constasp”,修改15、16行Const CookieName=""和Const CookieNameSetting=""的值。
更改数据库路径和数据库名
为确保你的站点安全,这两个一定要修改。
修改数据库路径:用记事本打开constasp文件(在Blog根目录下),找到程序代码:Const AccessFile="blogDB/PBLog2asp",这是定义数据库链接文件,根据自己的情况修改。默认的数据库路径即是里面的: blogDB/PBLog2asp。在blog文件夹里有对应的文件夹名字和文件,文件夹名字blogDB也同样可以随便改,数据库文件 PBLog2asp也同样,但要记得保留asp的后缀。把对应的文件夹和文件的名字改了后,再来改这个路径,一定要对上,否则会出错的。
安装留言本插件
登陆后台,在界面与插件,安装模块插件里,进行留言本的安装。
修正转换后留言数统计的错误
从L-BLOG转换过来的数据库,首页上显示留言数是0。解决的方法很简单:打开数据库,进入blog_Info这个表,将留言数改为实际数即可。
修改建站时间
在后台“设置模块”找到模块标识为“BlogInfo”模块,点击后面的“编辑HTML源代码”进行修改。另外,侧边栏统计信息里的留言默认是没有链接的,在这里也可以进行编辑把链接加上,把整句代码改成
程序代码
留言: <a href="LoadModaspplugins=GuestBookForPJBlog"><b>$blog_MessageNums$</b> 个</a><br/>
添加侧边About Me栏目
进入后台“界面与插件”-“设置模块”,在页面下方新建一个“侧边模块”,模块标识任意,名称为“about”,注意排序要设为最小,点击“保存模块”。保存后点击后面的“编辑HTML源代码”,如果是用作静态公告板,则直接往里边写字就行了。如果是用作站长信息栏,可以在里面添加照片、说明什么。
增强站点统计
按照junjun发布的今日统计及运行天数显示修改方法。对junjun的辛勤劳动表示感谢!修改的程序,增加了今日日志数/今日评论数/今日留言数/今日访问数/运行天数的统计显示,并加上相关提示。效果见本站。
修改方法:
(1)、首先打开common\libraryasp,找到
程序代码
''
''输出日志统计信息
''
function info_code(str)
dim vOnline
vOnline=getOnline
str=replace(str,"$blog_LogNums$",blog_LogNums)
str=replace(str,"$blog_CommNums$",blog_CommNums)
str=replace(str,"$blog_TbCount$",blog_TbCount)
str=replace(str,"$blog_MessageNums$",blog_MessageNums)
str=replace(str,"$blog_MemNums$",blog_MemNums)
str=replace(str,"$blog_VisitNums$",blog_VisitNums)
str=replace(str,"$blog_OnlineNums$",vOnline)
在下面加上
程序代码
''运行天数统计
str=replace(str,"$blog_RunDays$",DateDiff ("d","2005-08-08",date))
''今日评论数
str=replace(str,"$Today_blog_CommNums$",ConnExeCute("Select COUNT(comm_ID) FROM blog_Comment Where Year(comm_PostTime)=Year(Now) and Month(comm_PostTime)=Month(Now) and Day(comm_PostTime)=Day(Now)")(0))
''今日日志数
str=replace(str,"$Today_blog_LogNums$",ConnExeCute("Select COUNT(log_ID) FROM blog_Content Where Year(log_PostTime)=Year(Now) and Month(log_PostTime)=Month(Now) and Day(log_PostTime)=Day(Now)")(0))
''今日留言数
str=replace(str,"$Today_MessageNums$",ConnExeCute("Select COUNT(book_id) FROM blog_book Where Year(book_PostTime)=Year(Now) and Month(book_PostTime)=Month(Now) and Day(book_PostTime)=Day(Now)")(0))
''今日访问数
str=replace(str,"$Today_VisitNums$",ConnExeCute("Select COUNT(coun_ID) FROM blog_Counter Where Year(coun_Time)=Year(Now) and Month(coun_Time)=Month(Now) and Day(coun_Time)=Day(Now)")(0))
''今日引用数
str=replace(str,"$Today_blog_TbCount$",ConnExeCute("Select COUNT(tb_ID) FROM blog_Trackback Where Year(tb_PostTime)=Year(Now) and Month(tb_PostTime)=Month(Now) and Day(tb_PostTime)=Day(Now)")(0))
然后保存,上传到服务器。
(2)、以管理员身份进入BLOG管理页面——界面与插件——设置模块,编辑BlogInfo模块的HTML代码
将其替换成
程序代码
日志: <a href="defaultasp" title="今日发表日志 $Today_blog_LogNums$ 篇,共有日志 $blog_LogNums$ 篇"><b>$Today_blog_LogNums$/$blog_LogNums$</b></a><br />
评论: <a href="searchaspsearchType=Comments" title="今日评论 $Today_blog_CommNums$ 条,共有评论 $blog_CommNums$ 条"><b>$Today_blog_CommNums$/$blog_CommNums$</b></a><br />
留言: <a href="LoadModaspplugins=GuestBookForPJBlog" title="今日留言 $Today_MessageNums$ 条,共有留言 $blog_MessageNums$ 条"><b>$Today_MessageNums$/$blog_MessageNums$</b></a><br />
引用: <a href="searchaspsearchType=trackback" title="今日引用被 $Today_blog_TbCount$ 次,共被引用 $blog_TbCount$ 次"><b>$Today_blog_TbCount$/$blog_TbCount$</b></a><br />
会员: <a href="memberasp" title="当前在线会员 $blog_OnlineNums$ 人,共有会员 $blog_MemNums$人"><b>$blog_OnlineNums$/$blog_MemNums$</b> </a><br />
访问: <a href="#" title="今日日访问数 $Today_VisitNums$,总访问数 $blog_VisitNums$"><b>$Today_VisitNums$/$blog_VisitNums$</b></a><br />
建站时间: <a href="#" title="本BLOG建立于2005年8月8日,至今已运行 $blog_RunDays$ 天"><b>$blog_RunDays$/2005-08-08</b></a>
之后保存HTML代码即可。
注:以上方式仅供参考,请在修改前备份相关文件和信息。
隐藏Category中不需要的项目(隐藏了首页”、“留言”和“标签”)
后台设置日志分类,将位置设为顶部即可。
添加友情链接说明
在BlogLinkasp添加。
去除pjblog的引用功能(对我的小站来说这个功能没多大作用,不如删除。)
涉及文件:
trackbackasp
blogpostasp
blogeditasp
class/cls_articleasp
class/cls_defaultasp
class/cls_logActionasp
(1) 删除trackbackasp
(2) 在blogpostasp和blogeditasp删除以下内容:
程序代码
<tr>
<td align="right" valign="top"><span style="font-weight: bold">引用通告:</span></td>
<td colspan="2" align="left"><input name="log_Quote" type="text" size="80" class="inputBox" /><br>请输入网络日
志项的引用通告URL。可以用逗号分隔多个引用通告地址 </td>
</tr>
(3) 找到class目录下的cls_articleasp,找到并删除以下内容:
程序代码
<img src="images/icon_trackbackgif" style="margin:4px 2px -4px 0px"
alt =""/><strong>引用通告地址:</strong> <a href="<%=(SiteURL&"trackbackasptbID="&id)%>" target="_blank"><%=(SiteURL&"trackbackasptbID="&id)%></a><br/>
程序代码
| 引用: <%=log_ViewArr(13,0)%>
程序代码
<div class="commenttop"><img src="images/icon_trackbackgif" alt="" style="margin:0px 4px -3px 0px"/><strong><%=
("<a href="""&commArr(4,Pcount)&""">"&commArr(5,Pcount)&"</a>")%></strong> <span class="commentinfo">[<%=DateToStr(commArr
(3,Pcount),"Y-m-d H:I A")%><%if stat_Admin=true then responsewrite (" | <a href=""trackbackasp
action=deltb&tbID="&commArr(6,Pcount)&"&logID="&LogID&""" onclick=""if (!windowconfirm(''是否删除该引用'')) {return
false}""><img src=""images/del1gif"" alt=""删除该引用"" border=""0""/></a>") end if%>]</span></div>
(4) 找到class目录下的cls_defaultasp,找到并删除以下内容:
程序代码
| 引用:
一 意义 当我们使用一个数据库时 总希望数据库的内容是可靠的 正确的 但由于计算机系统的故障(硬件故障 网络故障 进程故障和系统故障)影响数据库系统的 *** 作 影响数据库中数据的正确性 甚至破坏数据库 使数据库中全部或部分数据丢失 因此当发生上述故障后 希望能重新建立一个完整的数据库 该处理称为数据库恢复 恢复子系统是数据库管理系统的一个重要组成部分 恢复处理随所发生的故障类型所影响的结构而变化 二 备份的方法ORACLE数据库有三种标准的备份 导出/导入(EXPORT/IMPORT) 冷备份 热备份 导出备份是一种逻辑备份 这种方法包括读取一系列的数据库日志 并写入文件中 这些日志的读取与其所处位置无关 冷备份和热备份是物理备份(也称低级备份) 它涉及到组成数据库的文件 但不考虑逻辑内容 下面我们分别介绍一下这三种备份方法及其特点 (一) 导出/导入(EXPORT/IMPORT)EXPORT/IMPORT是用来将ORACLE中数据移出/移入数据库 EXPORT将数据库中数据备份成一个二进制系统文件称为 导出转储文件 (EXPORT DUMP FILE) 并将重新生成数据库写入文件中 它有三种模式 a 用户模式 导出用户所有对象以及对象中的数据 b 表模式 导出用户所有表或者指定的表 c 整个数据库 导出数据库中所有对象 它的备份有三种类型 a 完全型(PLETE EXPORT) 备份整个数据库 b 积累型(ULATIVE ERPORT) 备份上一次积累型备份所改变的数据 c 增量型(INCREAMENTAL EXPORT) 备份上一次备份后改变的数据 EXPORT 的命令可以交互式进行 各参数的具体含义见附录 在进行导出备份时我们要考虑一点问题 那就是导出的一致性 在导出过程 中导出每读一次就读取一个表 因而尽管导出是在一个特点时自己开始的 但不同的表读取的时间不同 因此 导出开始读一个表时 此时表中的数据才是导出的数据 这样当大多数表按内部关键字和外部关键字相互联系时 在导出过程中这些相关联表的改变就会导致导出的不一致性 要避开这个 我们可以将导出过程安排在不对表 *** 作的时候进行 另外 当ORACLE中RESTRICTEP CONSISTENT 选项就可以保证导出数据一致性
IMPORT导入 导入的过程是导出的逆过程 这个命令先读取导出来的导出转储二进制文件 并运行文件 恢复对象用户和数据 IMPORT命令执行的方法和EXPORT方案有关 如果EXPORT所实施的是完全型方案(FULL)则在IMPORT时所有的数据对象 包括表空间 数据文件 用户都会在导入时创建 但考虑到数据库中的物理布局 预先创建表空间和用户是有用的 如果EXPORT使用的是INCREMENTAL/CUMULATIVE方式 则需要预先设置好表空间 用户 数据文件 (二) 冷备份冷备份发生在数据库已经正常关闭的情况下 当正常关闭时会提供给我们一个完整的数据库 数据库使用的每个文件都被备份下来 这些文件包括 所有数据文件所有控制文件所有联机REDO LOG 文件INIT ORA文件(可选)值得注意的是冷备份必须是数据库关闭的情况下完成 当数据库开着的时候 执行数据库文件系统备份无效 作冷备份一般步骤是 正常关闭要备份的实例(instance); : 备份整个数据库到一个目录 启动数据库 SQLDBA>connect internalSQLDBA>shutdown normal SQLDBA>! cp <file> <backup directory>或SQLDBA>!tar cvf /dev/rmt/ /dg/oracle SQLDBA>startup
(三)热备份(ACHIRELOG)数据库需要二十四小时运行 而且随时有新的数据加入 数据丢失将影响整个公司 采用archivelog mode物理备份 设置数据库为automatic archivelog mode #su oracle%svrmgrl svrmgrl>connect internalsvrmgrl>startup mount svrmgrl>alter database archivelogsvrmgrl>shutdownsvrmgrl>exit%vi initoracle ora加入log_archive_start = true # if you want automatic archivinglog_archive_dest = $ORACLE_HOME/dbs/archlog_archive_format = log%s arc%dbstart%ps ef|grep archoracle : : : ora_arch_oracle 注 oracle database is in automatic archivelog mode
full offline entire database backup 当数据库初始完成后 这份备份是将来备份的基础 它提供了所有与数据库有关的拷贝 %dbshut%cp /oracle/oradata/oracle /system dbf /oracle/oradata/oracle /rbs dbf /oracle/oradata/oracle /temp dbf/oracle/oradata/oracle /tools dbf/oracle/oradata/oracle /users dbf/oraclecle/app/oracle/product/ /dbs/application dbf/oracle/app/oracle/product/ /dbs/apptmpsp dbf/oracle/app/oracle/product/ /dbs/apprlbksp dbf/oracle/oradata/oracle /redooracle log /oracle/oradata/oracle /control ctl /oracle/oradata/oracle /control ctl /oracle/oradata/oracle /control ctl <backup directory>%dbstart 注:以上 dbf文件为数据文件 log文件为日志文件 ctl文件为控制文件%exit %tar uvf /dev/rmt/ <backup files> 注:如果为oracle 则copy 相应的 data files relog files control files
每天做一次 partial online with archiving backups #su oracle%svrmgrl%svrmgrl>connect internal%svrmgrl>alter tablespace billsp begin backup%svrmgrl>alter tablespace billtmpsp begin backup%svrmgrl>alter tablespace billrlbksp begin backup%svrmgrl>alter tablespace system begin backup %svrmgrl>alter tablespace rbs begin backup%svrmgrl>alter tablespace temp begin backup%svrmgrl>alter tablespace tools begin backup %svrmgrl>alter tablespace users begin backup %svrmgrl>host cp all datafile to the backup storage #文件名如第一步中以 dbf结尾的 %svrmgrl>alter tablespace billsp end backup%svrmgrl>alter tablespace billtmpsp end backup%svrmgrl>alter tablespace billrlbksp end backup%svrmgrl>alter tablespace system end backup %svrmgrl>alter tablespace rbs end backup%svrmgrl>alter tablespace temp end backup%svrmgrl>alter tablespace tools end backup %svrmgrl>alter tablespace users end backup
做一个sql文件 如上所写
The billing system can recover to the point of failure when the failure occur
七 备份文件的恢复 恢复文件 以下是对"/etc/passwd"文件的恢复( 放入正确的磁带( 运行以下命令恢复"/etc/passwd"文件# rsh mt f /dev/rmt/ rew( 找到最近的磁带 向前进带到最近的"/etc/passwd" 比如要找星期三的"/etc/passwd"文件 运行如下命令)#rsh mt f /dev/rmt/ n fsf # ufsrestore if :/dev/rmt/ nufsrestore > ls. etc/ufsrestore > cd etc ufsrestore > ls./etc passwdufsrestore > add passwdWarnign ./etc File existsufsrestore > verboseverbose mode onufsrestore > extractExtract requested filesYou have not read any volumes yet .Unless you know which volume your file(s) are on you should start witch the last volume and work to wards the first.Specify next volume # extract file ./etc/passwdAdd linksSet directory mode ower and times.set owner /mode for . (yn)nDirectories already exit set mode anyway(yn)yufsrestore >quit 热备份可以在数据库打开打情况下进行 一般通过使用Alter命令改变表空间的状态来开始进行备份的 备份完成后 要恢其原来状态 否则redo log 会错配 引起数据库下次启动时对受影响的表空间进行完全覆盖 热备份的要求是 热备份工作必需要求数据库在Archivelog 方式下 *** 作 在SQLDBA状态下用alter database archivelog|noarchivelog命令可改变备份的模式 热备份只能在数据库不使用或使用率低的情况下进行 热备份需要大量的档案空间 一般情况 Oracle 以循环的方式写入Online redo log 文件 当填满第一个redo log文件后写第二个 直至最后一个 最后一个被填满后 后台进程LGWR就覆盖第一个 在Archivelog方式下 后台进程ARCH在每一个redo log 文件被覆盖前 给它作一个拷贝 一般 这些文档的redo log 文件被写入磁盘或磁带中 如果磁盘空间够用 建议使用磁盘 这样可大大减少完成备份所需的时间 在作热备份之前 要将config ora文件中的log_archive_start 设为true 将log_archive_dest规定archive redo log 文件的位置 log_archive_dest=/dg/oracle/arch/archlog_archive_start=true一旦数据库运行在archivelog状态下 就可以作备份了 热备份的命令文件由三部分组成 数据文件一个表空间一个空间地备份 a 设置表空间为备份状态 b 备份表空间的数据文件 c 恢复表空间为正常状态 备份归档要作log 文件 a 临时停止归档进程b log下那些在archive redo log目标目录中的文件c 重新启动archive进程d 备份归档的redo log 文件 用alter database backup controlfile命令来备份拷贝文件在热备份运行之前log_archive_dest目录可能已满 这时就要备份目录 然后删除文件 释放空间 这个过程有如下步骤 暂时停止archive进程 记录在log_archive_dest目录下的文件 重新启动archive 进程 备份archive redo log 文件 删除目录中的文件 sqldba lmode=y <<EOF arch archive log stop;exitEOF arch FILES= ls /dg/oracle/arch/arch dbf ;sqldba lmode=y<<EOF arch connect internalarchive log start;exitEOF arch tar rvf /dev/rmt/ FILESrm f $FILES
逻辑备份与物理备份的结合 前面介绍了三种备份的方法 在数据库做备份时 应该将数据这三种备份的特点灵活运用 我们首先比较一下三种方法的特性
方 法类 型恢 复 特 性EXPORT导出逻辑型可以将任何数据库对象恢复到它被导出时的状态乻hutdown将最近copyes of datafile 拷贝到$oracle_home/dbs目录 %svrmgrlsvrmgrl>connect internal…svrmgrl>startup mount pfile=filename exclusivesvrmgrl>alter database recover;注:将自动恢复数据到the point of failure; svrmgrl>alter database open; 当archive log文件过多时 在 做过部分备份后 可将current log sequence 之前的log arc删除 #su oracle%svrmgrlsvrmgrl>connect internal;svrmgrl>archive log list; #此处标有current log sequence 假设为 Svrmgrl>exit$cd /billdg/oracle/app/oracle/product/ /dbs/arch$ rm #将log arc之前的文件如log arc log arc 删除 冷 备 份物理型可将数据库到它被关闭的状态热 备 份物理型可将数据库恢复到任一时间点的状态
当数据库比较小时 处理业务也小时 冷备份导出就可以了 如果只对一两个表备份导出就够了 一般来说一个好 备份最终执行总包括逻辑和物理 导出确认数据库在逻辑的正确性而物理备份确保物理 另外 在进行备份时需要一些存储介质 对于这些介质应该对其作好管理 根据备份的内容 日期将介质统一编号 以免备份和恢复时弄错介质 造成原有的备份丢失 介质应存放在与计算机设备不同的地点 以免机房发生意外时 备份与计算机设备一同损坏
附录 tar命令tar option [arguments] filename option:c:创建一个由命令行指定的新的tarfilet:列出tarfile中的内容x:打开tarfile;f:使用其后的filename 或/dev/rmt/ | v:列出被恢复的文件名 p:恢复文件example:#tar cvf /dev/rmt/ /oracle备份/root 下的所有内容#tar tvf /dev/rmt/ 列出磁带上的所有内容#tar xvf /dev/rmt/ /oracle将磁带上的/oracle目录中的内容恢复到当前目录中
导出选项关键字 内 容 USERID 运行导出命令的帐号的用户名/口令 BUFFEER 用来取数据行的缓冲区的大小 FILE 导出转储文件的名字PRESS 导出是否应该压缩有碎片的段成一个范围 这将会影响STORAGE 子句 GRANTS 导出时否要导出数据库对象上的授权INDEXES 是否要导出表上的索引ROWS 是否应导出行 如它为 N 那么在导出文件中仅生成数据库 对象的DDLCONSSTRAINTS 是否导出表旧的约定条件FULL 如设为 Y 那么将执行一个整个数据库导出 *** 作OWNER 要导出的一系列数据库帐号 然后执行这些帐号的USER导出 *** 作TABLES 要导出的一系列表 执行这些表的TABLE导出 *** 作RECORDLENGTH 转储导出文件日志的长度(以字节为单位) 通常都使用缺省 除非要在两个不同 *** 作系统中传递导出文件INCTYPE 正在执行的导出 *** 作的类型(有效值有 PLETE (缺省值) CUMULATIVE 和 IVCREMENTAL )RECORD 在增量导出类型中的一个标记 标明是否将日志存储到数据字典中日志导出的表中PARFILE 要传递给导出的参数文件的名字 这个文件将包含所有参数的入口项ANALYZE 标明是否将移对象的统计信息写入导出转储文件中CONSISTENT 标明是否保留所有导出对象的读取一致复制 LOG 导出日志将要写入的文件的名字MLS 标明是否要导出MLS 标号MLS_LABEL_ 规定了MLS标号的格式
导入选择项USERID 运行导入命令的帐号的用户名/口令 BUFFEER 用来取数据行的缓冲区的大小 FILE 导入转储文件的名字SHOW 规定文件内容是否被显示 而不是被执行 EGORE 标明在执行 CREATE 命令时 是否忽略遇到的错误 如果正在导入的对象已经存在时 应使用这个参数 FULL 如设为 Y 那么将执行一个整个数据库导入 *** 作FROMUSER 在FULL=N的情况下 才有参数 它是一系列的数据库帐号 其对象应从导出转储文件中读取 TOUSER 一系列数据库帐号 导出转储文件扣的对象将要导入这些帐号 GRANTS 导入时否要导入数据库对象上的授权INDEXES 是否要导入表上的索引ROWS 是否应导入行 如它为 N 那么在导入文件中执行数据库对象的DDLFULL 如设为 Y 那么将执行一个整个数据库导出 *** 作TABLES 要导入的一系列表RECORDLENGTH 转储导入文件日志的长度(以字节为单位) 通常都使用缺省 除非要在两个不同 *** 作系统中传递导入文件INCTYPE 正在执行的导入 *** 作的类型(有效值有 PLETE (缺省值) CUMULATIVE 和 IVCREMENTAL )PARFILE 要传递给导入的参数文件的名字 这个文件将包含所有参数的入口项ANALYZE 标明是否将移对象的统计信息写入导入转储文件中LOG 导入日志将要写入的文件的名字MLS 标明是否要导入MLS 标号
热备份的命令文件 ORACLE_SID=oracle ORACLE_HOME=/dg/oraclesqldba lmode=y<<EOF arch connect internalalter tablespace SYSTEM begin backup;!tar cvf /dev/rmt/ /dg/oracle/dbms/sys dbfalter tablespace SYSTEM end backup;
alter tablespace BWT begin backup;!tar cvf /dev/rmt/ /dg/oracle/dbms/BWT dbfalter tablespace BWT end backup;
archive log stopexitEOF arch FILES= ls /dg/oracle/arch/arch dbf ;
sqldba lmode=y<<EOF arch connect internalarchive log start;exitEOF arch
tar rvf /dev/rmt/ $FILESrm f $files
sqldba lmode=y<<EOFarch alter database backup controlfile to /dg/oracle/dbms/bwtcontrfile backup ;exitEOF arch
lishixinzhi/Article/program/Oracle/201311/17668
记载数据库运行过程中所有更新 *** 作的文件称为日志文件。
日志文件主要包括:
1、事务标识(标明是哪个事务)。
2、 *** 作的类型(插入、删除或修改)。
3、 *** 作对象(记录内部标识)。
4、更新前数据的旧值(对插入 *** 作而言此项为空值)。
5、更新后数据的新值(对删除 *** 作而言此项为空值)。
扩展资料:
日志文件的分类
1、内核及系统日志
这种日志数据由rsyslog统一管理,根据其主配文件/etc/rsyslog。conf中的设置决定将内核及各种系统程序信息记录到什么位置。
2、用户日志
用于记录系统用户登录及退出系统的相关信息,包括用户名,登陆的终端,登陆的时间,来源主机,正在使用的进程 *** 作等。
3、程序日志
有些应用程序会选择由自己独立管理一份日志文件,而不是交给rsyslog服务管理,用于记录本程序运行过程中的各种事件信息。
先提供一种复杂的方法压缩日志及数据库文件如下:1清空日志 dump transaction 库名 with no_log 2截断事务日志: backup log 数据库名 with no_log3收缩数据库文件(如果不压缩,数据库的文件不会减小 企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件 --选择日志文件--在收缩方式里选择收缩至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)特别注意: 请按步骤进行,未进行前面的步骤,请不要做后面的步骤 否则可能损坏你的数据库 一般不建议做第4,6两步 第4步不安全,有可能损坏数据库或丢失数据 第6步如果日志达到上限,则以后的数据库处理会失败,在清理日志后才能恢复另外提供一种更简单的方法,本人屡试不爽,建议大家使用。更简单的方法: 1。右建数据库属性窗口--故障还原模型--设为简单 2。右建数据库所有任务--收缩数据库 3。右建数据库属性窗口--故障还原模型--设为大容量日志记录 查询sql数据库中表占用的空间大小最近在给一家客户做系统维护时,需要查看数据库表的大小,相关的sql如下:1 exec sp_spaceused '表名' --(SQL统计数据,大量事务 *** 作后可能不准)
2 exec sp_spaceused '表名', true --(准确的表空间大小,但可能会花些统计时间)
3 exec sp_spaceused -- (数据库大小查询)
4 exec sp_MSforeachtable "exec sp_spaceused ''" --(所有用户表空间表小,SQL统计数据,,大量事务 *** 作后可能不准)
5 exec sp_MSforeachtable "exec sp_spaceused '',true" --(所有用户表空间表小,大数据库慎用)
create table #t(name varchar(255), rows bigint, reserved varchar(20), data varchar(20), index_size varchar(20), unused varchar(20))
exec sp_MSforeachtable "insert into #t exec sp_spaceused ''"
select from #t
drop table #t
Logminer(DBMS_LOGMNR和DBMS_LOGMNR_D)package 可以用来分析Oracle的重做日志文件 Logminer是oracle从 i开始提供的工具
我们可以使用logminer分析其它instance(版本可不一致)的重做日志文件 但是必须遵循以下要求
LogMiner日志分析工具仅能够分析Oracle 以后的产品
LogMiner必须使用被分析数据库实例产生的字典文件 且安装LogMiner数据库的字符集必须和被分析数据库的字符集相同
被分析数据库平台必须和当前LogMiner所在数据库平台一样 且block size相同
使用logminer
安装logminer
要安装LogMiner工具 必须首先要运行下面这样两个脚本 $ORACLE_HOME/rdbms/admin/dbmslm sql $ORACLE_HOME/rdbms/admin/dbmslmd sql
这两个脚本必须均以SYS用户身份运行
创建数据字典文件
首先在init ora初始化参数文件中 添加参数UTL_FILE_DIR 该参数值为服务器中放置数据字典文件的目录 如 UTL_FILE_DIR = (D:\Oracle\logs)
重新启动数据库 使新加的参数生效 然后创建数据字典文件 SQL> EXECUTE dbms_logmnr_d build( dictionary_filename => logmn_ora dat dictionary_location => D:\Oracle\logs );
创建数据字典是让LogMiner引用涉及到内部数据字典中的部分时使用对象的名称 而不是系统内部的 进制的ID 如果我们要分析的数据库中的表有变化 影响到库的数据字典也发生变化 就需要重新创建该字典
添加要分析的日志文件
Logminer可以用来分析在线的重做日志文件和归档日志文件 但是我们一般建议使用归档的日志文件
a 添加新的日志文件 SQL> EXECUTE dbms_logmnr add_logfile( LogFileName=> D:\database\oracle\oradata\ora \archive \ ARC Options=>dbms_logmnr new);
b 添加另外的日志文件到列表 SQL> EXECUTE dbms_logmnr add_logfile( LogFileName=> D:\database\oracle\oradata\ora \archive \ ARC Options=>dbms_logmnr addfile);
c 移去一个日志文件 SQL> EXECUTE dbms_logmnr add_logfile( LogFileName=> D:\database\oracle\oradata\ora \archive \ ARC Options=>dbms_logmnr REMOVEFILE);
创建了要分析的日志文件 就可以对其进行分析
进行日志分析 SQL> EXECUTE dbms_logmnr start_logmnr( DictFileName=> D:\Oracle\logs\ logmn_ora dat );
可以使用相应的限制条件
时间范围 对dbms_logmnr start_logmnr使用StartTime和EndTime参数
SCN范围 对dbms_logmnr start_logmnr使用StartScn和EndScn参数
观察结果
主要是查询v$logmnr_contents SQL> desc v$logmnr_contents;
名称 空 类型
SCN NUMBER TIMESTAMP DATE THREAD# NUMBER LOG_ID NUMBER XIDUSN NUMBER XIDSLT NUMBER XIDSQN NUMBER RBASQN NUMBER RBABLK NUMBER RBABYTE NUMBER UBAFIL NUMBER UBABLK NUMBER UBAREC NUMBER UBASQN NUMBER ABS_FILE# NUMBER REL_FILE# NUMBER DATA_BLK# NUMBER DATA_OBJ# NUMBER DATA_OBJD# NUMBER SEG_OWNER VARCHAR ( ) SEG_NAME VARCHAR ( ) SEG_TYPE NUMBER SEG_TYPE_NAME VARCHAR ( ) TABLE_SPACE VARCHAR ( ) ROW_ID VARCHAR ( ) SESSION# NUMBER SERIAL# NUMBER USERNAME VARCHAR ( ) SESSION_INFO VARCHAR ( ) ROLLBACK NUMBER OPERATION VARCHAR ( ) SQL_REDO VARCHAR ( ) SQL_UNDO VARCHAR ( ) RS_ID VARCHAR ( ) SSN NUMBER CSF NUMBER INFO VARCHAR ( ) STATUS NUMBER PH _NAME VARCHAR ( ) PH _REDO VARCHAR ( ) PH _UNDO VARCHAR ( ) PH _NAME VARCHAR ( ) PH _REDO VARCHAR ( ) PH _UNDO VARCHAR ( ) PH _NAME VARCHAR ( ) PH _REDO VARCHAR ( ) PH _UNDO VARCHAR ( ) PH _NAME VARCHAR ( ) PH _REDO VARCHAR ( ) PH _UNDO VARCHAR ( ) PH _NAME VARCHAR ( ) PH _REDO VARCHAR ( ) PH _UNDO VARCHAR ( )
通过字段sql_redo可以得到该日志文件中进行过的sql *** 作 通过sql_undo可以得到撤销的sql语句
还可以用这样的sql对日志文件中的所有的 *** 作分类统计 select operation count()from v$logmnr_contents group by operation;
视图v$logmnr_contents中的分析结果仅在我们运行过程 dbms_logmrn start_logmnr 这个会话的生命期中存在 这是因为所有的LogMiner存储都在PGA内存中 所有其他的会话是看不到它的 同时随着会话的结束而清除分析结果
lishixinzhi/Article/program/Oracle/201311/18334
以上就是关于Hibernate和MyBatis哪个好全部的内容,包括:Hibernate和MyBatis哪个好、pj-blog数据库相对路径的文件名在哪、有关Oracle数据库的备份情况等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)