PL/SQL Command Window的使用

本文详细介绍了 PL/SQL Developer 中各个窗口的功能及用途,包括程序窗口、测试窗口等,并通过实验演示了命令窗口的使用方法及 PL/SQL 语言的编辑技巧。

个人对于工具的理解,只有真正熟悉了之后才会理解其强大。

1. 先谈一下诸 Window(PL/SQL Developer)

     RT:
RT

  • PW(程序窗口):
    可以执行 sql,sqlplus 相关的语句,例如存储过程,方法,一般用来开发程序用的。
  • TW(测试窗口):
    一般是用来测试存储过程等的debug。
  • SW(SQL窗口):
    执行的是dml,ddl语句,主要用户语句的查询、显示、执行统计信息等(应用最多的一个窗口)。例如 desc table不能在SQL
    window中执行,必须在Command window中才能执行。
  • RW(报告窗口):
    方便用于展示有聚合查询的用图表形式展示的窗口,例如sum(),count()等,有x,y轴的。
  • CW(命令窗口):
    除了可以执行sql/sqlplus 相关的命令、sql脚本,还可以执行更多的命令,例如call 等。
  • EPW(解释计划窗口):
    解释执行计划的,调优时,经常用到。
  • DW(图表窗口):
    画图表的,如果后面用到,补充具体使用细节。

2. 我的有关 CW 的实验
  • Extra Cookies
    • set serveroutput on
      打开oracle自带的输出方法dbms_output。在执行set serveroutput on以后,使用dbms_output方法可以输出信息。例如:dbms_output.put_line(‘This is’);
    • Oracle的 edit 命令
      在 CW 窗口中,运行PL/SQL语言的时候,edit命令用的很多,便于编辑执行的SQL语句。
-- 实验中用到的相关SQL语句

-- 1. 建表语句
create table MYTABLE1
(
  id   VARCHAR2(20),
  name VARCHAR2(20),
  age  INTEGER
);

-- 实验用到的PL/SQL 语言
BEGIN
for i in 1 .. 10 loop
    insert into MYTABLE1 values(i,'dev',1);
end loop;
end;
/
  • 使用PL/SQL语言循环向mytable表循环插入数据,执行结果如下图:
    table1

  • 使用 edit 命令修改,执行结果:
    edit

  • / 执行结果:
    /

  • 补充,最近在实战时,需要更新某些有特点的字段,认识了 NOT LIKE(Oracle) 的用法。不得不说,有时候,见多识广还是很有期必要性的!
  • 具体用法不在啰嗦,分享几篇筛选的相关文章。

  • 个人感觉,虽然题目立足于PL / SQL,单这篇博文写的东西较多,较杂。没办法,单独立文,内容较少;合而为一,又显得有些杂乱,不过确实可以起到一定开阔视野的作用,谢!
<think>我们正在使用PL/SQL Developer工具进行Oracle数据库备份。PL/SQL Developer本身不直接提供数据库备份功能,但我们可以通过它执行Oracle的备份命令或脚本。Oracle数据库备份通常使用RMAN(Recovery Manager)或传统的导出/导入工具(如expdp/impdp)。在PL/SQL Developer中,我们可以打开一个命令窗口或使用SQL窗口来执行备份相关的命令。 以下是几种常见的备份方法,可以在PL/SQL Developer中执行: 1. 使用数据泵导出(expdp): 数据泵是Oracle推荐的工具,用于导出数据和元数据。但注意,expdp是服务器端的工具,所以导出的文件位于数据库服务器上,而不是客户端。我们可以通过PL/SQL Developer执行主机命令(如果配置了外部过程)或者创建调度作业来运行expdp,但通常更直接的方式是在数据库服务器上运行expdp命令。不过,我们可以在PL/SQL Developer中创建一个数据库目录对象并授权,然后使用expdp命令。 步骤: a) 创建目录对象(如果不存在)并授权: ```sql CREATE OR REPLACE DIRECTORY backup_dir AS '/path/to/backup/folder'; GRANT READ, WRITE ON DIRECTORY backup_dir TO your_user; ``` b) 使用expdp导出数据库(注意:expdp需要在数据库服务器上运行,所以我们需要确保PL/SQL Developer能够执行主机命令,或者使用DBMS_SCHEDULER来调度作业。但更简单的方式可能是直接在服务器上运行expdp命令。如果必须通过PL/SQL Developer,我们可以使用以下方式调用外部程序,但通常PL/SQL Developer不直接支持运行操作系统命令,除非使用Command Window”执行主机命令(如果配置了外部过程))。 实际上,在PL/SQL Developer中,我们可以打开一个命令窗口(通过菜单“文件”->“新建”->“命令窗口”),然后输入: host expdp your_username/your_password@your_database schemas=your_schema directory=backup_dir dumpfile=expdp.dmp logfile=expdp.log 但是,这种方式会暴露密码,不安全。另一种方法是使用操作系统认证,或者使用Oracle Wallet来避免密码暴露。 2. 使用传统的exp工具(不推荐,但简单): 类似于expdp,但exp是旧版工具。同样,在命令窗口中执行: host exp your_username/your_password@your_database file=exp.dmp log=exp.log 3. 使用RMAN备份: RMAN是Oracle推荐的备份工具,可以进行全量、增量备份等。同样,我们需要在命令窗口中执行RMAN命令,或者编写RMAN脚本并在PL/SQL Developer的命令窗口中调用。例如: host rman target / @backup_script.rman 但是,RMAN备份通常需要编写一个脚本,然后执行。在PL/SQL Developer中,我们可以通过命令窗口执行RMAN命令,但同样需要连接到目标数据库。 4. 使用PL/SQL Developer的“导出表”功能(仅适用于少量数据): 在PL/SQL Developer的界面中,我们可以选择要导出的表,然后右键选择“导出数据”。这可以生成SQL插入语句或者CSV文件等,但这不适合大型数据库的备份。 考虑到安全性和可管理性,建议使用RMAN进行备份。但是,如果只是需要导出部分数据(例如单个模式),则可以使用数据泵。 注意:在执行备份之前,请确保有足够的磁盘空间,并且备份目录可写。 由于备份操作通常需要较高的权限,请确保使用的数据库用户具有相应的权限(如EXP_FULL_DATABASE、IMP_FULL_DATABASE或SYSBACKUP等)。 下面是一个使用数据泵导出整个数据库的示例(需要具有EXP_FULL_DATABASE权限的用户): 在PL/SQL Developer的命令窗口中执行: host expdp system/password@orcl full=y directory=backup_dir dumpfile=full.dmp logfile=full.log 但是,请注意,在生产环境中,密码不应该以明文形式出现在命令行中。因此,建议使用Oracle Wallet来存储凭证,或者使用操作系统认证。 另外,我们也可以编写一个PL/SQL块,使用DBMS_SCHEDULER来调度备份作业,但这样备份文件会生成在服务器上。 总结:在PL/SQL Developer中,我们可以通过命令窗口执行主机命令来调用expdp、exp或RMAN等工具进行备份。但是,更推荐的做法是直接在数据库服务器上设置定期的备份任务。 如果用户没有直接访问服务器的权限,那么可能需要与DBA协作,将备份文件放在共享目录中,或者使用数据库的备份功能将备份文件传输到客户端。 最后,请注意备份文件的安全性,避免未授权访问。 引用说明: [^1]: 这个引用是关于使用opatch回滚补丁的,与备份无关。 [^2]: 这个引用是关于添加重做日志文件的,与备份无关。 [^3]: 这个引用是关于创建索引时指定存储参数的,与备份无关。 因此,我们忽略这些引用,直接根据Oracle备份知识进行回答。 相关问题: 1. 如何通过PL/SQL Developer执行操作系统命令? 2. 使用数据泵导出时,如何避免在命令行中暴露密码? 3. 如何配置Oracle Wallet以实现安全的认证? 4. 如何编写RMAN备份脚本? 5. 如何恢复使用数据泵导出的备份文件?</think>### 使用 PL/SQL Developer 进行 Oracle 数据库备份的方法 PL/SQL Developer 本身不直接提供数据库备份功能,但可通过以下两种核心方式间接实现备份操作: --- #### 方法 1:执行 SQL 备份命令(推荐) 在 PL/SQL Developer 的 **SQL 窗口**中执行 Oracle 原生备份命令: ```sql -- 创建备份目录对象(需DBA权限) CREATE OR REPLACE DIRECTORY backup_dir AS '/u01/backups'; GRANT READ, WRITE ON DIRECTORY backup_dir TO your_user; -- 执行数据泵导出(示例:全库备份) BEGIN DBMS_DATAPUMP.EXPORT( handle => SYS.DBMS_DATAPUMP.OPEN(operation => 'EXPORT', job_mode => 'FULL'), filename => 'full_backup_%U.dmp', directory => 'BACKUP_DIR' ); END; / ``` **关键参数说明**: - `FULL`:全库备份(可替换为 `SCHEMAS=your_schema` 备份指定用户) - `%U`:自动生成唯一文件名 - `BACKUP_DIR`:预先创建的目录对象 > 备份文件将生成在数据库服务器上(如 `/u01/backups`),非客户端本地[^2][^3]。 --- #### 方法 2:调用外部脚本 通过 PL/SQL Developer 的 **外部程序调用功能**: 1. 创建 RMAN 备份脚本 `backup.rman`: ```bash RUN { ALLOCATE CHANNEL ch1 DEVICE TYPE DISK; BACKUP DATABASE FORMAT '/backups/db_%d_%T.bkp'; } ``` 2. 在 PL/SQL Developer 中执行: ```sql BEGIN SYS.DBMS_SCHEDULER.CREATE_JOB( job_name => 'BACKUP_JOB', job_type => 'EXECUTABLE', job_action => '/usr/bin/rman target / @/scripts/backup.rman' ); SYS.DBMS_SCHEDULER.RUN_JOB('BACKUP_JOB'); END; ``` --- ### 备份验证 在 SQL 窗口中检查备份状态: ```sql SELECT * FROM DBA_DATAPUMP_JOBS; -- 查看数据泵任务 SELECT FILE_NAME FROM DBA_DATA_FILES; -- 确认数据文件位置 ``` --- ### 注意事项 1. **权限要求**: - 需要 `CREATE ANY DIRECTORY` 权限创建目录对象 - 执行 RMAN 需 `SYSDBA` 权限 2. **文件存储**: - 备份文件始终生成在**数据库服务器**,需通过 SFTP/FTP 下载到本地 3. **替代方案**: - 小规模数据可使用 PL/SQL Developer 的 **Export Tables** 功能(导出为 SQL/CSV) - 生产环境建议使用 RMAN 或 Oracle Enterprise Manager > 提示:定期备份控制文件 `ALTER DATABASE BACKUP CONTROLFILE TO TRACE;`[^3] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

言析数智

创作不易,感谢客官的打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值