remote_os_authent=TRUE
现在,在 catalog 数据库上创建一个用户 ID OPS$ORACLE,如下所示。 create user ops$oracle identified externally;
现在,您的 RMAN 连接将如下所示: rman target=/ rcvcat=/@catalog_connect_string
这将不会显示 RMAN 用户的口令或口令。
由于您现在是以 OPS$ORACLE 而不是 catowner 的身份连接的,因此必须重建信息库。连接之后,使用 RMAN> register database;
命令重建目录。您现在准备在 RMAN 备份中使用此脚本。 可能的影响 此处有一些可能的影响。首先,目录数据库中的更改使具有登录身份“oracle”的任何人可以从外部服务器对该数据库进行访问。这是其自身的一个严重的安全漏洞;由于您无法控制客户端,因此某人可能会进入客户端服务器(可能通过一个本身不安全的操作系统),创建一个称作“oracle”的 ID,并登录到目录数据库。
有多种方法可以避免这样的进入。最简单的方法是启用节点过滤(如 3.8 所述),以防任何随机服务器连接到该节点。
此外,您还应意识到,源数据库服务器上的 Oracle 软件所有者可能具有不同的名称。如果您在数据库服务器 A 上使用“orasoft”,而在数据库服务器 B 上使用“oracle”,则您需要在目录数据库上创建的用户分别是 OPS$ORASOFT 和 OPS$ORACLE。因此,将存在两个信息库,而不是一个。这并不一定是坏事。但是,如果您想要对目录中的备份进行报告,则您必须知道数据库中的所有信息库。 操作计划
- 选择一种用于隐藏 RMAN 目录所有者口令的方法:
- 在脚本内部使用 Connect 命令
- 以 OS 验证的用户身份连接
- 如果选择 b.,则
- 对目录数据库启用远程 OS 验证(需要重新启动)。
- 在目录数据库中启用节点验证,以拒绝除已知的少数几个节点之外的所有节点。
- 创建名为 OPS$ORACLE 的用户。
- 修改 RMAN 目录连接字符串以使用 OPS$ORACLE。
- 重建目录。
3.3 将 DBA 脚本移动到计划程序
背景 那些需要登录数据库来执行统计数据收集、索引重建等操作的非常常见的 DBA 脚本如何?以往,DBA 使用 cron(或在 Windows 中使用 AT)作业方法运行工作,但是该方法存在两个风险:
- 如果此脚本需要登录到数据库(大部分 DBA 脚本均如此),则必须在脚本中设置用户 ID 和口令,或者以某种方式将其传递到脚本。因此,任何可以访问该脚本的用户都能够知道该口令。
- 更糟糕的是,任何可以访问服务器的用户都可以执行 ps -aef 命令来查看过程名称中的口令。
您需要防止口令曝露! 策略 可以遵循前面所述的相同策略,即在 SQL 脚本中传递口令,或者让 shell 脚本从文本文件中读取口令。该方法将避免某人在 ps -aef 输出中得知口令;不过,它不会解决某人访问脚本的问题。
在 Oracle 数据库 10g 第 1 版以及更高版本中,您可以通过数据库作业来管理此过程,这是一个极好的方法。注意,在 Oracle 数据库 10g 之前,对数据库作业的管理是通过 dbms_job 提供的程序包进行的,该程序包可以执行一个 PL/SQL 程序包、代码段或普通的 SQL,但无法执行 OS 可执行文件。在 Oracle 数据库 10g 中,新的作业管理系统是提供的程序包 dbms_scheduler(简写为 Scheduler)。除了提供一个明显改进的用户界面以外,该工具还有一个很大的优点:它甚至可以执行 OS 可执行文件 - 全部从 Oracle 数据库中执行!此功能使得实施一站式作业管理系统变得非常容易。
下面是一个例子。假设您有一个收集优化程序统计数据的 cron 作业,如下所示。
(编辑:aniston)
|