oracle数据库使用的一些技巧(6)

2019-05-24 14:12

[A]导出用低版本,导入用当前版本 如果版本跨越太大,需要用到中间版本过渡

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

[A]a.前条件是保证导出/导入符合其他字符集标准,如客户环境与数据库字符集一致。 b.修改dmp文件的2、3字节为目标数据库的字符集,注意要换成十六进制。 参考函数(以下函数中的ID是十进制的): nls_charset_name 根据字符集ID获得字符集名称 nls_charset_id 根据字符集名称获得字符集ID

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

[A]再线备份为一个二进制的文件

alter database backup controlfile to '$BACKUP_DEPT/controlfile.000' [reuse]; 备份为文本文件方式

alter database backup controlfile to trace [resetlogs|noresetlogs];

[Q]控制文件损坏如何恢复 [A]1、如果是损坏单个控制文件

只需要关闭数据库,拷贝一个好的数据文件覆盖掉坏的数据文件即可 或者是修改init.ora文件的相关部分

2、如果是损失全部控制文件,则需要创建控制文件或从备份恢复

创建控制文件的脚本可以通过alter database backup controlfile to trace获取。

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

[A]Alter tablespace 名称 begin backup; host cp 这个表空间的数据文件 目的地; Alter tablespace 名称 end backup;

如果是备份多个表空间或整个数据库,只需要一个一个表空间的操作下来就可以了。

[Q]怎么快速得到整个数据库的热备脚本 [A]可以写一段类似的脚本 SQL>set serveroutput on begin

dbms_output.enable(10000);

for bk_ts in (select t.ts#,t.name from v$tablespace t,v$datafile d where t.ts#=d.ts#) loop

dbms_output.put_line('--'||bk_ts.name);

dbms_output.put_line('alter tablespace '||bk_ts.name||' begin backup;'); for bk_file in (select file#,name from v$datafile where ts#=bk_ts.ts#) loop dbms_output.put_line('host cp '||bk_file.name||' $BACKUP_DEPT/'); end loop;

dbms_output.put_line('alter tablespace '||bk_ts.name||' end backup;'); end loop; end;

/

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

[A]如果没有备份只能是删除这个数据文件了,会导致相应的数据丢失。 SQL>startup mount --ARCHIVELOG模式命令

SQL>Alter database datafile 'file name' offline; --NOARCHIVELOG模式命令

SQL>Alter database datafile 'file name' offline drop; SQLl>Alter database open;

注意:该数据文件不能是系统数据文件

[Q]丢失一个数据文件,没有备份但是有该数据文件创建以来的归档怎么恢复 [A]保证如下条件 a. 不能是系统数据文件 b. 不能丢失控制文件 如果满足以上条件,则 SQL>startup mount

SQL>Alter database create datafile 'file name' as 'file name' size ... reuse; SQL>recover datafile n; -文件号 或者

SQL>recover datafile 'file name'; 或者

SQL>recover database; SQL>Alter database open;

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

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

Alter database clear logfile group n来创建一个新的日志文件 如果该日志还没有归档,则需要用

Alter database clear unarchived logfile group n

2、如果是当前日志损坏,一般不能clear,则可能意味着丢失数据 如果有备份,可以采用备份进行不完全恢复

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

如果不是current and active 日志坏了,仅是 inactive 坏了,则 clear log startup mount

alter database clear logfile '...'; 否则:

做下面的步骤前先备份您的数据库!!!!! _ALLOW_RESETLOGS_CORRUPTION = true statup mount

recover database using backup controlfile until cancel; cancel

alter database open resetlogs; ----- maybe error ,not serious shutdown

去掉该参数_ALLOW_RESETLOGS_CORRUPTION startup

[Q]怎么样在恢复的时候移动数据文件,恢复到别的地点 [A]给一个RMAN的例子 run {

set until time 'Jul 01 1999 00:05:00'; allocate channel d1 type disk;

set newname for datafile '/u04/oracle/prod/sys1prod.dbf' to '/u02/oracle/prod/sys1prod.dbf';

set newname for datafile '/u04/oracle/prod/usr1prod.dbf' to '/u02/oracle/prod/usr1prod.dbf';

set newname for datafile '/u04/oracle/prod/tmp1prod.dbf' to '/u02/oracle/prod/tmp1prod.dbf';

restore controlfile to '/u02/oracle/prod/ctl1prod.ora'; replicate controlfile from '/u02/oracle/prod/ctl1prod.ora'; restore database;

sql \switch datafile all; recover database;

sql \release channel d1; }

[Q]操作系统重装,如何恢复数据库? [A]两种方法

首先都是需要安装Oracle软件,最好按照原来的目录结构 1.把你的ORACLE文件全部COPY到另外一个分区

再安装ORACLE,按以前的所有的配置安装(SID,服务名,字符集)目录完全一致,安装后停掉所有ORACLE相关的服务,再把备份的文件COPY回来,重新启动服务,一般就OK了 2.你可以使用oradim创建一个实例,把所有文件恢复到原来的位置,就可以启动数据库了 这种方式省去了建库的过程 方法:

1。安装ORACLE软件

2。运行DBCA,创建数据库,位置什么的随便,只要SID,DBNAME,CHARACTERSET相同就得,到最后一步选保存为脚本,不运行建库,保存退出。 3。打开建库脚本(。BAT),手工运行语句(例子): mkdir E:\\oracle\\admin\\everac\\bdump mkdir E:\\oracle\\admin\\everac\\cdump mkdir E:\\oracle\\admin\\everac\\create mkdir E:\\oracle\\admin\\everac\\pfile mkdir E:\\oracle\\admin\\everac\%udump

mkdir v:\\database mkdir v:\\oradata\\everac set ORACLE_SID=everac1

E:\\oracle\\ora92\\bin\\oradim.exe -new -sid EVERAC1 -startmode m E:\\oracle\\ora92\\bin\\oradim.exe -edit -sid EVERAC1 -startmode a

E:\\oracle\\ora92\\bin\\orapwd.exe file=E:\\oracle\\ora92\\database\\PWDeverac1.ora password=change_on_install 4。可以联库,打开数据库。-----OVER

[Q]怎么样在恢复的时候移动数据文件,恢复到别的地点 [A]给一个RMAN的例子 run {

set until time 'Jul 01 1999 00:05:00'; allocate channel d1 type disk;

set newname for datafile '/u04/oracle/prod/sys1prod.dbf' to '/u02/oracle/prod/sys1prod.dbf';

set newname for datafile '/u04/oracle/prod/usr1prod.dbf' to '/u02/oracle/prod/usr1prod.dbf';

set newname for datafile '/u04/oracle/prod/tmp1prod.dbf' to '/u02/oracle/prod/tmp1prod.dbf';

restore controlfile to '/u02/oracle/prod/ctl1prod.ora'; replicate controlfile from '/u02/oracle/prod/ctl1prod.ora'; restore database;

sql \switch datafile all; recover database;

sql \release channel d1; }

[Q]执行exec dbms_logmnr_d.build('Logminer.ora','file directory'),提示下标超界,怎么办

[A]完整错误信息如下,

SQL> exec dbms_logmnr_d.build('Logminer.ora','file directory') BEGIN dbms_logmnr_d.build('Logminer.ora','file directory'); END; *

ERROR 位于第 1 行: ORA-06532: 下标超出限制

ORA-06512: 在\ORA-06512: 在line 1 解决办法为:

1.编辑位于\目录下的文件\改变行:

TYPE col_desc_array IS VARRAY(513) OF col_description; 为

TYPE col_desc_array IS VARRAY(700) OF col_description; 并保存文件

2. 运行改变后的脚本 SQLPLUS> Connect internal

SQLPLUS> @$ORACLE_HOME/rdbms/admin/dbmslmd.sql 3.重新编译该包

SQLPLUS> alter package DBMS_LOGMNR_D compile body;

[Q]执行execute dbms_logmnr.start_logmnr(DictFileName=>'DictFileName')提示ORA-01843:无效的月份,这个是什么原因 [A]我们分析start_logmnr包 PROCEDURE start_logmnr( startScn IN NUMBER default 0 , endScn IN NUMBER default 0,

startTime IN DATE default TO_DATE('01-jan-1988','DD-MON-YYYY'), endTime IN DATE default TO_DATE('01-jan-2988','DD-MON-YYYY'), DictFileName IN VARCHAR2 default '', Options IN BINARY_INTEGER default 0 );

可以知道,如果TO_DATE('01-jan-1988','DD-MON-YYYY')失败,将导致以上错误 所以解决办法可以为

1、Alter session set NLS_LANGUAGE=American 2、用类似如下的方法执行

execute dbms_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角色权限 sqlplus sys

SQL> create user rman identified by rman;

SQL> alter user rman default tablespace tools temporary tablespace temp; SQL> alter user rman quota unlimited on tools;

SQL> grant connect, resource, recovery_catalog_owner to rman; SQL> exit;

然后,用这个用户登录,创建恢复目录 rman catalog rman/rman

RMAN> create catalog tablespace tools; RMAN> exit;

最后,你可以在恢复目录注册目标数据库了 rman catalog rman/rman target backdba/backdba RMAN> register database;


oracle数据库使用的一些技巧(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:胺 值 测 量

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: