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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM