oracle网络与rman的总结文档格式.docx
- 文档编号:19989850
- 上传时间:2023-01-13
- 格式:DOCX
- 页数:12
- 大小:23.99KB
oracle网络与rman的总结文档格式.docx
《oracle网络与rman的总结文档格式.docx》由会员分享,可在线阅读,更多相关《oracle网络与rman的总结文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
d.alterdatabaseopne
2、禁止归档
c.alterdatabasenoarchivelog
d.alterdatabaseopen
归档信息可以通过如下语句查看
SQL>
archiveloglist
DatabaselogmodeArchiveMode
AutomaticarchivalEnabled
ArchivedestinationE:
\oracle\ora92\database\archive
Oldestonlinelogsequence131
Nextlogsequencetoarchive133
Currentlogsequence133
[A]9i以上版本,保证归档的最小间隔不超过n秒
设置Archive_lag_target=n
单位:
秒范围:
0~7200
[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];
[A]1、如果是损坏单个控制文件
只需要关闭数据库,拷贝一个好的数据文件覆盖掉坏的数据文件即可
或者是修改init.ora文件的相关部分
2、如果是损失全部控制文件,则需要创建控制文件或从备份恢复
创建控制文件的脚本可以通过alterdatabasebackupcontrolfiletotrace获取。
[Q]怎么样热备份一个表空间
[A]Altertablespace名称beginbackup;
hostcp这个表空间的数据文件目的地;
Altertablespace名称endbackup;
如果是备份多个表空间或整个数据库,只需要一个一个表空间的操作下来就可以了。
[Q]怎么快速得到整个数据库的热备脚本
[A]可以写一段类似的脚本
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);
altertablespace'
||bk_ts.name||'
beginbackup;
);
forbk_filein(selectfile#,namefromv$datafilewherets#=bk_ts.ts#)loop
hostcp'
||bk_file.name||'
$BACKUP_DEPT/'
endloop;
endbackup;
end;
/
[Q]丢失一个数据文件,但是没有备份,怎么样打开数据库
[A]如果没有备份只能是删除这个数据文件了,会导致相应的数据丢失。
startupmount
--ARCHIVELOG模式命令
Alterdatabasedatafile'
filename'
offline;
--NOARCHIVELOG模式命令
offlinedrop;
SQLl>
Alterdatabaseopen;
该数据文件不能是系统数据文件
[A]保证如下条件
a.不能是系统数据文件
b.不能丢失控制文件
如果满足以上条件,则
Alterdatabasecreatedatafile'
as'
size...reuse;
recoverdatafilen;
-文件号
或者
recoverdatafile'
;
recoverdatabase;
[Q]联机日志损坏如何恢复
[A]1、如果是非当前日志而且归档,可以使用
Alterdatabaseclearlogfilegroupn来创建一个新的日志文件
如果该日志还没有归档,则需要用
Alterdatabaseclearunarchivedlogfilegroupn
2、如果是当前日志损坏,一般不能clear,则可能意味着丢失数据
如果有备份,可以采用备份进行不完全恢复
如果没有备份,可能只能用_allow_resetlogs_corruption=true来进行强制恢复了,但是,这样的方法是不建议的,最好在有Oraclesupport的指导下进行。
如果不是currentandactive日志坏了,仅是inactive坏了,则clearlog
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'
/u04/oracle/prod/usr1prod.dbf'
/u02/oracle/prod/usr1prod.dbf'
/u04/oracle/prod/tmp1prod.dbf'
/u02/oracle/prod/tmp1prod.dbf'
restorecontrolfileto'
/u02/oracle/prod/ctl1prod.ora'
replicatecontrolfilefrom'
restoredatabase;
sql"
alterdatabasemount"
switchdatafileall;
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
\oracle\admin\everac\cdump
\oracle\admin\everac\create
\oracle\admin\everac\pfile
\oracle\admin\everac\udump
mkdirv:
\database
\oradata\everac
setORACLE_SID=everac1
E:
\oracle\ora92\bin\oradim.exe-new-sidEVERAC1-startmodem
\oracle\ora92\bin\oradim.exe-edit-sidEVERAC1-startmodea
\oracle\ora92\bin\orapwd.exefile=E:
\oracle\ora92\database\PWDeverac1.orapassword=change_on_install
4。
可以联库,打开数据库。
-----OVER
}
),提示下标超界,怎么办
[A]完整错误信息如下,
execdbms_logmnr_d.build('
)
BEGINdbms_logmnr_d.build('
END;
*
ERROR位于第1行:
ORA-06532:
下标超出限制
ORA-06512:
在"
SYS.DBMS_LOGMNR_D"
line793
在line1
解决办法为:
1.编辑位于"
$ORACLE_HOME/rdbms/admin"
目录下的文件"
dbmslmd.sql"
改变行:
TYPEcol_desc_arrayISVARRAY(513)OFcol_description;
为
TYPEcol_desc_arrayISVARRAY(700)OFcol_description;
并保存文件
2.运行改变后的脚本
SQLPLUS>
Connectinternal
@$ORACLE_HOME/rdbms/admin/dbmslmd.sql
3.重新编译该包
alterpackageDBMS_LOGMNR_Dcompilebody;
无效的月份,这个是什么原因
[A]我们分析start_logmnr包
PROCEDUREstart_logmnr(
startScnINNUMBERdefault0,
endScnINNUMBERdefault0,
startTimeINDATEdefaultTO_DATE('
01-jan-1988'
DD-MON-YYYY'
),
endTimeINDATEdefaultTO_DATE('
01-jan-2988'
DictFileNameINVARCHAR2default'
OptionsINBINARY_INTEGERdefault0);
可以知道,如果TO_DATE('
)失败,将导致以上错误
所以解决办法可以为
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'
));
[A]首先,创建一个数据库用户,一般都是RMAN,并给予recovery_catalog_owner角色权限
sqlplussys
createuserrmanidentifiedbyrman;
alteruserrmandefaulttablespacetoolstemporarytablespacetemp;
alteruserrmanquotaunlimitedontools;
grantconnect,resource,recovery_catalog_ownertorman;
exit;
然后,用这个用户登录,创建恢复目录
rmancatalogrman/rman
RMAN>
createcatalogtablespacetools;
最后,你可以在恢复目录注册目标数据库了
rmancatalogrman/rmantargetbackdba/backdba
registerdatabase;
[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网络
[Q]如何限定特定IP访问数据库
[Q]如何穿过防火墙连接数据库
[Q]如何利用hostname方式连接数据库
[Q]dbms_repcat_admin能带来什么安全隐患
[Q]在不知道用户密码的时候,怎么样跳转到另外一个用户执行操作后并不影响该用户?
[Q]如何加固你的数据库
[Q]如何检查用户是否用了默认密码
[Q]如何修改默认的XDB监听端口
[Q]怎么捕获用户登录信息,如SID,IP地址等
[Q]怎么捕获整个数据库的DDL语句或者是说对象结构变化与修改
[Q]怎么捕获表上的DML语句(不包括select)语句)
[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
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)
你就可以利用数据库服务器的名称访问数据库了
[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中获得详细信息
[A]我们通过如下的方法,可以安全使用该用户,然后再跳转回来,在某些时候比较有用
需要Alteruser权限或DBA权限:
selectpasswordfrom
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- oracle 网络 rman 总结