티스토리 툴바





Posted by Bees


Posted by Bees
/system/app폴더에 설치되어있는 어플

파일명 이름
AccountAndSyncSettings.apk 피드동기화
AlarmClock.apk 알람시계
ApplicationsProvider.apk com.android.providers.applications
ArcPhotoworkshop.apk 사진편집기
ArcSoftService.apk ArcSoftService
ArcVideoEditor.apk 비디오 편집기
AtCmd.apk AtCommandService
AudioEffect.apk 음향효과
BatteryMonitor.apk BatteryMonitorApplication
Bluetooth.apk Bluetooth 공유
Browser.apk 인터넷브라우저
Calculator.apk 계산기
Calendar.apk Google 캘린더
CalendarProvider.apk 캘린더 저정
CameraMoto.apk 카메라
CertInstaller.apk 인증서 설치 프로그램
Contacts.apk 주소록
ContactsProvider.apk 주소록 저장소
dictionary_widget.apk 사전 검색한 단어
DioDict.apk 사전
DioIme.apk 문자입력기
DMService.apk DM서비스
Dock.apk 도킹응용프로그램
DownloadProvider.apk 다운로드관리자
DrmProvider.apk DRM으로 보호된 콘텐츠 저장소
DrmSvc.apk DrmService
Email.apk 이메일
EnhancedGoogleSearchProvider.apk Google 검색(고급)
ExtDispService.apk com.motorola.android.extdispservice
FMRadio.apk FM 라디오
FOTA.apk FOTA
Gallery3D.apk 갤러리
Gestures.apk 마이 싸인
GlobalSearch.apk 빠른 검색 박스
GlobalTimeWidget.apk 세계 시간
Gmail.apk Gmail
GmailProvider.apk Gmail 저장용량
GoogleApps.apk Google 애플리케이션
GoogleCheckin.apk Checkin Service
GoogleContactsSyncAdapter.apk com.google.android.syncadapters.contacts
GooglePartnerSetup.apk Google Partner Setup
GoogleSearch.apk Google 검색
GoogleSettingsProvider.apk Goolge 설정 제공업체
GoogleSubscribedFeedsProvider.apk 피드 동기화
gtalkservice.apk Google 토크 서비스
HTMLViewer.apk HTML 뷰어
LatinIME.apk Android 키보드
Location.apk MTLRDialog
Maps.apk 지도
MarketUpdater.apk 마켓 업데이터
MediaGallery.apk 미디어 갤러리
MediaProvider.apk 미디어 저장소
MediaSync.apk 미디어 동기화
MediaUploader.apk 내 업로드
MessagingProvider.apk Settings Storage
Mms.apk 메시지
MobiReader.apk 문자인식 (OCR)
MotHstcmd.apk HSTcmd
MotoAtCmdPlugin.apk com.motorola.atcmd.plugin
MotoCAL.apk 회사 캘린더
MotoDebugScreen.apk MEAD include DebugScreen
MotoGAL.apk 회사 주소록
MotoHome.apk
MotoNotePad.apk 메모장
MotorolaSettingsProvider.apk Settings Storage
Music.apk 음악
NetworkLocation.apk 네트워크 위치
OverlayProvider.apk 설정 저장소
PackageInstaller.apk 패키지 설치 프로그램
PersonalPortal.apk 폰 싱크
Phone.apk 다이얼
PhoneConfig.apk com.motorola.hiddenmenu
PicoTts.apk 피코 TTS
ProgramMenu.apk Programming Menu
ProgramMenuSystem.apk PGM System
QuickOffice.apk Quickoffice
Secclkd.apk Secure Clock Daemon Support
Settings.apk 설정
SetupWizard.apk 설치마법사
SKTHiddenMenu.apk SKTHiddenMenu
SoundRecorder.apk 녹음기
Street.apk Street View
Subway.apk 지하철 노선도
superuser.apk Superuser Permissions
SyncML.apk com.motorola.android.syncml.service
SyncMLApp.apk SyncML
Talk.apk 토크
TalkProvider.apk Google 토크 저장용량
TaskManagerActivity.apk 작업관리자
TDMB.apk 지상파DMB
TelephonyProvider.apk 통화관련 저장소
thumbnailservice.apk com.motorola.thumbnailservice
TtsService.apk TTS Service
TvoutNotice.apk TV연결 알림
T_service.apk T 서비스
Usb.apk usb
UserDictionaryProvider.apk com.android.providers.userdictionary
VCardShare.apk VCardShare
Vending.apk 마켓
VideoPlayerMoto.apk 동영상 플레이어
VpnServices.apk VPN 서비스
YouTube.apk YouTube

Posted by Bees
Advanced Oracle 2008/10/31 17:43

대량의 데이터에 대한 Delete 작업이 필요한 경우가 있다. 가령 다음과 같이...

Table t1의 Column c1 값이 1인 경우에 대해 모든 Data를 삭제하고 싶다.

하지만 이 경우 대량의 Undo와 Redo Data로 인해 심각한 성능 문제가 대두된다. 그래서 이런 경우 다음과 같은 방식이 권장되기도 한다.

  • Table t1의 Copy 본인 Table t2를 만든다.
  • Table t2에 Column c1 값이 1인 경우를 제외하고 Data를 Copy한다.
  • Table t1을 rename(혹은 drop)하고 Table t2를 t1으로 rename한다.
  • Index를 기존과 똑같은 이름으로 생성한다.

위의 방법이 가끔 사용되기는 하지만 몇 가지 골치아픈 절차가 따른다. 가령 Index이름을 어떻게 맞추어 줄 것인가, Down Time을 어떻게 최소화시킬 것인가....

이 경우에 Partition Exchange를 사용하면 좀 더 간편하게 동일한 목적을 달성할 수 있다.

아래 예제를 보자.

다음과 같은 Table t1이 있다.

create table t1(c1 int, c2 int);

alter table t1 add constraint t1_pk
primary key (c1, c2);

create index t1_n2 on t1(c2);

insert into t1
select mod(level,5)+1, level
from dual
connect by level <= 10000
;

select c1, count(*)
from t1
group by c1
;

C1 COUNT(*)
---------- ----------
1 2000
2 2000
4 2000
5 2000
3 2000


우리의 목적은 Column c1의 값이 "1"인 경우의 Data를 모두 삭제하는 것이다.


이를 위해서 Table t1의 복사본인 Table t2를 만든다.

단 Partition Exchange를 사용하기 위해 하나의 Partition으로 구성한다. Column c1 값이 1이 배제되도록 Data를 생성한다. 즉 Column c1의 값이 1인 경우가 삭제된 것과 동일하다.

create table t2(c1, c2)
nologging
partition by range(c1)
(
partition p1 values less than(maxvalue)
)
as
select c1, c2 from t1
where c1 in (2, 3, 4, 5)
;



Partition Exchange를 위해 Index 구성도 통일시켜준다.

create unique index t2_n1 on t2(c1, c2) local;

alter table t2 add constraint t2_pk
primary key (c1, c2) using index;

create index t2_n2 on t2(c2) local;


다음과 같이 Table t1과 Partition t2.p1을 Exchange한다.

alter table t2
exchange partition p1
with table t1
including indexes
;


Table t1에서 Column c1의 값이 1인 경우는 완전히 삭제되었다.

select c1, count(*)
from t1
group by c1
;

C1 COUNT(*)
---------- ----------
2 2000
4 2000
5 2000
3 2000


Table t2는 Table t1으로 교체되었으므로 모든 Data를 가지고 있다.

select c1, count(*)
from t2
group by c1
;

C1 COUNT(*)
---------- ----------
1 2000
2 2000
4 2000
5 2000
3 2000




Index 또한 이름이 그대로 유지되며 VALID 상태를 유지한다.



select index_name, status
from user_indexes
where table_name = 'T1'
;

INDEX_NAME STATUS
-------------------- ------------------------
T1_PK VALID
T1_N2 VALID
 


Partition Exchange를 사용함으로써 훨씬 간단하게 원하는 바를 달성할 수 있다.


간단하지만 유용한 기법이라고 하겠다.

Posted by Bees

/*+ APPEND */ 힌트의 진실과 거짓


겨우리씨 APPEND 힌트가 최고인가요?


대량의 데이터를  INSERT 시킬때 많이 사용하는 구문 중에 하나가


INSERT INTO big_table

SELECT * FROM all_objects;


라는건 많이 아실 겁니다.

(물론 테이블 drop후 create table big_table as select * ~~~~이 더 빠르긴 함. 상황이 다르지만)


그럼 저 구문을 더 빠르게 할려면 어떻게 하냐의 질문에는

아마 많은 분들이 append 힌트를 쓰라고 하실겁니다.. 저두 그렇구요.


INSERT /*+ APPEND */ INTO big_table

SELECT * FROM all_objects;


그럼 APPEND 힌트를 쓰면 리두 로그가 생성되지 않아 빠르게 수행된다고 생각하시겠죠..


네... ㅡㅡ;;;; 참 아쉽게도... 전 지금까지 위의 지식까지 밖에 몰랐습니다. 그냥 APPEND 힌트를

쓰면 로그를 남기지 않기때문에 빨라진다.... 거기까지가 제가 아는 한도였죠..


그런데...


APPEND 힌트와 같이 직접 경로 삽입은 아래 두가지 경우에만 로그를 생성하지 않는다는군요.

1) NOARCHIVELOG 모드 데이터베이스가 사용되고 있는 경우

2) NOLOGGING으로 표시된 테이블을 대상으로 작업하고 있는 경우


안타깝게도... 저희는 개발서버를 제외하고는 DB복구를 위해 ARCHIVELOG로 되어있구요.

NOLOGGING로 된 테이블도 하나도 없습니다. 그리고 대부분이 그러지 않을까 싶은데요.

그러니 실제로 프로그램 상에서 삽입된 /*+ APPEND */ 는 거의 있으나마나 했던게 아닐까

싶은 생각이 들더군요.


더욱이....

위의 두조건을 빼고서라도 만약 해당 테이블에 인덱스라도 걸려있다면

인덱스는 로그를 남기므로 로그의 용량이 엄청 증가를 하게 됩니다.


이제 우리는 APPEND 힌트에 대해 의문을 가져야 할 거 같습니다. 분명 유용한 힌트지만..

프로그램에서 사용할때는.. 위의 상황을 잘 유념해서 사용해야 할 듯 합니다.


그렇다고 모든 테이블에 NOLOGGING으로 설정하여, 디스크가 망가졌을때 복원을 못하는 사태를

만들지는 마세요.


* 테이터 웨어하우스 또는 데이터 마트에 대량 데이터를 적재하는 경우

1. 인덱스를 UNUSABLE 상태로 설정한다.(삭제하지 않고 잠시동안 사용할 수 없는 상태로 전환한다)

2. 대량 적재시 상태가 UNUSUABLE인 인덱스를 지나치도록 세션을 설정한다.

3. 인덱스를 다시 활성화한다.


선행 alter table big_table nologging 후 데이터 적재후 다시 변경

1. alter index big_table_idx unusable;

2. alter session set skip_unusable_indexes=true;

3. insert /*+ append */ into big_table select * from all_objects;

4. alter index big_table_idx rebuild nologging;

(drop index 명령이 정상적으로 실행된 후 여러가지 이유로 create index 명령이 실패한 사례를 수없이 보아왔다는 저자... 물론 인덱스가 유실되었음을 아무도 알아채지 못했으며 성능이 현저히 낮아졌다.)                                                                           -   이펙티브 오라클 참고... p185

Posted by Bees

Posted by Bees
Posted by Bees

Posted by Bees

Posted by Bees
롯데카드 홈페이지 카드신청 하는 곳에서 주유 고시가격및 할인액에 따른 적립금액을 확인할 수있다.

고시가격 확인 바로가기


Posted by Bees
TAG 주유, 할인