Linux创建Oracle数据库实例&dmp导入、导出

2021/8/17 19:37:27

本文主要是介绍Linux创建Oracle数据库实例&dmp导入、导出,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

创建的ORACLE的SID

#切换到oracle用户环境
su - oracle

#本次创建的ORACLE的SID为UMCISC
export ORACLE_SID=UMCISC

#打印当前ORACLE的SID
echo $ORACLE_SID
UMCISC

创建相应目录

#将UMCISC换成自己的SID
mkdir -p $ORACLE_BASE/admin/UMCISC/{a,b,c,u}dump
mkdir -p $ORACLE_BASE/admin/UMCISC/pfile
mkdir -p $ORACLE_BASE/oradata/UMCISC

创建初始化文件

#打开$ORACLE_HOME/dbs目录
[oracle@node1 ~]$ cd $ORACLE_HOME/dbs
[oracle@node1 dbs]$ ls
hc_orcl.dat  init.ora  lkORCL  orapworcl  spfileorcl.ora

#复制初始化文件,规则为init+实例名.ora
[oracle@node1 dbs]$ cp init.ora iniUMCISC.ora

#编辑,将<ORACLE_BASE>换成对应的绝对路径,不知道的可以通过echo $ORACLE_BASE命令查看
[oracle@node1 dbs]$ vi iniUMCISC.ora
db_name='UMCISC'#换成自己的SID
memory_target=1G
processes = 150
audit_file_dest='/u01/app/oracle/admin/UMCISC/adump'#替换成自己的
audit_trail ='db'
db_block_size=8192
db_domain=''
db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'#替换成自己的
db_recovery_file_dest_size=2G
diagnostic_dest='/u01/app/oracle'#替换成自己的
dispatchers='(PROTOCOL=TCP) (SERVICE=UMCISCXDB)'#UMCISC将替换成自己的SID
open_cursors=300
remote_login_passwordfile='EXCLUSIVE'
undo_tablespace='UNDOTBS1'
# You may want to ensure that control files are created on separate physical
# devices
control_files = (ora_control3, ora_control4)#原文件是1,2改成不一样的不然会报错
compatible ='11.2.0'

 

创建密码文件

#将orapwUMCISC的UMCISC改成自己的SID,admin是密码
orapwd file=$ORACLE_HOME/dbs/orapwUMCISC password=admin entries=5 force=y

 

创建oracle的建库脚本 createdb.sql

#打开路径,
cd $ORACLE_BASE/oradata/UMCISC

#创建文件
[oracle@node1 rmblc]$ vi createdb.sql
create database UMCISC #替换成自己的SID
MAXINSTANCES 1
MAXLOGHISTORY 1
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXDATAFILES 100
DATAFILE
'/u01/app/oracle/oradata/UMCISC/system01.dbf' size 100m reuse autoextend on next 1m maxsize unlimited extent management local #替换成自己的路径
sysaux datafile
'/u01/app/oracle/oradata/UMCISC/sysaux01.dbf' size 100m reuse autoextend on next 1m maxsize unlimited #替换成自己的路径
default temporary tablespace TEMP tempfile
'/u01/app/oracle/oradata/UMCISC/temp01.dbf' size 20m reuse autoextend on next 640k maxsize unlimited #替换成自己的路径
undo tablespace UNDOTBS1 datafile
'/u01/app/oracle/oradata/UMCISC/undo01.dbf' size 20m reuse autoextend on next 5M maxsize unlimited #替换成自己的路径
logfile
GROUP 1 ('/u01/app/oracle/oradata/UMCISC/redo1.dbf') size 10m, #替换成自己的路径
GROUP 2 ('/u01/app/oracle/oradata/UMCISC/redo2.dbf') size 10m, #替换成自己的路径
GROUP 3 ('/u01/app/oracle/oradata/UMCISC/redo3.dbf') size 10m  #替换成自己的路径
CHARACTER SET ZHS16GBK
NATIONAL CHARACTER SET AL16UTF16
;

执行建库和数据字典脚本

#检查当前SID是否为自己创建的
echo $ORACLE_SID
UMCISC

#连接数据库
sqlplus / as sysdba

#执行这一句可能会提示错误,具体看问题列表
SQL> startup nomount
SQL> @$ORACLE_BASE/oradata/UMCISC/createdb.sql
SQL> @?/rdbms/admin/catalog.sql;
SQL> @?/rdbms/admin/catproc.sql;
SQL> @?/rdbms/admin/catexp.sql;

修改监听配置文件listener.ora

cd $ORACLE_HOME/network/admin

#增加以下内容
[oracle@node1 admin]$ vi listener.ora
UMCISC =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1522))
      )
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 10.58.200.35)(PORT = 1522))
      )
    )
  )
SID_LIST_UMCISC =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = UMCISC)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
      (SID_NAME = UMCISC)
    )
  )
LISTENER_FATPASE =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 10.58.200.35)(PORT = 1522))

 

启动监听

#这里要指明启动哪个数据库实例的监听
lsnrctl start UMCISC

 

数据库原始密码

用户名:sys          密码:change_on_install
用户名:system       密码:manager
用户名:scott        密码:tiger

修改密码,已经连接数据库

SQL> alter user sys identified by admin as sysdba;

创建表空间 

CREATE TABLESPACE 用户名 DATAFILE '/data/DBAS/用户名_01.dbf' Size 256M autoextend on next 128M maxsize 10240M NOLOGGING ONLINE PERMANENT BLOCKSIZE 16384 EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT Auto; 

创建用户及授权 

CREATE USER 用户名 IDENTIFIED BY 密码 DEFAULT TABLESPACE 用户名 TEMPORARY TABLESPACE TEMP PROFILE DEFAULT;  
BEGIN  
EXECUTE IMMEDIATE 'GRANT SELECT ANY DICTIONARY TO 用户名';  
EXECUTE IMMEDIATE 'GRANT ALTER ANY TABLE TO 用户名';  
EXECUTE IMMEDIATE 'GRANT ALTER SYSTEM TO 用户名';  
EXECUTE IMMEDIATE 'GRANT ALTER ANY PROCEDURE TO 用户名';  
EXECUTE IMMEDIATE 'GRANT CONNECT TO 用户名';  
EXECUTE IMMEDIATE 'GRANT CREATE ANY PROCEDURE TO 用户名';  
EXECUTE IMMEDIATE 'GRANT CREATE ANY TABLE TO 用户名';  
EXECUTE IMMEDIATE 'GRANT CREATE ANY INDEX TO 用户名';  
EXECUTE IMMEDIATE 'GRANT CREATE DATABASE LINK TO 用户名';  
EXECUTE IMMEDIATE 'GRANT CREATE PUBLIC DATABASE LINK TO 用户名';  
EXECUTE IMMEDIATE 'GRANT CREATE ANY VIEW TO 用户名';  
EXECUTE IMMEDIATE 'GRANT CREATE PUBLIC SYNONYM TO 用户名';  
EXECUTE IMMEDIATE 'GRANT CREATE TABLE TO 用户名';  
EXECUTE IMMEDIATE 'GRANT DELETE ANY TABLE TO 用户名';  
EXECUTE IMMEDIATE 'GRANT DROP PUBLIC DATABASE LINK TO 用户名';  
EXECUTE IMMEDIATE 'GRANT DROP ANY TRIGGER TO 用户名';  
EXECUTE IMMEDIATE 'GRANT DROP ANY INDEX TO 用户名';  
EXECUTE IMMEDIATE 'GRANT DROP ANY PROCEDURE TO 用户名'; 
EXECUTE IMMEDIATE 'GRANT DROP ANY TABLE TO 用户名';  
EXECUTE IMMEDIATE 'GRANT DROP ANY VIEW TO 用户名';  
EXECUTE IMMEDIATE 'GRANT CREATE PUBLIC SYNONYM TO 用户名';  
EXECUTE IMMEDIATE 'GRANT DROP PUBLIC SYNONYM TO 用户名';  
EXECUTE IMMEDIATE 'GRANT CREATE ANY SEQUENCE TO 用户名'; 
EXECUTE IMMEDIATE 'GRANT EXECUTE ANY PROCEDURE TO 用户名';  
EXECUTE IMMEDIATE 'GRANT GRANT ANY PRIVILEGE TO 用户名';  
EXECUTE IMMEDIATE 'GRANT GRANT ANY ROLE TO 用户名';  
EXECUTE IMMEDIATE 'GRANT CREATE ANY TRIGGER TO 用户名';  
EXECUTE IMMEDIATE 'GRANT INSERT ANY TABLE TO 用户名';  
EXECUTE IMMEDIATE 'GRANT SELECT ANY DICTIONARY TO 用户名';  
EXECUTE IMMEDIATE 'GRANT SELECT ANY SEQUENCE TO 用户名';  
EXECUTE IMMEDIATE 'GRANT DROP ANY SEQUENCE TO 用户名';  
EXECUTE IMMEDIATE 'GRANT SELECT ANY TABLE TO 用户名'; 
EXECUTE IMMEDIATE 'GRANT UNLIMITED TABLESPACE TO 用户名';  
EXECUTE IMMEDIATE 'GRANT UPDATE ANY TABLE TO 用户名';  
EXECUTE IMMEDIATE 'GRANT COMMENT ANY TABLE TO 用户名';  
EXECUTE IMMEDIATE 'GRANT CREATE ANY TYPE TO 用户名';  
EXECUTE IMMEDIATE 'GRANT CREATE TABLESPACE TO 用户名';  
EXECUTE IMMEDIATE 'GRANT CREATE USER TO 用户名';  
EXECUTE IMMEDIATE 'GRANT EXP_FULL_DATABASE TO 用户名';  
EXECUTE IMMEDIATE 'GRANT IMP_FULL_DATABASE TO 用户名';  
EXECUTE IMMEDIATE 'GRANT ALTER USER TO 用户名';  
EXECUTE IMMEDIATE 'GRANT DEBUG ANY PROCEDURE TO 用户名';  
EXECUTE IMMEDIATE 'GRANT DEBUG CONNECT SESSION TO 用户名'; 
END; 
/ 

 

Oracle dmp导出、导入

su - oracle

--用sys登录 
sqlplus sys/sys@10.51.101.138/NECPBZK as sysdba   
--创建文件夹   
create or replace directory impdp as '/data/impdp'; 
--赋权 
grant read,write on directory impdp to system; 
--退出 
exit

--数据泵导入 
impdp system/sys@10.xx.xx.xx/ECPTEST directory=impdp dumpfile=bzkumc680_20201211.dmp logfile=bzkumc680_20201211.log  REMAP_SCHEMA=NECPUMC680:NECPUMCZC remap_tablespace=NECPUMC680:NECPUMCZC 

NECPUMC680这个是源库的用户名
NECPUMCZC这个是目标库的用户名

--数据泵导出 
expdp system/sys@10.xx.xx.xx/ECPTEST directory=expdir dumpfile=bzkumc680_20210202.dmp logfile=bzkumc680_20210202.log parallel=4 SCHEMAS=NECPUMC exclude=statistics job_name=yh


这篇关于Linux创建Oracle数据库实例&dmp导入、导出的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程