oracle 11g手工建数据库过程

创建需求和目的

1、需要把11机器上的oracle库中的表导入到12机器oracle库
2、11机器上的数据库fp在12机器上不存在,需要创建新库,以便导入。
3、我们只需导入业务库shp即可,不需要把system,sysaux,temp等系统表空间一并导入,例如:mysql你在导库的时候只是导业务库或表,而不会导入mysql.user这样的系统表
原理是一样的。
所以你对于创建新库的时候,哪些是业务表空间,哪些是系统表空间还是从oracle角度了解清楚他们都是做什么的。
4、导入时需要注意字符集的差异,你在建库的时候就要设置好字符集。
无非一个是业务库,一个是系统运行需要的比如:SYSTEM表空间存储了必要大量的系统表,包括一些数据字典和动态性能视图等。

 

环境采样

oracle@prd:/home/oracle$cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core) 

  oracle@prd:/home/oracle$uname -r
  3.10.0-327.el7.x86_64

  oracle:Release 11.2.0.4.0 Production,单机版

步骤一、指定新的SID

oracle@prd:/home/oracle$cat .bash_profile  //查看下环境变量设置情况
  # .bash_profile 

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/.local/bin:$HOME/bin
export ORACLE_BASE=/u01/oracle
export ORACLE_HOME=/u01/oracle/product/11.2.0
##su - oracle 进入默认显示的ORACLE_SID
export ORACLE_SID=prd
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export ORACLE_TERM=xterm
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/lib:/usr/local/lib
export CLASSPATH=$ORACLE_HOME/JRE
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin
export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export PATH=${PATH}:$ORACLE_BASE/common/oracle/bin
export PS1="`whoami`@$ORACLE_SID:"'$PWD$'
export DB_ALERT=/u01/oracle/diag/rdbms/$ORACLE_SID/$ORACLE_SID/trace
stty erase ^H
alias sqlplus='rlwrap sqlplus' 
alias rman='rlwrap rman' 
alias lsnrctl='rlwrap lsnrctl'

//指定新的sid,实际就是切换实例,我们想登录某个数据库实例就需要
//重新设置当前的ORACLE_SID,这样才能进入到个是数据库的实例中
//这点在操作中要注意。
oracle@prd$>export ORACLE_SID=fp
oracle@prd$>echo   $ORACLE_SID
oracle@prd:/home/oracle$sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Sat Mar 19 02:17:35 2022
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to an idle instance. 
//已连接到某空闲实例. //意思就是这个实例实际表示两种意思
//1、该实例未启动,启动数据库需三个阶段 startup nomount,alter database mount,alter database open;
每个阶段实际都会定义一些操作,只有该阶段才能进行相关操作。例如:select status from v$instance; 查询实例,首先你得 startup nomount才能查询
//2、该实例实际未存在也会这样显示提示。

 

步骤二、创建密码文件

   为创建数据库,我们必须选择一种数据库管理员身份验证模式,这里有两种方法:
  With a password file
  With operating system authentication

oracle@prd$> orapwd file=/u01/oracle/product/11.2.0/dbs/orapwfp password=oracle

步骤三、创建初始化参数文件
      我是copy的其他数据库的参数文件,这里要注意起名是有规则的   init$oracle_id.ora(你也可以利用init.ora这个模板,把名称改为我们需要的文件)
      创建文件后放在了 /u01/oracle/product/11.2.0/dbs/initfp.ora (我们这里数据库名和实例名都是fp)

      这个当中我创建了 
     1、/u01/oracle/oradata/fp和/u01/oracle/fast_recovery_area/fp目录
   2、mkdir -p 
/u01/oracle/admin/fp/adump  //连续创建目录 mkdir -p 

db_name='fp'
memory_target=1G
processes = 150
audit_file_dest='/u01/oracle/admin/fp/adump'
audit_trail ='db'
db_block_size=8192
db_domain='oracle.com'
db_recovery_file_dest='/u01/oracle/fast_recovery_area'
db_recovery_file_dest_size=2G
diagnostic_dest='/u01/oracle'
dispatchers='(PROTOCOL=TCP) (SERVICE=test1XDB)'
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 =('/u01/oracle/oradata/fp/control01.ctl','/u01/oracle/fast_recovery_area/fp/control02.ctl')
compatible ='11.2.0.4.0'

 注意:control01.ctl,.....control02.ctl....等 control_files这里根据需求填写多个控制文件路径,这个文件不需要事先创建,指定即可路已经和文件名即可,
 在创建数据库时会自动创建指定的文件,control01.ctl只需要指定目录即可,默认如果没有会自动创建

步骤四、创建服务器动态参数文件spfile(我们利用pfile文件来创建)

oracle@prd:/home/oracle$>export ORACLE_SID=fp
oracle@prd:/home/oracle$>echo   $ORACLE_SID
oracle@prd:/home/oracle$sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Sat Mar 19 02:17:35 2022
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
Connected to an idle instance.
SQL> create spfile from pfile='/u02/oracle/product/11.2.0/dbs/initfp.ora';  //创建spfile,不用启动数据库。
//initfp.ora文件是从init.ora

步骤五、开始启动第一阶段,nomount阶段

idle> startup nomount
ORACLE instance started.
Total System Global Area 313159680 bytes
Fixed Size 2175328 bytes
Variable Size 213913248 bytes
Database Buffers 92274688 bytes
Redo Buffers 4796416 bytes
//因为你当前的环境变量以及实例文件都能找到,所以你startup nomount可以不指定参数文件
//Oracle根据参数文件的内容,创建了instance,分配了相应的sga内存区域,启动了相关的后台进程
//观察告警日志文件(alert_fp.log),可以看到这一阶段的启动过程:读取参数文件,利用相关参数启动实例
 [root@rac-12c-2 ~]# locate alert_fp.log
  /u01/oracle/diag/rdbms/fp/fp/trace/alert_fp.log

  //进程的启动信息会在alert_fp_log中有显示,我这里直接用了现成启动好的实例,看下他们的进程信息

SQL>set line 9999;
SQL
> select addr,pid,spid,username,program from v$process; ADDR PID SPID USERNAME PROGRAM ---------------- ---------- ------------------------------------------------------------------------ --------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------ 00000018E14C2790 1 PSEUDO 000000195142CCE8 2 7234 oracle oracle@rac-12c-2 (PMON) 000000190143EEB8 3 7236 oracle oracle@rac-12c-2 (PSP0) 00000018F145B7C8 4 7241 oracle oracle@rac-12c-2 (VKTM) 00000018E14C3848 5 7245 oracle oracle@rac-12c-2 (GEN0) 000000195142DDA0 6 7247 oracle oracle@rac-12c-2 (DIAG) 000000190143FF70 7 7249 oracle oracle@rac-12c-2 (DBRM) 00000018F145C880 8 7251 oracle oracle@rac-12c-2 (DIA0) 00000018E14C4900 9 7253 oracle oracle@rac-12c-2 (MMAN) 000000195142EE58 10 7255 oracle oracle@rac-12c-2 (DBW0) 0000001901441028 11 7257 oracle oracle@rac-12c-2 (DBW1) ADDR PID SPID USERNAME PROGRAM ---------------- ---------- ------------------------------------------------------------------------ --------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------ 00000018F145D938 12 7259 oracle oracle@rac-12c-2 (LGWR) 00000018E14C59B8 13 7261 oracle oracle@rac-12c-2 (CKPT) 000000195142FF10 14 7263 oracle oracle@rac-12c-2 (SMON) 00000019014420E0 15 7265 oracle oracle@rac-12c-2 (RECO) 00000018F145E9F0 16 7267 oracle oracle@rac-12c-2 (MMON) 00000018E14C6A70 17 7269 oracle oracle@rac-12c-2 (MMNL) 0000001951430FC8 18 7271 oracle oracle@rac-12c-2 (D000) 0000001901443198 19 7273 oracle oracle@rac-12c-2 (S000) 00000018F145FAA8 20 109850 oracle oracle@rac-12c-2 (W000) 00000018E14C7B28 21 7322 oracle oracle@rac-12c-2 (QMNC) 0000001951432080 22 7336 oracle oracle@rac-12c-2 (CJQ0) ADDR PID SPID USERNAME PROGRAM ---------------- ---------- ------------------------------------------------------------------------ --------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------ 0000001901444250 23 108877 oracle oracle@rac-12c-2 (J000) 00000018F1460B60 24 109927 oracle oracle@rac-12c-2 (J001) 00000018E14C8BE0 25 107377 oracle oracle@rac-12c-2 0000001951433138 26 107379 oracle oracle@rac-12c-2 00000018E14CAD50 33 109950 oracle oracle@rac-12c-2 (TNS V1-V3) 0000001901448530 39 7370 oracle oracle@rac-12c-2 (SMCO) 00000018E14CCEC0 41 7391 oracle oracle@rac-12c-2 (Q000) 0000001951437418 42 7393 oracle oracle@rac-12c-2 (Q001) 30 rows selected.

 步骤六、把数据库启动到nomount状态,这种状态才可以创建具体的数据库
为创建数据库,我们之前创建了必要的目录,满足数据文件、控制文件、日志文件等路径需求等,包括有:

  1、存放控制文件contorl01.ctl的目录
   mkdir /u01/oracle/oradata/fp
  2、存放控制文件control02.ctl的目录
   mkdir /u01/oracle/fast_recovery_area/fp
 3、create log dir 创建存放log的目录
   mkdir -p /u01/oracle/admin/fp/{a,dp}dump

idle> startup nomount
ORACLE instance started.
Total System Global Area 313159680 bytes
Fixed Size 2175328 bytes
Variable Size 213913248 bytes
Database Buffers 92274688 bytes
Redo Buffers 4796416 bytes

步骤七、创建数据库(下面是核心语句)

 create database fp
 USER SYS IDENTIFIED BY oracle
 USER SYSTEM IDENTIFIED BY oracle 
 LOGFILE GROUP 1 ('/u01/oracle/oradata/fp/redo01.log') SIZE 100M,
         GROUP 2 ('/u01/oracle/oradata/fp/redo02.log') SIZE 100M,
         GROUP 3 ('/u01/oracle/oradata/fp/redo03.log') SIZE 100M 
 MAXLOGFILES 5
 MAXLOGMEMBERS 5 
 MAXLOGHISTORY 1 
 MAXDATAFILES 100 
 MAXINSTANCES 1
 CHARACTER SET AL32UTF8   ###由于此次需求是要把A库的业务表导出到B库业务表(A库和B库分别在不同的机器上独立运行,所以需要注意字符集设置)
 DATAFILE '/u01/oracle/oradata/fp/system01.dbf' SIZE 350M REUSE
 AUTOEXTEND ON NEXT 10240K
 EXTENT MANAGEMENT LOCAL
 SYSAUX DATAFILE '/u01/oracle/oradata/fp/sysaux01.dbf' SIZE 325M REUSE
 DEFAULT TABLESPACE SHP   ###业务表空间
 DATAFILE '/u01/oracle/oradata/fp/shp01.dbf'   
 SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
 DEFAULT TEMPORARY TABLESPACE temp
 TEMPFILE '/u01/oracle/oradata/fp/temp01.dbf'
 SIZE 20M REUSE
 UNDO TABLESPACE undotbs1 
 DATAFILE '/u01/oracle/oradata/fp/undotbs1.dbf'
 SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
//把该语句保存为 createdatabase.sql
//执行:
SQL> @/home/oracle/createdatabase.sql
Database created.
//一旦执行之后,你就会发现当前数据库立即处于open状态了。(oracle启动三阶段 nomount,mount,open)
//执行这个语句也可以直接在控制台上直接执行。

步骤八、创建数据字典等,在控制台直接执行

SQL>@?/rdbms/admin/catalog
SQL>@?/rdbms/admin/catproc
SQL>conn system/oracle
SQL>@?/sqlplus/admin/pupbld
SQL>conn / as sysdba

步骤九、创建两个数据库文件与用户的关系,同时创建用户

SQL> CREATE USER yyshp IDENTIFIED BY yySh12 DEFAULT TABLESPACE SHFP TEMPORARY TABLESPACE temp;
User created.

SQL> grant connect,resource,dba to yyshp;
Grant succeeded.

SQL> grant create session,create table,unlimited tablespace to yyshp;
Grant succeeded.

SQL> grant create table to yyshp;
Grant succeeded.
  
SQL> grant create tablespace to yyshp; 
Grant succeeded.
 
SQL> grant create view to yyshp;
Grant succeeded.

SQL> grant create session to yyshp;
Grant succeeded.

SQL> grant select any table TO yyshp;
Grant succeeded.

SQL> grant unlimited tablespace to yyshp;
Grant succeeded.

步骤十、创建普通用户默认表空间

CREATE TABLESPACE users  DATAFILE '/u01/app/oracle/oradata/test/user01.dbf' SIZE 100M
AUTOEXTEND ON;
ALTER DATABASE DEFAULT TABLESPACE users;
col file_name for a45
col tablespace_name for a10

步骤十一、需要设置网络配置、连接串

1、修改listener.ora
2、修改tnsnames.ora
//他们两个文件配合使用 oracle@prd:
/home/oracle$cat /u01/oracle/product/11.2.0/network/admin/tnsnames.ora # tnsnames.ora Network Configuration File: /u01/oracle/product/11.2.0/network/admin/tnsnames.ora # Generated by Oracle configuration tools. //添加fp相关信息 fp= (DESCRIPTION = (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = fp) ) ) PRD = (DESCRIPTION = (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = prd) ) ) oracle@prd:/home/oracle$cat /u01/oracle/product/11.2.0/network/admin/listener.ora SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = prd) (SID_NAME = prd) (ORACLE_HOME=/u01/oracle/product/11.2.0) ) //添加fp的相关信息 (SID_DESC= (GLOBAL_DBNAME=fp) (ORACLE_HOME=/u01/oracle/product/11.2.0) (SID_NAME=fp) ) MYLISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.121.51.50)(PORT = 1522)) ) )

 创建后查看相关的目录和内容

//在数据库中查询
SQL> select file_name,tablespace_name from dba_data_files;
FILE_NAME                                   TABLESPACE_NAME
------------------------------------------------------------------------------------------
/u02/oracle/oradata/fp/system01.dbf   SYSTEM
/u02/oracle/oradata/fp/sysaux01.dbf   SYSAUX
/u02/oracle/oradata/fp/undotbs1.dbf   UNDOTBS1
/u02/oracle/oradata/fp/shp01.dbf      SHP     //业务表

//进入目录查询
[root@rac-12c-2 ~]# ll /u01/oracle/oradata/fp/
total 3936260
drwxr-xr-x 2 oracle oinstall         10 Dec  2 10:23 archive
-rw-r----- 1 oracle oinstall    9519104 Mar 19 12:30 control01.ctl-rw-r----- 1 oracle oinstall   52436992 Mar 19 01:59 fp2.dbf
-rw-r----- 1 oracle oinstall   52436992 Mar 19 01:59 fp.dbf
-rw-r----- 1 oracle oinstall   52436992 Dec  1 20:37 fp_temp.dbf
-rw-r----- 1 oracle oinstall  104858112 Mar 19 12:29 redo01.log
-rw-r----- 1 oracle oinstall  104858112 Mar 17 02:30 redo02.log
-rw-r----- 1 oracle oinstall  104858112 Mar 18 03:10 redo03.log
-rw-r----- 1 oracle oinstall  524296192 Mar 18 03:15 shp01.dbf
-rw-r----- 1 oracle oinstall  340795392 Mar 19 12:20 sysaux01.dbf
-rw-r----- 1 oracle oinstall  367009792 Mar 19 12:25 system01.dbf
-rw-r----- 1 oracle oinstall   20979712 Mar 19 02:30 temp01.dbf
-rw-r----- 1 oracle oinstall  209723392 Mar 19 12:25 undotbs1.dbf
-rw-r----- 1 oracle oinstall 1073750016 Mar 19 01:59 users01.dbf
-rw-r----- 1 oracle oinstall 1073750016 Mar 19 01:59 users02.dbf

 [root@rac-12c-2 ~]# ll /u01/oracle/fast_recovery_area/fp/
  total 19040
  -rw-r----- 1 oracle oinstall 9519104 Mar 19 12:35 control02.ctl

 

补充

我这里以数据库是fp,sid=fp2为例,讲解
oracle参数文件
1.初始化参数文件 oracle的初始化参数文件分为spfilefp2.ora(spfile+sid+.ora)、spfile.ora、initfp2.ora(init+sid+.ora)。 2、pfle(Parameter File)静态参数文件: 文本文件,必须通过编辑器修改参数; 修改参数后,需重启实例生效; pfile 参数文件可以不放在数据库服务器上 ; 命名方式:init + SID.ora 。 3、spfile(System Parameter File)动态参数文件: 二进制文件,无法通过编辑器修改; Linux 下 strings 可以查看; 必须放在Database Server 指定路径下; 命名方式:spfile + SID.ora 。 4、pfile 和 spfile 可以相互生成: SQL>create pfile from spfile //通过spfile创建pfile文件 SQL>create pfile='/u01/oracle/product/11.2.0/dbs/spfilefp2.ora' from spfile; //指定文件和路径 SQL>create spfile from pfile//通过pfile创建spfile文件 SQL>create spfile from pfile='/u01/oracle/product/11.2.0/dbs/initfp2.ora' //指定文件和路径 注:使用 spfile 启动后不能在线生成spfile,ORA-32002: 无法创建已由实例使用的SPFILE
可以通过当前内存参数生成 pfile 和 spfile(11g 新特性): SQL
>create pfile from memory; SQL>create spfile from memory; 5、当oracle启动时,初始化参数文件的加载顺序为:spfilefp2.ora、spfile.ora、initfp2.ora。 有了spfile,pfile一般留做备用,特殊情况也可以使用 pfile 启动,命令如下: SQL> startup pfile=$ORACLE_HOME/dbs/initfp.ora

 

posted @ 2022-03-19 03:26  jinzi  阅读(795)  评论(0编辑  收藏  举报