프로시저를 실행했을 때 아래와 같이 오류가 나오는 경우가 있다.


오류 보고 -
ORA-01031: insufficient privileges
01031. 00000 -  "insufficient privileges"
*Cause:    An attempt was made to perform a database operation without
           the necessary privileges.
*Action:   Ask your database administrator or designated security
           administrator to grant you the necessary privileges


해결 방법

sysdba로 접속하여 아래와 같이 입력 ( SCOTT = user명 )

 

SQL>GRANT CREATE PROCEDURE TO SCOTT;

오라클 사이트에서 11g XE windows 버전으로 다운로드 후 설치

(설치파일 필요하신 분 댓글로 문의주세요.)


DB 접속 방법

 

1) cmd 실행

2) splplus / as sysdba

 - 관리자로 DB 접속하는 명령어

3) scott 계정 생성 및 권한 부여

CREATE USER scott IDENTIFIED BY tiger ;
ALTER USER scott DEFAULT TABLESPACE USERS ;
ALTER USER scott QUOTA UNLIMITED ON USERS ;
GRANT RESOURCE,CONNECT, DBA, EXP_FULL_DATABASE, IMP_FULL_DATABASE TO scott ;
ALTER USER scott ACCOUNT UNLOCK;

4) 리스너 재시작, SQL서버 재시작

cmd> lsnrctl stop
SQL> shutdown immediate
SQL> startup
cmd> lsnrctl start

 


DROP TABLE emp ;
CREATE TABLE emp
 (empno    NUMBER(4) NOT NULL,
  ename    VARCHAR2(10),
  job      VARCHAR2(9),
  mgr      NUMBER(4),
  hiredate DATE,
  sal      NUMBER(7, 2),
  comm     NUMBER(7, 2),
  deptno   NUMBER(2));
 

INSERT INTO emp VALUES (7369, 'SMITH',  'CLERK',     7902, DATE'1980-12-17',  800, NULL, 20);
INSERT INTO emp VALUES (7499, 'ALLEN',  'SALESMAN',  7698, DATE'1981-02-20', 1600,  300, 30);
INSERT INTO emp VALUES (7521, 'WARD',   'SALESMAN',  7698, DATE'1981-02-22', 1250,  500, 30);
INSERT INTO emp VALUES (7566, 'JONES',  'MANAGER',   7839, DATE'1981-04-02', 2975, NULL, 20);
INSERT INTO emp VALUES (7654, 'MARTIN', 'SALESMAN',  7698, DATE'1981-09-28', 1250, 1400, 30);
INSERT INTO emp VALUES (7698, 'BLAKE',  'MANAGER',   7839, DATE'1981-05-01', 2850, NULL, 30);
INSERT INTO emp VALUES (7782, 'CLARK',  'MANAGER',   7839, DATE'1981-06-09', 2450, NULL, 10);
INSERT INTO emp VALUES (7788, 'SCOTT',  'ANALYST',   7566, DATE'1987-04-19', 3000, NULL, 20);
INSERT INTO emp VALUES (7839, 'KING',   'PRESIDENT', NULL, DATE'1981-11-17', 5000, NULL, 10);
INSERT INTO emp VALUES (7844, 'TURNER', 'SALESMAN',  7698, DATE'1981-09-08', 1500,    0, 30);
INSERT INTO emp VALUES (7876, 'ADAMS',  'CLERK',     7788, DATE'1987-05-23', 1100, NULL, 20);
INSERT INTO emp VALUES (7900, 'JAMES',  'CLERK',     7698, DATE'1981-12-03',  950, NULL, 30);
INSERT INTO emp VALUES (7902, 'FORD',   'ANALYST',   7566, DATE'1981-12-03', 3000, NULL, 20);
INSERT INTO emp VALUES (7934, 'MILLER', 'CLERK',     7782, DATE'1982-01-23', 1300, NULL, 10);

DROP TABLE dept ;
CREATE TABLE dept
 (deptno NUMBER(2),
  dname  VARCHAR2(14),
  loc    VARCHAR2(13) );
 
INSERT INTO dept VALUES (10, 'ACCOUNTING', 'NEW YORK');
INSERT INTO dept VALUES (20, 'RESEARCH',   'DALLAS');
INSERT INTO dept VALUES (30, 'SALES',      'CHICAGO');
INSERT INTO dept VALUES (40, 'OPERATIONS', 'BOSTON');

DROP TABLE bonus ;
CREATE TABLE bonus
  (ename VARCHAR2(10),
   job   VARCHAR2(9),
   sal   NUMBER,
   comm  NUMBER);

DROP TABLE salgrade ;
CREATE TABLE salgrade 
(
  grade   NUMBER,
  losal   NUMBER,
  hisal   NUMBER
) ;

INSERT INTO salgrade VALUES (1,  700, 1200);
INSERT INTO salgrade VALUES (2, 1201, 1400);
INSERT INTO salgrade VALUES (3, 1401, 2000);
INSERT INTO salgrade VALUES (4, 2001, 3000);
INSERT INTO salgrade VALUES (5, 3001, 9999);
 
COMMIT;

scanf() 함수를 사용하면 C4996 오류가 발생하곤 합니다.


원인

 원래는 문제없이 컴파되는 것이 맞지만, scanf() 등의 함수에서 발생 가능한 잠재적 문제점으로 인해 MSVC에 이 함수들을 사용하지 못하도록 강제하는 설정(SDL, Security Development Lifecycle)이 활성화되어 사용하지 못하는 것입니다.


처리방법

1. 프로젝트 설정 변경

 1) Visual Studio 2019 상단 메뉴의 프로젝트 - 속성(P)을 눌러 속성 창을 엽니다.

 2) 왼쪽의 C/C++ - 일반 메뉴에서 SDL 검사 항목을 아니요(/sdl-)로 바꿔줍니다.

 

 

 2) 전처리 코드 작성

#pragma warning(disable:4996)
#define _CRT_SECURE_NO_WARNINGS

 둘중 하나만 작성해서 사용하면 됩니다.

'C' 카테고리의 다른 글

VS ERROR C6031 : 반환 값이 무시되었습니다. 'function'.  (0) 2020.12.17

+ Recent posts