oracle网络与rman的总结.docx

上传人:b****6 文档编号:6968371 上传时间:2023-01-13 格式:DOCX 页数:12 大小:23.99KB
下载 相关 举报
oracle网络与rman的总结.docx_第1页
第1页 / 共12页
oracle网络与rman的总结.docx_第2页
第2页 / 共12页
oracle网络与rman的总结.docx_第3页
第3页 / 共12页
oracle网络与rman的总结.docx_第4页
第4页 / 共12页
oracle网络与rman的总结.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

oracle网络与rman的总结.docx

《oracle网络与rman的总结.docx》由会员分享,可在线阅读,更多相关《oracle网络与rman的总结.docx(12页珍藏版)》请在冰豆网上搜索。

oracle网络与rman的总结.docx

oracle网络与rman的总结

第三部分、备份与恢复

menu

[Q]如何开启/关闭归档

[Q]怎样设置定时归档

[Q]不同版本怎么导出/导入

[Q]不同的字符集之前怎么导数据

[Q]怎么样备份控制文件

[Q]控制文件损坏如何恢复

[Q]怎么样热备份一个表空间

[Q]怎么快速得到整个数据库的热备脚本

[Q]丢失一个数据文件,但是没有备份,怎么样打开数据库

[Q]丢失一个数据文件,没有备份但是有该数据文件创建以来的归档怎么恢复

[Q]联机日志损坏如何恢复

[Q]怎么样在恢复的时候移动数据文件,恢复到别的地点

操作系统重装,如何恢复数据库?

[Q]执行execdbms_logmnr_d.build('Logminer.ora','filedirectory'),提示下标超界,怎么办

[Q]执行executedbms_logmnr.start_logmnr(DictFileName=>'DictFileName')提示ORA-01843:

无效的月份,这个是什么原因

[Q]怎么样创建RMAN恢复目录

[Q]Rman的format格式中的%s类似的东西代表什么意义

第三部分、备份与恢复

[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:

\oracle\ora92\database\archive

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(selectt.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>Alterdatabasedatafile'filename'offline;

--NOARCHIVELOG模式命令

SQL>Alterdatabasedatafile'filename'offlinedrop;

SQLl>Alterdatabaseopen;

注意:

该数据文件不能是系统数据文件

[Q]丢失一个数据文件,没有备份但是有该数据文件创建以来的归档怎么恢复

[A]保证如下条件

a.不能是系统数据文件

b.不能丢失控制文件

如果满足以上条件,则

SQL>startupmount

SQL>Alterdatabasecreatedatafile'filename'as'filename'size...reuse;

SQL>recoverdatafilen;-文件号

或者

SQL>recoverdatafile'filename';

或者

SQL>recoverdatabase;

SQL>Alterdatabaseopen;

[Q]联机日志损坏如何恢复

[A]1、如果是非当前日志而且归档,可以使用

Alterdatabaseclearlogfilegroupn来创建一个新的日志文件

如果该日志还没有归档,则需要用

Alterdatabaseclearunarchivedlogfilegroupn

2、如果是当前日志损坏,一般不能clear,则可能意味着丢失数据

如果有备份,可以采用备份进行不完全恢复

如果没有备份,可能只能用_allow_resetlogs_corruption=true来进行强制恢复了,但是,这样的方法是不建议的,最好在有Oraclesupport的指导下进行。

如果不是currentandactive日志坏了,仅是inactive坏了,则clearlog

startupmount

alterdatabaseclearlogfile'...';

否则:

做下面的步骤前先备份您的数据库!

_ALLOW_RESETLOGS_CORRUPTION=true

statupmount

recoverdatabaseusingbackupcontrolfileuntilcancel;

cancel

alterdatabaseopenresetlogs;-----maybeerror,notserious

shutdown

去掉该参数_ALLOW_RESETLOGS_CORRUPTION

startup

[Q]怎么样在恢复的时候移动数据文件,恢复到别的地点

[A]给一个RMAN的例子

run{

setuntiltime'Jul01199900:

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]操作系统重装,如何恢复数据库?

[A]两种方法

首先都是需要安装Oracle软件,最好按照原来的目录结构

1.把你的ORACLE文件全部COPY到另外一个分区

再安装ORACLE,按以前的所有的配置安装(SID,服务名,字符集)目录完全一致,安装后停掉所有ORACLE相关的服务,再把备份的文件COPY回来,重新启动服务,一般就OK了

2.你可以使用oradim创建一个实例,把所有文件恢复到原来的位置,就可以启动数据库了

这种方式省去了建库的过程

方法:

1。

安装ORACLE软件

2。

运行DBCA,创建数据库,位置什么的随便,只要SID,DBNAME,CHARACTERSET相同就得,到最后一步选保存为脚本,不运行建库,保存退出。

3。

打开建库脚本(。

BAT),手工运行语句(例子):

mkdirE:

\oracle\admin\everac\bdump

mkdirE:

\oracle\admin\everac\cdump

mkdirE:

\oracle\admin\everac\create

mkdirE:

\oracle\admin\everac\pfile

mkdirE:

\oracle\admin\everac\udump

mkdirv:

\database

mkdirv:

\oradata\everac

setORACLE_SID=everac1

E:

\oracle\ora92\bin\oradim.exe-new-sidEVERAC1-startmodem

E:

\oracle\ora92\bin\oradim.exe-edit-sidEVERAC1-startmodea

E:

\oracle\ora92\bin\orapwd.exefile=E:

\oracle\ora92\database\PWDeverac1.orapassword=change_on_install

4。

可以联库,打开数据库。

-----OVER

 

[Q]怎么样在恢复的时候移动数据文件,恢复到别的地点

[A]给一个RMAN的例子

run{

setuntiltime'Jul01199900:

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]执行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:

\temp2\TESTDICT.ora',starttime=>TO_DATE(

'01-01-1988','DD-MM-YYYY'),endTime=>TO_DATE('01-01-2988','DD-MM-YYYY'));

[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]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)

 

第五部分、ORACLE网络

menu

[Q]如何限定特定IP访问数据库

[Q]如何穿过防火墙连接数据库

[Q]如何利用hostname方式连接数据库

[Q]dbms_repcat_admin能带来什么安全隐患

[Q]在不知道用户密码的时候,怎么样跳转到另外一个用户执行操作后并不影响该用户?

[Q]如何加固你的数据库

[Q]如何检查用户是否用了默认密码

[Q]如何修改默认的XDB监听端口

[Q]怎么捕获用户登录信息,如SID,IP地址等

[Q]怎么捕获整个数据库的DDL语句或者是说对象结构变化与修改

[Q]怎么捕获表上的DML语句(不包括select)语句)

第五部分、ORACLE网络

[Q]如何限定特定IP访问数据库

[A]可以利用登录触发器或者是修改sqlnet.ora(9i以上):

增加如下内容:

tcp.validnode_checking=yes

#允许访问的ip

tcp.inited_nodes=(ip1,ip2,……)

#不允许访问的ip

tcp.excluded_nodes=(ip1,ip2,……)

[Q]如何穿过防火墙连接数据库

[A]这个问题只会在WIN平台出现,UNIX平台会自动解决。

解决方法:

在服务器端的SQLNET.ORA应类似

SQLNET.AUTHENTICATION_SERVICES=(NTS)

NAMES.DIRECTORY_PATH=(TNSNAMES,ONAMES,HOSTNAME)

TRACE_LEVEL_CLIENT=16

注册表的HOME0加[HKEY_LOCAL_MACHINE]

USE_SHARED_SOCKET=TRUE

[Q]如何利用hostname方式连接数据库

hostname方式只支持tcp/ip协议的小局域网

修改listener.ora中的如下信息

(SID_DESC=

(GLOBAL_DBNAME=ur_hostname)--你的机器名

(ORACLE_HOME=E:

\oracle\ora92)--oraclehome

(SID_NAME=orcl)--sidname

然后在客户端

的sqlnet.ora中,确保有

NAMES.DIRECTORY_PATH=(HOSTNAME)

你就可以利用数据库服务器的名称访问数据库了

[Q]dbms_repcat_admin能带来什么安全隐患

[A]如果一个用户能执行dbms_repcat_admin包,将获得极大的系统权限。

以下情况可能获得该包的执行权限:

1、在sys下grantexecuteondbms_repcat_admintopublic[|user_name]

2、用户拥有executeanyprocedure特权(仅限于9i以下,9i必须显示授权)

如果用户通过执行如下语句:

execsys.dbms_repcat_admin.grant_admin_any_schema('user_name');

该用户将获得极大的系统特权

可以从user_sys_privs中获得详细信息

[Q]在不知道用户密码的时候,怎么样跳转到另外一个用户执行操作后并不影响该用户?

[A]我们通过如下的方法,可以安全使用该用户,然后再跳转回来,在某些时候比较有用

需要Alteruser权限或DBA权限:

SQL>selectpasswordfrom

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1