发个帖子,自己跟帖上传点学习笔记,请勿跟帖,谢谢
如题
[解决办法]
兄弟你可以写在blog里面。每个注册用户都有blog的。。
反正你这事0分贴。。
别骂我啊。。
[解决办法]
发吧,总结好阿。
[解决办法]
说明下,我上班的地方开的是代理,不能发博客,总结的东西也带不出去的。
[解决办法]
数据字典
-------------------------------------------------
数据字典包括以下内容:
1.所有数据库Schema对象的定义(表,视图,索引,聚簇,同义词,序列,过程,函数,包,触发器)
2.数据库的空间分配和使用情况
3.字段的缺省值
4.完整性约束信息
5.Oracle用户名称,角色,权限等信息
6.审计信息
7.其他数据库信息
数据字典有4部分组成:内部RDBMS(X$)表,数据字典表,动态性能(V$)视图,数据字典视图
X$表是Oracle数据库的核心部分,这些表用于跟踪内部数据库信息,维持数据库的正常运行
select * from x$kvit
数据字典表用以存储表,索引,约束以及其他数据库结构的信息,这些对象通常以$结尾
sql.bsq是非常重要的一个文件,改文件位于$ORACLE_HOME/rdbms/admin目录下
虽然Oracle并未提供直接的方法,在原对象存储位置被重新写入数据之前,truncate数据仍然是有办法恢复的
select value from v$diag_info where name = 'Default Trace File'
DBMS_METADATA
user_ 类视图包含了用户所拥有的相关对象信息,用户可以通过这个视图查询自己拥有的对象信息
all_ 类视图包含了用户有权限访问的所有对象的信息
dba_ 类视图包含了数据库所有相关对象的信息,用户需要select any table 权限才能访问
[解决办法]
1.DBA_XXX --数据库中的所有对象
2.ALL_XXX --当前用户可以访问的对象
3.USER_XXX --当前用户拥有的对象
常用数据字典视图
1.dict/dictionary
2.dict_columns
3.obj$/dba_objects/all_objects/user_objects
4.dba_source/all_source/user_source
动态性能(V$)视图记录了数据库运行时信息和统计数据,大部分动态性能视图被实时更新以反应数据库的当前状态
GV$视图开始被引入,其含义为Global V$.除了一些特例以外,每个V$视图都有一个对应的GV$视图存在
GV$视图的产生是为了满足OPS/RAC环境的需要,在OPS/RAC环境中,查询GV$视图返回所有实例信息,而每个V$视图是基于GV$视图,增加了INST_ID列的where条件限制建立,只包含当前连接实例信息
select view_definition from v$fixed_table
通常大部分用户访问的V$对象,并不是视图,而是指向V_$视图的同义词;而V_$视图是基于真正的V$视图(这个视图是基于X$表建立的)创建的。
在进行数据访问时,Oracle访问VIEW优先,然后是同义词
nomount阶段能够访问的视图
v$parameter,v$spparameter,v$sga,v$sgastat,v$bh,v$instance,v$option,v$version,v$process,v$session
mount阶段能够访问的视图
v$thread,v$controlfile,v$database,v$datafile,v$logfile,v$datafile_header
SQL语句中Oracle对于对象名的解析顺序
1.Oracle首先查看在发出命令的用户模式中是否存在表和视图
2.如果表或视图不存在,Oracle检查私有同义词是否存在
3.如果私有同义词存在,将使用这个同义词所引用的对象
4.如果私有同义词不存在,检查同名的公共同义词是否存在
5.如果公共同义词存在,将使用这个同义词所引用的对象
6.如果公共同义词不存在,则返回错误信息
[解决办法]
竟然只能连续回复3次
[解决办法]
通过rman的delete命令删除归档日志文件
-------------------------------------------------
1.su - oracle
2.rman
3.connect wisgrpt/wisgrpt
4.
删除所有的归档文件
run{
allocate channel t1 type disk;
delete force noprompt archivelog all;
release channel t1;
}
删除2006年9月15号23点12分22秒以前的所有归档日志
run{
allocate channel t1 type disk;
delete force noprompt archivelog until time "to_date('2006-9-15 23:12:22','yyyy-mm-dd hh24:mi:ss')";
release channel t1;
}
allocate channel t1 type disk 表示分配通道,通道的名称为t1
force 表示无论归档日志文件是否物理存在,都要删除在数据库中的记录
noprompt 表示删除前,不提示用户进行确认
release channel t1 表示释放通道t1
[解决办法]
删除两天前的归档日志
-------------------------------------------------
echo 'delete archived logs begin'
date
export ORACLE_SID=wisgrpt
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11g/db1
export PATH=/usr/bin:$ORACLE_HOME/bin:/bin
export HOME=/opt/oracle
find /opt/oracle/oradata ! -mtime -2 -exec rm -f '{}' ';'
echo 'delete archived logs end'
crontab -e
20 3 * * * /opt/oracle/del_archivedlog>>/opt/oracle/del_archivedlog_log 2>&1
2>&1:表示无论脚本执行是否正常,都要把执行过程写入log文件del_archivedlog_log
[解决办法]
判断一个死事务的恢复进度
-----------------------------------------------
declare
l_start number;
l_end number;
begin
select ktuxesiz into l_start from x$ktuxe where ktuxeusn=10 and ktuxeslt=39;
dbms_lock.sleep(60);
select ktuxesiz into l_end from x$ktuxe where ktuxeusn=10 and ktuxeslt=39;
dbms_output.put_line('time est Day:'
[解决办法]
round(l_end/(l_start-l_end)/60/24,2));
end;
/
[解决办法]
竟然只能连续回复3次
[解决办法]
冷备份
-----------------------------------------------
1.以sysdba的身份登录数据库.
# su – oracle
$ sqlplus / as sysdba
2.干净的关闭数据库.
SQL>shutdown immediate;
SQL>exit;
3.备份数据文件,控制文件,联机日志文件,参数文件和口令文件.
4.重新启动数据库
$ sqlplus / as sysdba
SQL>startup open recover;
SQL>exit;
[解决办法]
SQLServer获取格林威治标准时间
--------------------------------------
GETUTCDATE()
以 UTC(协调世界时或格林威治标准时间)格式生成 datetime 值。
返回值
UTC 格式的 DateTime 值(精度为 3)。
示例
GETUTCDATE()
[解决办法]
ORACLE常用命令
---------------------------------------
1.oracle环境变量
oracle用户下
cd $ORACLE_HOME
ls -al
more .bash_profile
该文件存放数据库环境变量
2.find -name name 查找文件
3.查看是否存在用户组prestat
more /etc/group
[解决办法]
grep prestat
4.查看是否存在用户prestat
more /etc/psswd
[解决办法]
grep prestat
5.连接数据库
sqlplus "/ as sysdba"
sqlplus "PRESTAT/PRESTAT@pisa1"
6.oracle用户下
env
[解决办法]
竟然只能连续回复3次
[解决办法]
grep oracle 返回环境变量
7.oracle下运行netca出现net configration assistant
运行dbca出现database configration assistant
8.sqlplus "sys/sys@ora11 as sysdba"
9.赋ftp权限
root用户
more ./etc/ftpusers 在相应的用户前加#
10.查看Job作业执行情况
select * from user_jobs
select * from user_scheduler_jobs
11.预统计初始化
db2
数据库连接串(预统计数据库名) prestat
用户名:db2ins1
密码:db2inst1
oracle
数据库连接串(sid) ora11
用户名:prestat
密码:prestat
12.启动oracle数据库
启动监听:lsnrctl start
连接数据库:sqlplus '/as sysdba'
启动实例:startup
关闭实例:shutdown immediate
每次只能启动一个实例,如果要启动多个实例,需要修改SID,具体操作如下:
vi $ORACLE_BASE/.bash_profile
修改export ORACLE_SID=?
13.查看当前实例名
SQL>select name from v$database;
14.sqlplus '/as sysdba'等于是sys用户登录
[解决办法]
grep 7800
19.查看该用户下表
select tname from tab
20.
查看表结构
desc user_jobs;
21.sqlplus下,!+系统命令
如 ! ls
22.查看文件名的后300行
tail -300 "文件名"
25.更改表空间
需要sys用户
alter database datafile '/opt/oracle/oradata/PISA_CDR'
autoextend on next 50m maxsize 1204m
26. 查询表空间信息
SELECT * FROM DBA_DATA_FILES;
27.启动em
emctl start dbconsole
28.
startup
ORA-01078: failure in processing system parameters
LRM-00109: ???????????????? '/opt/oracle/product/11g/db_1/dbs/initPISARPT.ora'
解决办法:
cp $ORACLE_BASE/admin/$ORACLE_SID/pfile/init.ora.4242009161236 $ORACLE_HOME/dbs/init$ORACLE_SID.ora
cp /opt/oracle/admin/PISARPT/pfile/init.ora.742009113739 $ORACLE_HOME/dbs/initPISARPT.ora
>lsnrctl start
>sqlplus /nolog
SQL*Plus: Release 10.1.0.3.0 - Production on Thu Jun 8 13:16:00 2006
Copyright (c) 1982, 2004, Oracle. All rights reserved.
SQL> conn / as sysdba
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 778212 bytes
Variable Size 57679900 bytes
Database Buffers 109051904 bytes
Redo Buffers 262144 bytes
Database mounted.
Database opened.
SQL>
问题解决!
注:Oracle在启动过程中,需要读取参数文件(pfile/spfile)来创建实例.
Oracle在启动过程中,寻找参数文件的顺序为:spfile<sid>.ora,spfile.ora,init<sid>.ora.
[解决办法]
15. drop user PISA_DATA提示不能删除连接的用户。
解决方法:断开监听,shutdown immediate ,startup
16.修改用户名
password username
old password:
new password:
again new password:
17.查看当前链接用户
select username,sid,serial# from v$session;
username,sid,serial#
18.netstat -an列出所有的端口
netsata -an
[解决办法]
41.查看表空间的大小及使用情况
SELECT d.status "Status",
d.tablespace_name "Name",
d.contents "Type",
d.extent_management "Extent Management",
to_char(nvl(a.bytes / 1024 / 1024, 0), '99999999.999') "Total Size (M)",
to_char(nvl(a.bytes - nvl(f.bytes, 0), 0) / 1024 / 1024,
'99999999.999') "Used (M)",
to_char(nvl(nvl(f.bytes, 0), 0) / 1024 / 1024, '99999999.999') "Free (M)",
to_char(nvl((a.bytes - nvl(f.bytes, 0)) / a.bytes * 100, 0),
'990.00') "Used %"
FROM sys.dba_tablespaces d,
(SELECT tablespace_name, SUM(bytes) bytes
FROM dba_data_files
GROUP BY tablespace_name) a,
(SELECT tablespace_name, SUM(bytes) bytes
FROM dba_free_space
GROUP BY tablespace_name) f
WHERE d.tablespace_name = a.tablespace_name(+)
AND d.tablespace_name = f.tablespace_name(+);
SELECT UPPER(F.TABLESPACE_NAME) "表空间名",
D.TOT_GROOTTE_MB "表空间大小(M)",
D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",
TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,
2),
'990.99') "使用比",
F.TOTAL_BYTES "空闲空间(M)",
F.MAX_BYTES "最大块(M)"
FROM (SELECT TABLESPACE_NAME,
ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,
ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES
FROM SYS.DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) F,
(SELECT DD.TABLESPACE_NAME,
ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB
FROM SYS.DBA_DATA_FILES DD
GROUP BY DD.TABLESPACE_NAME) D
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME
ORDER BY 4 DESC
create tablespace test_data
logging
datafile 'C:\app\opt\oracle\oradata\orcl\test_data01.dbf'
size 32m
autoextend on
next 32m maxsize 2048m
extent management local;
42.解决ora-01652无法通过128(在temp表空间中)扩展temp段的过程
1.创建临时表空间
create temporary tablespace TEMP temp1 'C:\app\opt\oracle\oradata\orcl\temp01.DBF' SIZE 5G REUSE AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED;
43.改变缺省临时表空间 为刚刚创建的新临时表空间temp1
alter database default temporary tablespace temp1;
44.删除原来临时表空间
drop tablespace temp including contents and datafiles;
45.检查alter日志
tail -f -n 100 $ORACLE_BASE/ diag/rdbms/实例名/实例名/trace/alter_实例名.log
46.查看Job执行情况
SQL> select job,last_date,last_sec,next_date,next_sec,broken,interval,failures from user_jobs;
47.查看oracle日志
/opt/oracle/diag/rdbms/mnsrpt/MNSRPT/trace/alter.log
48.
查看表: select table_name from user_tables;
查看存储过程: select object_name from user_procedures;
49.修改ORACLE字符集
1)服务器端:select name,value$ from props$;
查看服务器字符集
注:若要修改服务器字符集:
1. shutdowm immediate
2. STARTUP MOUNT;
3. ALTER SYSTEM ENABLE RESTRICTED SESSION;
4. ALTER DATABASE OPEN;
5. ALTER DATABASE CHARACTER SET ZHS16GBK;
ALTER DATABASE national CHARACTER SET ZHS16GBK;
6. 10g中: alter database character set internal_convert zhs16gbk;
2)客户端:
export LANG=zh_CN.GBK //这个是linux的字符集设置
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK //这个是oracle的字符集设置
[解决办法]
29.select * from dba_data_files where FILE_NAME like '%PISA_CDR';
30.select FILE_NAME,TABLESPACE_NAME,BYTES,USER_BYTES from dba_data_files where FILE_NAME like '%PISA_CDR';
31.单独启动一个实例
export ORACLE_SID=DPFRPT
sqlplus '/as sysdba'
startup
32.查oracle下某一表空间下的所有表
select * from dba_tables where tablespace_name='表空间名’
17.已使用表空间大小
select tablespace_name,sum(bytes)/1024/1024 from dba_data_files
group by tablespace_name;
33.表空间的使用情况
SELECT fs.tablespace_name "Tablespace",
(df.totalspace - fs.freespace) "Used MB",
fs.freespace "Free MB",
df.totalspace "Total MB",
ROUND (100 * (fs.freespace / df.totalspace)) "Pct. Free"
FROM (SELECT tablespace_name, ROUND (SUM (BYTES) / 1024 / 1024)
totalspace
FROM dba_data_files
GROUP BY tablespace_name) df,
(SELECT tablespace_name, ROUND (SUM (BYTES) / 1024 / 1024) freespace
FROM dba_free_space
GROUP BY tablespace_name) fs
WHERE df.tablespace_name = fs.tablespace_name;
方法二:
select b.file_name FileName, b.tablespace_name "Tablespace",
round(b.bytes / 1024 / 1024 / 1024, 2) "SpaceSize(G)",
round((b.bytes - sum( nvl( a.bytes,0))) / 1024 / 1024 / 1024, 2) "Used(G)",
round(substr((b.bytes - sum( nvl( a.bytes , 0))) / ( b.bytes) * 100 , 1, 5), 2) "Used(%)"
from dba_free_space a, dba_data_files b
where a.file_id = b.file_id
group by b.tablespace_name, b.file_name, b.bytes
order by b.tablespace_name;
34.查看某个表空间情况
select * from dba_data_files where tablespace_name='PISA_CDR';
35.查看当前用户每个表占用空间的大小:
select segment_name,sum(bytes)/1024/1024 a from user_extents group by segment_name order by a desc;
36.查看每个表空间占用空间的大小:
Select Tablespace_Name,Sum(bytes)/1024/1024 From Dba_Segments Group By Tablespace_Name;
37.查oracle下某一表空间下的所有表
select * from dba_tables where tablespace_name='表空间名’
38.已使用表空间大小
select tablespace_name,sum(bytes)/1024/1024 from dba_data_files
group by tablespace_name;
39.表空间的使用情况
SELECT fs.tablespace_name "Tablespace",
(df.totalspace - fs.freespace) "Used MB",
fs.freespace "Free MB",
df.totalspace "Total MB",
ROUND (100 * (fs.freespace / df.totalspace)) "Pct. Free"
FROM (SELECT tablespace_name, ROUND (SUM (BYTES) / 1024 / 1024)
totalspace
FROM dba_data_files
GROUP BY tablespace_name) df,
(SELECT tablespace_name, ROUND (SUM (BYTES) / 1024 / 1024) freespace
FROM dba_free_space
GROUP BY tablespace_name) fs
WHERE df.tablespace_name = fs.tablespace_name;
40.查看某个表空间情况
select * from dba_data_files where tablespace_name='SYSAUX';
[解决办法]
50.重新设置表空间
alter database pisa_cdr resize 20g
51.查看oracle进程
ps -ef
[解决办法]
竟然只能连续回复3次
[解决办法]
PGA管理
---------------------------------
PGA指的是程序全局区,是服务器进程使用的一块包含数据和控制信息的内存区域,PGA是非共享的内存,在服务器进程启动或创建时分配,
(在系统运行时,排序,连接等操作也可能需要进一步的PGA分配),并为Server Process排他访问,所以PGA中的数据结构并不需要通过Latch来保护。
进程的创建通常有两种模式,专用服务器模式及共享服务器模式。在专用服务器模式下,Oracle会为每个会话启动一个Oracle进程;而在共享模式
下,通常在服务器端启动一定数量的服务器进程,然后由多个客户端请求共享同一个Oracle服务进程。通常数据库都运行在专用服务器模式下。PGA
的内容依专用模式和共享服务器模式而有所不同,但是通常来说,PGA中包含私有SQL区(存放绑定信息,运行时内存结构等),Session信息等内容。
PGA:(1)固定PGA (2)可变PGA
PGA的创建过程:当客户端向服务器发送连接请求,服务器监听到客户端请求,在专用服务器模式下,会在服务器端衍生一个Server Process来代理
用户的请求,服务器进程进而向实例发起连接,创建会话,而PGA就为Server Process所分配和使用。
可变PGA:(1)会话内存 (2)私有的SQL区 --对于专用服务器模式,这部分内存在PGA中分配,对于共享服务器模式,这部分内存在SGA中分配
私有SQL区:(1)永久区域 (2)运行时区域
用户进程的任务执行以及Cursor的使用是PGA内存的主要消耗者
在共享服务器模式下,一个共享服务器进程被多个用户进程共享,此时UGA是Shared Pool或Large Pool的一部分,而在专用服务器模式下,UGA则是
PGA的一部分
Dedicated模式:PGA服务于进程,UGA服务于会话
[解决办法]
grep ora_
[解决办法]
竟然只能连续回复3次
[解决办法]
从Oracle 9i开始,增加一个新特性,自动PGA管理,Oracle可以在一个总体PGA使用限制下自动管理和调整SQL内存区。
在Oracle 9i中,PGA_AGGREGATE_TARGET参数仅对专用服务器模式下的专属连接有效,但是对共享服务器连接无效
从Oracle 10g开始,PGA_AGGREGATE_TARGET对专用服务器连接和共享服务器连接同时生效
对于PGA_AGGREGATE_TARGET参数的设置,Oracle提供这样一个建议方案
(1)对于OLTP系统,PGA_AGGREGATE_TARGET=物理内存*80%*20%
(2)对于DSS系统,PGA_AGGREGATE_TARGET=物理内存*80%*50%
80%是操作系统分配给Oracle的内存,20%是Oracle分配给PGA的内存
在AIX上通常建议Oracle使用内存不超过物理内存的70%
v$process视图增加了相应的字段记录进程PGA的耗用
v$process_memory视图可以进一步知道PGA内存消耗在什么地方
SQL在工作区中以3种方式执行
1.optimal(优化方式):指所有处理可以在内存中完成
2.onepass:大部分操作可以在内存中完成,但是需要使用到磁盘操作
3.multipass:大量操作需要产生磁盘交互,性能极差
PGA的性能指标
select name,value,100*(value/decode((select sum(value) from v$sysstat where name like 'workarea executions%'),0,null,
(select sum(value) from v$sysstat where name like 'workarea executions%'))) pct
from v$sysstat where name like 'workarea executions%'
workarea execution - optimal >= 90%
workarea execution - multipass = 0%
[解决办法]
RMAN常用命令
--------------------------------------------
LIST命令用于列出数据的备份信息
1.列出数据文件的备份集
list backupset of datafile '数据文件的名字'
2.列出表空间的备份信息
list backup of tablespace '表空间的名字'
3.列出整个数据库的备份信息
list backup of database
4.列出数据库中所有归档日志文件的备份集信息
list backupset of archivelog all
5.列出所有的副本
list copy
6.列出数据库产生的归档日志文件
list archivelog all
7.列出备份集的统计
list backup of database summary
REPORT命令用于产生分析报告
1.显示目标数据库当前的所有数据文件
report schema
2.报告文件13是否可以恢复
report unrecoverable datafile 13
3.列出已经至少有两个增量备份而需要做一次全备份的数据库
report need backup incremental 2 database
4.列出已经5天没有备份的表空间
report need backup days 5 tablespace tablespace_name
5.报告过时的文件
report obsolete
[解决办法]
PGA的优化建议通过v$pga_target_advice和v%pga_target_advice_histogram提供
PGA的转储
alter session set events 'immediate trace name heapdump level n';
其中不同的Level级别决定了将哪些内存堆转储到跟踪文件
Level 1 :PGA汇总信息
Level 2 :SGA汇总信息
Level 4 :UGA汇总信息
Level 8 :当前调用的汇总信息(CGA)
Level 16 :用户调用的汇总信息(CGA)
Level 32 :Large pool的汇总信息(LGA)
Level 1025 :PGA详细信息
Level 2050 :SGA详细信息
Level 5000 :UGA详细信息
Level 8200 :当前调用的详细信息
Level 16400:用户调用的详细信息
Level 32800:Large pool的详细信息
[解决办法]
竟然只能连续回复3次
[解决办法]
DELETE命令用于删除备份生成的文件及这些文件在控制文件和恢复目录中的记录
1.删除过期的备份
delete expired backup
2.删除过期的副本
delete expired copy
3.删除过期的控制文件备份
delete expired backup of controlfile
4.删除过期的备份碎片
delete expired backuppiece 11
5.删除过期备份集
delete expired backupset 8
CHANGE命令更改备份和副本的状态
1.change backupset 100 unavailable
CATALOG命令用于把备份碎片和副本的信息加入到RMAN资料库
1.把数据文件副本的信息加入到RMAN资料库
catalog datafilecopy 'e:\back\p2.ora'
2.把归档日志文件的信息加入到RMAN资料库
catalog archivelig 'c:\temp\p1.dbf'
3.把控制文件的信息加入到RMAN资料库
catalog controlfilecopy 'c:\temp\p1.ctl'
CROSSCHECK命令用于RMAN资料库检查磁盘上的备份和副本的状态
1.检查所有备份的状态
crosscheck backup
2.检查所有副本的状态
crosscheck copy
3.检查所有归档日志文件的状态
crosscheck archivelog all;
4.检查控制文件的备份的状态
crosscheck backup of controlfile;
[解决办法]
捕获排序SQL语句
---------------------------------------
select /* + rule */
distinct a.SID, a.process, a.serial#, to_char(a.logon_time, 'yyyymmdd hh24:mi:ss') logon,
a.osuser, tablespace, b.sql_text
from v$session a, v$sql b, v$sort_usage c
where a.sql_address = b.address(+) and a.sql_address = c.sqladdr;
[解决办法]
竟然只能连续回复3次
[解决办法]
运行下面的脚本备份整个数据库
run{
allocate channel c1 type disk;
backup
full
database
format 'D:\temp\bk0_%s_%p_%t';
release channel c1;
}
%s指定备份集
%p指定碎片编号
%t指定时间戳
运行下面的脚本备份一个数据文件
run{
allocate channel c1 type disk;
set backup copies=2;
backup
datafile 'D:\oradata\user01.dbf'
format 'E:\temp\bkdatafile_%U','E:\temp\bkdatafile_%U';
release channel c1;
}
set backup copies=2表示要生成双备份
%U产生唯一的文件名
运行下面的脚本备份表空间
run{
allocate channel c1 type disk;
backup
tablespace users
format 'D:\temp\bk0_%s_%p_%t';
release channel c1;
}
运行下面的脚本备份归档日志文件
run{
allocate channel c1 type disk;
backup
archivelog all
format 'D:\temp\bkdatafile_%U';
release channel c1;
}
备份控制文件
方法一:使用RMAN的控制文件自动备份
configure controlfile autobackup on;
configure controlfile autobackup off;
方法二:使用用户管理的备份
alter database backup controlfile to 'XXX/XXX/XXX'; -- 二进制文件
alter database backup controlfile to trace; -- 文件文件
方法三:使用RMAN手动备份控制文件
backup current controlfile format 'XXX/XXX/XXX';
方法四:进行其他备份时,一同备份控制文件
backup datafile 5 include current controlfile;
[解决办法]
备份SPFILE
backup spfile format 'XXX/XXX/SPFILEback_%s%t';
将RMAN命令执行的结果写入到一个日志文件中
方法一:(1)spool log to 'XXX/XXX/log1.txt' append;
(2)执行RMAN命令
(3)spool log off;
方法二:(1)rman log 'XXX/XXX/log1.txt'
run{
allocate channel c1 type disk;
sql 'alter system archive log current';
backup
format 'D:\backup\pitt_%U'
archivelog all delete input;
release channel c1;
}
skip inaccessible -- 跳过不可访问的文件
[解决办法]
SQL_TRACE和10046事件
-----------------------------
alter session set sql_trace=true;
alter session set events '10046 trace name context forever, level 12';
alter session set sql_trace=false;
alter session set events '10046 trace name context off';
[解决办法]
SPFILE的备份与恢复
--------------------------------
(1)设置控制文件自动备份
RMAN>configure controlfile autobackup on;
(2)这个设置可以在数据库中通过如下方式查询得到:
SQL>select * from v$rman_configuration;
(3)更改自动备份的位置
configure controlfile autobackup format for device type disk to '/opt/oracel/oradata/control%F';
(4)检查自动备份
SQL>select * from v$backup_spfile;
RMAN>list backup of spfile;
(5)测试
RMAN>restore spfile to '/tmp/spfileml.ora' from autobackup;
RMAN>restore controlfile to '/tmp/control01.ctl' from autobackup;
RMAN>restore controlfile to '/tmp/control01.ctl' from 'c-3152029224-20051221-00';
查看当前实例的非缺省参数
select name,value from v$parameter where isdefault='FALSE';
使用当前的参数设置在缺省位置创建一个SPFILE文件
create spfile='/tmp/spfile.ora' from memory
查看错误代码
oerr ora 30012
[解决办法]
安装P69...Oracle补丁
------------------------------------------------
说明:执行此任务可以解决JOB运行异常问题。
1.以root用户登录主机,检查环境。
如果没有/sbin/fuser文件,请执行# cp /bin/fuser/sbin/fuser。
检查一下是否有/etc/oraInst.loc和/etc/oratab文件。
2.停止数据库实例。
# su - oracle
$ sqlplus "SYS/SYS@PISARPT as sysdba"
SQL> shutdown immediate
3.停止数据库监听。
# su - oracle
$ lsnrctl stop
4.用二进制形式上传补丁p6928169_111060_Linux-x86-64.zip到/opt/oracle目录下。
5.赋文件权限。
chmod 777 p6928169_111060_Linux-x86-64.zip
6.解压补丁,并进行补丁的安装目录。
# su - oracle
$ unzip p6928169_111060_Linux-x86-64.zip
$ cd 6928169
7.安装补丁。
# su - oracle
$ export OBJECT_MODE=32_64
$ /opt/oracle/product/11g/db_1/OPatch/opatch apply
(如提示“Is the local system ready for patching? [y
[解决办法]
n]”,则请输入“y”)
8.启动数据库。
# su - oracle
$ lsnrctl start
$ sqlplus /nolog
SQL> conn /as sysdba
SQL> startup
[解决办法]
导入导出
-------------------
expPFILE
file = '/opt/01/backup1.dmp', '/opt/01/backup2.dmp', '/opt/01/backup3.dmp',
'/opt/01/backup4.dmp', '/opt/01/backup5.dmp', '/opt/01/backup6.dmp',
'/opt/01/backup7.dmp', '/opt/01/backup8.dmp', '/opt/01/backup9.dmp',
'/opt/01/backup10.dmp', '/opt/01/backup11.dmp', '/opt/01/backup12.dmp',
'/opt/01/backup13.dmp', '/opt/01/backup14.dmp', '/opt/01/backup15.dmp',
'/opt/01/backup16.dmp', '/opt/01/backup17.dmp', '/opt/01/backup18.dmp',
'/opt/01/backup19.dmp', '/opt/01/backup20.dmp'
log = '/opt/01/backup.log'
owner = Hemes
rows = y
grants = y
direct = y
filesize = 2G
impPFILE
file = '/opt/01/backup1.dmp', '/opt/01/backup2.dmp', '/opt/01/backup3.dmp',
'/opt/01/backup4.dmp', '/opt/01/backup5.dmp', '/opt/01/backup6.dmp',
'/opt/01/backup7.dmp', '/opt/01/backup8.dmp', '/opt/01/backup9.dmp',
'/opt/01/backup10.dmp', '/opt/01/backup11.dmp', '/opt/01/backup12.dmp',
'/opt/01/backup13.dmp', '/opt/01/backup14.dmp', '/opt/01/backup15.dmp',
'/opt/01/backup16.dmp', '/opt/01/backup17.dmp', '/opt/01/backup18.dmp',
'/opt/01/backup19.dmp', '/opt/01/backup20.dmp'
log = '/opt/01/recovery.log'
fromuser = Hemes
touser = Hemes
rows = y
grants = y
commit = y
ignore = y
filesize = 2G
$ exp system/sys PARFILE = '/opt/oracle/migrate_lmgf01/expPFILE'
$ imp system/sys PARFILE = '/opt/oracle/migrate_lmgf01/impPFILE'
[解决办法]
发blog呀。
[解决办法]
竟然只能连续回复3次
[解决办法]
RMAN备份还原
----------------------------------------
一.确认数据库是否运行在归档模式下
1.以用户sys的身份登录数据库。
sqlplus sys/system@wisgrpt as sysdba
2.查看数据库的归档状态。
SQL>archive log list;
若Database log mode为ArchiveMode模式,则以下步骤不需要执行,
若Database log mode为No ArchiveMode模式,则以下步骤需要执行。
3.干净的关闭数据库
SQL>shutdown immediate;
4.启动数据库到mount状态
SQL>startup mount;
5.设置归档路径
SQL>alter system set log_archive_dest_1=’LOCATION=$ORACLE_BASE/oradata’ scope=both;
6.把数据库切换到归档模式
SQL>alter database archivelog;
7.打开数据库
SQL>alter database open;
二.备份
1.以用户oracle的身份登录操作系统
2.以用户sys的身份登录数据库,手动归档日志文件。
sqlplus sys/system@wisgrpt as sysdba
SQL>alter system archive log all;
SQL>alter system archive log current;
3.进入执行RMAN命令的目录
cd $ORACLE_HOME/bin
4.启动RMAN,登录目标数据库
rman target sys/system@wisgrpt
5.运行下面的脚本备份整个数据库
RMAN>spool log to '$ORACLE_BASE/oradata/log_fulldatabase.txt';
RMAN>run{
allocate channel c1 type disk MAXPIECESIZE 2G;
backup
full
database
format '$ORACLE_BASE/oradata/bkfulldb_%s_%p_%t' diskratio=0;
release channel c1;
}
RMAN>spool log off;
bkfulldb_*是备份生成文件的文件名
log_fulldatabase.txt是备份生成日志的文件名
$ORACLE_BASE/oradata/是备份生成文件和备份生成日志的路径
6.运行下面的脚本备份归档日志文件
RMAN>spool log to '$ORACLE_BASE/oradata/log_archivelog.txt';
RMAN>run{
allocate channel t1 type disk;
bakcup
archivelog all
format '$ORACLE_BASE/oradata/bkarchivelog_%U';
release channel t1;
}
RMAN>spool log off;
