1.如何知道哪些表沒有建立主鍵,?
Select table_name from user_tables t
Where not exists (select table_name from user_constraints c where constraint_type=’P’ and t.table_name=c.table_name)
2.相關(guān)數(shù)據(jù)字典的意義
User_tables 表
User_tab_columns 表的列
User_constraints 約束
User_cons_columns 約束與列的關(guān)系
User_indexes 索引
User_ind_columns 索引與列的關(guān)系
3.關(guān)于角色和權(quán)限
對于數(shù)據(jù)庫管理員,,應(yīng)該授予DBA角色;對于數(shù)據(jù)庫開發(fā)用戶,,只需要授予CONNECT和RESOURCE角色
Oracle數(shù)據(jù)庫的權(quán)限分為系統(tǒng)權(quán)限和對象權(quán)限,。前者在系統(tǒng)級控制對數(shù)據(jù)庫的存取和操作,,如用戶是否能通過建立會話而連接到數(shù)據(jù)庫,是否能啟動,、停止數(shù)據(jù)庫,,是否能修改數(shù)據(jù)庫參數(shù)等;對象權(quán)限在方案級控制對數(shù)據(jù)庫的存取和操作,,如用戶可以存取哪個(gè)方案中的對象,,是否能對該對象進(jìn)行查詢、插入,、更新等。
4.關(guān)于Oracle的回收站以及閃回技術(shù)
用drop命令刪除的表其實(shí)并沒有物理刪除,,而是放在了回收站里,,還占用著數(shù)據(jù)庫空間。用select * from User_recyclebin就可以看到回收站中的表,。
Purge table temp1—將回收站中的某個(gè)表徹底刪除
Purge recyclebin:清空oracle的回收站,;
Flashback table tablename to before drop(rename to temp2) —還原某張表(可以進(jìn)行更名);
Flashback table temp to timestamp(systimestamp-interval ‘1’ minute) ---恢復(fù)到1分鐘前的數(shù)據(jù)(也可以是second等),,但是要注意,,首先要啟動表的行移動功能:alter table temp enable row movement;
5.選擇數(shù)據(jù)庫實(shí)例
Windows下:set oracle_sid=…
Unix下:export oracle_sid=…
6.表和表之間的關(guān)聯(lián)更新
Update file_dept a set a.id=(select b.id from temp1 b where a.dept_id=b.dept_id)
7.創(chuàng)建用戶:
第一步:建立用戶
Create user web identified by web
Default tablespace web
Temporary tablespace temp
Profile “DEFAULT”—大寫
Account unlock; —未鎖定
第二步:授予權(quán)限
與scott相同:grant connect to web;
Grant resource to web;
Grant create view to web;
8.刪除某個(gè)用戶的連接
Select sid,serial#,status from v$session where username=’…’
Alter system kill session ‘sid,serial#’;
9.啟動關(guān)閉監(jiān)聽
>lsnrctl start
>lsnrctl stop
>lsnrctl status
10.啟動和關(guān)閉數(shù)據(jù)庫
Ø 啟動數(shù)據(jù)庫
>startup nomount ---啟動例程,但不裝載數(shù)據(jù)庫,,并未打開控制文件和數(shù)據(jù)文件
>startup mount ---啟動例程并裝載數(shù)據(jù)庫,,但不打開數(shù)據(jù)庫,打開控制文件,,但并未打開數(shù)據(jù)文件
>startup open ---啟動例程,,裝載數(shù)據(jù)庫,打開數(shù)據(jù)庫,,既打開了控制文件也打開了數(shù)據(jù)文件
>startup force ---強(qiáng)制啟動
>startup restrict
>startup pfile=… ---注意是pfile,,不是spfile??梢韵扔胏reate pfile=… from spfile=…語句將服務(wù)器初始化文件導(dǎo)出成文本初始化參數(shù)文件后,,再使用導(dǎo)出后的文本初始化參數(shù)文件
Ø 關(guān)閉數(shù)據(jù)庫
過程:關(guān)閉數(shù)據(jù)庫-->卸載數(shù)據(jù)庫-->終止例程
語法:shut down[ normal | transactional | immediate | abort ]
盡量避免用abort選項(xiàng)來關(guān)閉數(shù)據(jù)庫,如果想盡快關(guān)閉,,可以使用IMMEDIATE選項(xiàng),,這樣所有未提交的事物均被回退,使數(shù)據(jù)信息以及完整性得以保證,。
Ø 說明
在NOMOUNT啟動模式下,,只能訪問那些與SGA區(qū)相關(guān)的數(shù)據(jù)字典視圖,如V$PARAMETER,V$SGA,V$OPTION,V$PROCESS,V$SESSION,V$VERSION,V$INSTANCE等,。這些視圖中的信息都是從SGA區(qū)中獲取的,,與數(shù)據(jù)庫無關(guān),;
在MOUNT啟動模式下,除了可以訪問那些與SGA區(qū)相關(guān)的數(shù)據(jù)字典視圖之外,,還可以訪問到那些與控制文件相關(guān)的數(shù)據(jù)字典視圖,,如V$THREAD,V$CONTROLFILE,V$DATABASE,V$DATAFILE,V$LOGFILE等,這些視圖中的信息都是從控制文件中獲取的,。
11.更改用戶密碼
當(dāng)忘記了system與sys的密碼時(shí),,可用如下方法更改:
C:>sqlplus/nolog
SQL>connect 空格/空格 @myoracle as sysdba
SQL>alter user system identified by manager
要注意的是,以上方法只能在服務(wù)器端執(zhí)行,,客戶端不能執(zhí)行,。
12.設(shè)置主機(jī)首選身份證明
1).選擇“開始”-->“程序”-->“管理工具”-->“本地安全策略”,打開“本地安全策略”窗口
2).選擇“本地策略”中的“用戶權(quán)限分配”項(xiàng)
3).在右邊的“策略”列中雙擊“作為批處理作業(yè)登錄”項(xiàng),,打開其屬性對話框
4).將Administrator加入用戶中,,這樣,該用戶就有了“作為批處理作業(yè)登錄”的權(quán)限
13.如何將數(shù)據(jù)庫從noarchivelog改成archivelog方式,?
首先打開INIT.ora文件,,確保存檔日志目標(biāo)指向一有效目錄,然后啟動sqlplus
SQL>shutdown immediate
SQL>startup mount
SQL>alter database archivelog
SQL>alter database open
SQL>archive log list ---列出現(xiàn)在數(shù)據(jù)庫是否歸檔
在INIT.ora中設(shè)置參數(shù)archive_log_start=true,,它設(shè)置存檔日志為自動啟動,。
14.創(chuàng)建表空間的SQL
Create smallfile tablespace “FILEEXCHANGE”
Datafile’D:\oracle\myoracle\fileexchange.dbf’ size 10M
Reuse autoextend on next 5120k MAXSIZE 32767M—最大
Nologging extend management local—區(qū)管理方式:本地管理
Segment space management Auto—使用Auto段管理方式
15.Sqlplus技巧
清屏:SQL>ho cls
Sqlplus中的所有命令可用>help index看到,關(guān)于每個(gè)指令具體的用法可用>,?…或help …來查看,。
16.修改系統(tǒng)日期格式
Alter session set NLS_DATE_FORMAT=’dd-mon-yyyy hh:mi:ss’;
Select current_date from dual;
Select sysdate from dual;
17.如何將角色賦予用戶
1).創(chuàng)建一個(gè)角色:create role myrole;
2).將對scott.dept表的select權(quán)限賦予這個(gè)角色:grant select on scott.dept to myrole;
3).將這個(gè)角色賦予用戶test:grant myrole to test.
18.SQLLoad的使用
1).數(shù)據(jù)文件Loader.txt,文件內(nèi)容如下
abcd,qq
abc,ee
…
2).控制文件cont.ctl(以ctl為后綴),內(nèi)容如下:
Load data
Infile ‘c:\loader.txt’ ---數(shù)據(jù)文件
Append
Into table mm(
M1 char terminated by “,”,
M2 char terminated by “,”)---用逗號分隔字段
3).執(zhí)行命令:>sqlldr scott/tiger control=c:\cont.ctl data=c:\loader.txt
如果成功就會提示:commit point reached—logical record count 3—表示插入了3條記錄
如果每列長度固定,,那么可寫成mm(m1 position(1:3) char,m2 position(5:7) char)—表示提取1-3位和5-7位
4).SQLLoader的4種裝入表的方式:
APPEND:原先的表有數(shù)據(jù),,就加在后面;
INSERT:裝載空表,,如果原先的表有數(shù)據(jù),,SQLLoader就會停止
REPLACE:原先的表有數(shù)據(jù),原先的數(shù)據(jù)會全部刪除
TRUNCATE:指定的內(nèi)容和REPLACE相同,,會用truncate語句刪除現(xiàn)存數(shù)據(jù)
19.如何查看對象所占用的空間
Ø 查看表和索引的大?。簊elect * from user_segments where segmentname=’’
Ø 查看此用戶所有對象所占空間大小:select sum(bytes) from user_segments;
Ø 查看每個(gè)用戶表空間的大?。ㄒ咽褂玫谋砜臻g,,而不是初始化分配的空間):select tablespace_name sum(bytes)/1024/1024 from dba_segments group by tablespace_name
Ø 查看當(dāng)前用戶每個(gè)表占用空間的大小:select segment_name,sum(bytes)/1024/1024 from user_extents group by segment_name
20.查看一個(gè)表所用的分區(qū)
Select table_name,partition_name
from user_tab_partitions
where table_name=’daryxxb’
21.將一個(gè)schema中的對象導(dǎo)入到屬于另一個(gè)表空間的schema中
>imp system/manager@myoracle from user=web to user=net tablespaces=net file=f:\web.dmp
22.數(shù)據(jù)庫鏈(Database link)
1).創(chuàng)建(首先要有create public database link權(quán)限)
Create public database link remotedb using ‘remote’;表示用目前用戶去鏈接遠(yuǎn)程服務(wù)器,,如果要指定用戶名,,則在using前加上connect 用戶名 identified by 口令,最后的’remote’是連接字符串
2).應(yīng)用數(shù)據(jù)庫鏈
Select * from tablename @remotedb;
復(fù)制表結(jié)構(gòu):create table test as select * from test @remotedb where 1=2;
也可以遠(yuǎn)端進(jìn)行Update,、insert操作
3).刪除(要有drop public database link權(quán)限)
Drop public database link remotedb;
4).查詢數(shù)據(jù)庫鏈信息
Dba_db_links,all_db_links,user_db_links
23.物化視圖
1).主鍵物化視圖
create materialized view mv_emp_pk
Refresh fast start with sysdate next sysdate+1/48 with primary key
As select * from emp@remotedb;
注意:當(dāng)用fast選項(xiàng)創(chuàng)建物化視圖,,必須創(chuàng)建基于主表的視圖日志,,如下:
Create materialized view log on emp;
2).Rowid 物化視圖
Create materialized view mv_emp_rowid
Refresh with rowid
As select * from emp@remote_db
3).Refresh選項(xiàng)說明
Ø Oracle是用刷新方法在物化視圖中刷新數(shù)據(jù)
Ø 是基于主鍵還是基于rowid的物化視圖
Ø 物化視圖的刷新時(shí)間和間隔刷新時(shí)間
4).Refresh的方法
Ø Fast—增量刷新,用物化視圖日志來發(fā)送主表已經(jīng)修改的數(shù)據(jù)行到物化視圖中
Ø Complete—完全刷新,,重新生成整個(gè)視圖
Ø Force—如果增量刷新可用將完成增量刷新,,否則完成完全刷新
24.關(guān)于歸檔日志的空間問題
Ø 查看歸檔日志的容量使用:select * from v$recovery_file_dest;
Ø 更改歸檔日志容量空間:
alter system set db_recovery_file_dest_size=8G scope=BOTH;
Alter database open;
Ø 手動刪除歸檔日志文件,需要以下幾步:
手動刪除archivelog文件夾中的早期的歸檔日志文件
登錄rman :>rman target /
對歸檔日志進(jìn)行驗(yàn)證:rman>crosscheck archivelog all;
刪除失效的歸檔日志:rman>delete expired archivelog all;
25.備份與還原
數(shù)據(jù)文件的聯(lián)機(jī)備份(熱備份)
第一步:將數(shù)據(jù)庫置為歸檔日志狀態(tài):
1).首先查看是否是歸檔日志模式 >archive log list;
2).如果不是,那么將其設(shè)為歸檔模式 >alter system set log_archive_start=true scope=spfile
3).關(guān)閉數(shù)據(jù)庫 >shutdown immediate
4).啟動數(shù)據(jù)庫為Mount方式 >startup mount
5).將數(shù)據(jù)庫切換到歸檔日志模式:>alter database archivelog
6).打開數(shù)據(jù)庫 >alter database open;
7).這時(shí)再查看 >archive log list,;便顯示是歸檔日志模式了
第二步:備份與恢復(fù)
1).alter tablespace web begin backup
2).將表空間web的數(shù)據(jù)文件進(jìn)行備份
3).Alter tablespace web end backup;
4).將當(dāng)前的聯(lián)機(jī)日志進(jìn)行歸檔:>alter system archive log current
5).將日志文件切換:>alter system switch logfile; 有幾個(gè)日志文件就進(jìn)行幾次切換
6).關(guān)閉數(shù)據(jù)庫 >shutdown immediate
下面是模擬錯誤:
7).將web的數(shù)據(jù)文件刪除
8).打開數(shù)據(jù)庫:>startup open,;報(bào)錯—web.dbf文件不能找到
9).讓此數(shù)據(jù)文件脫機(jī),并drop掉>alter database datafile 6 offline drop;6代表6號文件,,也就是web.dbf文件
10).將數(shù)據(jù)庫打開>alter database open;
11).將備份的web.dbf文件拷貝到原來的位置
12).恢復(fù)數(shù)據(jù)文件:>recover datafile 6; auto;
13).讓數(shù)據(jù)文件聯(lián)機(jī):>alter database datafile 6 online,;
14).這樣,便可以查詢web表空間中的數(shù)據(jù)了
控制文件的備份
1).>alter database backup controlfile to trace; 備份控制文件,,會存放在…\admin\myoracle\udump\目錄下最近的一個(gè)文件,,這個(gè)文件中的語句就是執(zhí)行控制文件時(shí)的腳本
2).將文件中的語句拷貝出來,另存為一個(gè)文件,,比如create_ctl.txt
3).關(guān)閉數(shù)據(jù)庫
4).執(zhí)行加載控制文件:sql>@c:\create_ctl.txt;這樣就重新創(chuàng)建了控制文件,,并且將數(shù)據(jù)庫打開了
日志文件的備份
當(dāng)日志文件丟失后,,可采用如下方法:
1).基于取消的恢復(fù)數(shù)據(jù)庫: >recover database until cancel;
2).重新生成日志文件:>alter database open resetlogs;
脫機(jī)備份
1).整理需要備份的文件,,包括參數(shù)文件、控制文件,、數(shù)據(jù)文件和重做日志文件
Ø 參數(shù)文件:…\db_1\database\init<sid>.ora 以及關(guān)于此sid的所有文件
Ø 控制文件:select status,name from v$controlfile;
Ø 數(shù)據(jù)文件:selelct status,name from dba_data_files;
Ø 重做日志文件:select group#,status,member from v$logfile
2).用sysdba身份用戶登錄后,>shutdown immediate,;關(guān)閉數(shù)據(jù)庫
3).將上述整理的文件一一進(jìn)行備份
4).打開數(shù)據(jù)庫 >startup open;
恢復(fù):當(dāng)文件丟失,,就需要恢復(fù)數(shù)據(jù)庫
1).關(guān)閉數(shù)據(jù)庫:>shutdown immediate
2).將所有的備份文件復(fù)制到原來所在的位置,,不得漏掉一個(gè),以便恢復(fù)備份時(shí)刻數(shù)據(jù)庫的鏡像
3).恢復(fù)完成后,,以open方式啟動數(shù)據(jù)庫 >startup open,;
本文來自CSDN博客,轉(zhuǎn)載請標(biāo)明出處:http://blog.csdn.net/lihui_79/archive/2009/04/10/4060010.aspx
|
|