# 요약 | |
# Export : Tablespace Level # Import : Tablespace Level # 논리적 디렉터리 CREATE DIRECTORY pump_dir AS '/home/oracle/data_pump'; GRANT READ, WRITE ON DIRECTORY pump_dir TO hr; DROP DIRECTORY pump_dir; ■ Data Pump : expdp, impdp # Export : 특정 테이블 추출 # Export : Schema Level, 특정 개체 제외 # Export : Schema Level, 특정 개체 다중 제외 # Export : schema에서 테이블만 가져오기 # Export : 소유자 및 테이블스페이스 변경(remap) # Export : 특정 테이블의 데이터 조건부 추출(query) # Export : 원격DB에서 특정 소유자의 모든 객체 가져오기(DB Link) # Import : 특정 테이블만 가져오기 # Import : 테이블이 있는 상태에서 데이터만 가져오기 # Import : 테이블구조만 가져오기 # Import : 다른 테이블로 데이터 가져오기(remap) # Import : 테이블스페이스 변경, 권한제외 # Import : 모든 객체의 소유자 및 테이블스페이스 변경, 권한제외 # Import : 외부 DB에서 동일한 유저명의 모든 객체를 가져오기. 권한, 트리거 제외(DB Link) |
DROP TABLE hr.emp CASCADE CONSTRAINT PURGE; CREATE TABLESPACE insa_tbs DATAFILE '/u01/app/oracle/oradata/ora11g/insa_tbs01.dbf' SIZE 10M; CREATE TABLE hr.emp TABLESPACE insa_tbs AS SELECT * FROM hr.employees; SELECT a.file#, a.name file_name, b.name tbs_name, a.status, a.checkpoint_change# FROM v$datafile a, v$tablespace b WHERE a.ts# = b.ts#; FILE# FILE_NAME TBS_NAME STATUS CHECKPOINT_CHANGE# ---------- -------------------------------------------------- ---------- ------------ ------------------ 1 /u01/app/oracle/oradata/ora11g/system01.dbf SYSTEM SYSTEM 1207350 2 /u01/app/oracle/oradata/ora11g/sysaux01.dbf SYSAUX ONLINE 1207350 3 /u01/app/oracle/oradata/ora11g/undotbs01.dbf UNDOTBS ONLINE 1207350 4 /u01/app/oracle/oradata/ora11g/users01.dbf USERS ONLINE 1207350 5 /u01/app/oracle/oradata/ora11g/example01.dbf EXAMPLE ONLINE 1207350 6 /u01/app/oracle/oradata/ora11g/insa_tbs01.dbf INSA_TBS ONLINE 1212873 SELECT e.segment_name,f.tablespace_name, f.file_name FROM dba_extents e, dba_data_files f WHERE f.file_id = e.file_id AND e.owner = 'HR' AND e.segment_name = 'EMP'; SEGMENT_NAME TABLESPACE_NAME FILE_NAME ---------------------- --------------- -------------------------------------------------- EMP INSA_TBS /u01/app/oracle/oradata/ora11g/insa_tbs01.dbf |
|
# Export : Tablespace Level | |
- 테이블스페이스 내 세그먼트를 전부 내보내기 /home/oracle [oracle@oracle ~]$ exp system/oracle file=insa_tbs.dmp tablespaces=insa_tbs ... About to export selected tablespaces ... For tablespace INSA_TBS ... . exporting cluster definitions . exporting table definitions . . exporting table EMP 107 rows exported . exporting referential integrity constraints . exporting triggers Export terminated successfully without warnings. [oracle@oracle ~]$ ls arch1 backup database hr_emp.dmp hr_owner.dmp insa_emp.dmp insa_tbs.dmp michael_owner.dmp new_control.sql p13390677_112040_LINUX_1of7.zip p13390677_112040_LINUX_2of7.zip |
|
# Import : Tablespace Level | |
DROP TABLESPACE insa_tbs INCLUDING CONTENTS AND DATAFILES; SELECT e.segment_name,f.tablespace_name, f.file_name FROM dba_extents e, dba_data_files f WHERE f.file_id = e.file_id AND e.owner = 'HR' AND e.segment_name = 'EMP'; no rows selected > Export -> Import 시 세그먼트만 있기 때문에 테이블스페이스는 직접 생성해야한다. CREATE TABLESPACE insa_tbs DATAFILE '/u01/app/oracle/oradata/ora11g/insa_tbs01.dbf' SIZE 10M; SELECT a.file#, a.name file_name, b.name tbs_name, a.status, a.checkpoint_change# FROM v$datafile a, v$tablespace b WHERE a.ts# = b.ts#; FILE# FILE_NAME TBS_NAME STATUS CHECKPOINT_CHANGE# ---------- -------------------------------------------------- ---------- --------------- ------------------ 1 /u01/app/oracle/oradata/ora11g/system01.dbf SYSTEM SYSTEM 1207350 2 /u01/app/oracle/oradata/ora11g/sysaux01.dbf SYSAUX ONLINE 1207350 3 /u01/app/oracle/oradata/ora11g/undotbs01.dbf UNDOTBS ONLINE 1207350 4 /u01/app/oracle/oradata/ora11g/users01.dbf USERS ONLINE 1207350 5 /u01/app/oracle/oradata/ora11g/example01.dbf EXAMPLE ONLINE 1207350 6 /u01/app/oracle/oradata/ora11g/insa_tbs01.dbf INSA_TBS ONLINE 1213598 # Import : 해당 테이블스페이스의 세그먼트 모두 가져오기 [oracle@oracle ~]$ imp system/oracle file=insa_tbs.dmp tablespaces=insa_tbs full=y ... Export file created by EXPORT:V11.02.00 via conventional path import done in US7ASCII character set and AL16UTF16 NCHAR character set import server uses AL32UTF8 character set (possible charset conversion) . importing SYSTEM's objects into SYSTEM . importing HR's objects into HR . . importing table "EMP" 107 rows imported Import terminated successfully without warnings. SELECT e.segment_name,f.tablespace_name, f.file_name FROM dba_extents e, dba_data_files f WHERE f.file_id = e.file_id AND e.owner = 'HR' AND e.segment_name = 'EMP'; SEGMENT_NAME TABLESPACE_NAME FILE_NAME ---------------------- --------------- -------------------------------------------------- EMP INSA_TBS /u01/app/oracle/oradata/ora11g/insa_tbs01.dbf DROP TABLESPACE insa_tbs INCLUDING CONTENTS AND DATAFILES; |
# 논리적 디렉터리 생성 | |
[oracle@oracle ~]$ mkdir /home/oracle/data_pump [oracle@oracle ~]$ ls arch1 backup database data_pump hr_emp.dmp hr_owner.dmp insa_emp.dmp insa_tbs.dmp michael_owner.dmp new_control.sql p13390677_112040_LINUX_1of7.zip p13390677_112040_LINUX_2of7.zip # 논리적 디렉터리 생성 CREATE DIRECTORY pump_dir AS '/home/oracle/data_pump'; SELECT * FROM dba_directories WHERE directory_name = 'PUMP_DIR'; OWNER DIRECTORY_NAME DIRECTORY_PATH ------------------------------ ------------------------------ ---------------------------------------- SYS PUMP_DIR /home/oracle/data_pump |
|
# 논리적 디렉터리를 읽고 쓰는 권한 부여 : 객체권한 | |
GRANT READ, WRITE ON DIRECTORY pump_dir TO hr; SELECT GRANTEE,OWNER,TABLE_NAME,GRANTOR,PRIVILEGE FROM dba_tab_privs WHERE grantee = 'HR'; GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE ---------- ---------- ------------------------------ ---------- ---------- HR SYS DBMS_STATS SYS EXECUTE HR SYS PUMP_DIR SYS WRITE HR SYS PUMP_DIR SYS READ |
|
# 논리적 디렉터리 삭제 | |
DROP DIRECTORY pump_dir; |
■ Data Pump
- 고속 데이터/메타 데이터 이동(export,import)을 위한 유틸리티
- dbms_datapump
- expdp, impdp
# Export : 특정 테이블 추출 | |
expdp [user/password] [directory=저장위치] [dumpfile=파일명.dmp] [tables=소유자.테이블명, 소유자.테이블명, ...] [oracle@oracle ~]$ expdp system/oracle directory=pump_dir dumpfile=hr_emp_dept_job.dmp tables=hr.employees,hr.departments,hr.job_history ... Starting "SYSTEM"."SYS_EXPORT_TABLE_01": system/******** directory=pump_dir dumpfile=hr_emp_dept_job.dmp tables=hr.employees,hr.departments,hr.job_history Estimate in progress using BLOCKS method... Processing object type TABLE_EXPORT/TABLE/TABLE_DATA Total estimation using BLOCKS method: 192 KB Processing object type TABLE_EXPORT/TABLE/TABLE Processing object type TABLE_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT Processing object type TABLE_EXPORT/TABLE/COMMENT Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT Processing object type TABLE_EXPORT/TABLE/TRIGGER Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS . . exported "HR"."DEPARTMENTS" 7.007 KB 27 rows . . exported "HR"."EMPLOYEES" 16.80 KB 107 rows . . exported "HR"."JOB_HISTORY" 7.054 KB 10 rows Master table "SYSTEM"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded ****************************************************************************** Dump file set for SYSTEM.SYS_EXPORT_TABLE_01 is: /home/oracle/data_pump/hr_emp_dept_job.dmp Job "SYSTEM"."SYS_EXPORT_TABLE_01" successfully completed at Tue Jan 23 10:19:50 2024 elapsed 0 00:00:07 [oracle@oracle ~]$ ls /home/oracle/data_pump export.log hr_emp_dept_job.dmp - export.log : 화면에 출력된 진행 Log |
SELECT COUNT(*) FROM hr.job_history; COUNT(*) ---------- 10 DROP TABLE hr.job_history PURGE; |
|
# Import : 특정 테이블만 가져오기 | |
impdp [user/password] [directory=파일위치] [dumpfile=파일명.dmp] [tables=소유자.테이블명 , 소유자.테이블명, ...] [oracle@oracle ~]$ impdp system/oracle directory=pump_dir dumpfile=hr_emp_dept_job.dmp tables=hr.job_history ... Starting "SYSTEM"."SYS_IMPORT_TABLE_01": system/******** directory=pump_dir dumpfile=hr_emp_dept_job.dmp tables=hr.job_history Processing object type TABLE_EXPORT/TABLE/TABLE Processing object type TABLE_EXPORT/TABLE/TABLE_DATA . . imported "HR"."JOB_HISTORY" 7.054 KB 10 rows Processing object type TABLE_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT Processing object type TABLE_EXPORT/TABLE/COMMENT Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS Job "SYSTEM"."SYS_IMPORT_TABLE_01" successfully completed at Tue Jan 23 10:25:47 2024 elapsed 0 00:00:03 SELECT COUNT(*) FROM hr.job_history; COUNT(*) ---------- 10 |
TRUNCATE TABLE hr.job_history; SELECT COUNT(*) FROM hr.job_history; COUNT(*) ---------- 0 |
|
# import : 테이블 있는 상태에서 데이터만 가져오기 | |
impdp [user/password] [directory=파일위치] [dumpfile=파일명.dmp] [tables=소유자.테이블명] [content=data_only] [oracle@oracle ~]$ impdp system/oracle directory=pump_dir dumpfile=hr_emp_dept_job.dmp tables=hr.job_history content=data_only ... Starting "SYSTEM"."SYS_IMPORT_TABLE_01": system/******** directory=pump_dir dumpfile=hr_emp_dept_job.dmp tables=hr.job_history content=data_only Processing object type TABLE_EXPORT/TABLE/TABLE_DATA . . imported "HR"."JOB_HISTORY" 7.054 KB 10 rows Job "SYSTEM"."SYS_IMPORT_TABLE_01" successfully completed at Tue Jan 23 10:28:02 2024 elapsed 0 00:00:02 SELECT COUNT(*) FROM hr.job_history; COUNT(*) ---------- 10 |
DROP TABLE hr.job_history PURGE; |
|
# import : 테이블구조만 가져오기 | |
impdp [user/password] [directory=파일위치] [dumpfile=파일명.dmp] [tables=소유자.테이블명] [content=metadata_only] [oracle@oracle ~]$ impdp system/oracle directory=pump_dir dumpfile=hr_emp_dept_job.dmp tables=hr.job_history content=metadata_only ... Starting "SYSTEM"."SYS_IMPORT_TABLE_01": system/******** directory=pump_dir dumpfile=hr_emp_dept_job.dmp tables=hr.job_history content=metadata_only Processing object type TABLE_EXPORT/TABLE/TABLE Processing object type TABLE_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT Processing object type TABLE_EXPORT/TABLE/COMMENT Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS Job "SYSTEM"."SYS_IMPORT_TABLE_01" successfully completed at Tue Jan 23 10:47:54 2024 elapsed 0 00:00:01 SELECT COUNT(*) FROM hr.job_history; COUNT(*) ---------- 0 # 데이터만 가져오기 [oracle@oracle ~]$ impdp system/oracle directory=pump_dir dumpfile=hr_emp_dept_job.dmp tables=hr.job_history content=data_only SELECT COUNT(*) FROM hr.job_history; COUNT(*) ---------- 10 |
<< HR SESSION >> SQL> conn hr/hr SQL> SELECT * FROM tab; TNAME TABTYPE CLUSTERID ------------------------------ ------- ---------- ... 12 rows selected. PURGE RECYCLEBIN; << SYS SESSION >> SQL> conn / as sysdba |
|
# Export : Schema Level, 특정 개체 제외 | |
expdp [user/password] [directory=저장위치] [dumpfile=파일명.dmp] [schemas=소유자] [exclude=table:"='제외테이블'"] - schema : 소유자의 모든 객체를 포함 [oracle@oracle ~]$ expdp system/oracle directory=pump_dir dumpfile=hr_schema.dmp schemas=hr exclude=table:\"\=\'TEST_20240122\'\" ... Starting "SYSTEM"."SYS_EXPORT_SCHEMA_01": system/******** directory=pump_dir dumpfile=hr_schema.dmp schemas=hr exclude=table:"='TEST_20240122'" Estimate in progress using BLOCKS method... Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA Total estimation using BLOCKS method: 576 KB Processing object type SCHEMA_EXPORT/USER Processing object type SCHEMA_EXPORT/SYSTEM_GRANT Processing object type SCHEMA_EXPORT/ROLE_GRANT Processing object type SCHEMA_EXPORT/DEFAULT_ROLE Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA Processing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCE Processing object type SCHEMA_EXPORT/TABLE/TABLE Processing object type SCHEMA_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT Processing object type SCHEMA_EXPORT/TABLE/COMMENT Processing object type SCHEMA_EXPORT/PROCEDURE/PROCEDURE Processing object type SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS Processing object type SCHEMA_EXPORT/VIEW/VIEW Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT Processing object type SCHEMA_EXPORT/TABLE/TRIGGER Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS . . exported "HR"."COPY_EMP" 16.80 KB 107 rows . . exported "HR"."COUNTRIES" 6.367 KB 25 rows . . exported "HR"."DEPARTMENTS" 7.007 KB 27 rows . . exported "HR"."EMPLOYEES" 16.80 KB 107 rows . . exported "HR"."INSA_EMP" 16.80 KB 107 rows . . exported "HR"."JOBS" 6.992 KB 19 rows . . exported "HR"."JOB_HISTORY" 7.054 KB 10 rows . . exported "HR"."LOCATIONS" 8.273 KB 23 rows . . exported "HR"."REGIONS" 5.476 KB 4 rows Master table "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded ****************************************************************************** Dump file set for SYSTEM.SYS_EXPORT_SCHEMA_01 is: /home/oracle/data_pump/hr_schema.dmp Job "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully completed at Tue Jan 23 11:03:01 2024 elapsed 0 00:00:15 |
|
# Export : Schema Level, 특정 개체 다중 제외 | |
expdp [user/password] [directory=저장위치] [dumpfile=파일명.dmp] [schemas=소유자] [exclude=table:"in ('테이블명', '테이블명', '...')"] [oracle@oracle ~]$ expdp system/oracle directory=pump_dir dumpfile=hr_e_j_schema.dmp schemas=hr exclude=table:\"\in \(\'TEST_20240122\',\'JOBS\',\'REGIONS\'\)\" ... Starting "SYSTEM"."SYS_EXPORT_SCHEMA_01": system/******** directory=pump_dir dumpfile=hr_e_j_schema.dmp schemas=hr exclude=table:"in ('TEST_20240122','JOBS','REGIONS')" Estimate in progress using BLOCKS method... Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA Total estimation using BLOCKS method: 448 KB Processing object type SCHEMA_EXPORT/USER Processing object type SCHEMA_EXPORT/SYSTEM_GRANT Processing object type SCHEMA_EXPORT/ROLE_GRANT Processing object type SCHEMA_EXPORT/DEFAULT_ROLE Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA Processing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCE Processing object type SCHEMA_EXPORT/TABLE/TABLE Processing object type SCHEMA_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT Processing object type SCHEMA_EXPORT/TABLE/COMMENT Processing object type SCHEMA_EXPORT/PROCEDURE/PROCEDURE Processing object type SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS Processing object type SCHEMA_EXPORT/VIEW/VIEW Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT Processing object type SCHEMA_EXPORT/TABLE/TRIGGER Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS . . exported "HR"."COPY_EMP" 16.80 KB 107 rows . . exported "HR"."COUNTRIES" 6.367 KB 25 rows . . exported "HR"."DEPARTMENTS" 7.007 KB 27 rows . . exported "HR"."EMPLOYEES" 16.80 KB 107 rows . . exported "HR"."INSA_EMP" 16.80 KB 107 rows . . exported "HR"."JOB_HISTORY" 7.054 KB 10 rows . . exported "HR"."LOCATIONS" 8.273 KB 23 rows Master table "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded ****************************************************************************** Dump file set for SYSTEM.SYS_EXPORT_SCHEMA_01 is: /home/oracle/data_pump/hr_e_j_schema.dmp Job "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully completed at Tue Jan 23 11:08:09 2024 elapsed 0 00:00:11 |
|
# export : schema에서 테이블만 가져오기 | |
expdp [user/password] [directory=파일위치] [dumpfile=파일명.dmp] [schemas=소유자] [include=table] - include = 가져올 객체 [oracle@oracle ~]$ expdp system/oracle schemas=hr directory=pump_dir dumpfile=hr_table.dmp include=table ... Starting "SYSTEM"."SYS_EXPORT_SCHEMA_01": system/******** schemas=hr directory=pump_dir dumpfile=hr_table.dmp include=table Estimate in progress using BLOCKS method... Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA Total estimation using BLOCKS method: 640 KB Processing object type SCHEMA_EXPORT/TABLE/TABLE Processing object type SCHEMA_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT Processing object type SCHEMA_EXPORT/TABLE/COMMENT Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT Processing object type SCHEMA_EXPORT/TABLE/TRIGGER Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS . . exported "HR"."COPY_EMP" 16.80 KB 107 rows . . exported "HR"."COUNTRIES" 6.367 KB 25 rows . . exported "HR"."DEPARTMENTS" 7.007 KB 27 rows . . exported "HR"."EMPLOYEES" 16.80 KB 107 rows . . exported "HR"."INSA_EMP" 16.80 KB 107 rows . . exported "HR"."JOBS" 6.992 KB 19 rows . . exported "HR"."JOB_HISTORY" 7.054 KB 10 rows . . exported "HR"."LOCATIONS" 8.273 KB 23 rows . . exported "HR"."REGIONS" 5.476 KB 4 rows . . exported "HR"."TEST_20240122" 5.414 KB 1 rows Master table "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded ****************************************************************************** Dump file set for SYSTEM.SYS_EXPORT_SCHEMA_01 is: /home/oracle/data_pump/hr_table.dmp Job "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully completed at Tue Jan 23 11:13:34 2024 elapsed 0 00:00:10 |
CREATE USER henry IDENTIFIED BY oracle DEFAULT TABLESPACE USERS QUOTA 10M ON USERS;
GRANT CREATE SESSION TO henry;
SELECT table_name, tablespace_name FROM dba_tables where owner = 'HR';
TABLE_NAME TABLESPACE_NAME
------------------------------ ---------------
COPY_EMP USERS
TEST_20240122 USERS
INSA_EMP USERS
LOCATIONS EXAMPLE
DEPARTMENTS EXAMPLE
JOBS EXAMPLE
EMPLOYEES EXAMPLE
JOB_HISTORY EXAMPLE
COUNTRIES
REGIONS EXAMPLE
>> 헨리는 EXAMPLE 테이블스페이스 권한이없다
# Export : 소유자 및 테이블스페이스 변경(remap)
[oracle@oracle ~]$ impdp system/oracle directory=pump_dir dumpfile=hr_table.dmp remap_schema='hr':'henry' remap_tablespace='EXAMPLE':'USERS'
...
Starting "SYSTEM"."SYS_IMPORT_FULL_01": system/******** directory=pump_dir dumpfile=hr_table.dmp remap_schema=hr:henry remap_tablespace=EXAMPLE:USERS
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
. . imported "HENRY"."COPY_EMP" 16.80 KB 107 rows
. . imported "HENRY"."COUNTRIES" 6.367 KB 25 rows
. . imported "HENRY"."DEPARTMENTS" 7.007 KB 27 rows
. . imported "HENRY"."EMPLOYEES" 16.80 KB 107 rows
. . imported "HENRY"."INSA_EMP" 16.80 KB 107 rows
. . imported "HENRY"."JOBS" 6.992 KB 19 rows
. . imported "HENRY"."JOB_HISTORY" 7.054 KB 10 rows
. . imported "HENRY"."LOCATIONS" 8.273 KB 23 rows
. . imported "HENRY"."REGIONS" 5.476 KB 4 rows
. . imported "HENRY"."TEST_20240122" 5.414 KB 1 rows
Processing object type SCHEMA_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT
Processing object type SCHEMA_EXPORT/TABLE/COMMENT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/TRIGGER
ORA-39082: Object type TRIGGER:"HENRY"."UPDATE_JOB_HISTORY" created with compilation warnings
ORA-39082: Object type TRIGGER:"HENRY"."UPDATE_JOB_HISTORY" created with compilation warnings
ORA-39082: Object type TRIGGER:"HENRY"."SECURE_EMPLOYEES" created with compilation warnings
ORA-39082: Object type TRIGGER:"HENRY"."SECURE_EMPLOYEES" created with compilation warnings
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Job "SYSTEM"."SYS_IMPORT_FULL_01" completed with 4 error(s) at Tue Jan 23 11:24:13 2024 elapsed 0 00:00:03
SQL> conn henry/oracle
Connected.
SELECT table_name, tablespace_name FROM user_tables;
TABLE_NAME TABLESPACE_NAME
------------------------------ ---------------
EMPLOYEES USERS
JOBS USERS
DEPARTMENTS USERS
LOCATIONS USERS
REGIONS USERS
JOB_HISTORY USERS
COPY_EMP USERS
TEST_20240122 USERS
INSA_EMP USERS
COUNTRIES
SELECT * FROM user_tab_privs;
GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRA HIE
------------------------------ ------------------------------ ------------------------------ ------------------------------ ---------------------------------------- --- ---
OE HENRY COUNTRIES HENRY REFERENCES NO NO
OE HENRY COUNTRIES HENRY SELECT NO NO
OE HENRY DEPARTMENTS HENRY SELECT NO NO
OE HENRY EMPLOYEES HENRY SELECT NO NO
OE HENRY EMPLOYEES HENRY REFERENCES NO NO
OE HENRY JOBS HENRY SELECT NO NO
OE HENRY JOB_HISTORY HENRY SELECT NO NO
OE HENRY LOCATIONS HENRY SELECT NO NO
OE HENRY LOCATIONS HENRY REFERENCES NO NO
SELECT COUNT(*) FROM hr.employees WHERE department_id = 50 AND job_id = 'ST_MAN';
COUNT(*)
----------
5
# EXPORT : 특정 테이블의 데이터 조건부 추출(query)
[oracle@oracle ~]$ expdp system/oracle directory=pump_dir dumpfile=hr_50_st_man.dmp tables=hr.employees query=hr.employees:\"where department_id \= 50 and job_id \= \'ST_MAN\'\"
...
Starting "SYSTEM"."SYS_EXPORT_TABLE_01": system/******** directory=pump_dir dumpfile=hr_50_st_man.dmp tables=hr.employees query=hr.employees:"where department_id = 50 and job_id = 'ST_MAN'"
Estimate in progress using BLOCKS method...
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 64 KB
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT
Processing object type TABLE_EXPORT/TABLE/COMMENT
Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX
Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
Processing object type TABLE_EXPORT/TABLE/TRIGGER
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. . exported "HR"."EMPLOYEES" 9.585 KB 5 rows
Master table "SYSTEM"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SYSTEM.SYS_EXPORT_TABLE_01 is:
/home/oracle/data_pump/hr_50_st_man.dmp
Job "SYSTEM"."SYS_EXPORT_TABLE_01" successfully completed at Tue Jan 23 11:58:34 2024 elapsed 0 00:00:04
CREATE TABLE hr.emp_50_stman AS SELECT * FROM hr.employees WHERE 1 = 2;
SELECT COUNT(*) FROM hr.emp_50_stman;
COUNT(*)
----------
0
# Import : 다른 테이블로 데이터 가져오기(remap)
[oracle@oracle ~]$ impdp system/oracle directory=pump_dir dumpfile=hr_50_st_man.dmp remap_table=employees:emp_50_stman content=data_only
SELECT COUNT(*) FROM hr.emp_50_stman;
COUNT(*)
----------
5
### listener L01 - TNS 상태 체크
vi listener.ora 확인
[oracle@oracle ~]$ lsnrctl start L01
[oracle@oracle ~]$ lsnrctl status L01
윈도우 : tnsnames.ora 확인
# XE에서 ora11g DB의 system 계정으로 접속
C:/> sqlplus system/oracle@ora11g
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> select name from v$database;
NAME
------------------
ORA11G
SQL> SELECT status, instance_name FROM v$instance;
STATUS INSTANCE_NAME
------------------------ --------------------------------
OPEN ora11g
### XE - system 계정 체크
C:\>sqlplus system/oracle
ORA-28000: the account is locked
SELECT username,account_status FROM dba_users WHERE username='SYSTEM';
USERNAME ACCOUNT_STATUS
------------------------------------------------------------ ----------------------------------------------------------------
SYSTEM LOCKED(TIMED)
ALTER USER system ACCOUNT UNLOCK;
SQL> SELECT username,account_status FROM dba_users WHERE username='SYSTEM';
USERNAME ACCOUNT_STATUS
------------------------------------------------------------ ----------------------------------------------------------------
SYSTEM OPEN
ALTER USER system IDENTIFIED BY oracle;
<< 터미널 XE DB >>
C:\> sqlplus / as sysdba
SQL> SELECT name FROM v$database;
NAME
-----------------------------------------------
XE
SQL> SELECT * FROM dba_db_links;
OWNER DB_LINK USERNAME HOST CREATED
---------- --------------- ---------- ------------------------- --------
PUBLIC DBMS_CLRDBLINK ORACLR_CONNECTION_DATA 23/10/05
HR ORA11G_HR HR ora11g 24/01/05
# Public Database Link 생성
SQL> CREATE PUBLIC DATABASE LINK ora11g_link CONNECT TO system IDENTIFIED BY oracle USING 'ora11g';
USING 'ora11g' : 원격접속하려는 서비스명
CONNECT TO system : 계정정보
PUBLIC : 생성자 외 모든 유저가 사용 가능
SQL> SELECT * FROM dba_db_links;
OWNER DB_LINK USERNAME HOST CREATED
---------- --------------- ---------- ------------------------- --------
PUBLIC ORA11G_LINK SYSTEM ora11g 24/01/23
PUBLIC DBMS_CLRDBLINK ORACLR_CONNECTION_DATA 23/10/05
HR ORA11G_HR HR ora11g 24/01/05
# Public Database Link 삭제
DROP PUBLIC DATABASE LINK ora11g_link;
DROP PUBLIC DATABASE LINK ora11g_hr;
>> hr 계정에서 삭제 완료
SQL> SELECT * FROM dba_directories;
OWNER DIRECTORY_NAME DIRECTORY_PATH
---------- ------------------------- --------------------------------------------------
SYS ORACLECLRDIR C:\oraclexe\app\oracle\product\11.2.0\server\bin\clr
SYS DATA_PUMP_DIR C:\oraclexe\app\oracle/admin/xe/dpdump/ v
SYS XMLDIR C:\oraclexe\app\oracle\product\11.2.0\server\rdbms\xml
SYS ORACLE_OCM_CONFIG_DIR C:\ADE\aime_xe28\oracle/ccr/state
SQL> host ->> OS로 나가기 = Linux에서 !
- XE에서 xe의 system 계정으로 진행
- chemas=hr network_link=ORA11G_LINK -> DB링크를 통한 ora11g db 의 hr schema
# Export : 원격DB에서 특정 소유자의 모든 객체 가져오기(DB Link)
C:\Users> expdp system/oracle directory=DATA_PUMP_DIR dumpfile=hr.dmp schemas=hr network_link=ora11g_link
...
Starting "SYSTEM"."SYS_EXPORT_SCHEMA_01": system/******** directory=DATA_PUMP_DIR dumpfile=hr.dmp schemas=hr network_link=ORA11G_LINK
Estimate in progress using BLOCKS method...
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 704 KB
Processing object type SCHEMA_EXPORT/USER
Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
Processing object type SCHEMA_EXPORT/ROLE_GRANT
Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCE
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT
Processing object type SCHEMA_EXPORT/TABLE/COMMENT
Processing object type SCHEMA_EXPORT/PROCEDURE/PROCEDURE
Processing object type SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/VIEW/VIEW
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/TRIGGER
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. . exported "HR"."COPY_EMP" 16.80 KB 107 rows
. . exported "HR"."COUNTRIES" 6.273 KB 25 rows
. . exported "HR"."DEPARTMENTS" 7.007 KB 27 rows
. . exported "HR"."EMPLOYEES" 16.80 KB 107 rows
. . exported "HR"."EMP_50_STMAN" 9.593 KB 5 rows
. . exported "HR"."INSA_EMP" 16.80 KB 107 rows
. . exported "HR"."JOBS" 6.992 KB 19 rows
. . exported "HR"."JOB_HISTORY" 7.054 KB 10 rows
. . exported "HR"."LOCATIONS" 8.273 KB 23 rows
. . exported "HR"."REGIONS" 5.476 KB 4 rows
. . exported "HR"."TEST_20240122" 5.414 KB 1 rows
Master table "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SYSTEM.SYS_EXPORT_SCHEMA_01 is:
C:\ORACLEXE\APP\ORACLE\ADMIN\XE\DPDUMP\HR.DMP
Job "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully completed at 15:13:26
C:\oraclexe\app\oracle/admin/xe/dpdump/
진행과정 출력 log 확인 가능
SQL> SELECT status, instance_name FROM v$instance;
STATUS INSTANCE_NAME
------------------------ --------------------------------
OPEN xe
SQL> conn hr/hr
Connected.
SQL> SELECT * FROM tab;
SQL> SELECT table_name, tablespace_name FROM user_tables;
36 rows selected.
> 테이블 전부 users 테이블스페이스
DROP TABLE hr.job_history PURGE;
SELECT COUNT(*) FROM hr.job_history;
ORA-00942: table or view does not exist
> host
- dump 파일 > example 테이블스페이스로 되어있다
# Import : 테이블스페이스 변경, 권한제외
C:\Users> impdp system/oracle directory=data_pump_dir dumpfile=hr.dmp tables=hr.job_history remap_tablespace=example:users exclude=grant
...
Starting "SYSTEM"."SYS_IMPORT_TABLE_01": system/******** directory=data_pump_dir dumpfile=hr.dmp tables=hr.job_history remap_tablespace=example:users exclude=grant
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
. . imported "HR"."JOB_HISTORY" 7.054 KB 10 rows
Processing object type SCHEMA_EXPORT/TABLE/COMMENT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Job "SYSTEM"."SYS_IMPORT_TABLE_01" successfully completed at 15:15:46
SQL> SELECT COUNT(*) FROM hr.job_history;
COUNT(*)
----------
10
conn / as sysdba
SELECT name FROM v$database;
NAME
------------------
XE
SQL> SELECT tablespace_name, file_name FROM dba_data_files;
TABLESPACE_NAME FILE_NAME
-------------------- --------------------------------------------------
USERS C:\ORACLEXE\APP\ORACLE\ORADATA\XE\USERS.DBF
SYSAUX C:\ORACLEXE\APP\ORACLE\ORADATA\XE\SYSAUX.DBF
UNDOTBS1 C:\ORACLEXE\APP\ORACLE\ORADATA\XE\UNDOTBS1.DBF
SYSTEM C:\ORACLEXE\APP\ORACLE\ORADATA\XE\SYSTEM.DBF
CREATE USER james IDENTIFIED BY oracle DEFAULT TABLESPACE users QUOTA UNLIMITED ON users;
GRANT CREATE SESSION TO james;
# import : 모든 객체의 소유자 및 테이블스페이스 변경, 권한제외
C:\Users> impdp system/oracle directory=data_pump_dir dumpfile=hr.dmp remap_schema=hr:james remap_tablespace=example:users exclude=grant
...
Starting "SYSTEM"."SYS_IMPORT_FULL_01": system/******** directory=data_pump_dir dumpfile=hr.dmp remap_schema=hr:james remap_tablespace=example:users exclude=grant
Processing object type SCHEMA_EXPORT/USER
ORA-31684: Object type USER:"JAMES" already exists
Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
Processing object type SCHEMA_EXPORT/ROLE_GRANT
Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCE
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
. . imported "JAMES"."COPY_EMP" 16.80 KB 107 rows
. . imported "JAMES"."COUNTRIES" 6.273 KB 25 rows
. . imported "JAMES"."DEPARTMENTS" 7.007 KB 27 rows
. . imported "JAMES"."EMPLOYEES" 16.80 KB 107 rows
. . imported "JAMES"."EMP_50_STMAN" 9.593 KB 5 rows
. . imported "JAMES"."INSA_EMP" 16.80 KB 107 rows
. . imported "JAMES"."JOBS" 6.992 KB 19 rows
. . imported "JAMES"."JOB_HISTORY" 7.054 KB 10 rows
. . imported "JAMES"."LOCATIONS" 8.273 KB 23 rows
. . imported "JAMES"."REGIONS" 5.476 KB 4 rows
. . imported "JAMES"."TEST_20240122" 5.414 KB 1 rows
Processing object type SCHEMA_EXPORT/TABLE/COMMENT
Processing object type SCHEMA_EXPORT/PROCEDURE/PROCEDURE
Processing object type SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/VIEW/VIEW
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/TRIGGER
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Job "SYSTEM"."SYS_IMPORT_FULL_01" completed with 1 error(s) at 15:18:01
conn james/oracle
SELECT * FROM tab;
TNAME TABTYPE CLUSTERID
------------------------------------------------------------ -------------- ----------
COPY_EMP TABLE
COUNTRIES TABLE
DEPARTMENTS TABLE
EMPLOYEES TABLE
EMP_50_STMAN TABLE
EMP_DETAILS_VIEW VIEW
INSA_EMP TABLE
JOBS TABLE
JOB_HISTORY TABLE
LOCATIONS TABLE
REGIONS TABLE
TEST_20240122 TABLE
# ora11g 데이터베이스 있는 henry 유저가 소유한 테이블을 XE db의 henry 유저로 import하기
<< ora11g >>
SELECT table_name, tablespace_name FROM dba_tabls WHERE ornwer = 'HR';
<< XE sys >>
CREATE USER henry IDENTIFIED BY oracle DEFAULT TABLESPACE USERS unlimited on users;
GRANT CREATE SESSION TO henry;
> host
# Import : 외부 DB에서 동일한 유저명의 모든 객체를 가져오기. 권한, 트리거 제외(DB Link)
import system/oracle network_link=ora11g_link schemas=henry exclude=grant,trigger
conn henry/oracle
SELECT * FROM tab;
_USER : 접속한 유저
_CONNECT_IDENTIFIER : 접속한 db 정보
# session
set sqlprompt "_USER'@'_CONNECT_IDENTIFIER> "
as is -> to be
(현재) -> (신규)
legacy db ->
DROP USER hrm CASCADE;
==============================================================================================================
1. tablespace 생성한 후 확인 하세요.
tablespace 이름 : hrm_tbs
datafile 위치 및 이름 : /u01/app/oracle/oradata/ora11g/hrm_tbs01.dbf
datafile 사이즈 : 10m
datafile 자동 확장 활성화
extent 관리 : local uniform size 1m
segment space management: auto
CREATE TABLESPACE hrm_tbs
DATAFILE '/u01/app/oracle/oradata/ora11g/hrm_tbs01.dbf'
SIZE 10M AUTOEXTEND ON
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M
SEGMENT SPACE MANAGEMENT AUTO;
SELECT a.file#, a.name file_name, b.name tbs_name, a.status, a.checkpoint_change#
FROM v$datafile a, v$tablespace b
WHERE a.ts# = b.ts#;
FILE# FILE_NAME TBS_NAME STATUS CHECKPOINT_CHANGE#
---------- -------------------------------------------------- ---------- --------------- ------------------
1 /u01/app/oracle/oradata/ora11g/system01.dbf SYSTEM SYSTEM 1237662
2 /u01/app/oracle/oradata/ora11g/sysaux01.dbf SYSAUX ONLINE 1237662
3 /u01/app/oracle/oradata/ora11g/undotbs01.dbf UNDOTBS ONLINE 1237662
4 /u01/app/oracle/oradata/ora11g/users01.dbf USERS ONLINE 1237662
5 /u01/app/oracle/oradata/ora11g/example01.dbf EXAMPLE ONLINE 1237662
6 /u01/app/oracle/oradata/ora11g/hrm_tbs01.dbf HRM_TBS ONLINE 2137204
SELECT * FROM dba_tablespaces WHERE = 'TABLESPACE_NAME';
2. user 생성하세요.
user 이름 : hrm
user 비밀번호 : oracle
default tablespace : hrm_tbs
temporary tablespace : temp
default tablespace quota : unlimited
CREATE USER hrm IDENTIFIED BY oracle
DEFAULT TABLESPACE hrm_tbs
TEMPORARY TABLESPACE temp
QUOTA UNLIMITED ON hrm_tbs;
SELECT username,account_status,default_tablespace,temporary_tablespace,PROFILE
FROM dba_users WHERE username = 'HRM';
USERNAME ACCOUNT_STATUS DEFAULT_TABLESPACE TEMPORARY_TABLESPACE PROFILE
---------- -------------------------------- ------------------------------ ------------------------------ ------------------------------
HRM OPEN HRM_TBS TEMP DEFAULT
3. hrm 유저에게 시스템 권한 부여한 후 확인 하세요.
시스템 권한 : create session, create table, create view, create procedure
GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE PROCEDURE TO hrm;
SELECT * FROM dba_sys_privs WHERE grantee = 'HRM';
GRANTEE PRIVILEGE ADM
------------------------------ ---------------------------------------- ---
HRM CREATE TABLE NO
HRM CREATE PROCEDURE NO
HRM CREATE SESSION NO
HRM CREATE VIEW NO
4. /home/oracle/hr_pump 물리적인 디렉토리를 생성 한 후 dump file이 생성될 수 있는 물지적인 home/oracle/hr_pump
위치에 따른 논리적인 디렉토리는 hr_dir 이름으로 생성한 후 확인 하세요.
[oracle@oracle ~]$ mkdir /home/oracle/hr_pump
create directory hr_dir as '/home/oracle/hr_pump';
SELECT * FROM dba_directories WHERE directory_name = 'HR_DIR';
OWNER DIRECTORY_NAME DIRECTORY_PATH
------------------------------ ------------------------------ --------------------------------------------------
SYS HR_DIR /home/oracle/hr_pump
5. hr_dir 논리적인 디렉토리에 대한 read, write 권한은 hr에게 부여 한 후 확인해주세요.
GRANT READ,WRITE ON DIRECTORY hr_dir TO hr;
SELECT grantee,owner,table_name,grantor,privilege
FROM dba_tab_privs WHERE grantee = 'HR';
GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE
------------------------------ ------------------------------ ------------------------------ ------------------------------ ----------------------------------------
HR SYS DBMS_STATS SYS EXECUTE
HR SYS PUMP_DIR SYS WRITE
HR SYS PUMP_DIR SYS READ
HR SYS HR_DIR SYS WRITE
HR SYS HR_DIR SYS READ
6. data pump를 이용해서 hr유저가 소유한 모든 object를 hr_dir 디렉토리에 hr_object.dump 이름으로 생성해 주세요.
[oracle@oracle ~]$ expdp system/oracle directory=hr_dir dumpfile=hr_object.dump schemas=hr
[oracle@oracle ~]$ cd /home/oracle/hr_pump
[oracle@oracle hr_pump]$ ls
export.log hr_object.demp
7. hr_object.dump에 있는 employees 테이블에 대해서 hrm유저에게 import에 해주세요
단 trigger, grant, constraint, ref_constraint, index는 제외 시켜 주세요.
SELECT owner,table_name,tablespace_name FROM dba_tables WHERE owner = 'HR' AND table_name = 'EMPLOYEES';
OWNER TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------ ---------------
HR EMPLOYEES EXAMPLE
SELECT username,default_tablespace FROM dba_users WHERE username IN ('HRM','HR');
USERNAME DEFAULT_TABLESPACE
---------- ------------------------------
HR USERS
HRM HRM_TBS
[oracle@oracle ~]$
impdp system/oracle directory=hr_dir dumpfile=hr_object.dump remap_schema=hr:hrm
remap_tablespace=example:hrm_tbs tables=hr.employees exclude=trigger,grant,constraint,index
SQL> conn hrm/oracle
SQL> SELECT COUNT(*) FROM hrm.employees;
COUNT(*)
----------
107
SELECT * FROM dba_constraints WHERE owner = 'HRM' AND table_name = 'EMPLOYEES';
> not null 제약조건은 포함되어있다? -> 열단위라서
8. hr_object.dump에 있는 departments, locations 테이블에 대해서 hrm유저에게 import에 해주세요
단 trigger, grant, constraint, ref_constraint, index는 제외 시켜 주세요.
SELECT owner,table_name,tablespace_name FROM dba_tables
WHERE owner = 'HR' AND table_name IN ('DEPARTMENTS','LOCATIONS');
OWNER TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------ ---------------
HR LOCATIONS EXAMPLE
HR DEPARTMENTS EXAMPLE
SELECT username,default_tablespace FROM dba_users WHERE username IN ('HRM','HR');
USERNAME DEFAULT_TABLESPACE
---------- ------------------------------
HR USERS
HRM HRM_TBS
[oracle@oracle ~]$
impdp system/oracle directory=hr_dir dumpfile=hr_object.dump remap_schema='hr':'hrm'
remap_tablespace='example':'hrm_tbs' tables=hr.departments,hr.locations exclude=trigger,grant,constraint,ref_constraint,index
오브젝트 확인하기
SELECT * FROM dba_tabs;
9. hrm.employees employee_id 컬럼에 primary key 생성하세요. 제약조건 이름은 hrm_emp_id_pk로 생성하세요.
ALTER TABLE hrm.employees ADD CONSTRAINT hrm_emp_id_pk PRIMARY KEY(employee_id);
10. hrm.departments department_id 컬럼에 primary key 생성하세요. 제약조건 이름은 hrm_dept_id_pk로 생성하세요.
ALTER TABLE hrm.departments ADD CONSTRAINT hrm_dept_id_pk PRIMARY KEY(department_id);
11. hrm.employees department_id에 foreign key를 생성하세요. references는 departments department_id를 참조하세요.
제약조건 이름은 emp_dept_id_fk로 생성하세요.
ALTER TABLE hrm.employees ADD CONSTRAINT emp_dept_id_fk FOREIGN KEY(department_id)
REFERENCES hrm.departments(department_id);
SELECT constraint_name,constraint_type,search_condition,r_constraint_name,status,validated,index_name
FROM dba_constraints WHERE owner = 'HRM';
SELECT * FROM dba_constraints WHERE owner = 'HRM';
'Oracle 11g > Backup & Recovery' 카테고리의 다른 글
73 Backup&Recovery, RMAN (0) | 2024.01.25 |
---|---|
72 Backup&Recovery, RMAN (0) | 2024.01.24 |
70 Backup&Recovery, Log Miner, Clone DB, Export & Import (0) | 2024.01.22 |
69 Backup&Recovery, Archive Log Mode (0) | 2024.01.19 |
68 Backup&Recovery, Archive Log Mode, control file 손상 (0) | 2024.01.18 |