ORACLE/TUNING2010. 3. 23. 13:35
반응형
출처 : http://www.urbantree.wo.tc/entry/5-Using-

Statspack
생성



SQL> shutdown abort
SQL> startup

SQL> !ls $ORACLE_HOME/rdbms/admin/sp*
...
/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/spauto.sql
/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/spcpkg.sql
/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/spcreate.sql
/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/spctab.sql
/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/spcusr.sql
...

SQL> @?/rdbms/admin/spcreate.sql
..
Enter value for perfstat_password : perfstat
Enter value for default_tablespace : enter
Enter value for temporary_tablespace : enter
..


Statspack 생성 확인


SQL> show user
USER is "PERFSTAT"

SQL> col object_name for a40
SQL> select object_name, object_type from user_objects order by 2;
....
OBJECT_NAME                              OBJECT_TYPE
---------------------------------------- -------------------
V_$DATAGUARD_STATUS                      VIEW
V_$THREAD                                VIEW
V_$PROCESS                               VIEW
V_$BGPROCESS                             VIEW
V_$SESSION                               VIEW
V_$LICENSE                               VIEW
V_$TRANSACTION                           VIEW
V_$BSP                                   VIEW
V_$FAST_START_SERVERS                    VIEW
WEEKNIGHT_WINDOW                         WINDOW
WEEKEND_WINDOW                           WINDOW
MAINTENANCE_WINDOW_GROUP                 WINDOW GROUP
...


수동 Snapshot 생성


SQL> select * from stats$sga;
SQL> exec statspack.snap
SQL> col name for a40
SQL> select * from stats$sga;
   SNAP_ID       DBID INSTANCE_NUMBER NAME                                          VALUE STARTUP_T PAR VERSION
---------- ---------- --------------- ---------------------------------------- ---------- --------- --- -----------------
         1 1235361507               1 Fixed Size                                  1218992
         1 1235361507               1 Variable Size                             100664912
         1 1235361507               1 Database Buffers                          180355072
         1 1235361507               1 Redo Buffers                                2973696

4 rows selected.

SQL> variable no number
SQL> exec :no :=statspack.snap
SQL> print no


자동 Snapshot 생성


SQL> !ls $ORACLE_HOME/rdbms/admin/sp*
/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/spauto.sql
/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/spcpkg.sql
/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/spcreate.sql
/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/spctab.sql
/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/spcusr.sql
....

SQL> !more $ORACLE_HOME/rdbms/admin/spauto.sql
...
variable jobno number;
variable instno number;
begin
  select instance_number into :instno from v$instance;
  dbms_job.submit(:jobno, 'statspack.snap;', trunc(sysdate+1/24,'HH'), 'trunc(SYSDATE+1/24,''HH'')'
, TRUE, :instno);
  commit;
end;
/
...


Report 생성


SQL> !ls $ORACLE_HOME/rdbms/admin/sp*
...
/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/sprepcon.sql
/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/sprepins.sql
/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/spreport.sql
/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/sprepsql.sql
/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/sprsqins.sql
/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/sptrunc.sql
...

SQL> @?/rdbms/admin/spreport.sql
...

Listing all Completed Snapshots

                                                       Snap
Instance     DB Name        Snap Id   Snap Started    Level Comment
------------ ------------ --------- ----------------- ----- --------------------
orcl         ORCL                 1 15 Jan 2010 14:16     5
                                 11 15 Jan 2010 14:29     5

※ snap level 이 커질수록 내용이 더욱 자세하다

Specify the Begin and End Snapshot Ids
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Enter value for begin_snap: 1
Begin Snapshot Id specified: 1

Enter value for end_snap: 11
End   Snapshot Id specified: 11



Specify the Report Name
~~~~~~~~~~~~~~~~~~~~~~~
The default report file name is sp_1_11.  To use this name,
press <return> to continue, otherwise enter an alternative.

Enter value for report_name: enter

...

End of Report ( sp_1_11.lst )

SQL> !ls sp*
SQL> !more sp_1_11.lst


Statspack 삭제


SQL> !ls $ORACLE_HOME/rdbms/admin/sp*
...
/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/spdoc.txt
/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/spdrop.sql
/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/spdtab.sql
/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/spdusr.sql
/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/sppurge.sql
/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/sprepcon.sql
/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/sprepins.sql
...

SQL> @?/rdbms/admin/spdrop.sql
반응형

'ORACLE > TUNING' 카테고리의 다른 글

AWR - Monitoring & Tuning  (0) 2010.03.23
AWR (Automatic Workload Repository)  (0) 2010.03.23
[Oracle 물리설계] 제5부 영역감시  (0) 2010.02.11
Oracle Hidden Parameter 란  (0) 2010.01.26
FAST_START_MTTR_TARGET  (0) 2010.01.18
Posted by [PineTree]
ORACLE/Backup & Recovery2010. 3. 22. 11:12
반응형

출처:http://www.oracleinternal.com/

데 이터베이스를 복사하는 절차에 대해서 알아보겠습니다.
orcl DB를 clon으로 복사할것이며 대략적인 절차는 다음과 같습니다.

1. Parameter file 생성
2. Control file 생성
3. 새로운 데이터베이스에 필요한 디렉토리 생성
4. datafile 복사
5. clone DB로 접속후 control을 생성하기 위해 nomount로 시작합니다.
6. control file 생성
7. 데이터베이스를 오픈합니다.

1. Parameter file 준비
SQL> conn / as sysdba
Connected.
SQL> create pfile='$ORACLE_HOME/dbs/initclone.ora' from spfile;

File created.

생성된 pfile을 수정합니다.
SQL> host vi $ORACLE_HOME/dbs/initclone.ora
모든 인스턴스를 의미하는 *.을 치환을 통하여 제거합니다.
:%s/*.//g
메모리 사이즈를 경정하지 않습니다. 다음 부분이 들어가는 행을 삭제합니다.
db_cache_size, java_pool_size, large_pool_size, shared_pool_size, streams_pool_size
orcl이 들어간 부분을 clone으로 치환합니다.
:%s/orcl/clone/g
수정된 pfile 입니다.


audit_file_dest='/u01/app/oracle/admin/clone/adump'

background_dump_dest='/u01/app/oracle/admin/clone/bdump'

compatible='10.2.0.1.0'

control_files='/u01/app/oracle/oradata/clone/control01.ctl','/u01/app/oracle/oradata/clone/control02.ctl','/u01/app/oracle/oradata/clone/control03.ctl'

core_dump_dest='/u01/app/oracle/admin/clone/cdump'

db_block_size=8192

db_file_multiblock_read_count=16

db_name='clone'

db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'

db_recovery_file_dest_size=2147483648

dispatchers='(PROTOCOL=TCP) (SERVICE=cloneXDB)'

job_queue_processes=10

open_cursors=300

pga_aggregate_target=94371840

processes=150

remote_login_passwordfile='EXCLUSIVE'

sga_target=285212672

undo_management='AUTO'

undo_tablespace='UNDOTBS1'

user_dump_dest='/u01/app/oracle/admin/clone/udump'


2. Control file 생성
Control file 생성 스크립트를 생성합니다.
SQL> alter database backup controlfile to trace;

Database altered.

SQL> host ls -t $ORACLE_BASE/admin/orcl/udump/ | head -1
orcl_ora_2213.trc

user_dump_dest 에서 생성된 스크립트를 찾습니다.
실제 경로는 다음을 통하여 확인할수 있습니다.
SQL> select value from v$parameter where name='user_dump_dest';

VALUE
----------------------------------------
/u01/app/oracle/admin/orcl/udump

가장 최근에 발생한 파일을 찾습니다.
SQL> host ls -t $ORACLE_BASE/admin/orcl/udump/ | head -1
orcl_ora_2213.trc

생성된 파일을 확인하고 활용하기 위해 복사합니다.
SQL> host cp $ORACLE_BASE/admin/orcl/udump/orcl_ora_2213.trc /home/oracle/control.sql

control.sql 파일을 편집합니다.
SQL> ed  /home/oracle/control.sql
[2. RESETLOGS case]를 검색하여 그 아래 내용을 활용할 것입니다.
/2. RESETLOGS case
dgg를 타이핑 하여 위의 내용은 모두 삭제합니다.(vi명령어)
orcl 을 clone로 치환합니다. 대소문자 따로 두번실행합니다.
:%s/orcl/clone/g
:%s/ORCL/CLONE/g
그 외에 적절하게 변경합니다. 다음은 최소한의 수정을 한 control file입니다.


CREATE CONTROLFILE SET DATABASE "CLONE" RESETLOGS  ARCHIVELOG


    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 '/u01/app/oracle/oradata/clone/redo01.log'  SIZE 50M,
  GROUP 2 '/u01/app/oracle/oradata/clone/redo02.log'  SIZE 50M,
  GROUP 3 '/u01/app/oracle/oradata/clone/redo03.log'  SIZE 50M
-- STANDBY LOGFILE
DATAFILE
  '/u01/app/oracle/oradata/clone/system01.dbf',
  '/u01/app/oracle/oradata/clone/undotbs01.dbf',
  '/u01/app/oracle/oradata/clone/sysaux01.dbf',
  '/u01/app/oracle/oradata/clone/users01.dbf',
  '/u01/app/oracle/oradata/clone/example01.dbf',
  '/u01/app/oracle/oradata/clone/staging01.dbf',
  '/u01/app/oracle/oradata/clone/resum_ts.dbf',
  '/u01/app/oracle/oradata/clone/alter1.dbf'
CHARACTER SET WE8ISO8859P1
;

3. 새로운 데이터베이스에 필요한 디렉토리 생성
SQL> host mkdir -p $ORACLE_BASE/admin/clone/bdump
SQL> host mkdir -p $ORACLE_BASE/admin/clone/cdump
SQL> host mkdir -p $ORACLE_BASE/admin/clone/udump
SQL> host mkdir -p $ORACLE_BASE/admin/clone/adump
SQL> host mkdir -p $ORACLE_BASE/oradata/clone

4. datafile 복사
데이터파일을 복사하기 위해 원본 데이터베이스를 종료합니다.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

데이터파일을 복사합니다.
SQL> host cp $ORACLE_BASE/oradata/orcl/*.dbf $ORACLE_BASE/oradata/clone/

5. clone DB로 접속후 control을 생성하기 위해 nomount로 시작합니다.

OS$ export ORACLE_SID=clone
OS$ sqlplus / as sysdba

SQL> startup nomount
ORACLE instance started.

Total System Global Area  285212672 bytes
Fixed Size            1218992 bytes
Variable Size           92276304 bytes
Database Buffers      188743680 bytes
Redo Buffers            2973696 bytes

6. control file 생성
위 에서 편집하여 만들어준 control을 실행합니다.
SQL> @control

Control file created.

archive log file이 없지만 recover한번 해보겠습니다.
SQL> recover database until cancel using backup controlfile;
ORA-00279: change 863069 generated at 10/28/2009 23:07:20 needed for thread 1
ORA-00289: suggestion : /u01/app/oracle/flash_recovery_area/CLONE/archivelog/2009_10_28/o1_mf_1_11_%u_.arc
ORA-00280: change 863069 for thread 1 is in sequence #11


Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
CANCEL
Media recovery cancelled.

7. 데이터베이스를 오픈합니다.
이제 불완전복구 방식으로 데이터베이스를 오픈합니다.
alter database open resetlogs;

Database altered.

데이터베이스 인스턴스 상태 조회
SQL> select status from v$instance;

STATUS
------------------------------------
OPEN

데이터베이스가 정상적으로 복사되어 오픈되었습니다.
반응형
Posted by [PineTree]
ORACLE/Backup & Recovery2010. 3. 19. 21:59
반응형



SCN이 틀렸을 경우에 복구하는 방법인데요.
정말 위급한 복구 상황에 닥쳤을 경우에 유용하겠지요.
일반적인 복구의 개념이 아니라..
어거지로 어떻게든 복구해서 올려야 하는 상황에 사용하시길
바랍니다. 꼭 정말 위험한 상황에서 사용해야지.
일반적인 복구 상황에서 사용하시면 안됩니다.

아래에서.. 복구 작업이 끝난이후 꼭 해야 하는 것은..

DB재생성후 export후 import 하는 것이 권장된답니다.
그리고 tempfile 추가하는 것도 잊지 말구요.
undo도 깨뜨리고 하니 새로 생성하셔야 합니다.

최악의 복구시나리오시에.. 그래도 해야 할 것은.. system tablespace는 무조건 백업해두어야 합니다. system tablespace가 깨지면 'dul' 유틸을 통해서 블록을 읽으는 복구도 불가능하다고 하네요. system tablespace의 bootstrap이 깨지면 너무 오래된 백업이라면 object를 생성한 dictionary 정보가 없으니 당연히 못쓰겠지요..
아래에서도 마지막에 만든 k4 라는 테이블은 데이터는 있는데
테이블은 dictionary 정보에 없는 기이한 일이 될 수도 있겠지요.
system을 먼저 cp 백업하고. 테이블만들고 datafile을 백업한다면요..

_corrupted_rollback_segments=true => rollback segment가 깨졌음, commit을 했다고 오라클을 속임, _offline_rollback_segments 강제로 rollback segment를 offline 시킴(_corrupted~, _offline~ 은 같이사용
_allow_resetlogs_corruption=true =>redo log 의 한계범위 내에서 데이터파일의 SCN이 틀어져 있거나 또는 recover시에 archive를 찾지 못해서 fail났을 경우, 즉 current redo log를 통해서 복구가 불가능할 경우, 억지로 current redo log를 reset log 시키고 open하는 파라미터

ORA- 10501 event를 통해서 adjust scn은 아래와 같은 레벨이 깨졌을
경우 레벨을 올려가면서 복구하는 방법입니다.

10501, 00000, "periodically check selected heap"
// *Cause:
// *Action:
//    Level:  0x01 PGA
//       0x02 SGA
//       0x04 UGA
//       0x08 current call
//       0x10 user call
//       0x20 large allocation pool



begin backup을 하지 않고 cp로 복사해서 백업을 했을 경우 복구 방법 , archive도 없는 상태이며 SCN이 모두 틀림


1. 트랜잭션이 있는 상태에서 cp로 백업
vi kkk.sql
create table k1 tablespace data02 as select * from dba_segments;
insert into k1 select * from k1;
commit;
create table k2 tablespace data01 as select * from dba_objects;
insert into k2 select * from k2;
insert into k1 select * from k1;
commit;
create table k3 tablespace users as select * from dba_extents;
insert into k3 select * from k3;
commit;
vi kkk2.sql
insert into k1 select * from k1;
insert into k2 select * from k2;
insert into k3 select * from k3;
commit;

SQL> @kkk
@kkk2
@kkk2
@kkk2
@kkk2
@kkk2
@kkk2
@kkk2
SQL> !cp /data1/oradata/PROD/*.dbf PROD_CP
SQL> alter database backup controlfile to '/data1/oradata/PROD_CP/control01.ctl';
SQL> !cp /data1/oradata/PROD/system01.dbf PROD_CP
SQL> create table k4 tablespace users  as select * from dba_extents;

- archive도 없음
mv archive archive3
2. cp로 백업한 것을 restore함(datafile, controlfile만 존재, redo log는 없음)
mv PROD PROD_CP_ORG
mv PROD_CP PROD


3. recovery status 확인
SQL> startup
ORACLE instance started.
Total System Global Area  101799240 bytes
Fixed Size                   456008 bytes
Variable Size              50331648 bytes
Database Buffers           50331648 bytes
Redo Buffers                 679936 bytes
Database mounted.
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open


4. 복구 시도
archive 가 없으므로 controlfile trace에서 RESETLOGS ARCHIVELOG => RESETLOGS NOARCHIVELOG로 변경

(1) 일반적인 복구 시도했으나 archive가 없음
SQL> recover database;
ORA-00283: recovery session canceled due to errors
ORA-01610: recovery using the BACKUP CONTROLFILE option must be done

SQL> recover database until cancel using backup controlfile;
ORA-00279: change 5531180 generated at 11/11/2005 00:20:07 needed for thread 1
ORA-00289: suggestion : /data1/oradata/archive/1_37.arc
ORA-00280: change 5531180 for thread 1 is in sequence #37

Specify log: {=suggested | filename | AUTO | CANCEL}
ORA-00308: cannot open archived log '/data1/oradata/archive/1_37.arc'
ORA-27037: unable to obtain file status
SVR4 Error: 2: No such file or directory
Additional information: 3

ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: '/data1/oradata/PROD/system01.dbf'

(2) resetlog open도 불가능함
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: '/data1/oradata/PROD/system01.dbf'

(3) hidden parameter 적용
 initPROD.ora 파일에 아래를 추가

_offline_rollback_segments=(_SYSSMU1$,_SYSSMU2$,_SYSSMU3   $,_SYSSMU4$,_SYSSMU5$,_SYSSMU6$,_SYSSMU7$,_SYSSMU8$,_SYSSMU9$,_SYSSMU10$)

_corrupted_rollback_segments=true

_allow_resetlogs_corruption=true

(4) controlfile 재생성
SQL> alter database backup controlfile to trace;
SQL> show parameter user_dump_dest
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
user_dump_dest                       string      /data1/oradata/admin/PROD/udump

- 트레이스에서 RESETLOGS ARCHIVELOG => RESETLOGS NOARCHIVELOG 로 변경

CREATE CONTROLFILE REUSE DATABASE "PROD" RESETLOGS NOARCHIVELOG
--  SET STANDBY TO MAXIMIZE PERFORMANCE
   MAXLOGFILES 16
   MAXLOGMEMBERS 2
   MAXDATAFILES 30
   MAXINSTANCES 3
   MAXLOGHISTORY 337
LOGFILE
 GROUP 1 '/data1/oradata/PROD/log01a.log'  SIZE 50M,
 GROUP 2 '/data1/oradata/PROD/log02a.log'  SIZE 50M,
 GROUP 3 '/data1/oradata/PROD/log03b.log'  SIZE 50M
-- STANDBY LOGFILE
DATAFILE
 '/data1/oradata/PROD/system01.dbf',
 '/data1/oradata/PROD/undotbs.dbf',
 '/data1/oradata/PROD/users01.dbf',
 '/data1/oradata/PROD/data01_02.dbf',
 '/data1/oradata/PROD/data02_02.dbf',
 '/data1/oradata/PROD/data01_03.dbf',
 '/data1/oradata/PROD/data01_04.dbf',
 '/data1/oradata/PROD/data01_01.dbf',
 '/data1/oradata/PROD/data02_01.dbf',
 '/data1/oradata/PROD/users02.dbf'
CHARACTER SET KO16KSC5601;
(5) DB재기동후 controlfile 재생성
SQL> startup nomount
ORACLE instance started.
Total System Global Area  101799240 bytes
Fixed Size                   456008 bytes
Variable Size              50331648 bytes
Database Buffers           50331648 bytes
Redo Buffers                 679936 bytes
SQL>
SQL> CREATE CONTROLFILE REUSE DATABASE "PROD" RESETLOGS NOARCHIVELOG
 2  --  SET STANDBY TO MAXIMIZE PERFORMANCE
 3      MAXLOGFILES 16
 4      MAXLOGMEMBERS 2
 5      MAXDATAFILES 30
 6      MAXINSTANCES 3
 7      MAXLOGHISTORY 337
 8  LOGFILE
 9    GROUP 1 '/data1/oradata/PROD/log01a.log'  SIZE 50M,
10    GROUP 2 '/data1/oradata/PROD/log02a.log'  SIZE 50M,
11    GROUP 3 '/data1/oradata/PROD/log03b.log'  SIZE 50M
12  -- STANDBY LOGFILE
13  DATAFILE
14    '/data1/oradata/PROD/system01.dbf',
15    '/data1/oradata/PROD/undotbs.dbf',
16    '/data1/oradata/PROD/users01.dbf',
17    '/data1/oradata/PROD/data01_02.dbf',
18    '/data1/oradata/PROD/data02_02.dbf',
19    '/data1/oradata/PROD/data01_03.dbf',
20    '/data1/oradata/PROD/data01_04.dbf',
21    '/data1/oradata/PROD/data01_01.dbf',
22    '/data1/oradata/PROD/data02_01.dbf',
23    '/data1/oradata/PROD/users02.dbf'
24  CHARACTER SET KO16KSC5601;
Control file created.


(6) db를 resetlogs open하려하나 DB가 DOWN 됨
SQL> recover database until cancel using backup controlfile;
ORA-00279: change 5531180 generated at 11/11/2005 00:20:07 needed for thread 1
ORA-00289: suggestion : /data1/oradata/archive/1_37.arc
ORA-00280: change 5531180 for thread 1 is in sequence #37

Specify log: {=suggested | filename | AUTO | CANCEL}
cancel
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: '/data1/oradata/PROD/system01.dbf'

ORA-01112: media recovery not started

SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01092: ORACLE instance terminated. Disconnection forced

(7) alert log 분석
 - system tablespace에서 메모리를 관리할 때 오라클 내부적으로 사용하는 bootstrap 깨짐
 - 600 [4000] 에러가 발생, hidden parameter 을 써서 rollback semgent를 offline , corrupt
    시켰기 때문에 발생하는 것으로 판단됨
   
ARC1: Media recovery disabled
Fri Nov 11 00:48:00 2005
Errors in file /data1/oradata/admin/PROD/udump/prod_ora_12450.trc:
ORA-00600: internal error code, arguments: [4000], [5], [], [], [], [], [], []
Fri Nov 11 00:48:04 2005
Errors in file /data1/oradata/admin/PROD/udump/prod_ora_12450.trc:
ORA-00704: bootstrap process failure
ORA-00704: bootstrap process failure
ORA-00600: internal error code, arguments: [4000], [5], [], [], [], [], [], []
Fri Nov 11 00:48:04 2005
Error 704 happened during db open, shutting down database
USER: terminating instance due to error 704
Instance terminated by USER, pid = 12450
ORA-1092 signalled during: alter database open resetlogs...

(8) DB재기동 및 controlfile , redo를 모두 지움, controlfile 재생성
SQL> startup nomount
ORACLE instance started.
Total System Global Area  101799240 bytes
Fixed Size                   456008 bytes
Variable Size              50331648 bytes
Database Buffers           50331648 bytes
Redo Buffers                 679936 bytes
SQL> !rm /data1/oradata/PROD/*.log
SQL> !rm /data1/oradata/PROD/*.ctl
SQL>
SQL> CREATE CONTROLFILE REUSE DATABASE "PROD" RESETLOGS NOARCHIVELOG
 2  --  SET STANDBY TO MAXIMIZE PERFORMANCE
 3      MAXLOGFILES 16
 4      MAXLOGMEMBERS 2
 5      MAXDATAFILES 30
 6      MAXINSTANCES 3
 7      MAXLOGHISTORY 337
 8  LOGFILE
 9    GROUP 1 '/data1/oradata/PROD/log01a.log'  SIZE 50M,
10    GROUP 2 '/data1/oradata/PROD/log02a.log'  SIZE 50M,
11    GROUP 3 '/data1/oradata/PROD/log03b.log'  SIZE 50M
12  -- STANDBY LOGFILE
13  DATAFILE
14    '/data1/oradata/PROD/system01.dbf',
15    '/data1/oradata/PROD/undotbs.dbf',
16    '/data1/oradata/PROD/users01.dbf',
17    '/data1/oradata/PROD/data01_02.dbf',
18    '/data1/oradata/PROD/data02_02.dbf',
19    '/data1/oradata/PROD/data01_03.dbf',
20    '/data1/oradata/PROD/data01_04.dbf',
21    '/data1/oradata/PROD/data01_01.dbf',
22    '/data1/oradata/PROD/data02_01.dbf',
23    '/data1/oradata/PROD/users02.dbf'
24  CHARACTER SET KO16KSC5601;
Control file created.
SQL>
SQL> alter session set events '10015 trace name adjust_scn level 1';
Session altered.
SQL> recover database until cancel using backup controlfile;
ORA-00279: change 5531188 generated at 11/11/2005 00:58:07 needed for thread 1
ORA-00289: suggestion : /data1/oradata/archive/1_1.arc
ORA-00280: change 5531188 for thread 1 is in sequence #1

Specify log: {=suggested | filename | AUTO | CANCEL}
cancel
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: '/data1/oradata/PROD/system01.dbf'

ORA-01112: media recovery not started

SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01092: ORACLE instance terminated. Disconnection forced

(9) adjust_scn level을 늘려가면서 재시도
QL> startup mount
ORACLE instance started.
Total System Global Area  101799240 bytes
Fixed Size                   456008 bytes
Variable Size              50331648 bytes
Database Buffers           50331648 bytes
Redo Buffers                 679936 bytes
Database mounted.
SQL>
SQL> alter session set events '10015 trace name adjust_scn level 2';
Session altered.
SQL> recover database;
Media recovery complete.
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01139: RESETLOGS option only valid after an incomplete database recovery

SQL> alter database open;
Database altered.
반응형
Posted by [PineTree]
PineTree/etc2010. 3. 17. 17:26
반응형
반응형

'PineTree > etc' 카테고리의 다른 글

역대 로또 당첨 번호 중복 숫자 분석(1회 646회)  (0) 2015.04.25
국내 토렌트 사이트모음  (0) 2010.06.04
이동통신사별 카드 활인혜택  (0) 2009.07.30
남자가 수명이 짧은 7가지 이유  (1) 2008.09.07
RAID  (0) 2008.02.11
Posted by [PineTree]
PineTree/CAR2010. 3. 11. 21:38
반응형

새차 길들이기에 대한 그 오해와 진실 뉴오토

등록일 2010-02-04 13:42:43조회 6767

  자동차 이용자들이 길들이기 요령을 잘 몰라 차 상태를 가장 좋은 상태로 유지하지 못하는 경우가 적지 않다. 가장 기본적인 길들이기 요령을 알아보자.

  대체적으로 신차가 최적의 연비를 발휘하는 시점은 주행거리가 6,000㎞를 넘으면서 부터다. 이 때까지는 될 수 있는 한 급가속, 급제동, 과속 등을 삼가는 게 좋다. 차가 길들여지기 전까지 비포장 도로, 산악 지역, 해안 도로 등도 피하는 것이 바람직하다.

  기어 변속은 1~5단까지 고르게 해주는 것이 좋다. 엔진을 4,000rpm 이상으로 고속 회전하는 것은 엔진에 무리를 준다. 하지만 2,000에서 4,000rpm 사이에서 고르게 변속해줄 필요는 있다. 이와 관련, 중고차를 고를 때 여성 운전자가 소유한 차량은 피하라는 속설이 있다. 이는 여성 운전자가 남성 보다 상대적으로 정속 주행을 하기 때문에 다양한 변속 구간에서 새차가 길들여질 수 있는 기회가 없기 때문이라는 것이다.

  가능하면 엔진이 뜨거워진 뒤 차를 운행해야 새 차의 엔진 마모를 줄일 수 있다. 이를 위해 최소한의 공회전은 필요하다. 자동차 회사에서 출고된 상태로 차량을 유지하는 것도 잊지 말아야 할 대목이다. 자동차 개조나 구조 변경 등은 차량에 오히려 해가 될 수 있기 때문이다. 또 가급적 주유소 등에서 해주는 기계식 세차는 차량에 잔 흠집을 남길 수 있으므로 피하고, 손 세차를 하도록 한다. 이 밖에 에어 크리너의 상태를 깨끗하게 유지해주고, 계기판의 이상을 알리는 경고등이 들어왔을 때 신속히 직영 정비 사업소를 찾는 것도 중요하다.

  
  [새차 길들이기에 대한 오해와 진실]

  ▲새차를 사면 시속 100㎞ 이상 속도로 여러 번 달려줘야 엔진에 길이 든다(X)

▲새차는 2,000㎞ 정도 주행할 때까지는 정속 운행을 하는 것이 바람직하다(O)

 

▲새차의 첫 엔진오일 교체 시기는 주행 5,000㎞ 이내이다(X)

▲어떤 연료를 쓰느냐에 관계 없이 1만~1만5천㎞ 주행 후 교체하면 된다(O)

 

▲출발 전 워밍업을 해주는 것과 차량 수명과는 무관하다(X)

▲엔진에 무리를 주지 않으려면 1~2차례 가볍게 워밍업하는것이 좋다(O)

 

▲브레이크는 차가 멈추는 순간까지 꽉 밟아줘야 한다(X)

▲정지 순간에는 브레이크 페달에서 힘을 빼 부드럽게 멈춰야 한다(O)

 

새차 과속으로 길들일 필요 없다.

 

차는 어떻게 관리하느냐에 따라 수명이 달라진다. 특히 새차를 샀을 때는 성능을 충분히 숙지한 상태에서 그 차의 ‘코드’에 맞춰 운전하는 습관을 기르는 것이 무엇보다 중요하다. 의외로 잘못 알려진 ‘신차 길들이기’ 상식이 많은데 그 진실을 알아본다.

 

Q) 새차 엔진을 길들이려면 100㎞ 이상 속도로 여러번 달려줘야 한다고 말하는 사람이 많은데.

  A) 틀린 말이다. 엔진 기술이 발달하지 못한 과거에 나온 얘기다. 요즘 생산되는 엔진은 성능이 우수해 ‘과속’으로 엔진을 길들일 필요가 없다. 오히려 1,500~2,000㎞까지는 정속 운행을 하며 조심해서 다루는 것이 좋다. 엔진, 변속기, 섀시 등에 무리를 줘선 안되기 때문이다. 수동변속기의 경우 2,500~3,000rpm 정도에서 변속해주는 것이 바람직하다.

  Q) 새차의 최초 엔진오일 교환은 주행 5,000㎞ 이내에서 해줘야 하나?

  A) 엔진오일을 자주 갈아주는 것이 나쁠 것은 없지만 기준을 넘어 빈번하게 교체하는 것은 비용 낭비일 뿐이다. 새차 엔진에는 쇳가루가 묻어나오므로 처음에는 엔진오일을 자주 갈아줘야 한다는 얘기도 있으나 사실과 다르다. 통상적인 기준에 따라 1만㎞~1만5천㎞ 주행후 교체해주면 된다. 디젤엔진은 과거 5,000㎞마다 한번씩 오일을 갈아주는 것이 바람직했으나 지금은 엔진 성능이 개선돼 1만㎞ 정도까지는 끄떡없다. 다만 오일 양은 수시로 점검해야 한다. 오일 양이 적정선 안에 있지 않다면 주행 거리와 관계없이 보충해줘야 한다.

  Q) 출발하기 전 가볍게 워밍업해주는 것이 좋은가?

  A) 과거에 비해 차의 성능이 많이 좋아지긴 했지만 1~2분 정도 워밍업해주는 것이 차량 수명 연장에 도움이 된다. 엔진이 가장 좋아하는 온도는 85~95도이다. 출발전 워밍업은 차의 엔진과 주변기계를 천천히 데워 주면서 원활한 윤활 작용을 돕는다. 시동 직후 급출발은 피하는 것이 좋다. 급가속은 많은 연료를 필요로 하고 엔진부하가 커져 불완전 연소가 일어나게 한다. 또 엔진오일의 열화로 인해 유해가스 배출량도 많아진다. 과속은 엔진회전수가 과도하게 올라간다는 뜻이다. 잦은 과속은 기계적 마모를 촉진케 해 엔진 수명을 단축시킨다. 변속기에 무리를 주지 않으려면 가속 페달을 급하게 밟거나 놓지 않는 것이 좋다.

  Q) 브레이크를 밟을 때도 방법이 있나?

  A) 브레이크는 꽉 눌러 밟되 정지 순간에는 브레이크 페달에서 힘을 빼 부드럽게 멈춰야 한다. 정지하는 순간까지 브레이크를 꽉 밟는 습관은 차를 울컥거리게 할 뿐만 아니라 디스크를 상하게 한다. 타이어는 반드시 규격품을 쓰고 규정된 타이어 공기압을 유지해야 한다. 차종마다 차이가 있으나 보통 30PSI가 적당하다. 공기압이 모자라면 핸들이 쏠리는 경향이 있고 과다한 공기압은 노면과의 마찰력이 작아져 안전에 위협이 된다.

  Q) 그 밖의 신차 관리 방법은? 

A) ‘차계부’(차에 관해 쓰는 가계부)를 작성하는 것이 좋다. 엔진오일이나 변속기 오일을 언제 교체했는지, 어느 부품을 언제 갈았는지 등을 알게 되면 차량 정기 점검뿐 아니라 정비업소에서 정비할 때에도 큰 도움이 된다. 또 차를 새로 산 때는 그 차만의 관리 방법을 먼저 알아야 한다. 취급설명서를 숙독해 해당 차량의 기능에 완전히 익숙해지는 것이 좋다. 보다 중요한 것은 도로환경, 기후조건에 맞춰 차량에 무리가 가지 않도록 운전하는 것이다.〈도움말=현대자동차 고객지원팀 이광표 차장〉

반응형
Posted by [PineTree]
OS/SOLARIS2010. 3. 9. 15:27
반응형

1. ndd 커맨드를 이용한 방법

ndd -set /dev/hme adv_autoneg_cap 0 (오토센싱 기능 off)
ndd -set /dev/hme adv_100fdx_cap 1 (100Mbps 풀 듀플렉스 기능 on)
ndd -set /dev/hme adv_100hdx_cap 0
ndd -set /dev/hme adv_100T4_cap 0

/etc/init.d/inetsvc에 다음과 같은 문장을 추가한다.

/usr/sbin/ndd -set /dev/hme adv_100fdx_cap 1

2. /etc/system에 설정하는 방법

set hme:hme_adv_autoneg_cap=0
set hme:hme_adv_100hdx_cap=0
set hme:hme_adv_100fdx_cap=1


- tcp_time_wait_interval 조정

/usr/sbin/ndd -set /dev/tcp tcp_time_wait_interval 60000

or

/etc/system 파일에

set ip:ip_forwarding=0

+ /etc/system 설정 잘못으로 부팅이 안되는 경우

boot prom에서

boot -i로 부팅한 다음에

/etc/system을 참조할 때 /dev/null을 참조한다고 해서 부팅후에 다시 수정할 것


- tcp 설정 정보 조회

ndd -get /dev/tcp ?

- tcp tuning parameter 목록중에 자주 이용하는 것 정리.

+ tcp_time_wait_interval

Solaris 2.6 이전까지는 tcp_close_wait_interval 이다.

메모리에서 TCP 연결이 끊어져도 tcp가 쓰던 소켓 정보를 일정 기간 대기 상태로 가지고 있고, 이를 가지고 있는 시간인데 기본값은 240,000ms(4분)이지만, 이는 tcp 소켓을 많이 요구하는 서버, 즉 웹 서버에서는 너무 길게 waiting 하는 것이 메모리 낭비이므로 60,000ms(1분) 정도로 줄이는 것이 좋다. 그러나 이를 너무 줄일 경우, 커넥션 품질 자체가 불안할 수 있으므로 더 이상 줄이지 않는 것이 바람직하다.

+ tcp_conn_req_max_q0

TCP/IP 프로토콜 통신에서 half-open connection 상태, 즉 마지막 ACK를 받지 못한 상태의 커넥션을 몇 개까지 가지고 있을지에 대한 파라미터 값이다. 기본값은 1024인데 이 파라미터는 tcp_conn_req_max_q와 형태가 비슷하다고 무조건 늘리는 경우가 있는데 불필요하며, 이 파라미터는 completed connection 마저도 listen queue에 들어가지 못하는 경우를 제외하고는 변경할 필요가 없다.

+ tcp_conn_req_max_q

웹 서버 튜닝에서 가장 많이 사용하는 파라미터이다.
기본값은 128인데, 1024 이하 정도로 늘려주는 것이 바람직하다. 이는 completed connection이 실제 처리되기까지 받아주는 큐 크기로 너무 부족하면 상당히 바쁜 웹 서버의 경우, 사용자의 요청을 놓치는 경우가 발생할 수 있기 때문이다.

+ tcp_slow_start_initial

TCP 프로토콜 통신에서 처음에 테스트용으로 보내는 초기화 패킷 수를 말한다. Sun의 기본값은 1인데 다른 벤더들(특히 MS)이 2개를 사용하므로 변경해주는 것이 바람직하다.
솔라리스 8의 경우 가끔 4인 사례를 발견할 수 있었다.


- 네트워크 모니터링

netstat -s -Ptcp 커맨드를 이용하면 모든 프로토콜의 졍보를 출력하는데 -Ptcp라는 옵션을 추가하면 우리가 TCP 프로토콜의 파라미터를 변경하기 전 TCP와 관련한 정보만 출력해 준다.

trax´s note: trax가 사용하는 Solaris 2.4, 2.6 환경에서는 netstat -s -P tcp라고 사용한다. 아마 레퍼런스가 틀린 것이 아닌가 싶다.

ais011# netstat -s -P tcp


TCP tcpRtoAlgorithm = 4 tcpRtoMin = 200
tcpRtoMax =240000 tcpMaxConn = -1
tcpActiveOpens = 10737 tcpPassiveOpens = 53520
tcpAttemptFails = 491 tcpEstabResets = 53
tcpCurrEstab = 28 tcpOutSegs =2640894
tcpOutDataSegs =2411701 tcpOutDataBytes =2076891073
tcpRetransSegs = 18540 tcpRetransBytes =13528493
tcpOutAck =229065 tcpOutAckDelayed = 30144
tcpOutUrg = 0 tcpOutWinUpdate = 81
tcpOutWinProbe = 212 tcpOutControl =157770
tcpOutRsts = 26705 tcpOutFastRetrans = 6732
tcpInSegs =2187955
tcpInAckSegs =1496281 tcpInAckBytes =2076911268
tcpInDupAck = 88774 tcpInAckUnsent = 0
tcpInInorderSegs =770953 tcpInInorderBytes =343372713
tcpInUnorderSegs = 1019 tcpInUnorderBytes =1046324
tcpInDupSegs = 2854 tcpInDupBytes =372742
tcpInPartDupSegs = 245 tcpInPartDupBytes =142283
tcpInPastWinSegs = 0 tcpInPastWinBytes = 0
tcpInWinProbe = 0 tcpInWinUpdate = 198
tcpInClosed = 35 tcpRttNoUpdate = 13508
tcpRttUpdate =1459914 tcpTimRetrans = 12237
tcpTimRetransDrop = 366 tcpTimKeepalive = 358
tcpTimKeepaliveProbe= 12 tcpTimKeepaliveDrop = 0
tcpListenDrop = 0 tcpListenDropQ0 = 0
tcpHalfOpenDrop = 0

여기서 주목할 것은 tcpListenDropQ0와 tcpListDrop인데,
tcpListenDropQ0는 accept() system call시 drop된 것의 카운트이고
tcpListenDrop(Q)은 three-way handshake라고도 불리는 처음 두번째 ACK를 받기 전
incompleted connection이 큐에 들어가지 못한 카운트다.
반응형
Posted by [PineTree]
OS/SOLARIS2010. 3. 9. 15:23
반응형
1. Interface 확인
# more /etc/path_to_inst
hme, bge, bnx 등의 Interface 확인한다.

또는 dmesg 에 Load된 내용을 확인!

2. Hostname.hme 생성 ; Broadcom Interface 임!
# vi /etc/hostname.hme0
hostname

3. Interface 활성화 및 Network 설정
# ifconfig hme0 plumb ; Kernel에 인식시킴
# ifconfig hme0 xxx.xxx.xxx.xxx netmask 255.255.255.xxx broadcast + up
dhcp 로 ip 할당시 ==> # ifconfig hme auto-dhcp

4. Router 추가
# route add default xxx.xxx.xxx.xxx
# vi /etc/defaultrouter
xxx.xxx.xxx.xxx

5. Hostname 추가
# vi /etc/hosts
127.0.0.1   localhost
xxx.xxx.xxx.xxx   hostname   hostname.co.kr   loghost

6. Nameserver 추가
# vi /etc/resolv.conf
nameserver xxx.xxx.xxx.xxx 
dns서버  아이피 셋팅

7. nsswitch.conf 수정
 # vi /etc/nsswitch.conf
hosts : dns files

-------------------------------------------------------------------
1. Network Status 확인
# ndd -get /dev/hme link_status
 0 : link down / 1 : link up

2. Network Speed 확인
# ndd -get /dev/hme link_speed
 0 : 10M bps / 1 : 100M bps

3. Network Duplex 확인
# ndd -get /dev/hme link_duplex
 0 : Half-Duplex mode / 1 : Full-Duplex mode

반응형
Posted by [PineTree]
ORACLE/ADMIN2010. 3. 5. 15:48
반응형

링크 참조
http://download.oracle.com/docs/cd/B19306_01/server.102/b14237/limits001.htm#i287903
반응형
Posted by [PineTree]
OS/SOLARIS2010. 3. 5. 14:59
반응형
cdrom을 driver에 삽입하면 Volume Management Daemon인 "vold" process에 의해
cdrom 이 자동 mount 되지만, vold process가 운영 중이 아니거나 다른 이유로
인하여 cdrom이 자동 mount 되지 않으면 아래의 명령으로 mount 한다.

1. vold daemon이 운영중인 경우
"volcheck" 명령을 실행하여 vold daemon이 cdrom을 mount 하도록 한 후 df 명령
으로 cdrom이 mount 되었는지 확인한다.
% /bin/volcheck
% df -k
2. volcheck 명령으로 mount가 되지 않는경우
아래와 같이 "mount" 명령을 사용한다.
# /etc/mount -F hsfs -o ro /dev/dsk/c0t6d0s0 /cdrom
CD Driver는 기본적으로 /dev/dsk/c0t6d0s0 device를 사용한다
반응형

'OS > SOLARIS' 카테고리의 다른 글

solaris ndd 사용법  (0) 2010.03.09
solaris network 설정  (0) 2010.03.09
solaris root 패스워드 복구  (0) 2009.10.28
solaris10 vsftp 설치 및 포트변경  (0) 2009.08.03
SWAT SVM RAID  (0) 2009.05.25
Posted by [PineTree]
ORACLE/ADMIN2010. 2. 26. 15:59
반응형
expdp 사용자/암호 @SID  directory=디렉토리명 dumpfile=파일명  EXCLUDE=TABLE:\"IN \(\'테이블명1\', \'테이블명2\'\)\"

expdp testi/test@SIDTEST directory=dmp dumpfile=expdp_test.dmp EXCLUDE=TABLE:\"IN \(\'EMP1\', \'EMP2\'\)\"

여기서의 관건은 EXCLUDE 다음에 나오는 작은따옴표 앞에 역슬래시가 있어야한다는 사실이다!!!

이거 않넣고 하면 주구 장창

Value for EXCLUDE is badly formed. 이란 메시지를 징글징글하게 볼수 있을것이다.


출처 : http://cubenuri.egloos.com/2326779
반응형

'ORACLE > ADMIN' 카테고리의 다른 글

ORACLE EM 포트 변경 및 관리 명령어  (0) 2010.04.19
ORACLE Datatype Limits  (0) 2010.03.05
sqlplus 환경 설정  (0) 2009.12.09
oracle 권한확인  (0) 2009.12.04
emca 재구성  (0) 2009.11.20
Posted by [PineTree]