9.3Truncate(454p).txt

9Drop_user(466p).txt

※ 방법 2가지를 이해해야함 


① clone DB 로 데이터를 복구한 뒤에 network 인 dblink 로 연결 해서 데이터 옮기기

② export / import 를 수행해서 데이터를 옮기기 


oracle 설치 후 할일

1. sys 비번 설정하기 

2.  oracle port 바꾸기 



◎ Oracle Net Work 

□ 접속절차

① 확인

② 요청

③ 요청

④ Connection

⑤ Sesseion

※ 최초접속에만 ② 적용하고 그다음 부터는 ② 생략  


□ Client

Client 측에서는 tnsnames. ora 를 확인 

tnsnames.ora : 접속하려는 oracle 서버에 대한 정보 를 적음 

(SID , Port , 주소(ip, host name) 등의 정보)



□ Server

Server 쪽에는 listener.ora 

(SID , Port , 주소(ip, host name) 등의 정보, 여려개의 Listener로 나눌 수 있음 )




※ oracle 과 Listener는 별개의 프로그램 

※ 복구시에는 운영DB가 Clinent 가되고 CloneDB가 Server의 역할을 하게됨

※ port 는 program 별로 할당된 들어오는 문  ex) http:80 , oracle=1521 

※ 1개의 Server에 실제로 oracle Instance를 여러개 실행해 놓고 할 수 있음 


※ Listener 


※ conectction & sesstion





□ window(oracle clinent program) → linux(oracle server) 실습

[Window Client ]


①  관리자 실행 setup Program 설치하기 (주의 할점은 관리자 선택)

     C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Oracle - OraClient11g_home1

② 설치 완료후 윈도우 → 모든프로그램→ OraClient11g_home1→ →구성 및 이전 툴

    → Net Configuration Assistant(관리자 권한 실행)

③ 설치 화면 나옴 1

사진

01234567891011

사진

- 이름 지정 방법구성, 다음

-  기본값대로 다음

-  완료화면

-------------

- 로컬 네트 서비스 이름 구성 다음

- 추가 다음

- 서비스 이름은 database 이름(SID)하고 같게 해야함 ★★

- TCP 다음

- oracle 서버 확인후에 호스트 이름에 ip 주소를 넣어줌, 포트 확인하기

- 테스트를 수행합니다 다음 

           

④ [ Linux Server 설정] (리스너가 없습니다 경우)

① 콘솔 화면이 아닌 display 화면으로 가서 터미널 실행 후 export LANG=ko , netca 

사진

012

사진

② Listener 구성 

③ add 선택

④ 이름 선택 

[oracle@server113 ~]$ cd /app/oracle/product/11g/network/admin/listener.ora 가 생겨야 함

⑤ [oracle@server113 admin]$ vi listener.ora

[내용 추가해줄것] 


SID_LIST_LISTENER =

 (SID_LIST =

  (SID_DESC =

   (SID_NAME = testdb)

   (ORACLE_HOME = /app/oracle/product/11g)

  )

 )


⑥ 완료된 후에 consol 에서 lsnrctl 후  status  , start listener , stop listener 


③ 설치 화면 나옴 2 

- 로그인문제의 경우 계정을 scott/tiger 로 바꿀것 

- 네트 서비스이름도 testdb로 해줄것을 권장 (SID 와 같게해주기 쉽게 구분하기위해)

- 다른 네트 서비스를 구성하시겠습니까 아니오

C:\app\stu\product\11.2.0\client_1\network\admin/tnsnames.ora 가 있어야함 

사진

012

사진

⑤ 확인 하기 window cmd 에서 tnsping testdb

    sqlplus scott/tiger@testdb

    sqlplus sys/oracle@testdb as sysdba


※ 설정바뀌면 리스너 재시작 할것 

※  네트워크 설정이 Bridged 여야 되는듯= 같은 대역이여야 됨 

※ 네트 서비스 : tnsnames.ora 설정되어 있는 접속하려는 db 정보 

※ Listener :  DB의 접속하기 위한 정보기 들어 있는 것 listener.ora

※ lsnrctl start listener2 : 번호 조심할것!! 








◎ DB link 


□ 개요

    물리적인 DB server 2대를 연결하여 1개의 DB server 처럼 사용 


※ 기존의 export/import 활용한 복구


※  DB LINK 를 활용한 복구





□ cloneDB 만들어서 DB link 연결 실습

 개요: 장애가 발생한 운영DB 를 복사해서 Clone DB 에서 데이터를 복구 후에 db link 생성해서 운영 DB로 이동하기



[테이블 만들어 주기]

 create table scott.ctest(

  2  no number,

  3  name varchar2(10),

  4  address varchar2(10))

  5  tablespace users;



[root 돌리기 ]


begin

for i in 1..100 loop

insert into scott.ctest

values(i, dbms_random.string('a',9),

dbms_random.string('b',9));

end loop;

commit;

end;

/


[조회하기]

select count(*) from scott.ctest;

 COUNT(*)

----------

       100


[시간 조회하기]

select to_char(sysdate,'YYYY-MM-DD:HH24:MI:SS') from dual;

TO_CHAR(SYSDATE,'YY

-------------------

2015-04-05:10:54:34




SQL> truncate table scott.ctest;


테이블이 잘렸습니다.


SQL> select count(*) from scott.ctest;


  COUNT(*)

----------

         0


SQL> alter system switch logfile;


시스템이 변경되었습니다.


SQL> /


시스템이 변경되었습니다.


SQL> /


시스템이 변경되었습니다.


SQL> /


시스템이 변경되었습니다.


SQL> /


시스템이 변경되었습니다.


SQL>


[복구는 알아서 할것 ㅋㅋㅋㅋ]



[Listner 연결하기]

운영 DB 를 Client 로 만들려면 tnsnames.ora 가있어야함 


/app/oracle/product/11g/network/admin 위치에 만들어 줄것 (sample에서 복사하면 쉬움)


listener.ora (복구 Server에 대한 정보 )


tnsnames.ora (운영 DB (Clinent 쪽)에서 요청하는)




[Listener2 실행하기]

[oracle@server113 admin]$ lsnrctl start listener2


[ Clinet 에 설정된 net 서비스 실행하기]

[oracle@server113 admin]$ tnsping clonedb


[Clinet 에서 clone DB 로 연결하는 db link 생성]


SQL> select instance_name from v$instance;

INSTANCE_NAME
----------------
testdb

SQL> create database link clone_link
  2  connect to scott identified by tiger
  3  using 'clonedb';

Database link created.

[복구 서버에 접속 가능한지 테스트 하기]
SQL> select count(*) from  scott.ctest@clone_link;

  COUNT(*)
----------
       100




[원래는 없었는데]
SQL> select * from scott.ctest;

no rows selected


[복구 하기]
SQL> insert into scott.ctest
  2  select *
  3  from scott.ctest@clone_link;

100 rows created.

SQL> select count(*) from scott.ctest;

  COUNT(*)
----------
       100





□ 여러가지 짬뽕 장애





SQL> create tablespace test4

  2  datafile '/app/oracle/oradata/testdb/test04.dbf' size 10M

  3  autoextend on;



SQL> create temporary tablespace temp_test4

  2  tempfile '/app/oracle/oradata/testdb/temp_test04.dbf' size 10M

  3  autoextend on;



SQL> create user usera

  2  identified by abc123

  3  default tablespace test4

  4  temporary tablespace temp_test4;



SQL> grant connect , resource to usera;


SQL> conn usera/abc123;


USERA>create table gogak

  2  (no number ,

  3  name varchar2(10),

  4  address varchar2(20));



USERA>create table sangpum

  2  (no number,

  3  name varchar2(10),

  4  qty number);



begin

for i in 1..1000 loop

insert into gogak values(i, dbms_random.string('A',10), dbms_random.string('K',10));

end loop;

commit;

end;

/




begin 
for i in 1..1000 loop
insert into sangpum values(i, dbms_random.string('A',10), dbms_random.value(1,9));
end loop;
commit;
end;
/

USERA>select  count(*) from gogak;

  COUNT(*)
----------
      1000


USERA>select  count(*) from sangpum;

  COUNT(*)
----------
      1000

USERA>conn sys/oracle as sysdba;


SYS>select to_char(sysdate,'YYYY-MM-DD:HH24:MI:SS') from dual;

TO_CHAR(SYSDATE,'YY
-------------------
2015-04-05:13:22:50


SYS>drop user usera cascade;


SYS>select  count(*) from gogak;
select  count(*) from gogak
                      *
ERROR at line 1:
ORA-00942: table or view does not exist


SYS>select  count(*) from sangpum;
select  count(*) from sangpum
                      *
ERROR at line 1:
ORA-00942: table or view does not exist

[여러번 수행]
SYS>alter system switch  logfile; 




[장애를 복구 후에]
[리스너 , tnsname 해서 연결후에]


[운영 서버에 지워진 다시 usera를 생성해주기]
?? 어떻게 확인할 것인가???


[db link 해주기]
SYS>create database link c2
  2  connect to usera identified by abc123
  3  using 'clonedb2';

[확인하기]
SYS>select count(*) from usera.gogak@c2;

[복구 하기 CTAS] 

SYS>create table usera.gogak
  2  as
  3  select * from usera.gogak@c2;

Table created.

SYS>create table usera.sngpum
  2  as
  3  select * from usera.sangpum@c2;



















'ORACLE > Back & Recovery' 카테고리의 다른 글

12장 RMAN(BACKUP)  (0) 2015.04.24
11장 FLASHBACK  (0) 2015.04.23
9장 무정지 상태에서 복구  (0) 2015.04.21
8장 데이터 이동하기 2 (다못함)  (0) 2015.04.21
8장 데이터 이동하기  (0) 2015.04.20
Posted by 히드라야
,