티스토리 툴바


Oracle 10g XE(Express Edition)의 프로세스 및 세션 늘리는 방법

2008/08/07 10:13 | Posted by 포데브(엄지사랑) 엄지사랑

TNS-12519: TNS:no appropriate service handler found

위와 같은 에러가 발생하는 원인은 여러가지 일수 있으나 연결할 프로세스 또는 세션이 부족한 경우에도 발생한다.

다음과 같이 SQLPLUS에 접속하여 정보를 확인하고 프로세스나 세션이 임계치(limit)에 근접할경우 프로세스와 세션을 늘려준다.
만약 초기 설정하고 아무것도 변경하지 않은 경우 프로세스는 40, 세션은 49로 되어 있으며 여기에서는 100으로 설정할 계획이다.

변경순서
1. 프로세스 및 세션의 임계치를 확인한다.
2. 프로세스 및 세션의 임계치를 늘려준다.
3. 데이터베이스를 재시작한다.

1. 프로세스 및 세션의 임계치 확인

$> sqlplus / as sysdba
SQL> select * from v$resource_limit;

2. 프로세스 및 세션의 임계치 변경

프로세스 및 세션에 대한 설정값은

/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/dbs/spfileXE.ora

에 정보가 있다. (/usr/lib/oracle/xe/app/oracle는 설치경로)

위의 파일을 직접 수정하는 방법도 있으나 아래와 같이 SQL 로 처리할 수 있다.

ALTER SYSTEM SET <parameter>=<value> SCOPE=SPFILE ;

예)
SQL> ALTER SYSTEM SET processes=100 SCOPE=SPFILE ;
SQL> ALTER SYSTEM SET sessions=100 SCOPE=SPFILE ;

3. 데이터베이스 재시작

SQL> shutdown immediate
SQL> startup

아래는 변경전후 파일내용이다.


변경전.
XE.__db_cache_size=20971520
XE.__java_pool_size=4194304
XE.__large_pool_size=12582912
XE.__shared_pool_size=763363328
XE.__streams_pool_size=0
*.aq_tm_processes=0
*.audit_file_dest='/usr/lib/oracle/xe/app/oracle/admin/XE/adump'
*.background_dump_dest='/usr/lib/oracle/xe/app/oracle/admin/XE/bdump'
*.compatible='10.2.0.1.0'
*.control_files='/usr/lib/oracle/xe/oradata/XE/control.dbf'
*.core_dump_dest='/usr/lib/oracle/xe/app/oracle/admin/XE/cdump'
*.db_name='XE'
*.DB_RECOVERY_FILE_DEST_SIZE=10G
*.DB_RECOVERY_FILE_DEST='/usr/lib/oracle/xe/app/oracle/flash_recovery_area'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=XEXDB)'
*.job_queue_processes=0
*.open_cursors=300
*.os_authent_prefix=''
*.pga_aggregate_target=268435456
*.remote_login_passwordfile='EXCLUSIVE'
*.sessions=40
*.sga_target=805306368
*.shared_servers=4
*.undo_management='AUTO'
*.undo_tablespace='UNDO'
*.user_dump_dest='/usr/lib/oracle/xe/app/oracle/admin/XE/udump'

변경후.
XE.__db_cache_size=20971520
XE.__java_pool_size=4194304
XE.__large_pool_size=12582912
XE.__shared_pool_size=763363328
XE.__streams_pool_size=0
*.aq_tm_processes=0
*.audit_file_dest='/usr/lib/oracle/xe/app/oracle/admin/XE/adump'
*.background_dump_dest='/usr/lib/oracle/xe/app/oracle/admin/XE/bdump'
*.compatible='10.2.0.1.0'
*.control_files='/usr/lib/oracle/xe/oradata/XE/control.dbf'
*.core_dump_dest='/usr/lib/oracle/xe/app/oracle/admin/XE/cdump'
*.db_name='XE'
*.DB_RECOVERY_FILE_DEST_SIZE=10G
*.DB_RECOVERY_FILE_DEST='/usr/lib/oracle/xe/app/oracle/flash_recovery_area'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=XEXDB)'
*.job_queue_processes=0
*.open_cursors=300
*.os_authent_prefix=''
*.pga_aggregate_target=268435456
*.processes=100
*.remote_login_passwordfile='EXCLUSIVE'
*.sessions=100
*.sga_target=805306368
*.shared_servers=4
*.undo_management='AUTO'
*.undo_tablespace='UNDO'
*.user_dump_dest='/usr/lib/oracle/xe/app/oracle/admin/XE/udump'
크리에이티브 커먼즈 라이선스
Creative Commons License

오라클 사용자 생성 및 권한주기

2008/07/24 15:34 | Posted by 포데브(엄지사랑) 엄지사랑

1. 계정의 테이블 스페이스 생성

create tablespace [tablespace_name]
datafile '/home/oracle/oradata/DANBEE/[file_name].dbf' size 500m;

예)
CREATE TABLESPACE ADMIN DATAFILE 'D:\ORACLE\ORADATA\XE\ADMIN.dbf' SIZE  500M ;


2. 오라클 유저 만들기

CREATE USER [user_name]
IDENTIFIED BY [password]
DEFAULT TABLESPACE [tablespace_name]
TEMPORARY TABLESPACE TEMP;

예)
CREATE USER nextree IDENTIFIED BY nextree DEFAULT TABLESPACE NEXTREE TEMPORARY TABLESPACE TEMP;


3. 생성한 USER에 권한주기

GRANT connect, resource, dba TO [user_name];

예)
grant connect, dba, resource to 유저명; (모든 권한 주기)

GRANT CREATE SESSION TO 유저명         // 데이터베이스에 접근할 수 있는 권한
GRANT CREATE DATABASE LINK TO 유저명
GRANT CREATE MATERIALIZED VIEW TO 유저명
GRANT CREATE PROCEDURE TO 유저명
GRANT CREATE PUBLIC SYNONYM TO 유저명
GRANT CREATE ROLE TO 유저명
GRANT CREATE SEQUENCE TO 유저명
GRANT CREATE SYNONYM TO 유저명
GRANT CREATE TABLE TO 유저명             // 테이블을 생성할 수 있는 권한
GRANT DROP ANY TABLE TO 유저명         // 테이블을 제거할 수 있는 권한
GRANT CREATE TRIGGER TO 유저명
GRANT CREATE TYPE TO 유저명
GRANT CREATE VIEW TO 유저명

GRANT 
 CREATE SESSION
,CREATE TABLE
,CREATE SEQUENCE  
,CREATE VIEW
TO 유저명;

4. 생성한 USER로 ORACLE에 접속하기

sqlplus nextree/nextree[@db_sid]


5. 계정 삭제하기

drop user 사용자계정 cascade;

-- 테이블 스페이스 크기 확장해주는 쿼리문
alter database
datafile 'D:\oracle\oradata\XE\ADMIN.DBF'  resize 900M;

--테이블 스페이스 정보 보는 쿼리문
SELECT file_name, tablespace_name, bytes, status FROM  DBA_DATA_FILES;

--테이블 명시적 인덱스 생성
--1번째 방법
CREATE INDEX MSID_IDX1 ON TEST(MSID)
--2번째 방법
create index test1_test on test1(test)
tablespace users
storage
(
initial 10k
next     10k
pctincrease 0)
pctfree 10

--테이블 정보 보는 쿼리
select * from user_constraints-- where table_name = upper('test1');

--ORA-00054: 자원이 사용중이고, NOWAIT가 지정되어 있습니다 해결 방법
select a.sid, a.serial#
from v$session a, v$lock b, dba_objects c
where a.sid=b.sid and
b.id1=c.object_id and
b.type='TM' and
c.object_name='CAR_INFO';

alter system kill session '12, 27846';

-- CAR_INFO에는 있는 값을 DASH_BOARD에 넣기
INSERT INTO DASH_BOARD(CAR_LICEN_NUM)
SELECT CAR_LICEN_NUM FROM CAR_INFO
MINUS
SELECT CAR_LICEN_NUM FROM DASH_BOARD


SYSTEM 계정 패스워드 변경하기
사용자계정 : /as sysdba

alter user system identified by "암호";
일반 스트링은 관계없지만 특수문자가 있을경우 반드시 "" 따옴표로 감싸준다.

크리에이티브 커먼즈 라이선스
Creative Commons License

tablespace 늘리기

2008/06/23 18:57 | Posted by 포데브(엄지사랑) 엄지사랑

SQLPLUS접속,

1. tablespace 정보 얻기

desc user_tablespaces;

2. tablespace 이름 조회

select tablespace_name from user_tablespaces ;

3. tablespace이름으로 포함된 filename 찾기

select file_name, tablespace_name, bytes from dba_data_files where tablespace_name = 'XXX'

4. tablespace 늘리기

 - 파일추가로 늘리기
    alter tablespace 테이블스페이스명 add datafile '(새)파일명포함경로' size 용량M
  - 기존파일 resize
    alter datafile datafile '파일명포함경로' resize 변환용량 M

크리에이티브 커먼즈 라이선스
Creative Commons License

Oracle exp / imp 실제 적용예

2008/06/22 05:00 | Posted by 포데브(엄지사랑) 엄지사랑

TOPIC 1. SCOTT의 데이타를 LARRY로 옮기는 방법 

scott의 데이타를 larry 로 옮기려면 export/import 를 이용해야 한다.
 larry가 만들어져 있지 않다면 다음과 같이 만든다.

$ sqlplus system/manager

SQL>  create user larry
      identified by lion
      default tablespace users
      temporary tablespace temp
      quota unlimited on users;

   default tablespace, temporary tablespace 는 시스템에 따라 알맞게 설정한다.

   다음과 같이 larry에게 권한을 부여한다.

sql>  grant connect, resource to larry
sql>  revoke unlimited tablespace from larry

   물론 users 테이블스페이스는 이미 존재한다고 가정한다.
   scott로 export를 받고 larry로 import한다.

$ exp scott/tiger file=scott.dmp
$ imp larry/lion file=scott.dmp fromuser=scott touser=larry

   만약 scott 가 dba 권한을 갖고 있었다면 다음과 같이 import를 해야 한다.

Using imp:

To import the full database exported in the example above.

imp SYSTEM/password FULL=y FIlE=dba.dmp

To import just the dept and emp tables from the scott schema

imp SYSTEM/password FIlE=dba.dmp FROMUSER=scott TABLES=(dept,emp)

To import tables and change the owner

imp SYSTEM/password FROMUSER=blake TOUSER=scott FILE=blake.dmp TABLES=(unit,manager)


To import just the scott schema exported in the example above

imp <user>/<password> FIlE=scott.dmp

$ imp system/manager file=scott.dmp fromuser=scott touser=larry

   만약 import 도중 연속된 저장 공간이 부족해서 에러가 발생한다면 익스포트를
   받을 때 compress=n 옵션을 사용하며, import 시 롤백 세그먼트 문제가 발생
   한다면 import 시 commit=y 옵션을 사용하면 쉽게 해결이 가능하다.

---
-- 테이블삭제
drop table SC_AUTHORITY cascade constraints;
drop table SC_BRANCH cascade constraints;
drop table SC_BRANCHDESCRIPTION cascade constraints;
drop table SC_BRANCHPHOTO cascade constraints;
drop table SC_BUSINESSDATEMASTER cascade constraints;
drop table SC_COMMONCODE cascade constraints;
drop table SC_CONNECTION_HISTORY cascade constraints;
drop table SC_FAVORITE cascade constraints;
drop table SC_LARGECOMMONCODE cascade constraints;
drop table SC_MANAGEMENTSALESYSTEM cascade constraints;
drop table SC_MENU cascade constraints;
drop table SC_PAYMENTMETHODACCOUNT cascade constraints;
drop table SC_PAYMENTMETHODMAPPING cascade constraints;
drop table SC_POSTCODE cascade constraints;
drop table SC_ROLE cascade constraints;
drop table SC_SALEACCOUNT cascade constraints;
drop table SC_STORE cascade constraints;
drop table SC_USER cascade constraints;
drop table SC_USER_ROLE cascade constraints;
drop table SC_USER_SESSION cascade constraints;
drop table SC_USE_LOG cascade constraints;

-- 테이블덤프 추가(import)
imp shresort_fo/shcenter FILE=shresort-20080621.dmp TABLES=SC_AUTHORITY,SC_BRANCH,SC_BRANCHDESCRIPTION,SC_BRANCHPHOTO,SC_BUSINESSDATEMASTER,SC_COMMONCODE,SC_CONNECTION_HISTORY,SC_FAVORITE,SC_LARGECOMMONCODE,SC_MANAGEMENTSALESYSTEM,SC_MENU,SC_PAYMENTMETHODACCOUNT,SC_PAYMENTMETHODMAPPING,SC_POSTCODE,SC_ROLE,SC_SALEACCOUNT,SC_STORE,SC_USER,SC_USER_ROLE,SC_USER_SESSION,SC_USE_LOG

-- 테이블스페이스 기본 설정값 확인
select username, default_tablespace, temporary_tablespace from dba_users where username = 'SHRESORT_FO'

-- 테이블스페이스 변경
alter table SC_AUTHORITY                   move tablespace SHRESORT_FO;
alter table SC_BRANCH                      move tablespace SHRESORT_FO;
alter table SC_BRANCHDESCRIPTION           move tablespace SHRESORT_FO;
alter table SC_BRANCHPHOTO                 move tablespace SHRESORT_FO;
alter table SC_BUSINESSDATEMASTER          move tablespace SHRESORT_FO;
alter table SC_COMMONCODE                  move tablespace SHRESORT_FO;
alter table SC_CONNECTION_HISTORY          move tablespace SHRESORT_FO;
alter table SC_FAVORITE                    move tablespace SHRESORT_FO;
alter table SC_LARGECOMMONCODE             move tablespace SHRESORT_FO;
alter table SC_MANAGEMENTSALESYSTEM        move tablespace SHRESORT_FO;
alter table SC_MENU                        move tablespace SHRESORT_FO;
alter table SC_PAYMENTMETHODACCOUNT        move tablespace SHRESORT_FO;
alter table SC_PAYMENTMETHODMAPPING        move tablespace SHRESORT_FO;
alter table SC_POSTCODE                    move tablespace SHRESORT_FO;
alter table SC_ROLE                        move tablespace SHRESORT_FO;
alter table SC_SALEACCOUNT                 move tablespace SHRESORT_FO;
alter table SC_STORE                       move tablespace SHRESORT_FO;
alter table SC_USER                        move tablespace SHRESORT_FO;
alter table SC_USER_ROLE                   move tablespace SHRESORT_FO;
alter table SC_USER_SESSION                move tablespace SHRESORT_FO;
alter table SC_USE_LOG                     move tablespace SHRESORT_FO;

크리에이티브 커먼즈 라이선스
Creative Commons License

Oracle의 character set을 확인하는 방법

2008/05/15 11:35 | Posted by 포데브(엄지사랑) 엄지사랑
SYSDBA 권한으로 로그인한 경우 아래의 SQL을 실행하면 된다.

SELECT value$
FROM sys.props$
WHERE name = 'NLS_CHARACTERSET'
크리에이티브 커먼즈 라이선스
Creative Commons License
이전 1 다음