RMAN 提示符下执行SQL语句

       在手动恢复数据库时,有时候需要在SQL*Plus提示符以及操作系统提示符,RMAN提示符下来回切换显得有些繁琐。实际上RMAN为我们提供了命令行下执行一些简单的SQL语句以及PL/SQL的方法,以避免上述情形。本文描述了RMAN提示符下的一些常用命令及其用法。

 

1、RMAN提示符下执行SQL语句
       语法: SQL '<command>' ;   
       语法比较简单,就是提示符下输入SQL,后接SQL命令,命令用单引号括起来
      command 通常为可执行的SQL命令语句,也可以为PL/SQL块

      使用限制
            如果SQL语句中包含文件名,则文件名及路径需要使用两个单引号括起来,整个SQL语句首尾需要使用双引号
            可以执行SQL查询语句,但是无任何结果输出

      RMAN提示符下常用的命令
            startup [nomount | mount], shutdown immediate
            alter system archive log current
            alter database open [resetlogs]

 

2、演示RMAN提示符下执行SQL语句

a、执行常用的starup, alter SQL 语句
robin@SZDB:~> export ORACLE_SID=GOBO1
robin@SZDB:~> rman target /

Recovery Manager: Release 10.2.0.3.0 - Production on Tue Jun 4 11:04:26 2013

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

connected to target database (not started)

RMAN> startup nomount;

Oracle instance started

Total System Global Area     536870912 bytes

Fixed Size                     2074080 bytes
Variable Size                314575392 bytes
Database Buffers             213909504 bytes
Redo Buffers                   6311936 bytes

RMAN> alter database mount;

using target database control file instead of recovery catalog
database mounted

RMAN> alter database open;

database opened

RMAN> list copy of archivelog all;   --->查看当前数据库的归档日志,列出了1个已归档日志

List of Archived Log Copies
Key     Thrd Seq     S Low Time          Name
------- ---- ------- - ----------------- ----
2084    1    8       A 20130604 09:53:17 /u02/database/GOBO1/archive/arch_816906485_1_8.arc

RMAN> sql ' alter system archive log current ';   --->对当前日志进行归档

sql statement:  alter system archive log current 

RMAN> list copy of archivelog all;                --->归档后可以看到多出了1个已归档日志

List of Archived Log Copies
Key     Thrd Seq     S Low Time          Name
------- ---- ------- - ----------------- ----
2084    1    8       A 20130604 09:53:17 /u02/database/GOBO1/archive/arch_816906485_1_8.arc
2085    1    9       A 20130604 10:46:36 /u02/database/GOBO1/archive/arch_816906485_1_9.arc

b、执行SQL查询语句,如下,没有任何结果输出
RMAN> sql 'select sysdate from dual';     

sql statement: select sysdate from dual

RMAN> sql ' select * from v$database ';

sql statement:  select * from v$database 

-- Author : Robinson
-- Blog   : http://blog.csdn.net/robinson_0612

c、执行带有路径及文件名的SQL语句
--下面的执行那个中没有使用双引号开头以及双单引号括住路径,收到错误提示
RMAN> sql ' create tablespace ts1 datafile '/u02/database/GOBO1/oradata/ts1.dbf' size 10m ';

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00558: error encountered while parsing input commands
RMAN-01006: error signalled during parse
RMAN-02001: unrecognized punctuation symbol "/"

--下面的SQL语句被成功执行
RMAN> sql "create tablespace ts1 datafile ''/u02/database/GOBO1/oradata/ts1.dbf'' size 10m";

sql statement: create tablespace ts1 datafile ''/u02/database/GOBO1/oradata/ts1.dbf'' size 10m

d、执行PL/SQL块
RMAN> sql ' begin dbms_lock.sleep(3); end;';

sql statement:  begin dbms_lock.sleep(3); end;

e、rman块命令方式执行PL/SQL块
RMAN> run{
2> sql ' begin dbms_lock.sleep(3); end; ';
3> }

sql statement:  begin dbms_lock.sleep(3); end; 

RMAN> run {
2> sql ' drop tablespace ts1 including contents and datafiles ';
3> }

sql statement:  drop tablespace ts1 including contents and datafiles 

RMAN> shutdown immediate;

database closed
database dismounted
Oracle instance shut down

f、切换到系统提示符下
RMAN> host;

robin@SZDB:~> exit
exit
host command complete

RMAN>

3、相关参考
    Oracle 冷备份

    Oracle 热备份

    Oracle 备份恢复概念

    Oracle 实例恢复

    Oracle 基于用户管理恢复的处理

    SYSTEM 表空间管理及备份恢复

    SYSAUX表空间管理及恢复

    Oracle 基于备份控制文件的恢复(unsing backup controlfile)

    RMAN 概述及其体系结构

    RMAN 配置、监控与管理

    RMAN 备份详解

    RMAN 还原与恢复

    RMAN catalog 的创建和使用

    基于catalog 创建RMAN存储脚本

    基于catalog 的RMAN 备份与恢复

    RMAN 备份路径困惑

    自定义 RMAN 显示的日期时间格式

时间: 2024-10-03 12:01:01

RMAN 提示符下执行SQL语句的相关文章

[20120327]toad与sqlplus下执行sql语句的一个细节.txt

TOAD是一个很好的图形化oracle管理工具,昨天在解决一个问题时遇到了一些细节问题,实际上我以前就知道,现在把它写下来: 我使用toad版本是9.6.0.27. 1.在sqlplus下执行如下: SQL> select /*+ zzzz */ * from dept where deptno=10;     DEPTNO DNAME          LOC ---------- -------------- -------------         10 ACCOUNTING     N

.Net core下直接执行SQL语句并生成DataTable的实现方法_实用技巧

.net core可以执行SQL语句,但是只能生成强类型的返回结果.例如var blogs = context.Blogs.FromSql("SELECT * FROM dbo.Blogs").ToList().而不允许返回DataSet.DataTable等弱类型.可能由于这个原因没有实现在.net core中DataTable,然而DataTable还是可能会用到的.我们这里就有一个数据仓库的需求,允许用户自行编写类似SQL语句,然后执行,以表格展示.因为语句是千变万化的,因此我也

json-关于asp josn 接到参数 执行 sql语句 报错问题

问题描述 关于asp josn 接到参数 执行 sql语句 报错问题 <%Dim memberSet member = jsObject() dim dbconnectionuplistDBPathSQLSortLboundUboundDim id=request(""jsoncallback"")set dbconnection=Server.CreateObject(""ADODB.Connection"") DBP

在MySQL数据库中使用C执行SQL语句

mysql|数据|数据库|语句|执行 与PostgreSQL相似,可使用许多不同的语言来访问MySQL,包括C.C++.Java和Perl.从Professional Linux Programming中第5章有关MySQL的下列章节中,Neil Matthew和Richard Stones使用详尽的MySQL C接口向我们介绍了如何在MySQL数据库中执行SQL语句.他们将讨论返回数据的语句,例如INSERT以及不返回数据的语句,例如UPDATE和DELETE.然后,他们将编写从数据库检索数据

在MySQL数据库中使用C执行SQL语句(1)

与PostgreSQL相似,可使用许多不同的语言来访问MySQL,包括C.C++.Java和Perl.从Professional Linux Programming中第5章有关MySQL的下列章节中,Neil Matthew和Richard Stones使用详尽的MySQL C接口向我们介绍了如何在MySQL数据库中执行SQL语句.他们将讨论返回数据的语句,例如INSERT以及不返回数据的语句,例如UPDATE和DELETE.然后,他们将编写从数据库检索数据的简单程序. 执行SQL语句 现在,我

在ASP.NET中用存储过程执行SQL语句

  存储过程:是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中.用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它.存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程.by google 存储过程执行效率比单独的SQL语句效率高. 样编写存储过程?存储过程在SQL Server 2005对应数据库的可编程性目录下. 比如,创建一个存储过程 create procedure procNewsSelectNewNews as begi

客户端发送-Servlet执行SQL语句把汉字插入到MySql,此时在MySql中汉字变成了方块,乱码

问题描述 Servlet执行SQL语句把汉字插入到MySql,此时在MySql中汉字变成了方块,乱码 在安卓客户端有一个注册登录程序,注册的时候,输入用户名密码,客户端用GET方式把表单数据传到Servlet,然后Servlet通过 String name=request.getParameter("username");String password=request.getParameter("password");把用户名密码得到,之后执行SQL语句把用户名密码

[Qt教程] 第23篇 数据库(三)利用QSqlQuery类执行SQL语句

[Qt教程] 第23篇 数据库(三)利用QSqlQuery类执行SQL语句 楼主  发表于 2013-5-15 22:39:29 | 查看: 813| 回复: 0 利用QSqlQuery类执行SQL语句 版权声明 该文章原创于作者yafeilinux,转载请注明出处! 导语        SQL即结构化查询语言,是关系数据库的标准语言.前面两节中已经在Qt里利用QSqlQuery类执行了SQL语句,这一节我们将详细讲解该类的使用.需要说明,因为我们重在讲解Qt中的数据库使用,而非专业的讲解数据库

着急实现-下面的SQL语句怎么解释,详细点,求大神赐教,急急急急急急!!!!!

问题描述 下面的SQL语句怎么解释,详细点,求大神赐教,急急急急急急!!!!! select convert(varchar(2),采集时间,108),count(1) from 监测执行表 (nolock) where 采集时间 > convert(varchar(10),getdate(),120) group by convert(varchar(2),采集时间,108) order by 1 解决方案 采集时间 是今天的,按小时统计数量http://www.w3school.com.cn