oracle %p%u,ORACLE之常用FAQ V1.0 6

[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]再线备份为一个二进制的文件

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 distinct 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的指导下进行。

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

[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 "alter database mount";

switch datafile all;

recover database;

sql "alter database open resetlogs";

release channel d1;

}

[Q]怎么从备份片(backuppiece)中恢复(restore)控制文件与数据文件

[A]可以使用如下方法,在RMAN中恢复备份片的控制文件

restore controlfile from backuppiecefile;

假如是9i的自动备份,可以采用如下的方法

restore controlfile from autobackup;

但是,假如控制文件全部丢失,需要指定DBID,如SET DBID=?

自动备份控制文件的默认格式是%F,这个格式的形式为

c-IIIIIIIIII-YYYYMMDD-QQ,其中IIIIIIIIII就是DBID

至于恢复(restore)数据文件,oracle 816开始有个包dbms_backup_restore

在 nomount 状态下就可以执行,可以读 815甚至之前的备份片,读出来的文件用于恢复

可以在SQLPLUS中运行,如下

SQL>startup nomount

SQL> DECLARE

2 devtype varchar2(256);

3 done boolean;

4 BEGIN

5 devtype := dbms_backup_restore.deviceallocate('', params=>'');

6 dbms_backup_restore.restoresetdatafile;

7 dbms_backup_restore.restorecontrolfileto('E:Oracleoradatapennycontrol01.ctl');

8 dbms_backup_restore.restoreDataFileto(1,'E:Oracleoradatapennysystem01.dbf');

9 dbms_backup_restore.restoreDataFileto(2,'E:OracleoradatapennyUNDOTBS01.DBF');

10 dbms_backup_restore.restoreDataFileto(3,'E:ORACLEORADATAPENNYUSERS01.DBF');

11 dbms_backup_restore.restorebackuppiece('D:orabakBACKUP_1_4_04F4IAJT.PENNY',done=>done);

12 END;

13 /

PL/SQL 过程已成功完成。

SQL> alter database mount;

[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]执行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: 在"SYS.DBMS_LOGMNR_D", line 793

ORA-06512: 在line 1

解决办法为:

1.编辑位于" $ORACLE_HOME/rdbms/admin"目录下的文件"dbmslmd.sql"

改变行:

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;

ORACLE常用FAQ V1.0 4 第一部分、SQL&PL/SQL 4 [Q]怎么样查询特殊字符,如通配符%与_ 4 [Q]如何插入单引号到数据库表中 4 [Q]怎样设置事务一致性 4 [Q]怎么样利用游标更新数据 4 [Q]怎样自定义异常 4 [Q]十进制与十六进制的转换 4 [Q]怎么样抽取重复记录 5 [Q]怎么样设置自治事务 5 [Q]怎么样在过程中暂停指定时间 5 [Q]怎么样快速计算事务的时间与日志量 5 [Q]怎样创建临时表 6 [Q]怎么样在PL/SQL中执行DDL语句 6 [Q]怎么样获取IP地址 7 [Q]怎么样加密存储过程 7 [Q] 7 [Q] 7 [Q]如果存在就更新,不存在就插入可以用一个语句实现吗 8 [Q]怎么实现左联,右联与外联 9 [Q]怎么实现一条记录根据条件多表插入 10 [Q]如何实现行列转换 11 [Q]怎么样实现分组取前N条记录 13 [Q]怎么设置存储过程的调用者权限 13 [Q]怎么快速获得用户下每个表或表分区的记录数 13 [Q]可以利用utl_smtp包发邮件,以下是一个发送简单邮件的例子程序 14 [Q]可以利用utl_file包,但是,在此之前,要注意设置好Utl_file_dir初始化参数 15 第二部分、ORACLE构架体系 16 [Q]ORACLE的有那些数据类型 16 [Q]Oracle有哪些常见关键字,不能被用于对象名 17 [Q]怎么查看数据库版本 18 [Q]怎么查看数据库参数 18 [Q]怎么样查看数据库字符集 19 [Q]怎么样修改字符集 19 [Q]怎样建立基于函数索引 19 [Q]怎么样移动表或表分区 20 [Q]怎么获得当前的SCN 20 [Q]ROWID的结构与组成 20 [Q]怎么样获取对象的DDL语句 20 [Q]如何创建约束的索引在别的表空间上 21 [Q]怎么知道那些表没有建立主键 21 [Q]dbms_output提示缓冲区不够,怎么增加 22 [Q]怎么样修改表的列名 22 [Q]怎么样给sqlplus安装帮助 22 [Q]怎么样快速下载Oracle补丁 22 [Q]如何移动数据文件 23 [Q]如果管理联机日志组与成员 24 [Q]怎么样计算REDO BLOCK的大小 24 [Q]控制文件包含哪些基本内容 25 [Q]如果发现表中有坏块,如何检索其它未坏的数据 25 [Q]我创建了数据库的所有用户,我可以删除这些用户吗 26 第三部分、备份与恢复 28 [Q]如何开启/关闭归档 28 [Q]怎样设置定时归档 29 [Q]不同版本怎么导出/导入 29 [Q]不同的字符集之前怎么导数据 29 [Q]怎么样备份控制文件 29 [Q]控制文件损坏如何恢复 29 [Q]怎么样热备份一个表空间 29 [Q]怎么快速得到整个数据库的热备脚本 30 [Q]丢失一个数据文件,但是没有备份,怎么样打开数据库 30 [Q]丢失一个数据文件,没有备份但是有该数据文件创建以来的归档怎么恢复 30 [Q]联机日志损坏如何恢复 31 [Q]怎么样创建RMAN恢复目录 31 [Q]怎么样在恢复的时候移动数据文件,恢复到别的地点 32 [Q]怎么从备份片(backuppiece)中恢复(restore)控制文件与数据文件 32 [Q]Rman的format格式中的%s类似的东西代表什么意义 33 [Q]执行exec dbms_logmnr_d.build('Logminer.ora','file 34 [Q]执行execute 34 第四部分、性能调整 35 [Q]如果设置自动跟踪 35 [Q]如果跟踪自己的会话或者是别人的会话 36 [Q]怎么设置整个数据库系统跟踪 36 [Q]怎么样根据OS进程快速获得DB进程信息与正在执行的语句 37 [Q]怎么样快速重整索引 37 [Q]如何使用Hint提示 38 [Q]怎么样快速复制表或者是插入数据 38 [Q]怎么避免使用特定索引 39 [Q]Oracle什么时候会使用跳跃式索引扫描 39 [Q]怎么样创建使用虚拟索引 40 [Q]怎样监控无用的索引 40 [Q]怎么样能固定我的执行计划 41 [Q]v$sysstat中的class分别代表什么 42 [Q]怎么杀掉特定的数据库会话 42 [Q]怎么快速查找锁与锁等待 42 [Q] 如何有效的删除一个大表(extent数很多的表) 43 [Q]如何收缩临时数据文件的大小 43 [Q]怎么清理临时段 44 [Q]怎么样dump数据库内部结构,如上面显示的控制文件的结构 44 [Q]如何获得所有的事件代码 45 [Q]什么是STATSPACK,我怎么使用它? 46 第五部分、ORACLE网络与安全 47 [Q]如何限定特定IP访问数据库 47 [Q]如何穿过防火墙连接数据库 47 [Q]如何利用hostname方式连接数据库 47 [Q]dbms_repcat_admin能带来什么安全隐患 48 [Q]在不知道用户密码的时候,怎么样跳转到另外一个用户执行操作后并不影响该用户? 48 [Q]如何加固你的数据库 49 [Q]如何检查用户是否用了默认密码 49 [Q]如何修改默认的XDB监听端口 50 [Q]怎么捕获用户登录信息,如SID,IP地址等 50
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值