oracle 基本

 

###########################scott用戶登陸解鎖##############################

新裝完Oracle11g後,用system/password可以正常登錄,而使用scott/tiger用戶卻不能登錄:

conn scott/tiger 

errororacle10g the account is locked 

oracle10g the password has expired

原因:默認Oracle10gscott不能登陸。被禁用了。

解決方法:

首先確認已經安裝oracle 數據庫和客戶端

.在客戶端DOS下執行如下語句:

注意提示符號

c:\sqlplus /nolog

sqlp\connsys/system@oracle10assysdba// sys爲當前的oracle 用戶 system 爲該用戶密碼oracle10 SID

# alterusersocttaccountlock;//  scott用戶鎖定

# alteruserscottaccountunlock;//scott用戶解鎖

# alteruser scottidentifiedbyscott//修改scott用戶密碼爲 scott,scott用戶默認密碼爲 tiger

1 Dos下輸入C:\sqlplus /nolog 

DBA的身份登錄

conn sys/password@SID as sysdba; 

解鎖

alter user scott account unlock;

彈出一個修改密碼的對話框,修改密碼

conn scott/tiger

1-4如下):

SQL> conn sys/sys as sysdba;

Connected.

SQL> alter user scott account unlock;

User altered.

SQL> commit;

Commit complete.

SQL> conn scott/tiger//請輸入新密碼,並確認後OK

Password changed

Connected.

###################oracle查看數據文件控制文件及日誌文件命令########

conn sys/benson@oracle as sysdba;

查看數據文件

SQL> select name from v$datafile;

NAME
--------------------------------------------------------
D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\SYSTEM01.DBF
D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\UNDOTBS01.DBF
D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\SYSAUX01.DBF
D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\USERS01.DBF
D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\EXAMPLE01.DBF

查看控件文件

SQL> select name from v$controlfile;

NAME
----------------------------------------------------------
D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\CONTROL01.CTL
D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\CONTROL02.CTL
D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\CONTROL03.CTL

查看日誌文件

SQL> select member from v$logfile;

MEMBER
--------------------------------------------------
D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\REDO03.LOG
D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\REDO02.LOG
D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\REDO01.LOG

###### ############################

查看當前登陸的用戶名:

select user from dual; 或者select * from user_users;

查看當前用戶擁有的角色和權限:

select * from user_role_privs;

select * from session_privs;

 

查看創建的表

select tname from tab where tname='PRODUCTINFO'; 或者

select table_name from user_tables where table_name='PRODUCTINFO';

##########################333

1.oracle

1啓動監聽

lsnrctl start

2)進入sqlplus界面

sqlplus /nolog

SQL>conn sys/jiaxiaoai@orcl as sysdba;

3)啓動數據庫實例

SQL>startup;

4)查看當前所有的數據庫

select * from v$database;

 select name from v$database;

5)查看哪些用戶擁有sysdbasysoper權限

select * from V_$PWFILE_USERS

show user;查看當前數據庫連接用戶

6)進入某個數據庫:database 數據庫名;

查看數據庫結構:desc v$database

7)查看所有用戶實例:

select * from v$instance

 select instance_name from v$instance;

8)查看當前庫的所有數據表

select * from all_tables;

select table_name from all_tables;

select table_name from user_tables;

select table_name from all_tables where owner='用戶名';

9)查看錶結構

desc 表名;

10)增加數據庫用戶

create user 用戶名 identified by 密碼 default tablespace users Temporary TABLESPACE Temp

11)用戶授權

grant connectresourcedba to 用戶名;

grant sysdba to 用戶名;

12)更改數據庫用戶密碼

alter user 用戶名 identified by 密碼;

13)查看當前用戶創建的表

select tname from tab;

查看約束條件。

desc user_constraints;

select owner,constraint_name,CONSTRAINT_TYPE,table_name from user_constraints;

desc user_cons_colums;

select a.owner,a.constraint_name,a.constraint_type,a.table_name,b.column_name from user_constraints a,user_cons_colums b where a.constraint_name=b.constraint_name;

###########################################################################

執行insert的時候出現這個錯誤。

insert into 1 values (123,2423,12);

1的結構有4column,顯然插入的值只有三個,因此纔會出現這個問題。

再加個column 的值執行後,ok

倘若只想插入三個數值的話:

insert into 1(a,b,c) values (123,2423,12);

用這個語句就可以了。

#######################################################

無法打開OEM https://baoshengzhu-pc:1158/em

請先啓動服務OracleDBConsoleoracle ,在打開即可。

 

Scott 用戶無法打開autot,報如下錯誤

SQL> set autot on

SP2-0618: 無法找到會話標識符。啓用檢查 PLUSTRACE 角色

SP2-0611: 啓用 STATISTICS 報告時出錯

 

解決辦法:

conn sys as sysdba

SQL>create role plustrace;

SQL>grant select on v_$sesstat to plustrace;
SQL>grant select on v_$statname to plustrace;
SQL>grant select on v_$mystat to plustrace;
SQL>grant plustrace to dba with admin option; 

SQL> set echo off
SQL> grant plustrace to scott;

 

DB_RECOVERY_FILE_DEST定義RMAN 備份位置

DB_CREATE_ONLINE_LOG_DEST_n定義重做日誌文件和控制文件的創建位置

DB_CREATE_FILE_DEST定義數據文件和臨時文件的默認文件系統目錄的位置

 

示例 DB_CREATE_FILE_DEST文件:

參數說明:這個參數用於指定Oracle數據庫服務器創建以下文件的缺省路徑:

 

SQL> ALTER SYSTEM SET DB_CREATE_FILE_

 Datafiles

 Tempfiles

 Redo log files

 Control files

 Block change tracking files

在設置這個路徑參數之前先看一下:

show parameter DB_CREATE_FILE_DEST;

SQL> show parameter DB_CREATE_FILE_DEST;

NAMETYPEVALUE

------------------------------------ ----------- ------------------------------

db_create_file_deststring/soft/datafile

SQL> ALTER SYSTEM SET DB_CREATE_FILE_DEST='/u01/app/oracle/oradata';

開始設置:

ALTER SYSTEM SET DB_CREATE_FILE_DEST

SQL> alter system set DB_CREATE_FILE_DEST='/soft/datafile'; 

System altered.

SQL> show parameter DB_CREATE_FILE_DEST;

NAMETYPEVALUE

------------------------------------ ----------- ------------------------------

db_create_file_deststring/soft/datafile

示例: DB_CREATE_ONLINE_LOG_DEST_n定義重做日誌文件和控制文件的創建置

 

SQL> show parameter db_create_online_log_dest;

NAMETYPEVALUE

------------------------------------ ----------- ------------------------------

db_create_online_log_dest_1string

db_create_online_log_dest_2string

db_create_online_log_dest_3string

db_create_online_log_dest_4string

db_create_online_log_dest_5string

通過定義db_create_online_log_dest_n參數,實現日誌組成員的多元化。

SQL> alter system set db_create_online_log_dest_1='/disk1/redo';

SQL> alter system set db_create_online_log_dest_2='/disk2/redo';

SQL> alter system set db_create_online_log_dest_3='/disk3/redo';

SQL> show parameter db_create_online_log_dest

NAMETYPEVALUE

------------------------------------ ----------- ------------------------------

db_create_online_log_dest_1string/disk1/redo

db_create_online_log_dest_2string/disk2/redo

db_create_online_log_dest_3string/disk3/redo

db_create_online_log_dest_4string

db_create_online_log_dest_5string

oracle 告警日誌位置查詢:

SQL> show parameter background_dump_dest;

NAMETYPEVALUE

------------------------------------ ----------- ------------------------------

background_dump_deststring/u01/app/oracle/admin/BENSON1/ bdump

請輸入用戶名:sys as sysdba

輸入口令:

ERROR:

ORA-12560: TNS: 協議適配器錯誤

解決:

1.監聽服務沒有起起來。windows平臺個一如下操作:開始---程序---管理工具---服務,打開服務面板啓動oraclehome92TNSlistener服務。

2.2.database instance沒有起起來。windows平臺如下操作:開始---程序---管理工具---服務,打開服務面板,啓動oracleserviceXXXX,XXXX就是你的database SID.

3.SID沒有設置對。輸set oracle_sid=XXXX,XXXX就是你的database SID.

DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL 使用實例:

注:如果所管理的數據庫包含字典管理表空間,而且要將這些表空間轉換爲本地管理表

空間,請使用DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL過程完成此操作。EXECUTE dbms_space_admin.tablespace_migrate_to_local("tablespace"); ---轉換表空間

在前幾天的log中提到了如何將system表空間從dictionary-management tablespace轉換爲local management tablespace

在本文中將講述dbms_space_Admin.tablespace_migrate_to_local的另一個實用的案例。

當我們需要drop 一個包含很多extents的數據字典管理表空間是一件比較頭痛的問題。

他需要不停的訪問UET$FET$表,執行插入,刪除操作,長期佔有ST enqueue,造成數據庫長時間無法allocatedeallocate extents,情況嚴重可能會造成很嚴重的後果。

如何減少drop tablespace的時間呢?請看下面這個例子

例子取自metalink note:311512.1

執行時間從50多分鐘減少到1分鐘左右

Following are the test results -

CASE 1 - Dropping a DMT directly 

-----------------------------------------------

SQL> select bytes,count(*) from dba_extents where tablespace_name='DMT_DROP' group by bytes;

BYTES COUNT(*)

---------- ----------

2048 92359

4096 1

14:41:42 SQL> drop tablespace dmt_drop including contents;

Tablespace dropped.

15:32:31 SQL>

-----> Takes around 50 minutes to drop.

CASE 2 - Dropping a DMT after converting to LMT

--------------------------------------------------------------------

select bytes,count(*) from dba_extents where tablespace_name='DMT_DROP' group by bytes;

BYTES COUNT(*)

---------- ----------

2048 92359

4096 1

17:00:33 

SQL>exec dbms_space_Admin.tablespace_migrate_to_local(tablespace_name=>'DMT_DROP')

PL/SQL procedure successfully completed.

17:01:14 SQL> drop tablespace dmt_drop including contents;

Tablespace dropped.

17:01:32 SQL>

-----> Takes around 1 minute to drop.

創建臨時表:

ON COMMIT DELETE ROWS:指定插入行的生存期僅爲事務處理的持續時間

ON COMMIT PRESERVE ROWS:指定插入行的生存期爲會話的持續時間

CREATE GLOBAL TEMPORARY TABLE employees_temp

ON COMMIT PRESERVE ROWS

AS SELECT * FROM employees;

創建序列列子

create sequence "scott"."xulie2" nocycle noorder cache 20 maxvalue 10000 minvalue 1 increment by 2 start with 1

使用MERGE 命令可通過一個命令同時執行INSERT 

UPDATE 操作。

MERGE 命令

使用MERGE 命令可在一個命令中執行UPDATE INSERT。可將一個源中的數據合併到

另一個源,因而可選擇插入新行和更新特定列(如果行已經存在)。

請考慮以下示例。

JOBS 表中的某些數據如下所示:

JOB_ID JOB_TITLE MIN_SALARY MAX_SALARY

---------- -------------- ---------- ----------

AD_PRES President 20000 40000

FI_ACCOUNT Accountant 4200 9000

ST_CLERK Stock Clerk 2000 5000

IT_PROG Programmer 4000 10000

以下是JOBS_ACQUISITION 表的內容:

JOB_ID JOB_TITLE MIN_SALARY MAX_SALARY

---------- -------------- ---------- ----------

AD_PRES VP 20000 40000

DBA DB Admin 4200 9000

SA Sys Admin 2000 5000

使用MERGE 命令可將具有新JOB_ID 的所有行插入到JOBS 表中,如果JOB_ID 已存在,

則使用JOB_TITLE 更新現有JOBS 行。結果“President”職位更改爲“VP”,並且添加

了新職務“SA”和“DBA

merge into jobs j

using(select * from jobs_acqulstion) a

on (j.job_id=a.job_id)

when matched then update set j.job_title=a.job_titel

when not matched then insert

(j.job_id,j.job_title,j.min_salary,j.max_salary)

values(a.job_id,a.job_title,a.min_salary,a.max_salary)

COMMIT ROLLBACK 命令

默認情況下,不會提交輸入的每個DML 命令。幾個工具(包括iSQL*Plus)提供了一些

選項,使用這些選項可以基於每個命令進行提交,或基於一組命令進行提交。

在發出COMMIT ROLLBACK 之前,更改處於暫掛狀態。僅執行更改的用戶可以查看更

改後的數據。其他用戶可選擇相同數據,但只能看到更改之前的數據。其他用戶不能對別

的用戶已更改的數據發出DML

默認情況下,當一個用戶嘗試更改另一個用戶正更改的行時,此用戶必須等待,直到執行

更改的用戶提交或回退更改爲止。這由Oracle 數據庫的鎖定機制自動進行控制。由於鎖定機制已經內置到行中,所以數據庫絕不會用完鎖。

數據併發處理

默認情況下,鎖定機制採用細粒度行級鎖定模式。不同的事務處理可在同一個表內更新不同的行,彼此不相互干擾。

儘管默認模式是行級鎖定,但Oracle 數據庫在需要時也支持在更高級別執行手動鎖定。

SQL> LOCK TABLE employees IN EXCLUSIVE MODE;

Table(s) Locked.

使用以上語句時,嘗試更新鎖定表中的行的任何其它事務處理都必須等待,直到發出鎖定

請求的事務處理完成爲止。EXCLUSIVE 是最嚴格的鎖定模式。下面列出了其它鎖定模式:

 ROW SHARE:允許併發訪問鎖定的表,但禁止會話鎖定整個表進行獨佔訪問。

 ROW EXCLUSIVE:與ROW SHARE 相同,但是還禁止以SHARE 模式鎖定。更新、插入或刪除數據時會自動獲取ROW EXCLUSIVE 鎖定。

 SHARE:允許併發查詢,但禁止更新鎖定的表。需要有(並且會自動請求)SHARE鎖定才能創建表的索引。

SHARE ROW EXCLUSIVE:用於查詢整個表,允許其他人查詢表中的行,但禁止其他人在SHARE 模式下鎖定表或更新行。

 EXCLUSIVE:允許查詢鎖定表,但禁止對鎖定表執行任何其它活動。需要有EXCLUSIVE 鎖定才能刪除表。

與任何鎖定請求一樣,手動鎖定語句會一直等待,直到持有鎖定(或先前請求鎖定)的會話釋放鎖定爲止。LOCK 命令接受用於控制等待行爲的特殊參數NOWAIT

如果指定表已經由另一會話鎖定,NOWAIT 會立即將控制權還給您:

SQL> LOCK TABLE hr.employees IN SHARE MODE NOWAIT;

LOCK TABLE hr.employees IN SHARE MODE NOWAIT

*

ERROR at line 1:

ORA-00054: resource busy and acquire with NOWAIT specified

通常不需要手動鎖定對象。自動鎖定機制提供大多數應用程序所需的數據併發處理能力。

使用SQL 解決鎖定衝突

SQL 語句可用來確定阻塞會話並終止會話。

SQL> select sid, serial#, username from v$session where sid in

(select blocking_session from v$session)

SQL> alter system kill session '144,8982' immediate;

07_DICTIONARY_ACCESSIBILITY參數

SQL> show parameter o7

O7_DICTIONARY_ACCESSIBILITY boolean FALSE

alter system set O7_DICTIONARY_ACCESSIBILITY=true scope=spfile;

重啓之後生效

實例:

SQL> show parameter o7

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

O7_DICTIONARY_ACCESSIBILITY boolean FALSE

SQL> create user test1 identified by test1;

User created.

SQL> grant connect,select any table to test1;

Grant succeeded.

open others window to logon:

SQL> conn test1/test1@testdb

Connected.

SQL> select count(*) from user_tables;

COUNT(*)

----------

0

SQL> select count(*) from dba_tables;

select count(*) from dba_tables

*

ERROR at line 1:

ORA-00942: table or view does not exist

SQL> select count(*) from v$session;

select count(*) from v$session

*

ERROR at line 1:

ORA-00942: table or view does not exist;

Explicit grant privilege to test1;

SQL> grant select on dba_tables to test1;

Grant succeeded.

SQL> grant select on v_$session to test1;

Grant succeeded.

test1 window:

SQL> select count(*) from dba_tables;

COUNT(*)

----------

816

SQL> select count(*) from v$session;

COUNT(*)

----------

13

Set .parameter value=true;

SQL> show parameter o7

NAME TYPE VALUE

------------------------------------ ----------- -----------

O7_DICTIONARY_ACCESSIBILITY boolean TRUE

SQL> create user test2 identified by test2;

User created.

SQL> grant connect ,select any table to test2;

Grant succeeded.

SQL>

SQL> conn test2/test2@testdb

Connected.

SQL> select count(*) from user_tables;

COUNT(*)

----------

0

SQL> select count(*) from dba_tables;

COUNT(*)

----------

816

SQL> select count(*) from v$session;

COUNT(*)

----------

10
select any dictionary系統權限可以override O7_DICTIONARY_ACCESSIBILITY=false的情況去訪問系統數據字典

1本地操作系統認證

操作系統用戶oracle,創建操作系統認證的用戶ops$oracle.

SQL>show parameter os_authent_prefix;

NAME                       TYPE       VALUE

--------------------------- ----------- --------

os_authent_prefix          string     ops$

SQL>create user ops$oracle identified externally;

User created.

SQL>grant connect, resource to ops$oracle;

Grant succeeded.

[oracle@cent4 ~]$sqlplus /

SQL>show user

USER is "OPS$ORACLE"

2遠程操作系統認證

remote_os_authent改成true後,纔可以遠程操作系統認證.

SQL>show parameter remote_os_authent

NAME                   TYPE       VALUE

----------------------- ----------- ------------

remote_os_authent      boolean    FALSE

SQL>alter system set remote_os_authent=true scope=spfile;

System altered.

[oracle@cent4 ~]$sqlplus /@centtns

SQL*Plus: Release 10.2.0.1.0 - Production on星期一6月6 10:56:12 2011

Copyright (c) 1982, 2005, Oracle. All rights reserved.

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options

SQL>

注意: 1.客戶端的操作系統用戶也要是oracle,這樣才能實現遠程操作系統認證.

 2. remote_os_authent這個參數開啓後,存在很大的安全隱患,遠端服務器只要根據數據庫中存在的外部用戶來創建用戶,就可以登陸到數據庫中,因此除非必要,否則不建議開啓這個參數.

查看某表的約束條件:

1.系統包 獲取DBMS_METADATA.GET_DDL('TABLE','你的表名') //紅色字體爲大寫
select dbms_metadata.get_ddl('TABLE','VOTE_ANSWER') FROM DUAL;
2.
數據字典獲取

select a.owner,a.constraint_name,a.constraint_type from all_constraints a where a.owner=upper('SCOTT') and a.table_name=upper('VOTE_ANSWER')

select column_name,constraint_name from user_cons_columns a where a.constraint_name='CHECKEY';

以上兩個句子結合爲如下

select c.column_name,c.constraint_name from (select a.owner,a.constraint_name,a.constraint_type from all_constraints a where a.owner=upper('SCOTT') and a.table_name=upper('VOTE_ANSWER')) b,

(select column_name,constraint_name from user_cons_columns a) c

where b.constraint_name=c.constraint_name

merge 語句練習,注意using的表,無重複。

SQL> merge into yes

2using(select distinct group# from benson ) benson

3on(benson.group#=yes.hao3)

4when matched then update

5set yes.hao2=benson.group#

######################################################################33

錯誤信息:

[oracle@VM_Center5_wusy u01]$ netca 

Oracle Net Services 配置

# An unexpected error has been detected by HotSpot Virtual Machine: 

# SIGSEGV (0xb) at pc=0xa43ea4d4, pid=4341, tid=3086784720 

# Java VM: Java HotSpot(TM) Client VM (1.5.0_17-b02 mixed mode) 

# Problematic frame: 

# C [libnnz11.so+0x3c4d4] 

# An error report file with more information is saved as hs_err_pid4341.log 

# If you would like to submit a bug report, please visit: 

http://java.sun.com/webapps/bugreport/crash.jsp

/u01/oracle/bin/netca: line 178: 4341 已放棄 $JRE $JRE_OPTIONS -classpath $CLASSPATH oracle.net.ca.NetCA $* 

解決辦法:

hosts文件中的127.0.0.1 後面添加對應的主機名,如:

vi /etc/hosts 

127.0.0.1 localhost.localdomain localhost VMRHEL5

案列1

不能打開到主機的連接,在端口1521:連接失敗的解決方法

telnet IP 1521

不能打開到主機的連接, 在端口 1521: 連接失敗

不存在防火牆拒絕的情況,

我打開另一臺也裝有Oracle1521可以連接的機器,查看NETWORK\ADMIN\listener.ora文件,仔細對比兩個Oracle該文件的區別,發現正常的Oracle服務器上,listener.ora文件,如下這段HOST顯示的是機器名,而不能連接的是“localhost”。

LISTENER =

(DESCRIPTION =

www.2cto.com 

(ADDRESS = (PROTOCOL = TCP)(HOST = lggsuper_pc)(PORT = 1521))

)

 

Oracle錯誤

解決:

第一步:

Shutdown abort

Startup mount

SQL> show parameter background_dump_dest;

 

NAMETYPEVALUE

------------------------------------ ----------- ------------------------------

background_dump_deststringd:\app\baoshengzhu\diag\rdbms\

oracle\oracle\trace

 

進入該路徑,查看alert_oracle.log,可見文件記錄錯誤:

####################錯誤信息以及建議解決的方法##########################################################

Errors in file d:\app\baoshengzhu\diag\rdbms\oracle\oracle\trace\oracle_ora_6988.trc:

ORA-19815: 警告: db_recovery_file_dest_size 字節 (共 4102029312 字節) 已使用 100.00%, 尚有 0 字節可用。

************************************************************************

You have following choices to free up space from recovery area:

1. Consider changing RMAN RETENTION POLICY. If you are using Data Guard,

then consider changing RMAN ARCHIVELOG DELETION POLICY.

2. Back up files to tertiary device such as tape using RMAN

BACKUP RECOVERY AREA command.

3. Add disk space and increase db_recovery_file_dest_size parameter to

reflect the new space.

4. Delete unnecessary files using RMAN DELETE command. If an operating

system command was used to delete files, then use RMAN CROSSCHECK and

DELETE EXPIRED commands.

 

###################################################################################

第二步:

select * from v$recovery_file_dest;

alter system set db_recovery_file_dest_size=10737418240

alter database open

 

 

 

exit

第三步:
rman target /
進入rman工具窗口
rman target /
RMAN>crosscheck archivelog all;-- 運行這個命令可以把無效的expired的archivelog標出來。
RMAN>delete expired archivelog all; -- 直接全部刪除過期的歸檔日誌。
RMAN>delete noprompt archivelog until time "sysdate -3";  -- 也可以直接用一個指定的日期來刪除。
重新打開數據庫:

 

如果遇到一些情況:

 

lusrmgr.msc 查看用戶是否屬於oracleDBA組裏面。

 

然後,認證方式改一下,找到sqlnet.ora文件

 

控制文件丟失,重建控制文件步驟:

 

查看文件信息:

SQL> select member from v$logfile;

MEMBER

--------------------------------------------------------------------------------

D:\APP\BAOSHENGZHU\ORADATA\ORACLE\REDO03.LOG

D:\APP\BAOSHENGZHU\ORADATA\ORACLE\REDO02.LOG

D:\APP\BAOSHENGZHU\ORADATA\ORACLE\REDO01.LOG

 

######################

SQL> select name from v$controlfile;

NAME

------------------------------------------------------------------

D:\APP\BAOSHENGZHU\ORADATA\ORACLE\CONTROL01.CTL

D:\APP\BAOSHENGZHU\ORADATA\ORACLE\CONTROL03.CTL

D:\APP\BAOSHENGZHU\FLASH_RECOVERY_AREA\ORACLE\CONTROL02.CTL

 

##############

SQL> select name from v$datafile;

NAME

----------------------------------------------------------------

D:\APP\BAOSHENGZHU\ORADATA\ORACLE\SYSTEM01.DBF

D:\APP\BAOSHENGZHU\ORADATA\ORACLE\SYSAUX01.DBF

D:\APP\BAOSHENGZHU\ORADATA\ORACLE\UNDOTBS01.DBF

D:\APP\BAOSHENGZHU\ORADATA\ORACLE\USERS01.DBF

D:\APP\BAOSHENGZHU\ORADATA\ORACLE\EXAMPLE01.DBF

D:\APP\BAOSHENGZHU\PRODUCT\11.2.0\DBHOME_2\DATABASE\TEST1.DBF

#################################################################################################

刪除所有的控制文件,後操作

第一步:

shutdown immediate

第二步:

create controlfile

reuse database "oracle" noresetlogs noarchivelog

maxlogfiles 35

maxlogmembers 3

maxinstances 1

maxloghistory 400

logfile

group 1 'D:\APP\BAOSHENGZHU\ORADATA\ORACLE\REDO01.LOG' size 50M,

group 2 'D:\APP\BAOSHENGZHU\ORADATA\ORACLE\REDO02.LOG' size 50M,

group 3 'D:\APP\BAOSHENGZHU\ORADATA\ORACLE\REDO03.LOG' size 50M

datafile

'D:\APP\BAOSHENGZHU\ORADATA\ORACLE\SYSTEM01.DBF',

'D:\APP\BAOSHENGZHU\ORADATA\ORACLE\SYSAUX01.DBF',

'D:\APP\BAOSHENGZHU\ORADATA\ORACLE\UNDOTBS01.DBF',

'D:\APP\BAOSHENGZHU\ORADATA\ORACLE\USERS01.DBF',

'D:\APP\BAOSHENGZHU\ORADATA\ORACLE\EXAMPLE01.DBF',

'D:\APP\BAOSHENGZHU\PRODUCT\11.2.0\DBHOME_2\DATABASE\TEST1.DBF'

character set we8dec

第三步:

alter system set control_files=

'D:\APP\BAOSHENGZHU\ORADATA\ORACLE\CONTROL01.CTL',

'D:\APP\BAOSHENGZHU\ORADATA\ORACLE\CONTROL03.CTL',

'D:\APP\BAOSHENGZHU\FLASH_RECOVERY_AREA\ORACLE\CONTROL02.CTL' scope=spfile;

第四步:

alter database open

完成

 

 

 

 

select * from dba_temp_files; //查看臨時表空間

ALTER DATABASE TEMPFILE 'D:\APP\BAOSHENGZHU\PRODUCT\11.2.0\DBHOME_2\DATABASE\TEMPORARY01.DBF' AUTOEXTEND ON NEXT 1G MAXSIZE 10G; //修改臨時表空間大小

 

select * from database_properties where property_name='DEFAULT_TEMP_TABLESPACE';或select temporary_tablespace from user_users;//查看默認的臨時表空間

 

exp user/passwd@xxx file='/xxx/xx/xx.dmp'

log='/xxx/xx/xx.log' owner=xxx

 

 

imp user/passwd@xxx file='/xxx/xx/xx.dmp'

log='/xxx/xx/xx.log' fromuser=xxx

touser=xxx

 

 

 

Oracle下查看索引的語句

1. 查詢一張表裏面索引 

select * from user_indexes where table_name=upper('表名'); 

2. 查詢被索引字段 

select * from uer_ind_columnss where index_name=('索引名'); 

3. 給某一字段創建索引 

create index 索引名 on 表名(字段名1,字段名2)

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章