2023. 10. 12. 16:31

계정 암호 만료 기간을 무제한으로 하기

Test서버나 개발서버의 경우 암호 바꾸는게 귀찮아서 찾아보았습니다.

 

아래의 쿼리를 이용하면 암호 만료를 예방할 수 있습니다.

(다만 dba 권한 필요)

alter profile default limit password_life_time unlimited

 

확인은 아래의 쿼리에서 PASSWORD_LIFE_TIME 값을 확인해서 가능

select * from dba_profiles where profile = 'DEFAULT';

 

추가 보너스 쿼리들

-- 계정 잠금 해제
alter user 계정명 account unlock;

-- 암호 변경
alter user 계정명 identified by "새비밀번호";

 

출처 : https://goddaehee.tistory.com/69

2013. 9. 27. 16:15

Oracle에서 테이블 목록 및 컬럼 목록 가지고 오기

-- 테이블 목록 조회 

SELECT OBJECT_NAME FROM USER_OBJECTS

WHERE OBJECT_TYPE ='TABLE'

ORDER BY OBJECT_NAME 


-- 칼럼 목록 조회

SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE, DATA_LENGTH, DATA_PRECISION, DATA_SCALE, NULLABLE  FROM COLS 

-- WHERE TABLE_NAME NOT LIKE '%SYNC' 

ORDER BY TABLE_NAME, COLUMN_ID



어디선가 퍼온거

2013. 8. 13. 18:26

오라클 트리거 잠시 중단하기

오라클 트리거를 사용 중에 잠시 중단하고 싶을때



-- 테이블상의 트리거를 확인

SELECT TRIGGER_NAME, TABLE_NAME, STATUS FROM USER_TRIGGERS WHERE TABLE_NAME = 'TB_TEST';


-- 해당 트리거를 disable함

ALTER TRIGGER TR_TB_TEST DISABLE;


-- 해당 트리거를 ENABLE함

ALTER TRIGGER TR_TB_TEST ENABLE;

2013. 3. 6. 10:34

Oracel XE웹의 8080 포트 변경하기

오라클 깔았더니 8080 포트를 먹어버려서 서비스 내리고 뭐하고 좀 불편했음

sqlplus에서 sysdba로 로그인해서 아래의 쿼리를 돌리면 바로 해결

(서비스 재시작 안해도 일단 8080 먹는건 해결되는듯 ㅋㅋ)


EXEC DBMS_XDB.SETHTTPPORT(8090);


참고로 현재 사용중인 포트를 확인하는 쿼리는


SELECT dbms_xdb.getHttpPort() FROM DUAL;



2013. 3. 6. 10:29

오라클 암호 초기화 및 사용자 생성

로컬에 Test용도로 깔아놓았던 오라클의 관리자 암호랑 각종 계정들이 하나도 기억나지 않는 불상사가 발생. -_-);

인터넷 검색 결과 아래의 방법으로 해결 가능



1. 접속

sqlplus에서 conn /as sysdba 로 접속 가능


2. 암호 설정 (sys계정들)

alter user sys identified by 암호;

alter user system identified by 암호;


ex) 

alter user sys identified by "password123";

alter user system identified by "password123";



3. 사용자 생성 및 권한주기
create user dirtybit identified by "password123"  : dirtybit 이라는 계정을 password123이라는 암호로 만듬
grant resource, connect to dirtybit  : 생성한 dirtybit에게 resource, connect 권한을 줌.
(이것만 주면 대부분 되는듯)

alter user dirtybit default tablespace users : 작업 tablesapce지정 (안해도 되는듯...;; )
alter user dirtybit temporary tablespace temp : temp tablespace지정 (안해도 되는듯...;; )

4. 사용자 삭제
drop user dirtybit cascade 


나중에 또 까먹고 또 인터넷 검색해보는건 아닌지...;;

2010. 3. 11. 10:48

Table에서 Random 하게 Row를 가지고 오기

가끔 응모한 내역에서 당첨자를 자동으로 추출한다던지 할때 사용하면 좋을듯
오라클 같은 경우 정상동작을 확인하였음.
뭐, 속도에 대해선 언제나 그렇듯 그다지 보장 못함;;;;

출처는 http://www.petefreitag.com/item/466.cfm 여기 인데 외국 사이트여서 차마 영어로 '퍼가요~' 댓글은 못남기겠다능;;

하여튼, 좋은 정보를 올려주신 분께 감사..(Thanks!!! ... 하아... 영어..무리했어..)


Select a random row with MySQL:
   SELECT column FROM table
   ORDER BY RAND()
   LIMIT 1


Select a random row with PostgreSQL:
   SELECT column FROM table
   ORDER BY RANDOM()
   LIMIT 1


Select a random row with Microsoft SQL Server:
   SELECT TOP 1 column FROM table
   ORDER BY NEWID()


Select a random row with IBM DB2:
   SELECT column, RAND() as IDX 
   FROM table 
   ORDER BY IDX FETCH FIRST 1 ROWS ONLY


Select a random record with Oracle:
   SELECT column FROM
   ( SELECT column FROM table
   ORDER BY dbms_random.value )
   WHERE rownum = 1


2009. 5. 7. 16:03

Oracle Instant Client 설치 및 사용


웹이 아닌 CS에서 Oracle 관련 프로그램을 만들고 아래의 Oracle Instant Client를 같이 묶어서 배포하면 오라클 Client를 별도로 설치하지 않아도 사용가능함.

단, 서버가 되는 오라클은 모두 정상 설정 되어 있고 한글 등 모든 설정이 정상이라는 전제하에 Client와 Client Application에 관한 부분만 해당됨


1. Oracle Instant Client 다운
아마 무료 공개로 알고 있음. 별도로 이거 배포한다고 돈받거나 라이센스에 걸리지 않을 것임
http://www.oracle.com/technology/tech/oci/instantclient/index.html
위의 주소에서 받을 수 있으며, 혹시나 하는 마음에 10.2 버전으로 분할하여 첨부하였음



첨부된 파일은 cmd 창에서
copy /b instantclient-basic-win32-10.2.0.4.001+instantclient-basic-win32-10.2.0.4.002+instantclient-basic-win32-10.2.0.4.003+instantclient-basic-win32-10.2.0.4.004 instantclient-basic-win32-10.2.0.4.zip

이 명령어를 이용하면  조합할 수 있음


2. 설치
별도의 설치라고 할 것도 없이 Path가 설정된 아무 폴더에나 풀면 됨.
혹은 아무 폴더에나 풀고 Path 설정해주면 무방.
이래저래 귀찮으면 C:\windows\system32에 밀어넣는 것도 괜찮은 방법임.

오라클 설치 경로와 tnsnames.ora 파일의 위치를 지정해 주기 위해서 아래와 같은 환경 변수 2개를 설정해 주어야 함(환경변수 재설정 이후에는 재부팅 해주는 것이 정신 건강에 좋음)

ORACLE_HOME = {클라이언트가 설치된 폴더명}
TNS_ADMIN = {tnsnames.ora 가 설치된 폴더명}

만일 위의 상황에서 한글이 깨진다면(한글이 ?로 나오는 등의 현상) 아래의 레지스트리를 추가(있으면 설정 변경이고 없으면 추가)

HKLM->ORACLE key에서 NLS_LANG 이라는 문자열 값을 만들고 값을 KOREAN_KOREA.KO16MSWIN949 로 세팅함


3. 사용
사용이랄 것도 없음. 그냥 오라클에 붙는 프로그램이 잘 돌아간다면 그것으로 된것임
참고로 ASP나 VB(VBA포함) 에서 아래의 Conncetion String 을 이용하면 첨부된 Client만으로 오라클 접속 가능

Provider=MSDAORA.1;Password={db암호};User ID={db접속계정};Data Source={tns명}

2009. 3. 19. 22:19

오라클 몇몇 쿼리


-- 사용자 리스트보기
select username from all_users;

-- 사용자 Table 리스트 보기
select table_name from user_tables;

-- 사용자 테이블 제약조건 보기
select table_name, constraint_name, constraint_type from user_constraints where table_name='EMP3';


-- 쿼리 수행시간 보기
set timing on
select table_name , constraint_name, constraint_type from user_constraints where table_name='EMP3';


-- 시스템 권한 부여
CREATE USER : Grantee can create other Oracle users
DROP USER : Grantee can drop another user.
DROP ANY TABLE : Grantee can drop a table in any schema.
BACKUP ANY TABLE : Grantee can back up any table in any schema with the export utility.
SELECT ANY TABLE : Grantee can query tables, views, or materialized views in any schema.
CREATE ANY TABLE : Grantee can create tables in any schema.

GRANT CREATE USER, DROP USER TO TEST_USER;


-- 사용자 시스템 권한
CREATE SESSION : Connect to the database
CREATE TABLE : Create tables in the user's schema
CREATE SEQUENCE : Create a sequence in the user's schema
CREATE VIEW : Create a view in the user's schema
CREATE PROCEDURE : Create stored procedure, function, or package in the user's schema


-- 권한 삭제
revoke select on hr.emp3 * from hr

 

-- 오라클 기동
1. oralce 로 접속한다.
#su - oracle

2. Enterprise Manager DB Console 가동한다.
$ emctl start dbconsole

3. iSQL*Plus 컨트롤 가동한다.
$ isqlplusctl start

4.리스너 컨트롤 가동한다.
$ lsnrctl start


-- 실행중인 프로세스 목록보기
select  lpad(to_char(s.sid),6,' ') sid,p.spid,to_char(s.LOGON_TIME,'mm/dd hh24:mi:SS') Time, s.username,
        s.program, s.status, lpad(to_char(s.command),3,' ') cmd
  from v$session s,
       v$process p
 where s.paddr = p.addr;

 

-- 특정 sid를 가지는 쿼리 Text가지고 오기
select s.sid, q.sql_text        
  from v$sql q, v$session s       
  where q.address=s.sql_address   
    and q.hash_value=s.sql_hash_value
    and s.sid in (&sid);


-- 특정 Table에 Lock상태 보기

SELECT B.TYPE, C.OBJECT_NAME, 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='CNM_AD';

    

-- Lock걸린것 죽이기

ALTER SYSTEM KILL SESSION '121, 15890';