Oacle 에서 데이터베이스 의 DBID 정 보 를 어떻게 얻 습 니까?

2965 단어 데이터 뱅 크DBID
1.v$database 조회 획득
DBID 는 제어 파일 과 데이터 파일 에 기록 되 어 있 기 때문에 데이터 베 이 스 를 mount 할 수 있다 면 v$database 보 기 를 조회 하여 얻 을 수 있 습 니 다.

SQL> alter database mount;
Database altered.
SQL> select dbid from v$database;
      DBID
----------
3152029224
2.nomount 상태 에서
데이터베이스 에 자동 제어 파일 백업(Oracle9i)이 설정 되 어 있 고 이름 이 부족 하 다 면 자동 백업 파일 에서 DBID 를 얻 을 수 있 습 니 다.

[oracle@jumper dbs]$ cd $ORACLE_HOME/dbs
[oracle@jumper dbs]$ ll c-*
-rw-r----- 1 oracle dba 3375104 Dec 21 11:13 c-3152029224-20051221-00
-rw-r----- 1 oracle dba 3358720 Jan 21 14:03 c-3152029224-20060121-00
-rw-r----- 1 oracle dba 3358720 Jan 21 14:08 c-3152029224-20060121-01
여기 315029224 가 바로 DBID 입 니 다.10g 에서 Flash Recovery Area 를 사용 하면 이 이름 규칙 이 없습니다.
3.자동 백업 에서 복구
DBID 가 필요 하거나 부족 한 것 은 일반적으로 모든 제어 파일 을 잃 어 버 렸 기 때 문 입 니 다.복구 할 때 오류 가 발생 할 수 있 습 니 다.

[oracle@jumper dbs]$ rman target  /

Recovery Manager: Release 9.2.0.4.0 - Production

Copyright (c) 1995, 2002, Oracle Corporation.  All rights reserved.

connected to target database: conner (not mounted)

RMAN> restore controlfile from autobackup;

Starting restore at 05-FEB-06

using target database controlfile instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=11 devtype=DISK
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 02/05/2006 20:47:25
RMAN-06495: must explicitly specify DBID with SET DBID command

자동 백업 이 존재 하면 제어 파일 을 직접 복구 할 수 있 습 니 다.mount 데이터 베 이 스 를 사용 하면 됩 니 다.

RMAN> restore controlfile from '/opt/oracle/product/9.2.0/dbs/c-3152029224-20051221-00';

Starting restore at 05-FEB-06

using channel ORA_DISK_1
channel ORA_DISK_1: restoring controlfile
channel ORA_DISK_1: restore complete
replicating controlfile
input filename=/opt/oracle/oradata/conner/control01.ctl
output filename=/opt/oracle/oradata/conner/control02.ctl
output filename=/opt/oracle/oradata/conner/control03.ctl
Finished restore at 05-FEB-06

4.살아 남 은 파일 에서 직접 읽 기
DBID 는 데이터 파일 및 제어 파일 에 존재 하기 때문에 PL/SQL 프로그램 을 통 해 파일 에서 직접 읽 을 수 있 습 니 다.

SQL> select eygle.get_dbid('/opt/oracle/oradata/conner','user02.dbf') from dual;

EYGLE.GET_DBID('/OPT/ORACLE/OR
------------------------------
3152029224
SQL> select dbid from v$database;
DBID
----------
3152029224

사실 더 쉬 운 건 BBED 로 하면 돼 요.
이런 방법 은 단지 테스트 흥미 로 인해 추천 되 지 않 는 다.

좋은 웹페이지 즐겨찾기