手動(dòng)建庫(kù):
找到官方文檔,打開主索引
找到管理--create database
停止現(xiàn)有的數(shù)據(jù)庫(kù),釋放內(nèi)存
站在用戶的角度思考問題,與客戶深入溝通,找到殷都網(wǎng)站設(shè)計(jì)與殷都網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名與空間、虛擬主機(jī)、企業(yè)郵箱。業(yè)務(wù)覆蓋殷都地區(qū)。
1.設(shè)置環(huán)境變量--ORACLE_SID
2.建立密碼文件
3.建立文本的參數(shù)文件
4.建立二進(jìn)制參數(shù)文件
5.建立參數(shù)文件中描述的路徑
6.啟動(dòng)數(shù)據(jù)庫(kù)到nomount
7.create database...
8.運(yùn)行腳本: @$ORACLE_HOME/rdbms/admin/catalog 建立數(shù)據(jù)字典
@$ORACLE_HOME/rdbms/admin/catproc 建立應(yīng)用的包
9.建立示例方案
conn system/a@$ORACLE_HOME/sqlplus/admin/pupbld
br/>@$ORACLE_HOME/sqlplus/admin/pupbld
@$ORACLE_HOME/rdbms/admin/utlsampl.sql
打開官方文檔
Supporting Documentation
Administratior's Guide
2 creating and configuring an Oracle Database
第三項(xiàng):Creating a Database with the CREATE DATABASE Statement
Step 9: Issue the CREATE DATABASE Statement
1.關(guān)閉其他所有的數(shù)據(jù)庫(kù)。
2.建立新數(shù)據(jù)庫(kù)(yy)的密碼文件
ORACLE用戶執(zhí)行
cd $ORACLE_HOME/dbs
rapwd file=orapwyy password=a
3.建立文本的參數(shù)文件
strings spfileqq.ora (找一個(gè)已經(jīng)存在的參數(shù)文件,將內(nèi)容粘貼修改即可)
修改對(duì)應(yīng)的數(shù)據(jù)庫(kù)名和文件路徑。
具體見本文檔下第3步詳情。
4.設(shè)置環(huán)境變量:ORACLE_SID=yy
export ORACLE_SID=yy
5.建立二進(jìn)制參數(shù)文件
conn / as sysdba
create spfile from pfile;
6.建立參數(shù)文件中描述的路徑
cd /u01/app/oracle/admin
cp -r qq yy 進(jìn)入到該目錄下將qq目錄復(fù)制重命名為yy
建立數(shù)據(jù)文件存放目錄
cd /u01/app/oracle/oradata
mkdir yy
7.修改官方文檔的手動(dòng)建庫(kù)腳本,改數(shù)據(jù)庫(kù)名,路徑,密碼等。
具體見本文下面第7步詳情
8.啟動(dòng)數(shù)據(jù)庫(kù)到nomount,啟動(dòng)數(shù)據(jù)庫(kù)到nomount階段會(huì)寫日志到$ORACLE_BASE/admin/實(shí)例名/adump目錄
startup
報(bào)205錯(cuò)誤
運(yùn)行第7步修改后的 create database腳本創(chuàng)建數(shù)據(jù)庫(kù)。
腳本執(zhí)行完畢后數(shù)據(jù)庫(kù)創(chuàng)建完成,建成一個(gè)裸庫(kù),沒有數(shù)據(jù)字典
9.運(yùn)行腳本: @$ORACLE_HOME/rdbms/admin/catalog 建立數(shù)據(jù)字典
@$ORACLE_HOME/rdbms/admin/catproc 建立應(yīng)用的包
10.創(chuàng)建示例方案
SYS用戶執(zhí)行
alter user system identified by a;
conn system/a@$ORACLE_HOME/sqlplus/admin/pupbld
br/>@$ORACLE_HOME/sqlplus/admin/pupbld
@$ORACLE_HOME/rdbms/admin/utlsampl.sql
第3步詳情:
.audit_file_dest='/u01/app/oracle/admin/yy/adump'
.audit_trail='db'
.compatible='11.2.0.0.0'
.control_files='/u01/app/oracle/oradata/yy/control01.ctl','/u01/app/oracle/oradata/yy/control02.ctl'
.db_block_size=8192
.db_domain=''
.db_name='yy'
.diagnostic_dest='/u01/app/oracle'
.open_cursors=300
.pga_aggregate_target=308281344
.processes=150
.remote_login_passwordfile='EXCLUSIVE'
.sga_target=924844032
.undo_tablespace='UNDOTBS1'
第7步詳情:
CREATE DATABASE yy
USER SYS IDENTIFIED BY a
USER SYSTEM IDENTIFIED BY a
LOGFILE GROUP 1 ('/u01/app/oracle/oradata/yy/redo01.log') SIZE 20M,
GROUP 2 ('/u01/app/oracle/oradata/yy/redo02.log') SIZE 20M,
GROUP 3 ('/u01/app/oracle/oradata/yy/redo03.log') SIZE 20M
CHARACTER SET US7ASCII
NATIONAL CHARACTER SET AL16UTF16
EXTENT MANAGEMENT LOCAL
DATAFILE '/u01/app/oracle/oradata/yy/system01.dbf' SIZE 325M REUSE
SYSAUX DATAFILE '/u01/app/oracle/oradata/yy/sysaux01.dbf' SIZE 325M REUSE
DEFAULT TABLESPACE users
DATAFILE '/u01/app/oracle/oradata/yy/users01.dbf'
SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
DEFAULT TEMPORARY TABLESPACE tempts1
TEMPFILE '/u01/app/oracle/oradata/yy/temp01.dbf'
SIZE 20M REUSE
UNDO TABLESPACE undotbs1
DATAFILE '/u01/app/oracle/oradata/yy/undotbs01.dbf'
SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
實(shí)驗(yàn)2:掌握數(shù)據(jù)庫(kù)啟動(dòng)3階段
刪除yy數(shù)據(jù)庫(kù)的參數(shù)文件,將yy數(shù)據(jù)庫(kù)的控制文件、數(shù)據(jù)文件、日志文件移動(dòng)到其他位置。
原來的目錄 $ORACLE_BASE/oradata/yy 新的目錄:$ORACLE_BASE/oradata/tt
1.查看數(shù)據(jù)庫(kù)位置
select name from v$datafile
union all
select name from v$controlfile
union all
select name from v$tempfile
union all
select member from v$logfile;
路徑:/u01/app/oracle/oradata/tt/
2.關(guān)閉數(shù)據(jù)庫(kù)
shutdown immediate;
3.刪除數(shù)據(jù)庫(kù)的參數(shù)文件,將數(shù)據(jù)庫(kù)的數(shù)據(jù)文件、日志文件、控制文件移動(dòng)到其他目錄。
cd $ORACLE_HOME/dbs
rm -rf inityy.ora
rm -rf spfileyy.ora
cd $ORACLE_BASE/oradata
mv yy tt
4.指定實(shí)例名,啟動(dòng)數(shù)據(jù)庫(kù)
startup
報(bào)錯(cuò):ORA-01078找不到參數(shù)文件
根據(jù) /u01/app/oracle/diag/rdbms/yy/yy/trace下的log文件創(chuàng)建新的參數(shù)文件。
cd $ORACLE_HOME/dbs
vi inityy.ora 將剛才所看log文件的以下部分粘貼到該文本中,保存退出。
processes = 150
sga_target = 884M
control_files = "/u01/app/oracle/oradata/yy/control01.ctl"
control_files = "/u01/app/oracle/oradata/yy/control02.ctl"
db_block_size = 8192
compatible = "11.2.0.0.0"
undo_tablespace = "UNDOTBS1"
remote_login_passwordfile= "EXCLUSIVE"
db_domain = ""
audit_file_dest = "/u01/app/oracle/admin/yy/adump"
audit_trail = "DB"
db_name = "yy"
open_cursors = 300
pga_aggregate_target = 294M
diagnostic_dest = "/u01/app/oracle"
注:該步驟說明在數(shù)據(jù)庫(kù)啟動(dòng)到numount階段就需要參數(shù)文件。
5.在第四步創(chuàng)建好文本參數(shù)文件后,以SYS身份連接到數(shù)據(jù)庫(kù),創(chuàng)建二進(jìn)制參數(shù)文件,啟動(dòng)數(shù)據(jù)庫(kù)。
export ORACLE_SID=yy
sqlplus / as sysdba
create spfile from pfile;
startup
報(bào)錯(cuò):ORA-00205 控制文件錯(cuò)誤
查看數(shù)據(jù)庫(kù)的狀態(tài):數(shù)據(jù)庫(kù)處于STARTED狀態(tài)。
該步驟說明:在啟動(dòng)到nomount階段時(shí),只要參數(shù)文件無(wú)誤即可。
在mount數(shù)據(jù)庫(kù)時(shí),需要用到控制文件。
6.修改參數(shù)文件中控制文件的位置:
alter system set control_files='/u01/app/oracle/oradata/tt/control01.ctl',
'/u01/app/oracle/oradata/tt/control02.ctl' scope=spfile;
7.上一步修改完成后關(guān)閉數(shù)據(jù)庫(kù),再次啟動(dòng)。
shutdown abort;
startup nomount; 成功
alter database mount; 成功
alter database opne; 報(bào)錯(cuò)
報(bào)錯(cuò):ORA-01157不能找到數(shù)據(jù)文件,原因是數(shù)據(jù)文件已經(jīng)被移動(dòng)到其他路徑。
8.修改數(shù)據(jù)庫(kù),重新指定數(shù)據(jù)庫(kù)的數(shù)據(jù)文件的位置:(所有的數(shù)據(jù)文件和日志文件均要執(zhí)行,可以寫腳本來完成)
alter database rename file '/u01/app/oracle/oradata/tt/undotbs01.dbf'
to'/u01/app/oracle/oradata/yy/undotbs01.dbf';
9.重新指定路徑成功后打開數(shù)據(jù)庫(kù)
alter database open;
dump目錄/u01/app/oracle/diag/rdbms/yy/yy/trace
修改參數(shù)control_files=新路徑
啟動(dòng)數(shù)據(jù)庫(kù) mount成功 open報(bào)錯(cuò)
修改數(shù)據(jù)文件,臨時(shí)文件,數(shù)據(jù)文件
/u01/app/oracle/oradata/rr/control01.ctl
/u01/app/oracle/oradata/rr/control01.ctl
select 'alter database rename file '''||name||''''||chr(10)||' to''' ||
replace(name,'tt','yy')||''';' from v$datafile
union all
select 'alter database rename file '''||name||''''||chr(10)||' to''' ||
replace(name,'tt','yy')||''';' from v$tempfile
union all
select 'alter database rename file '''||member||''''||chr(10)||' to''' ||
replace(member,'tt','yy')||''';' from v$logfile ;
select 'alter database rename file '''||name||''''||chr(10)||' to '''||
'/newdb'||substr(name,instr(name,'/',-1))||';' from v$datafile;
段 segment
范圍 extend
一次分配的,連續(xù)的,ORACLE塊
一個(gè)段最少有一個(gè)范圍,可以有很多個(gè)范圍
范圍有3種模式
1.建立對(duì)象時(shí),分配的叫做初始范圍
2.數(shù)據(jù)增長(zhǎng)時(shí),分配額外的范圍
3.手工分配范圍
conn / as sysdba
grant select any dictionary to scott
conn scott/tiger
select from dba_free_space where tablespace_name='USERS';
2.create table t1 as select from emp;
create table t2 as select from emp;
3.select extent_id,file_id,block_id,blocks from dba_extents
where segment_name='T1';
4.insert into t1 select from t1;
insert into t2 select * from t2;
select extent_id,file_id,block_id,blocks from dba_extents
where segment_name='T1';
select extent_id,file_id,block_id,blocks from dba_extents
where segment_name='T2';
手動(dòng)分配空間:
alter table t1 allocate extent; 不指定大小,系統(tǒng)根據(jù)表已有大小分配。
alter table t1 allocate extent(size 2G); 指定大小
塊 block
SET LONG 1000
SQL> SELECT DBMS_METADATA.GET_DDL('TABLE','T2') FROM DUAL;
CREATE TABLE T1 SEGMENT CREATION IMMEDIATE AS SELECT * FROM EMP where 0=9;
SHOW PARAMETER SEGMENT
ALTER SYSTEM SET deferred_segment_creation=FALSE;
范圍回收3模式
1.手工回收未使用的范圍(嶄新的)
alter table t1 allocate extent(size 10m);
alter table t1 deallocate unused;
tabs=user_tables
select table_name,initial_extent from tabs where table_name='T2';
create table t2 storage(initial 1m) as select * from emp;
2.truncate table t1;(保留初始范圍)
3.drop table t1 purge;(徹底刪除空間)
alter table t2 allocate extent(size 10m);
select extent_id,file_id,block_id,blocks from dba_extents
where segment_name='T2';
DELETE
1.DML
2.產(chǎn)生大量的回退
3.產(chǎn)生大量日志
4.可以rollback
5.手工commit;
6.不回收空間
7.不回收高水位
8.可以有條件刪除
TRUNCATE
1.DDL
2.產(chǎn)生少的回退
3.產(chǎn)生少量日志
4.不可以rollback
5.自動(dòng)commit;
6.回收空間
7.回收高水位
8.不可以有條件刪除
show parameter rec
alter system set recyclebin=off scope=spfile;
塊:
數(shù)據(jù)庫(kù)存儲(chǔ)的基本空間,默認(rèn)是8K,建庫(kù)時(shí)指定
rowid行標(biāo)識(shí)
是根據(jù)數(shù)據(jù)存在的位置計(jì)算出來的
18位64進(jìn)制字符串
AAASdN AAE AAAACr AAA
對(duì)象 文件 塊 行
select rowid,ename,dbms_rowid.rowid_block_number(rowid) block# from emp;
ROWID_BLOCK_NUMBER
ROWID_OBJECT
ROWID_RELATIVE_FNO
ROWID_ROW_NUMBER
select rowid,ename,dbms_rowid.rowid_block_number(rowid) a,
dbms_rowid.ROWID_OBJECT(rowid) o,
dbms_rowid.ROWID_RELATIVE_FNO(rowid) f,
dbms_rowid.ROWID_ROW_NUMBER(rowid) r from emp;
select dbms_rowid.rowid_create(0,75335,4,151,0),
dbms_rowid.rowid_create(1,75335,4,151,0) from dual;
conn scott/123456;
drop table t1 purge;
create table t1 as select from emp;
insert into t1 select from emp where deptno=10;
commit;
select ename,sal from t1 order by 1;
delete from t1 wai where rowid<(select max(rowid) from t1 nei where wai.ename=nei.ename);
ERROR:
ORA-09925: Unable to create audit trail file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 9925
ORA-01075: you are currently logged on