今天發現一個Oracle測試庫的字符集設置不正確,原本的字符集是UTF-8,正確的字符集應該是ZHS16GBK,因為UTF-8是ZHS16GBK的超集,
今天發現一個Oracle測試庫的字符集設置不正確,原本的字符集是UTF-8,正確的字符集應該是ZHS16GBK,因為UTF-8是ZHS16GBK的超集,無法修改,只能重建數據庫,幸好該測試庫上還沒有數據。
參考閱讀:
手動創建Oracle數據庫實例
手工創建Oracle數據庫
Linux環境下手工創建Oracle 10g數據庫
雖然用DBCA也可以創建數據庫,但我個人更喜歡手工創建數據庫,其主要步驟如下(數據庫版本11.2):
1. 設置ORACLE_SID
默認的ORACLE_SID是orcl,我個人強烈建議起個唯一、且意義的名字,比如**testdb,,**proddb等等,在Oracle用戶下執行:
export ORACLE_SID=lxdbtest
2. 重建PFILE
在$ORACLE_HOME/dbs目錄下重建pfile(initORACLE_SID.ora,本例為initlxdbtest.ora),除了以下三個參數,其它參數都可以不用設置(使用默認值):
db_name=lxdbtest
control_files='/home/oracle/app/oradata/lxdbtest/control01.ctl','/home/oracle/app/oradata/lxdbtest/control02.ctl','/home/oracle/app/oradata/lxdbtest/control03.ctl'
memory_target=2G
為了安全起見,控制文件一定要指定多份,在生產庫上,要把它們分開放在不同的物理磁盤上,這里因為是測試庫,所以才放在同一個磁盤上。
3. 啟動實例至nomount狀態
有了pfile就可以啟動實例至nomount狀態了:
$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Thu Jul 25 21:01:16 2013
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup nomount
ORACLE instance started.
Total System Global Area 2137886720 bytes
Fixed Size 2215064 bytes
Variable Size 1224737640 bytes
Database Buffers 905969664 bytes
Redo Buffers 4964352 bytes
SQL>
4. 執行CREATE DATABASE語句
CREATE DATABASE lxdbtest
LOGFILE GROUP 1 ('/home/oracle/app/oradata/lxdbtest/redo01a.log','/data/oradata/lxdbtest/redo01b.log') SIZE 100M BLOCKSIZE 512,
GROUP 2 ('/home/oracle/app/oradata/lxdbtest/redo02a.log','/data/oradata/lxdbtest/redo02b.log') SIZE 100M BLOCKSIZE 512,
GROUP 3 ('/home/oracle/app/oradata/lxdbtest/redo03a.log','/data/oradata/lxdbtest/redo03b.log') SIZE 100M BLOCKSIZE 512
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXLOGHISTORY 1
MAXDATAFILES 600
CHARACTER SET ZHS16GBK
NATIONAL CHARACTER SET AL16UTF16
EXTENT MANAGEMENT LOCAL
DATAFILE '/home/oracle/app/oradata/lxdbtest/system01.dbf' SIZE 2048M REUSE AUTOEXTEND OFF
SYSAUX DATAFILE '/home/oracle/app/oradata/lxdbtest/sysaux01.dbf' SIZE 2048M REUSE AUTOEXTEND OFF
DEFAULT TABLESPACE users
DATAFILE '/home/oracle/app/oradata/lxdbtest/users01.dbf'
SIZE 2048M REUSE AUTOEXTEND OFF
DEFAULT TEMPORARY TABLESPACE temptbs
TEMPFILE '/home/oracle/app/oradata/lxdbtest/temp01.dbf'
SIZE 2048M REUSE AUTOEXTEND OFF
UNDO TABLESPACE undotbs
DATAFILE '/home/oracle/app/oradata/lxdbtest/undotbs01.dbf'
SIZE 2048M REUSE AUTOEXTEND OFF;
有幾點需要注意:
1)每個日志文件組的日志要放在不同的物理磁盤上,萬一有一個磁盤損壞,也不會丟失數據
2)根據需要選擇合適的字符集
3)創建了5個基本的表空間:SYSTEM,SYSAUX,默認表空間,默認臨時表空間,默認UNDO表空間
5. 根據需要創建應用程序所需的表空間
對于關鍵業務的數據,應該創建單獨的表空間給它使用(最好把表和索引分開放在表空間)
SQL> create tablespace p95169tbs
2 datafile '/home/oracle/app/oradata/lxdbtest/p95169tbs01.dbf' size 10G,
3 '/home/oracle/app/oradata/lxdbtest/p95169tbs02.dbf' size 10G;
Tablespace created.
6. 構建數據字典視圖
@?/rdbms/admin/catalog.sql
@?/rdbms/admin/catproc.sql
@?/sqlplus/admin/pupbld.sql
7. 修改system,sys的密碼
alter user sys identified by ***;
alter user system identified by ***;
8. 創建SPFILE
SQL> create spfile from pfile;
File created.
重啟數據庫后,將以spfile取代pfile.
最后,再順便說下如何刪除數據庫。在刪除數據庫之前,數據庫必須是在mount和restricted session狀態,具體如下:
SQL> startup mount
SQL> alter system enable restricted session;
System altered.
SQL> drop database;
Database dropped.
數據庫刪除成功后,所有的在線日志文件、數據文件都會一并被刪除,但歸檔日志和備份文件不會被刪除。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com