??xml version="1.0" encoding="utf-8" standalone="yes"?>
作ؓ学习心得Q记录如?
exp 一些不熟悉的特?br />1、filesize 该参数设|对应导出数据文件最大大(q样可分成多个文Ӟ为windows文g大小限制考虑Q?br />2、query qo导出数据 =\" where colulmn\=1000\"(unix) ,=\""" where column\=1000\"""(windows)Q估计plsql/developer,toad在导出数据功能方面就是用此功能,但该参数很方便,在不同的操作pȝ下不一P
所以采用特?配置文g的方式比较好
3、parfile=参数文g?
参数文g内容 query=" where x<10"
imp 有个Ҏ比较好Q可以导出对应数据对象的定义脚本
1、indexfile
例子 imp user/password file=./test.dmp indexfile=define.sql
关于exp,imp 比较复杂的一个功能就是传输表I间?br />使用前提Q?/strong>
1、操作系l一致、字W集、块大小一?br /> 2、源数据数据库不存在多个同名表空?br /> 3、不能是pȝ、回滚表I间
4、传输时表空间只?br /> 5、必Msysdba用户导入导出
使用查:
1、检查是否符合条?br /> 可通过oracle对应的工具包可以查对应的表空间是否能够传输?br /> exec dbms_tts.transport_set_check('表空间名',true);
查看是否有违背的信息
select * from transport_set_violations;
2、设|对应表I间为只?br /> alter tablespace tablespacename read;
3、导I间
exp \'sys/sys@TESTDB_10.243.21.30 as sysdba\' transport_tablespace=y tablespaces=portal file=./tts.dmp
4、拷贝出对应的数据文?br /> 5、导?br /> imp \'sys/sys as sysdba\' file=./tts.dmp transport_tablespace=y
"datafiles=(/export/home1/oracle/oradata/oracl/portal.dbf)"
6、将对应表空间设|ؓ可写
alter tablespace tablespacename read and write;
(可惜个h在第五步时发C个数据库的字W集不一_D没有成功Q?br />
跨版本导入导出原则:
1、用低版本导出工具
2、用和目的数据库版本一致的导入工具
3、导入导出字W集要保持一_避免导入导出时{换 ?
]]>
创徏用户登陆数据库的触发器,使用工具包记载客L登陆的ipQ用logminer分析相关的归档文件以及联机重做日志,查找恶意删除数据的客L信息?br />条gQ?以sys用户执行如下脚本
创徏相关脚本Q?br />create table login_log
(
SID NUMBER(16),
SERIAL NUMBER(16),
MACHINE VARCHAR2(64) ,
OSUSER VARCHAR2(30),
USERNAME VARCHAR2(30),
PROGRAM VARCHAR2(48),
LOGINTIME DATE
);
create or replace trigger logon_trigger
after logon on database
declare
LPRG VARCHAR2(48);
LUSERNAME varchar2(30);
LOSUSER varchar2(30);
LMACHINE varchar2(64);
LSID pls_integer;
LSERIAL pls_integer;
begin
--在会话信息中增加客户端ip地址
dbms_application_info.set_client_info(sys_context('userenv', 'ip_address'));
select sid,serial#,machine,osuser,program,username
into LSID,LSERIAL,LMACHINE,LOSUSER,LPRG,LUSERNAME from v$session
where sid=(select sid from v$mystat where rownum<2);
insert into login_log(sid,serial,machine,osuser,username,program,logintime)
values (LSID,LSERIAL,LMACHINE,LOSUSER,LUSERNAME,LPRG,sysdate);end;
分析相关日志Ӟ通过v$logmnr_contents视图中session_info字段中的信息可以查找到相关信息?br />cM如下的sql:
select session_info,sql_redo from v$logmnr_contents where sql_redo like '%drop%';
--查询当前实例信息
select * from v$instance;
--查询数据库版本信?br />select * from v$version;
--查询所有用?dba权限)
select * from dba_users;
--查询׃n内存中的sql信息Q执行较?br />select hash_value from v$sqltext where sql_text like '%查询sql%';
select sql_text from v$sqltext where hash_value =查找的hash_value order by hash_value,piece;
--查询当前pȝ表空间存储信?br />select a.file_id,a.file_name, a.TABLESPACE_NAME,a.bytes/1024/1024||'M' as totalspace,
nvl(b.freespace,0)||'M' as freespace,a.autoextensible from dba_data_files a,
(select sum(bytes)/1024/1024 as freespace,file_id,tablespace_name from dba_free_space
group by tablespace_name,file_id ) b
where a.file_id=b.file_id(+)
order by a.tablespace_name,file_name;
--l计已占用的表空?br />select sum(a.bytes/1024/1024-nvl(b.freespace,0))||'M' from dba_data_files a,
(select sum(bytes)/1024/1024 as freespace,file_id,tablespace_name from dba_free_space
group by tablespace_name,file_id ) b
where a.file_id=b.file_id(+) and a.tablespace_name='tablespace名称'
--查询当前zdsession最q一ơ执行的sql
select sql_text from v$sqltext where hash_value=(
select PREV_HASH_VALUE from v$session where status='ACTIVE' and username is not null ) order by piece
--查询相关用户的烦引情?br />select a.*,b.column_name,b.column_length from
(select owner,index_name,table_name,index_type,tablespace_name
from dba_indexes where owner ='用户? and index_name not in
(select constraint_name from dba_constraints where owner='用户? and constraint_type in ('P','R'))
)a,
(select * from dba_ind_columns b where index_owner='用户?) b
where a.index_name=b.index_name
order by a.owner,a.table_name,a.index_name
--重徏索引
alter index 索引名称 rebuild nologging;
--查看事务回滚?br />select name,value from v$sysstat where name in('user commits','transaction rollbacks');
--sql分析优化
--脚本位置${oracle_home}/rdbms/admin/utlxplan.sql 创徏执行计划?br />--授权讉K
create public synonym plan_table for plan_table;
grant select,update,insert,delete on plan_table to public;
--脚本位置${oracle_home}/sqlplus/admin/plustrce.sql 执行授权角色
--spfile
--数据库徏库完成后Q第一ơ手工启动手工创建spfile文g,命o格式?br />create spfile[='filename'] from pfile[='filename'];
--判断是采用spfileq是pfile启动数据库的Q可以下面sqlҎ是那U方?br />select decode(count(*),0,'pfile',1,'spfile') from V$spparameter where isspecified='TRUE' and rownum=1;
--spfile,pfile创徏默认位置?ORACLE_HOME/dbs/,$ORACLE_HOME/database/(windows)
--启动时公司搜索默认位|下spfile.ora,spfile$ORACLE_SID.ora,init$ORACLE_SID.ora
--采用指定的方式启?br />startup pfile='filename';
--创徏spfile,pfile可以在数据库关闭后仍然可以创?br />--如果pfile内有spfile文g参数的设定,采用pfile方式启动后还可以修改初始参数到spfile?br />--oracle9.2.0.1版本后创建数据库时系l会自动创徏spfileQ默认的启动方式是采用spfile
--q行旉spfile文g没有锁定
--修改密码
alter user username identified by newpassword;
--oracle9i 验证方式有两U,可以在sqlnet.ora中配|?br />SQLNET.AUTHENTICATION_SERVICES=(NTS) --操作pȝ验证Q无ȝ戯入密?br />SQLNET.AUTHENTICATION_SERVICES=(none) --用正的用户和密码验?br />--讄密码U别 remote_login_passwordfile
--讄为exclusiveQ表C口令文件由一个数据库使用 Q远E客L可以用sys登陆Q如果密码文件删除后Q远E无法登陆)
--讄为sharedQ表C?多个数据库可以共享一个口令文?但是只可以识别一个用户SYSQ不能将sysdba权限授权l其他用?br />--讄为none,表示没有口o文g q程无法用sys登陆Q只能通过操作pȝ验证方式
--密码文g如果丢失或损坏,pȝ无法启动
--可以手工创徏oraclepȝ密码
orapwd file=<fname> password=<password> entries=<users>
entries --sysdba链接最大数
--密码文g没有锁定Q只是启动时的引g?/p>
V$SYSTEM_EVENT 数据库实例整个运行期间所有进E事件的{待旉、次数视图,作ؓpȝ优化的依?br />{待事g分ؓ三种cd I闲{待、例行等待、资源等?br />注意很多时候进E是I闲{待处理的,所以在该视图主要查看资源等待时_
如果是进E在例行操作中等待,可以查看该事件的q_{待旉
--v$session_wait
--常见的空闲等待事Ӟclient message、null event、pipe get、pmon/smon timer、rdbms rpc message及sql*net{;
--常见的非{闲事gQ?br />buffer busy waits?br />db file scattered read?br />db file sequential read?br />enqueue?br />free buffer waits?br />latch free?br />log file sync?br />log file paralle write
导入导出一定要同版本的导入导出工具
常见错误 exp-00003
估算导出dmp文g大小
select sum(bytes) from user_segments where segment_type='TABLE';
q个计算l果不包含LOB, 和VARRAY, 亦不含分数据
--讄归档模式
startup mount;
alter database archivelog;
alter database open;
alter system set log_archive_start=true scope=spfile;
shutdown immediate
startup;
数据库已l误删除数据文gQ如何启?/p>
startup mount
alter database datafile 'filepos' offline drop;(noarchivelog)
alter database datafile 'filepos' offline;(archivelog)
alter database open;
drop tablespace 'spacename' including contents;
log_miner的?/p>
--查看联机日志信息
select a.group#,b.member, sequence#,first_change# from v$log a ,v$logfile b
where a.group#=b.group#;
v$rollstat三个字段说明
rssize 回滚D大?br />optsize optimal大小
hwmsize 你的回滚D|l最高大?/p>
--l计当前回滚D大、最高峰大小
select sum(rssize)/1024/1024||'M',sum(hwmsize/1024/1024)||'M'
from v$rollstat;
--查看事务占用的回滚段大小(事务未提交)
select b.used_ublk,b.xidusn,a.sid from v$session a,v$transaction b
where a.taddr=b.addr;
--查看操作pȝg信息
prtdiag -v
--临时表空间ؓI?
错误号ORA-25153:
alter tablespace 表空间名 add tempfile '文g? size 文g大小;
创徏临时表空?br />create temporary tablespace 新表I间?tempfile '文g? size 文g大小;
alter database default temporary tablespace 新表I间?
drop tablespace 旧空间名 including contents;
rman数据文g损坏恢复脚本
--数据文g损坏
run{
allocate channel c1 type disk;
restore datafile 数据文g?
recover datafile 数据文g?
release channel c1;
}
一ơ控制文件损坏,恢复q程
故意修改控制文gQ出现ora-00205错误
在rman下恢复控制文?br />restore controlfile from file='最q的一ơ控制文件备?
在alter database open resetlogs 出现
ORA 1152 file <name> was not restored from a sufficiently old backup 错误
不行
然后在rman下从自动文g恢复
restore controlfile from autobackup;
启动仍然出现该错误,
通过rman恢复database也不行,
最后没办法Q采?br />ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
然后Ҏtrc文g中的指导
采用W二U方式也不行Q只能采用第一U徏?br />在数据库nomount状态下
执行trc相关 脚本
alter database open;
数据库启动正?br />