RMAN Catalog創建、配置和管理


環境:RHEL6.4 + Oracle 11.2.0.4

一、創建數據庫catdb

二、配置catdb為catalog數據庫

三、管理catalog數據庫

四、Reference

一、創建數據庫catdb

1.1 官檔的建庫腳本示例

``` CREATE DATABASE mynewdb USER SYS IDENTIFIED BY sys_password USER SYSTEM IDENTIFIED BY system_password LOGFILE GROUP 1 ('/u01/logs/my/redo01a.log','/u02/logs/my/redo01b.log') SIZE 100M BLOCKSIZE 512, GROUP 2 ('/u01/logs/my/redo02a.log','/u02/logs/my/redo02b.log') SIZE 100M BLOCKSIZE 512, GROUP 3 ('/u01/logs/my/redo03a.log','/u02/logs/my/redo03b.log') SIZE 100M BLOCKSIZE 512 MAXLOGFILES 5 MAXLOGMEMBERS 5 MAXLOGHISTORY 1 MAXDATAFILES 100 CHARACTER SET US7ASCII NATIONAL CHARACTER SET AL16UTF16 EXTENT MANAGEMENT LOCAL DATAFILE '/u01/app/oracle/oradata/mynewdb/system01.dbf' SIZE 325M REUSE SYSAUX DATAFILE '/u01/app/oracle/oradata/mynewdb/sysaux01.dbf' SIZE 325M REUSE DEFAULT TABLESPACE users DATAFILE '/u01/app/oracle/oradata/mynewdb/users01.dbf' SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED DEFAULT TEMPORARY TABLESPACE tempts1 TEMPFILE '/u01/app/oracle/oradata/mynewdb/temp01.dbf' SIZE 20M REUSE UNDO TABLESPACE undotbs DATAFILE '/u01/app/oracle/oradata/mynewdb/undotbs01.dbf' SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED; ```

1.2 根據我實際環境修改如下項

``` sys_password -> oracle system_password -> oracle US7ASCII -> ZHS16GBK mynewdb -> catdb /u01/logs/my -> /u01/redologs/a /u02/logs/my -> /u01/redologs/b /u01/app/oracle/oradata -> /u01/oradata03 ``` 可以vi批量替換,比如`:%s#/u01/logs/my#/u01/redologs/a#g`替換所有`/u01/logs/my`為`/u01/redologs/a`。 修改完如下: vi /home/oracle/create_db.sql ``` CREATE DATABASE catdb USER SYS IDENTIFIED BY oracle USER SYSTEM IDENTIFIED BY oracle LOGFILE GROUP 1 ('/u01/redologs/a/redo01a.log','/u01/redologs/b/redo01b.log') SIZE 100M BLOCKSIZE 512, GROUP 2 ('/u01/redologs/a/redo02a.log','/u01/redologs/b/redo02b.log') SIZE 100M BLOCKSIZE 512, GROUP 3 ('/u01/redologs/a/redo03a.log','/u01/redologs/b/redo03b.log') SIZE 100M BLOCKSIZE 512 MAXLOGFILES 5 MAXLOGMEMBERS 5 MAXLOGHISTORY 1 MAXDATAFILES 100 CHARACTER SET ZHS16GBK NATIONAL CHARACTER SET AL16UTF16 EXTENT MANAGEMENT LOCAL DATAFILE '/u01/oradata03/catdb/system01.dbf' SIZE 325M REUSE SYSAUX DATAFILE '/u01/oradata03/catdb/sysaux01.dbf' SIZE 325M REUSE DEFAULT TABLESPACE users DATAFILE '/u01/oradata03/catdb/users01.dbf' SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED DEFAULT TEMPORARY TABLESPACE tempts1 TEMPFILE '/u01/oradata03/catdb/temp01.dbf' SIZE 20M REUSE UNDO TABLESPACE undotbs DATAFILE '/u01/oradata03/catdb/undotbs01.dbf' SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED; ```

1.3 創建必要目錄並賦予權限

``` #redologs和datafiles mkdir -p /u01/redologs/a && mkdir -p /u01/redologs/b && mkdir -p /u01/oradata03/catdb chown oracle:oinstall /u01/redologs/a /u01/redologs/b /u01/oradata03/catdb #controlfiles mkdir -p /u01/system/catdb && mkdir -p /u02/system/catdb && mkdir -p /u03/system/catdb chown oracle:oinstall /u01/system/catdb /u02/system/catdb /u03/system/catdb ```

1.4 執行腳本建庫

### 1.4.1 聲明ORACLE_SID變量 ### ``` export ORACLE_SID=catdb ``` ### 1.4.2 編輯初始化參數文件 ### vi $ORACLE_HOME/dbs/init$ORACLE_SID.ora ``` DB_NAME=catdb CONTROL_FILES=('/u01/system/catdb/control01.ctl','/u02/system/catdb/control02.ctl','/u03/system/catdb/control03.ctl') MEMORY_TARGET=1G ``` ### 1.4.3 創建服務器參數文件並啟動實例 ### 創建服務器參數文件,以服務器參數文件啟動數據庫 ``` SQL> create spfile from pfile; SQL> startup nomount ``` ### 1.4.4 運行建庫腳本建庫 ### ``` SQL> @/home/oracle/create_db.sql

Database created.

然后執行以下腳本:

@?/rdbms/admin/catalog.sql
@?/rdbms/admin/catproc.sql
conn system/oracle
@?/sqlplus/admin/pupbld.sql

### 1.4.5 配置tnsnames.ora ###

CATDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = JY-DB02)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = catdb)
)
)


<h1 id="2">二、配置catdb為catalog數據庫</h1>
<h2 id="2.1">2.1 創建表空間</h2>

CREATE TABLESPACE TOOLS DATAFILE '/u01/oradata03/catdb/tools.dbf' SIZE 15M REUSE AUTOEXTEND ON NEXT 15M MAXSIZE 1500M;

<h2 id="2.2">2.2 創建用戶</h2>

CREATE USER rman IDENTIFIED BY rman
TEMPORARY TABLESPACE tempts1
DEFAULT TABLESPACE tools
QUOTA UNLIMITED ON tools;

GRANT RECOVERY_CATALOG_OWNER TO rman;

<h2 id="2.3">2.3 創建CATALOG</h2>

$ rman catalog rman/rman
RMAN> CREATE CATALOG;

<h2 id="2.4">2.4 目標數據庫注冊到CATALOG</h2>
在目標數據庫執行:

rman TARGET / CATALOG rman@catdb
REGISTER DATABASE;


<h1 id="3">三、管理catalog數據庫</h1>
<h2 id="3.1">3.1 創建和管理VPC(virtual private catalogs)</h2>
### 3.1.1 創建表空間,用戶,賦權 ###

create tablespace vpcusers datafile '/u01/oradata03/catdb/vpcusers01.dbf' size 30M autoextend on maxsize 300M;
CREATE USER vpc1 IDENTIFIED BY vpc1 DEFAULT TABLESPACE vpcusers QUOTA UNLIMITED ON vpcusers;
GRANT recovery_catalog_owner TO vpc1;

### 3.1.2 恢復目錄所有者RMAN登錄賦予vpc1用戶注冊數據庫權限 ###

$ rman catalog rman/rman@catdb
RMAN> GRANT REGISTER DATABASE TO vpc1;

### 3.1.3 虛擬專用目錄RMAN登錄創建虛擬CATALOG ###

RMAN> CONNECT CATALOG vpc1@catdb;
RMAN> CREATE VIRTUAL CATALOG;

如果是10.2版本或更早,需要SQL下執行存儲過程創建:

SQL> EXECUTE base_catalog_owner.DBMS_RCVCAT.CREATE_VIRTUAL_CATALOG;

### 3.1.4 恢復目錄所有者RMAN登錄賦予vpc1用戶已注冊數據庫的訪問權限 ###

$ rman catalog rman/rman@catdb
RMAN> GRANT CATALOG FOR DATABASE jingyu TO vpc1;

<h2 id="3.2">3.2 創建和管理存儲腳本</h2>
首先連接到目標數據庫和恢復目錄。
### 3.2.1 創建全局腳本 ###

CREATE GLOBAL SCRIPT global_full_backup
{
BACKUP DATABASE PLUS ARCHIVELOG;
DELETE OBSOLETE;
}

你可以創建腳本時同時加上描述性的注釋,比如:

CREATE GLOBAL SCRIPT global_full_backup
COMMENT 'use only with ARCHIVELOG mode databases'
{
BACKUP DATABASE PLUS ARCHIVELOG;
DELETE OBSOLETE;
}

### 3.2.2 創建本地腳本 ###

CREATE SCRIPT full_backup
{
BACKUP DATABASE PLUS ARCHIVELOG;
DELETE OBSOLETE;
}

創建腳本還可以從已有腳本文本文件獲取:

CREATE SCRIPT full_backup
FROM FILE '/tmp/my_script_file.txt';

### 3.2.3 替換存儲腳本 ###

REPLACE GLOBAL SCRIPT global_full_backup
COMMENT 'A script for full backup to be used with any database'
{
BACKUP AS BACKUPSET DATABASE PLUS ARCHIVELOG;
}

### 3.2.4 執行存儲腳本 ###

RUN
{
EXECUTE GLOBAL SCRIPT global_full_backup;
}

RUN
{
EXECUTE SCRIPT global_full_backup;
}

如果沒有本地腳本是global_full_backup這個名字,那么上面兩個命令效果一樣,如果有,那么第二個命令則會優先執行本地腳本。
### 3.2.5 創建和管理動態存儲腳本 ###
登錄RMAN

rman TARGET / CATALOG rman@catdb USING arc_backup bck0906 FY06Q3

創建動態存儲腳本:

CREATE SCRIPT quarterly {
ALLOCATE CHANNEL c1
DEVICE TYPE sbt
PARMS 'ENV=(OB_MEDIA_FAMILY=&1)';
BACKUP
TAG &2
FORMAT '/disk2/bck/&1%U.bck'
KEEP FOREVER
RESTORE POINT &3
DATABASE;
}

替換成符合我實際環境可執行的:

Replace SCRIPT quarterly {
ALLOCATE CHANNEL c1
DEVICE TYPE disk;
BACKUP
TAG '&2'
FORMAT '/u01/jingyu/&1%U.bck'
KEEP FOREVER
RESTORE POINT '&3'
DATABASE;
}

執行:

RUN
{
EXECUTE SCRIPT quarterly
USING arc_backup
bck1206
FY06Q4;
}

### 3.2.6 打印存儲腳本 ###
打印存儲腳本:

PRINT SCRIPT full_backup;

打印內容發送到腳本:

PRINT SCRIPT full_backup
TO FILE '/tmp/my_script_file.txt';

<h2 id="3.3">3.3 刪除恢復目錄</h2>
連接到catalog,執行刪除(兩次確認)。

RMAN> drop catalog;
RMAN> drop catalog;

<h2 id="3.4">3.4 更新恢復目錄</h2>
比如RMAN恢復目錄版本是10g,那么11g版本的RMAN客戶端需要升級更新本地包和模式。
如果你10gR1版本之前創建的恢復目錄, 並且RECOVERY_CATALOG_OWNER角色不包含CREATE TYPE權限,那么需要賦予CREATE TYPE的權限給恢復目錄所有者。

SQL> GRANT CREATE TYPE TO rman;

升級catalog(兩次確認):

RMAN> upgrade catalog;
RMAN> upgrade catalog;


<h1 id="4">四、Reference</h1>
- Oracle® Database Backup and Recovery User's Guide 11g Release 2 (11.2)
- OCP 認證考試指南 (1Z0-053)[M]. 清華大學出版社, 2010.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM