仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 582|回复: 8
打印 上一主题 下一主题

[学习教程] MYSQL网页设计ORACLE之经常使用FAQ V1.0 (3)

[复制链接]
萌萌妈妈 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:43:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
DBaaS会导致单一客户利润率的下降,因为云服务一般是依靠MySQL学习教程数来抵消较低的利润率。oracle第三部分、备份与恢复
[Q]怎样开启/封闭回档
[A]假如开启回档,请包管log_archive_start=true开启主动回档,不然只妙手工回档,假如是封闭了回档,则设置该参数为false
注重:假如是OPS/RAC情况,必要先把parallel_server=true正文失落,然后实行以下步骤,最初用这个参数从头启动
1、开启回档
a.封闭数据库shutdownimmediate
b.startupmount
c.alterdatabasearchivelog
d.alterdatabaseopne
2、克制回档
a.封闭数据库shutdownimmediate
b.startupmount
c.alterdatabasenoarchivelog
d.alterdatabaseopen
回档信息能够经由过程以下语句检察
SQL>archiveloglist
DatabaselogmodeArchiveMode
AutomaticarchivalEnabled
ArchivedestinationE:oracleora92databasearchive
Oldestonlinelogsequence131
Nextlogsequencetoarchive133
Currentlogsequence133
[Q]如何设置准时回档
[A]9i以上版本,包管回档的最小距离不凌驾n秒
设置Archive_lag_target=n
单元:秒局限:0~7200
[Q]分歧版本怎样导出/导进
[A]导出用低版本,导进用以后版本
假如版本超过太年夜,必要用到两头版本过渡
[Q]分歧的字符集之前怎样导数据
[A]a.前前提是包管导出/导进切合其他字符集尺度,如客户情况与数据库字符集分歧。
b.修正dmp文件的2、3字节为方针数据库的字符集,注重要换成十六进制。
参考函数(以下函数中的ID是十进制的):
nls_charset_name依据字符集ID取得字符集称号
nls_charset_id依据字符集称号取得字符集ID
[Q]怎样备份把持文件
[A]再线备份为一个二进制的文件
alterdatabasebackupcontrolfileto$BACKUP_DEPT/controlfile.000[reuse];
备份为文本文件体例
alterdatabasebackupcontrolfiletotrace[resetlogs|noresetlogs];
[Q]把持文件破坏怎样恢复
[A]1、假如是破坏单个把持文件
只必要封闭数据库,拷贝一个好的数据文件掩盖失落坏的数据文件便可
大概是修正init.ora文件的相干部分
2、假如是丧失全体把持文件,则必要创立把持文件或从备份恢复
创立把持文件的剧本能够经由过程alterdatabasebackupcontrolfiletotrace猎取。
[Q]怎样热备份一个表空间
[A]Altertablespace称号beginbackup;
hostcp这个表空间的数据文件目标地;
Altertablespace称号endbackup;
假如是备份多个表空间或全部数据库,只必要一个一个表空间的操纵上去就能够了。
[Q]怎样疾速失掉全部数据库的热备剧本
[A]能够写一段相似的剧本
SQL>setserveroutputon
begin
dbms_output.enable(10000);
forbk_tsin(selectdistinctt.ts#,t.namefromv$tablespacet,v$datafiledwheret.ts#=d.ts#)loop
dbms_output.put_line(--||bk_ts.name);
dbms_output.put_line(altertablespace||bk_ts.name||beginbackup;);
forbk_filein(selectfile#,namefromv$datafilewherets#=bk_ts.ts#)loop
dbms_output.put_line(hostcp||bk_file.name||$BACKUP_DEPT/);
endloop;
dbms_output.put_line(altertablespace||bk_ts.name||endbackup;);
endloop;
end;
/
[Q]丧失一个数据文件,可是没有备份,怎样翻开数据库
[A]假如没有备份只能是删除这个数据文件了,会招致响应的数据丧失。
SQL>startupmount
--ARCHIVELOG形式命令
SQL>Alterdatabasedatafilefilenameoffline;
--NOARCHIVELOG形式命令
SQL>Alterdatabasedatafilefilenameofflinedrop;
SQLl>Alterdatabaseopen;
注重:该数据文件不克不及是体系数据文件
[Q]丧失一个数据文件,没有备份可是有该数据文件创立以来的回档怎样恢复
[A]包管以下前提
a.不克不及是体系数据文件
b.不克不及丧失把持文件
假如满意以上前提,则
SQL>startupmount
SQL>Alterdatabasecreatedatafilefilenameasfilenamesize...reuse;
SQL>recoverdatafilen;-文件号
大概
SQL>recoverdatafilefilename;
大概
SQL>recoverdatabase;
SQL>Alterdatabaseopen;
[Q]联机日记破坏怎样恢复
[A]1、假如长短以后日记并且回档,可使用
Alterdatabaseclearlogfilegroupn来创立一个新的日记文件
假如该日记还没有回档,则必要用
Alterdatabaseclearunarchivedlogfilegroupn
2、假如是以后日记破坏,一样平常不克不及clear,则大概意味着丧失数据
假如有备份,能够接纳备份举行不完整恢复
假如没有备份,大概只能用_allow_resetlogs_corruption=true来举行强迫恢复了,可是,如许的办法是不倡议的,最幸亏有Oraclesupport的引导下举行。
[Q]怎样创立RMAN恢复目次
[A]起首,创立一个数据库用户,一样平常都是RMAN,并赐与recovery_catalog_owner脚色权限
sqlplussys
SQL>createuserrmanidentifiedbyrman;
SQL>alteruserrmandefaulttablespacetoolstemporarytablespacetemp;
SQL>alteruserrmanquotaunlimitedontools;
SQL>grantconnect,resource,recovery_catalog_ownertorman;
SQL>exit;
然后,用这个用户登录,创立恢复目次
rmancatalogrman/rman
RMAN>createcatalogtablespacetools;
RMAN>exit;
最初,你能够在恢复目次注册方针数据库了
rmancatalogrman/rmantargetbackdba/backdba
RMAN>registerdatabase;
[Q]怎样在恢复的时分挪动数据文件,恢复到其余地址
[A]给一个RMAN的例子
run{
setuntiltimeJul01199900:05:00;
allocatechanneld1typedisk;
setnewnamefordatafile/u04/oracle/prod/sys1prod.dbf
to/u02/oracle/prod/sys1prod.dbf;
setnewnamefordatafile/u04/oracle/prod/usr1prod.dbf
to/u02/oracle/prod/usr1prod.dbf;
setnewnamefordatafile/u04/oracle/prod/tmp1prod.dbf
to/u02/oracle/prod/tmp1prod.dbf;
restorecontrolfileto/u02/oracle/prod/ctl1prod.ora;
replicatecontrolfilefrom/u02/oracle/prod/ctl1prod.ora;
restoredatabase;
sql"alterdatabasemount";
switchdatafileall;
recoverdatabase;
sql"alterdatabaseopenresetlogs";
releasechanneld1;
}
[Q]怎样从备份片(backuppiece)中恢复(restore)把持文件与数据文件
[A]可使用以下办法,在RMAN中恢复备份片的把持文件
restorecontrolfilefrombackuppiecefile;
假如是9i的主动备份,能够接纳以下的办法
restorecontrolfilefromautobackup;
可是,假如把持文件全体丧失,必要指定DBID,如SETDBID=?
主动备份把持文件的默许格局是%F,这个格局的情势为
c-IIIIIIIIII-YYYYMMDD-QQ,个中IIIIIIIIII就是DBID
至于恢复(restore)数据文件,oracle816入手下手有个包dbms_backup_restore
在nomount形态下就能够实行,能够读815乃至之前的备份片,读出来的文件用于恢复
能够在SQLPLUS中运转,以下
SQL>startupnomount
SQL>DECLARE
2devtypevarchar2(256);
3doneboolean;
4BEGIN
5devtype:=dbms_backup_restore.deviceallocate(,params=>);
6dbms_backup_restore.restoresetdatafile;
7dbms_backup_restore.restorecontrolfileto(E:Oracleoradatapennycontrol01.ctl);
8dbms_backup_restore.restoreDataFileto(1,E:Oracleoradatapennyystem01.dbf);
9dbms_backup_restore.restoreDataFileto(2,E:OracleoradatapennyUNDOTBS01.DBF);
10dbms_backup_restore.restoreDataFileto(3,E:ORACLEORADATAPENNYUSERS01.DBF);
11dbms_backup_restore.restorebackuppiece(D:orabakBACKUP_1_4_04F4IAJT.PENNY,done=>done);
12END;
13/
PL/SQL历程已乐成完成。
SQL>alterdatabasemount;
[Q]Rman的format格局中的%s相似的器材代表甚么意义
[A]能够参考以下
%c备份片的拷贝数
%d数据库称号
%D位于该月中的第几天(DD)
%M位于该年中的第几月(MM)
%F一个基于DBID独一的称号,这个格局的情势为c-IIIIIIIIII-YYYYMMDD-QQ,个中IIIIIIIIII为该数据库的DBID,YYYYMMDD为日期,QQ是一个1-256的序列
%n数据库称号,向右弥补到最年夜八个字符
%u一个八个字符的称号代表备份集与创立工夫
%p该备份会合的备份片号,从1入手下手到创立的文件数
%U一个独一的文件名,代表%u_%p_%c
%s备份集的号
%t备份集工夫戳
%T年代日格局(YYYYMMDD)
[Q]实行execdbms_logmnr_d.build(Logminer.ora,filedirectory),提醒下标超界,怎样办
[A]完全毛病信息以下,
SQL>execdbms_logmnr_d.build(Logminer.ora,filedirectory)
BEGINdbms_logmnr_d.build(Logminer.ora,filedirectory);END;
*
ERROR位于第1行:
ORA-06532:下标超越限定
ORA-06512:在"SYS.DBMS_LOGMNR_D",line793
ORA-06512:在line1
办理举措为:
1.编纂位于"$ORACLE_HOME/rdbms/admin"目次下的文件"dbmslmd.sql"
改动行:
TYPEcol_desc_arrayISVARRAY(513)OFcol_description;

TYPEcol_desc_arrayISVARRAY(700)OFcol_description;
并保留文件
2.运转改动后的剧本
SQLPLUS>Connectinternal
SQLPLUS>@$ORACLE_HOME/rdbms/admin/dbmslmd.sql
3.从头编译该包
SQLPLUS>alterpackageDBMS_LOGMNR_Dcompilebody;
[Q]实行executedbms_logmnr.start_logmnr(DictFileName=>DictFileName)提醒ORA-01843:有效的月份,这个是甚么缘故原由
[A]我们剖析start_logmnr包
PROCEDUREstart_logmnr(
startScnINNUMBERdefault0,
endScnINNUMBERdefault0,
startTimeINDATEdefaultTO_DATE(01-jan-1988,DD-MON-YYYY),
endTimeINDATEdefaultTO_DATE(01-jan-2988,DD-MON-YYYY),
DictFileNameINVARCHAR2default,
OptionsINBINARY_INTEGERdefault0);
能够晓得,假如TO_DATE(01-jan-1988,DD-MON-YYYY)失利,将招致以上毛病
以是办理举措能够为
1、AltersessionsetNLS_LANGUAGE=American
2、用相似以下的办法实行
executedbms_logmnr.start_logmnr(DictFileName=>f:        emp2TESTDICT.ora,starttime=>TO_DATE(
01-01-1988,DD-MM-YYYY),endTime=>TO_DATE(01-01-2988,DD-MM-YYYY));
列举选择MySQL的理由的最困难的地方在于,如何对这些理由进行排序。MySQL学习教程这就如同我们经常争论的故事:先有鸡还是先有蛋?
谁可相欹 该用户已被删除
沙发
发表于 2015-1-19 21:45:07 | 只看该作者
我们学到了什么?思考问题的时候从表的角度来思考问
老尸 该用户已被删除
板凳
发表于 2015-1-26 23:47:25 | 只看该作者
只能告诉你,学好数据库语言和原理,多见识几种数据库软件,比一棵树上吊死要好。
小女巫 该用户已被删除
地板
发表于 2015-2-4 22:58:33 | 只看该作者
所以你总能得到相应的升级版本,来满足你的需求。
简单生活 该用户已被删除
5#
发表于 2015-2-10 22:32:20 | 只看该作者
对递归类的树遍历很有帮助。个人感觉这个真是太棒了!阅读清晰,非常有时代感。
小魔女 该用户已被删除
6#
发表于 2015-3-1 16:51:15 | 只看该作者
在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。
分手快乐 该用户已被删除
7#
发表于 2015-3-10 21:08:37 | 只看该作者
可能有的朋友会抱怨集成的orderby,其实如果使用ranking函数,Orderby是少不了的。如果担心Orderby会影响效率,可以为orderby的字段建立聚集索引,查询计划会忽略orderby操作(因为本来就是排序的嘛)。
乐观 该用户已被删除
8#
发表于 2015-3-17 10:10:23 | 只看该作者
groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。
透明 该用户已被删除
9#
发表于 2015-3-24 06:36:29 | 只看该作者
groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 02:41

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表