Oracle 管理中需要用到的命令

来源:互联网 发布:类似余罪的网络剧 编辑:程序博客网 时间:2024/05/18 18:52

 Oracle 管理中需要用到的命令


因为比较笨,所有做个文档记录一下。方便日后使用。以后遇到常用的命令再不断更新进来。



Linux 命令

 

检查内存

#grep MenTotal /proc/meminfo

查看共享内存

#df –k /dev/shm

交换空间检查

#grep SwapTotal  /proc/meminfo

查看有效的内存和交换空间

#free

临时目录/tem检查

#df –k /tmp

磁盘空间检查

#df –k

#df –h

操作系统检查

#cat /etc/redhat-release

#lsb_release –a

@uname –r

 

Rpm安装

#rpm –ivh *.rpm

Rpm查看

#rpm –q *

 

创建组

#/usr/sbin/groupadd oinstall

#/usr/sbin/groupadd dba

#/usr/sbin/groupadd oper

 

创建用户

#/usr/sbin/useradd –g 组名–G 组名 用户名

#/usr/sbin/useradd –g oinstall –G dba,operoracle

 

查看用户

#id 用户名

设置用户密码

#passwd 用户名

 

创建目录

#mkdir –p /路径

修改目录属性

#chown –R 用户名:组 /路径

#chown –R oracle:oinstall /u01/app

 

修改目录的读写执行权限

#chmod –R 775 /路径

#chmod 775 /路径

#chmod –R 775 /u01/app

 

编辑文件profile

$ls –al .bash_profile(.bash_profile为隐藏文件,因此要用ls –a命令查找)

$vi .bash_profile(用vi编辑.bash_profile)

修改环境配置文件

#vi /etc/profile

 

修改SHELL限制

#vi /etc/security/limits.conf

Eg:修改oracle用户

#vi /etc/security/limits.conf

Oracle soft nproc 2047

Oracle hard nproc 16384

Oracle soft nofile 1024

Oracle hard nofile 65536

 

 

编辑文件login

#vi /etc/pam.d/login

Session required/lib/security/pam_limits.so

Session required pam_limits.so

 

修改内核参数

#env

 

查看内核参数的值

#/sbin/sysctl –a | grep kernel.shmmax

 

 

切换用户

#su – root

#su – oracle

 

启动图形化

#xhost +

 

 

 

 

 

 

Oracle 命令

 

Oracle 的安装步骤:

1.      下载oracle的安装文件

2.      硬件检查

3.      软件检查

4.      创建用户和组

5.      创建相应的目录,并分配权限

6.      修改用户的SHELL的限制

7.      修改用户的环境配置

8.      修改内核参数

9.      必备软件包的安装

10.  数据库软件的安装

11.  创建数据库

12.  创建监听

13.  补丁的安装

14.  数据库备份策略制定

15.  数据库备份脚本编写、测试,全备

 

Oracle删除的步骤

1.      用DBCA删除数据库

2.      删除ASM

3.      停止Oracle所有的服务

4.      用OracleUniversal Installer 自动删除Oracle的组件

5.      手动删除Oracle的其余组件

a)        删除注册表中与Oracle相关的内容

b)        删除与Oracle相关的环境变量

c)        删除与Oracle相关的目录或文件

d)        删除启动菜单中的Oracle

 

 

Oracle监听的启动和关闭

#su – oracle

#export ORACLE_SID=xxxx

#lsnrctl start (listener)

#lsnrctl stop (listener)

 

测试oracle监听

Tnsping ORACLE_SID

 

 

Oracle参数文件

PFILE:  初始化参数文件       Initialization Parameter Files           是文本文件

SPFILE: 服务器参数文件        Server Parameter Files                       是二进制文件

 

Oracle参数文件的转换

CREATE PFILE = ‘/路径/PFILE的名字’ FROM SPFILE = ‘/路径/SPFILE的名字’                                            (ORACLERAC环境下慎用)

 

CREATE SPFILE = ‘/路径/SPFILE的名字’ FROM PFILE= ‘/路径/PFILE的名字’

 

 

Oracle用参数文件启动

STARTUP PFILE=’SPFILE文件的绝对路径’

 

Oracle 启动步骤

#sqlplus /nolog

SQL>CONNECT sys AS SYSDBA

SQL>STARTUP NOMOUNT                          (分配内存)

SQL>ALTER DATABASE MOUNT                 (打开控制文件)

SQL>ALTER DATABASE OPEN                     (打开数据库)

 

只读方式打开数据库

SQL>STARTUP OPEN READ ONLU

 

关闭数据库

SQL>SHUTDOWN IMMEDIATE                  (最安全的关闭方式)

SQL>SHUTDOWN NORMAL                        (一般不用,或只在测试环境下用)

SQL>SHUTDOWN TRANSACTIONAL         (比较慢或很慢,一般不用)

SQL>SHUTDOWN ABOUT                           (强行关闭数据库,下次数据库启动时需要实例恢复)

 

 

Oracle表空间

创建表空间

CREATE TABLESPACE 表空间名

DATAFILE ‘/绝对路径/’ SIZE xxxM 

AUTOEXTEND ON NEXT xxM   MAXSIZE UNLIMITED 

LOGGING 

EXTENT MANAGEMENT LOCAL         

SEGMENT SPACE MANAGEMENT AUTO (DEFAULT)

 

扩展表空间

1.手动增加表空间中的数据文件大小

ALTER DATABASE DATAFILE ‘/绝对路径/’ RESIZE xxxM

2.把表空间中的数据文件设置成自动扩展

ALTER DATABASE DATAFILE ‘/绝对路径/’ AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED

3.往表空间中增加数据文件

ALTER TABLESPACE 表空间名 ADD DATAFILE ‘/绝对路径/数据文件名’ SIZE 100M

 

表空间在线离线、只读设置

ALTER TABLESPACE表空间名 OFFLINE

ALTER TABLESPACE表空间名ONLINE

ALTER TABLESPACE表空间名READ ONLY

ALTER TABLESPACE表空间名READ WRITE

 

重命名表空间名

ALTER TABLESPACE表空间名RENAME TO 新表空间名

 

删除表空间

DROP TABLESPECE 表空间名 INCLUDING CONTENTS

删除表空间及其数据文件

DROP TABLESPECE 表空间名 INCLUDING CONTENTS AND DATAFILES

 

表和表空间的关系

1. 查看所有表空间大小

(数据文件)

SQL> select tablespace_name,sum(bytes)/1024/1024 from dba_data_files 

 group by tablespace_name;

 

2. 已经空闲的表空间大小

(空闲表空间)

SQL> selecttablespace_name,sum(bytes)/1024/1024 from dba_free_space

    group by tablespace_name;

 

3. 所以使用空间可以这样计算

  selecta.tablespace_name,total,free,total-free used from

 (selecttablespace_name,sum(bytes)/1024/1024 total from dba_data_files

     group by tablespace_name) a,

  ( selecttablespace_name,sum(bytes)/1024/1024 free from dba_free_space

     group by tablespace_name) b

  wherea.tablespace_name=b.tablespace_name;

 

4. 下面这条语句查看所有segment的大小。

Select Segment_Name,Sum(bytes)/1024/1024From User_Extents Group By Segment_Name

 

5. 还有在命令行情况下如何将结果放到一个文件里。

SQL> spool out.txt

SQL> select * from v$database;

SQL> spool off

 

得到创建表空间的SQL语句

SQL>set long 10000

SQL>SELECT DBMS_METADATA.GET_DDL(‘TABLESPACE’,’表空间名’) FROM dual

数据文件管理

非归档模式,离线

ALTER DATABASE DATAFILE ‘/路径/数据文件名’ OFFLINE

归档模式,离线(慎用,这样离线的数据文件将永远不能再次在线)

ALTER DATABASE DATAFILE ‘/路径/数据文件名’ OFFLINE FOR DROP

使数据文件在线

ALTER DATABASE DATAFILE ‘/路径/数据文件名’ ONLINE

 

数据文件移动

查询位置SELECTfile_name,Tablespace_name FROM DBA_DATA_FILES

ALTER TABLESPACE 表空间名 OFFLINE NORMAL

(在OS上移动数据文件位置)

ALTER TABLESPACE表空间名RENAME DATAFILE ‘/数据文件原绝对路径/’ TO ‘/数据文件新绝对路径/’

ALTER TABLESPACE表空间名ONLINE

查询验证SELECTfile_name,Tablespace_name FROM DBA_DATA_FILES

 

删除数据文件

ALTER TABLESPACE表空间名DROP DATAFILE ‘/数据文件绝对路径/’

如果是删除临时文件

ALTER TABLESPACE 临时表空间名 DROP TEMPFILE ‘/数据文件绝对路径/’

 

列出数据库中的数据文件

SELECT file#,name FROM v$datafile

 

临时表空间管理

创建临时表空间

CREATE TEMPORARY TABLESPACE 临时表空间名 TEMPFILE ‘/数据文件绝对路径/’ SIZExx M

找出默认临时表空间

SELECT PROPERTY_NAME,PROPERTY_VALUE FROMDATABASE_PROPERTIES WHERE PROPERTY_NAME=’DEFAULT_TEMP_TABLESPACE’

查看有哪些临时表空间

SELECT TABLESPACE_NAME,FILE_NAME,STATUSFROM DBA_TEMP_FILES ORDER BY TABLESPACE_NAME

 

UNDO,回滚表空间的操作

创建回滚表空间

CREATE UNDO TABLESPACE 回滚表空间名 DATAFILE  ‘/数据文件绝对路径/’ SIZE 2M REUSE AUTOEXTEND ON

删除回滚表空间

管理员可以删除回滚表空间,但不能删除数据库当前正在使用的回滚表空间。只能先把数据库切换到另一个回滚表空间,然后重启数据库后再删除。

显示数据库当前正在使用的回滚表空间

SHOW PARAMETER UNDO_TABLESPACE

切换回滚表空间

ALTER SYSTEM SET UNDO_TABLESPACE = 新回滚表空间名SCOPE=BOTH

查询数据库中的回滚表空间

SELECT TABLESPACE_NAME FROM DBA_TABLESPACESWHERE CONTENTS = ‘UNDO’

 

往回滚表空间增加数据文件

ALTER TABLESPACE回滚表空间名 ADD DATAFILE ‘’ SIZE 5M ATUOEXTEND ON NEXT 1M MAXSIZE UNLIMITED

 

 

查看Oracle内存信息

SGA

SQL>SHOW SGA

SELECT * FROM V$SGA

显示数据库高速缓冲区

SELECT NAME,BYTES/1024/1024||’M’ FROM V$SGAINFOWHERE NAME=’Buffer Cache Size’

相关视图

V$MEMORY_DYNAMIC_COMPONENTS

显示重做日志缓冲区

SELECT * FROM V$SGAINFO

显示共享池大小

SELECT NAME,BYTES/1024/1024||’M’ FROM V$SGAINFOWHERE NAME=’Shared Pool Size’

相关视图

V$MEMORY_DYNAMIC_COMPONENTS

显示Java Pool大小

SELECT NAME,BYTES/1024/1024||’M’ FROM V$SGAINFOWHERE NAME=’Java Pool Size’

显示Large Pool大小

SELECT NAME,BYTES/1024/1024||’M’ FROM V$SGAINFOWHERE NAME=’Large Pool Size’

显示共享池(Shared Pool)大小

SELECT NAME,BYTES/1024/1024||’M’ FROM V$SGASTATWHERE NAME=’free memory’ AND POOL = ’Shared Pool’

 

查看Oracle的后台进程

SELECT * FROM V$BGPROCESS WHERE PADDR != ‘00’ORDER BY NAME

 

查看Oracle的会话

SELECT * FROM V$SESSION WHERE TYPE=’USER’

 

查看Oracle的会话状态

SELECT SID,SERIAL#,STATUS,SERVER FROMV$SESSION WHERE USERNAME = ‘用户名’

终止会话

ALTER SYSTEM KILL SESSION ‘SID,SERIAL#’

 

 

修改归档进程(ARCn)的数量

ALTER SYSTEM SETLOG_ARCHIVE_MAX_PROCESSES=n SCOPE=both  (n为整数)

 

查看数据库是否已经启动了相应数量的归档进程

SELECT * FROM V$BGPROCESS WHERE paddr<>’00’

 

查看数据库中控制文件

SELECT * FROM V$CONTROLFILE

SHOW PARAMETER control_files

 

修改镜像控制文件

1.      再PFILE中修改control_files 参数

2.      根据PFILE生成SPFILE

3.      重启数据库

 

查看控制文件

SHOW PARAMETER DIAGNOSTIC_DEST

DUMP出控制文件的详细信息

ALTER SESSION SET events ‘immediate tracename control level 10’

在$ORACLE_HOME/rdbms/sid/trace下进行查找,找到dump文件。

 

得到创建控制文件的脚本

查询跟踪文件的路径

SHOW PARAMETER user_dump_dest

把控制文件备份到数据库的跟踪文件中,再查看跟踪文件,得到创建控制文件的脚本

ALTER DATABASE BACKUP CONTROLFILE TO TRACE

 

移动和删除控制文件

通过修改PFILE文件中的初始化参数control_files来实现。

修改PFILE文件需再根据修改后的PFILS文件创建SPFILE文件。

 

 

重做日志(Redo Log)管理

查询数据库中有哪些重做日志组

SELECT * FROM V$LOG

查询数据库中的重做日志文件

SELECT * FROM V$LOGFILE

特别说明:STATUS状态

INVALID            表示文件不可访问

STALE                 表示文件的内容不完整

DELETED          表示文件不再被使用

NULL                  表示文件在使用中

 

 

创建重做日志组

ALTER DATABASE ADD LOGFILE (‘/绝对路径/日志文件1.rdo’, ‘/绝对路径/日志文件2.rdo’) SIZE 4M

创建重做日志,并制定重做日志组的编号

ALTER DATABASE ADD LOGFILE GROUP 组编号(‘/绝对路径/日志文件1.rdo’, ‘/绝对路径/日志文件2.rdo’) SIZE 20M

 

添加重做日志文件

ALTER DATABASE ADD LOGFILE MEMBER ‘/绝对路径/日志文件n.rdo’ TO GROUP 组编号

 

查询重做日志组的状态

SELECT GROUP#,ARCHIVED, STATUS FROM V$LOG;

删除重做日志组

ALTER DATABASE DROP LOGFILE GROUP 组编号

删除重做日志组成员

SELECT * FROM V$LOGFILE

ALTER DATABASE DROP LOGFILE MEMBER ‘/绝对路径/日志文件n.rdo’

 

改变重做日志组的状态

ALTER SYSTEM SWITCH LOGFILE

ALTER SYSTEM CHECKPOINT

 

查看重做日志组是否已经归档

SELECT GROUP@,STATUS,ARCHIVED FROM V$LOG

特别说明ARCHIVED状态

ARCHIVED=YES                 表示日志已经归档

ARCHIVED=NO                           表示日志未归档

 

Oracle用户管理

创建用户账号

简化版

CREATE USER 用户名 IDENTIFIED BY 密码         (Oracle 11g中,密码大小写敏感)

繁琐版

CREATE USER 用户名 IDENTIFIED BY 密码

DEFAULT TABLESPACE 表空间名   (指定用户默认表空间)

QUOTA 10M ON 表空间名   (在表空间上有10MB空间的使用权限)

QUOTA 5M ON SYSTEM            (在system表空间上有5MB空间的使用权限)

TEMPORARY TABLESPACE TEMP   (临时表空间)

PROFILE DEFAULT             (使用默认的概要文件)

PASSWORD EXPIRE           (指定该用户是否过期,该用户在登录前必须修改密码)

ACCOUNT UNLOKC           (指定账户的状态,是否锁定)

 

 

 

修改用户密码

ALTER USER 用户名 IDENTIFIED BY 密码

使用户的密码过期

ALTER USER 用户名 PASSWORD EXPIRE

修改用户的临时表空间

ALTER USER 用户名 TEMPORARY TABLESPACE 表空间名

修改用户的默认表空间

ALTER USER 用户名 DEFAULT TABLESPACE 表空间名

修改用户的表空间限额

ALTER USER 用户名 QUOTA 50M 表空间名

锁定用户

ALTER USER用户名 ACCOUNT LOCK

解锁

ALTER USER用户名 UNLOCK

 

查看单个用户的信息

SELECT USERNAME,PROFILE,ACCOUNT_STATUS FROMDBA_USERS WHERE USERNAME=’用户名’

查看所有用户信息

SELECT USERNAME,PROFILE,ACCOUNT_STATUS FROMDBA_USERS

查看所有用户的信息

SELECT * FROM DBA_USERS

查看用户的表空间限额

SELECT * FROM DBA_TS_QUOTAS

查看每个会话内存的使用情况

SELECT USERNAME,VALUE||’BYTES’ ”Current UGAmemory” FROM V$SESSION SESS, V$SESSTAT STAT, V$STATNAME NAME

WHERE SESS.SID=STAT.SID ANDSTAT.STATISTIC#=NAME.STATISTIC# AND NAME.NAME=’session uga memory’

 

找出和用户相关的会话

SELECT SID,SERIAL#,USERNAME FROM V$SESSION

终止要被删除的用户相关的会话

ALTER SYSTEM KILL SESSION ‘SID,SERIAL#’

查看用户拥有的模式对象

SELECT OWNER,OBJECT_NAME FROM DBA_OBJECTSWHERE OWNER LIKE ‘用户名’

删除用户

DROP USER 用户名

如果用户模式下存在对象,则用下面的语句

DROP USER 用户名 CASCADE

查看当前有哪些用户登录数据库

SELECT USERNAME FROM V$SESSION WHERE TYPE =‘USER’

 

 

 

USER PROFILES概要文件(限制用户对资源的消耗)

创建概要文件PROFILE

CREATE PROFILE 概要文件名 LIMIT

SESSIONS_PER_USER UNLIMITED                     每个用户允许建立的最大会话数(无限制)

CPU_PER_SESSION UNLIMITED                         每个用户的CPU时间限制,(无限制)

CPU_PER_CALL 3000                                            每次调用最懂可以消耗的CPU时间(百分之一秒)

CONNECT_TIME 45                                                        每个会话能够连接到数据库的最长时间(分钟)

LOGICAL_READS_PER_SESSION DEFAULT       每个会话所能读取的数据块的最大数量

LOGICAL_READS_PER_CALL 1000                     每个调用所能读取的数据块的最大数量

PRIVATE_SGA 15K                                                  在SGA中每个会话分配的私有SQL区的最大值

COMPOSITE_LIMIT 5000000                              表示一个会话所消耗资源的总额度

 

创建概要文件PROFILE_PASSWORD

CREATE PROFILE profile_password LIMIT

FAILED_LOGIN_ATTEMPTS 5            允许登录失败的次数

PASSWORD_LIFE_TIME 60                口令的生存时间(天)。在生存时间达到之前要修改密码

PASSWORD_REUSE_TIME 60           用户重复使用一个口令之前必须经历的时间(天)

PASSWORD_REUSE_MAX 5               用户在重用一个口令之前必须修改的次数

PASSWORD_LOCK_TIME 1/24                   用户输错密码,保持锁住状态的时间

PASSWORD_GRACE_TIME 10          用户口令过期时间

 

修改用户的概要文件

ALTER USER 用户名 PROFILE概要文件名

删除概要文件

DROP PROFILE概要文件名 CASCADE

 

Oracle口令文件

语法:ORAPWD FILE =filename [ENTRIES=numusers]

                 [FORCE={Y|N}][IGNORECASE={Y|N}][NOSYSDBA={Y|N}]

口令文件的默认路径:ORACLE_BASE/ORACLE_HOME/DATABASE

ENTRIES: 为整数值,指定最多可以有多少个用户成为超级用户

FORCE: 指定是否强行覆盖已经存在的口令文件

IGNORECASE: Y表示口令大小写不敏感

 

#orapwd FILE=/绝对路径/PWDsid.ORA ENTRIES=5 FORCE=y

 

查看数据库中有哪些超级用户

SELECT * FROM V$PWFILE_USERS

 

创建角色

CREATE ROLE角色名

创建口令验证的角色

CREATE ROLE角色名 IDENTIFIED BY 密码

创建全局角色

CREATE ROLE角色名 IDENTIFIED GLOBALLY

创建外部角色

CREATE ROLE角色名 IDENTIFIED EXTERNALLY

授予角色系统权限

GRANT CREATE VIEW TO角色名

授予角色对象权限

GRANT INSERT ON 对象名名

删除角色

DROP ROLE角色名

 

数据泵 Oracle Data Pump

OS中创建目录,使oracle对该目录有读写权限,创建目录对象

#mkdir /u01/app/dump

#chmod –R 775 /u01/app/dump

SQL>CREATE DIRECTORY dmp_dir AS ‘/u01/app/dump’

SQL>GRANT PRAD,WRITE ON DIRECTORYdmp_dir TO 用户名

 

全库导出

Expdp用户名 DIRECTORY=dmp_dir DUMPFILE=fulldb.dmp FULL=y

模式导出

Expdp用户名 DIRECTORY=dmp_dir DUMPFILE=userdum.dmp SCHEMAS=用户1的对象,用户2的对象

表导出

Expdp SYSTEM DIRECTORY=dmp_dir DUMPFILE=DUMPtable.dmpTABLES=用户名.表名1, 用户名.表名2….

表空间导出

Expdp SYSTEM DIRECTORY=dmp_dir DUMPFILE=DUMPtbs.dmpTABLESPACES=表空间1,表空间2…

 

 

导入(这里不是很清楚)

Impdp 用户名 DIRECTORY=dmp_dir DUMPFILE=*.dmp

 

数据库的备份

Recovery Catalog Database 恢复资料数据库/恢复目录数据库

1.      创建恢复资料/目录的拥有者

创建一个表,永久表空间,用于存放恢复资料/目录

CREATE TABLESPACE 表空间名(space_for_backup) DATAFILE ‘/绝对路径/数据文件名.dbf’ SIZE 50M

创建恢复资料/目录的拥有者

CREATE USER rman IDENTIFIED BY 密码

TEMPORARY TABLESPACE temp

DEFAULT TABLESPACE 表空间名(space_for_backup)

QUOTA UNLIMITED ON表空间名(space_for_backup)

把恢复资料/目录数据库的维护和查询权限授予恢复资料/目录的拥有者rman

GRANT RECOVERY_CATALOG_OWNER TO rman

2.      创建恢复资料/目录(创建相关的表和视图)

#rman

登录到恢复资料/目录数据库

RMAN>CONNECT CATALOG rman/密码

创建恢复资料/目录

RMAN>CREATE CATALOG TABLESPACE表空间名(space_for_backup)

如果不指定表空间,恢复资料/目录将放在用户rman的默认表空间中。

3.注册目标数据库(把目标数据库的信息写到恢复资料/目录中)

#rman

登录到恢复资料/目录数据库

RMAN>CONNECT CATALOG rman/密码@网络服务名(监听名称)

登录到目标数据库

RMAN>CONNECT TRAGET sys/密码@网络服务名(监听名称)

注意:这里要使用专有服务器连接(即SERVER=DEDICATED),否则会产生ORA-19550:无法再使用调度程序时使用备份/还原功能。

注册目标数据库

RMAN>REGISTER DATABASE

查看注册是否成功

RMAN>REPORT SCHEMA

 

 

备份整个数据库

使用RMAN连接到目标数据库

RMAN>CONNECT TARGET sys

连接到恢复资料/目录数据库

RMAN>CONNECT CATALGO rman

备份整个数据库

RMAN>BACKUP DATABASE FORMAT ‘/绝对路径/BACKUP/bk0_%s_%p_%t’

FORMAT 指定备份生成的文件的路径及文件名的格式:%s指定备份集,%p指定碎片编号(Piece Number),%t指定时间戳

 

备份单个表空间

方法1:

查询要备份的表空间由哪些数据文件组成

SELECT TABLESPACE_NAME,FILE_NAME FROMSYS.DBA_DATA_FILES WHERE TABLESPACE_NAME=’表空间名’

把表空间置于备份模式

ALTER TABLESPACE 表空间名 BEGIN BACKUP

在OS中,用cp命令把组成表空间的数据文件复制到备份路径中

让表空间退出备份模式,回到正常状态

ALTER TABLESPACE 表空间名 END BACKUP

执行手工归档

ALTER SYSTEM ARCHIVE LOG CURRENT

方法2:

RMAN>BACKUP TABLESPACE 表空间名FORMAT ‘/绝对路径/BACKUP/bk0_%s_%p_%t’

 

 

备份单个数据文件

查询要备份的表空间由哪些数据文件组成

SELECT TABLESPACE_NAME,FILE_NAME FROMSYS.DBA_DATA_FILES WHERE TABLESPACE_NAME=’表空间名’

RMAN>BACKUP DATAFILE ‘‘/绝对路径/数据库文件/’ FORMAT ‘/绝对路径/BACKUP/bk_0_%s_%p_%t’

 

 

备份归档日志文件

方法1:

SELECT THREAD#,SEQUENCE#,NAME FROV$ARCHIVED_LOG

在OS中,用cp命令把归档日志文件从归档路径复制到备份目录

方法2:

RMAN>BACKUP ARCHIVELOG ALL FORMAT ‘/绝对路径/BACKUP/bkar_%u’

 

 

备份控制文件

方法1

SQL>ALTER DATABASE BACKUP CONTROFILE TO ‘/绝对路径/BACKUP/conf.bak’

方法2 把控制文件备份到跟踪文件中,在跟踪文件中生成创建控制文件的脚本

SQL>ALTER DATABASE BACKUP CONTROFILE TOTRACE

方法3

RMAN>BACKUP CURRENT CONTROLFILE

方法4 启动控制文件的自动备份,当使用RMAN执行备份时,RMAN自动备份控制文件(也会备份SPFILE)

RMAN>CONFIGURE CONTROLFILE AUTOBACKUP ON

 

 

备份SPFILE

RMAN>BACKUP SPFILE

也可以直接在OS下拷贝SPFILE文件到备份路径

 

 

数据库的恢复

先诊断是否有错误

1对数据库进行验证

RMAN>VALIDATE DATABASE

2使用过LIST FAILURE命令列出故障

RMAN>LIST FAILURE

3根据故障编号获得故障的详细信息

RMAN>LIST FAILURE 故障编号 DETAIL

4得到故障的修复建议

RMAN>ADVISE FAILURE

也可列出指定故障的修复建议

RMAN>ADVISE FAILURE 故障编号

5执行故障修复

RMAN>REPAIR FAILURE

6再次查看故障是否已经被修复

RMAN>LIST FAILURE

 

 

恢复整个数据库

1如果数据库在运行,则强制把数据库启动到MOUNT状态

RMAN>STARUP FORCE MOUNT

2还原数据库

RMAN>RESTORE DATABASE

3恢复数据库

RMAN>RECOVER DATABASE

4打开数据库

RMAN>ALTER DATABASE OPEN

 

 

恢复单个表空间

可以在数据库运行的情况下操作

1要是被恢复的表空间离线

RMAN>SQL ‘ALTER TABLESPACE 表空间名 OFFLINE’

2运行RUN命令,执行表空间的还原与修复

RMAN>RUN

{

#重命名数据文件

SET NEWNAME FOR DATAFILE ‘/绝对路径1/数据文件.dbf’ TO ‘/绝对路径2/数据文件.dbf’;

#还原表空间

TESTORE TABLESPACE 表空间名;

#更新控制文件

SWITCH DATAFILE ALL;

#执行表空间的恢复

RECOVER TABLESPACE 表空间名

3使表空间重新在线

RMAN>SQL ‘ALTER TABLESPACE 表空间名 ONLINE’

 

 

 

 

恢复单个数据文件

如果单个数据文件损坏,只需恢复损坏的数据文件即可。

1从备份中还原数据文件

RMAN>RESTORE datafile ‘/绝对路径/数据文件.dbf’

2执行数据文件的恢复

RMAN>RECOVER DATAFILE ‘/绝对路径/数据文件.dbf’

3使数据文件在线

RMAN>ALTER DATABASE DATAFILE ‘/绝对路径/数据文件.dbf’

 

 

恢复数据块

如果数据块冲突,不用关闭数据库,可以在线修复冲突块

1找出冲突块:

方法1

SQL>SELECT * FROM V$DATABASE_BLOCK_CORRUPTION

方法2

查询跟踪文件(Trace Files)和警报文件(Alert Log)的位置

SQL>SELECT NAME,VALUE FROM V$DIAG_INFO

在跟踪文件(Trace Files)或警报文件(Alert Log)中查找冲突块信息

 

2修复冲突块

RMAN>BLOCKRECOVER DATAFILE N BLOCK ADATAFILE M BLOCK B;

修复数据文件N中的坏块A及数据文件M中的坏块B

 

也可以使用下面的命令修复冲突块

RMAN>RECOVER CORRUPTION LIST

不过该命令会修复视图V$DATABASE_BLOCK_CORRUPTION中列出的所有冲突块。

 

 

 

 

 

 

 

 

 

 

 

 

 

0 0
原创粉丝点击