天天看點

基礎指令

登陸資料庫

[oracle@sq ~]$ sqlplus / as sysdba

[oracle@sq ~]$ sqlplus sys/123456 as sysdba

檢視目前登陸使用者

SQL> show user

切換使用者(第一次登陸 提示使用者鎖定)

SQL> conn scott/tiger

SQL> conn sys/123456 as sysdba

為使用者解鎖

SQL> alter user scott account unlock;

再次登陸

需要新密碼

修改密碼

方法1.

SQL> alter user scott identified by abc;

方法2.

SQL> password scott

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

sql語句

SQL> create table tt as select * from dba_object_tables; 資料字典(系統表)dba_  user_   all_

SQL> select OWNER,TABLE_NAME,TABLESPACE_NAME from tt;

檢視伺服器狀态

SQL> select open_mode from v$database; 動态性能試圖  

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

X$ oracle資料庫核心部分,加載資料庫時即被使用,加密命名

檢視資料字典

SQL> select * from dict where rownum < 2;

(列為table_name 其實作實的是資料字典對象名)

dict_columns 記錄着字典視圖列的說明

SQL> select column_name,comments from dict_columns

  2  where table_name='DICT';

SQL> select * from 

    (select table_name,count(*) from dict_columns

    group by table_name order by 2 desc)

    where rownum < 6;

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

GV$  和 V$ 動态性能視圖

GV$ 為全局v$ 主要為RAC實用

v$都會對應一個GV$

檢視背景程序

SQL> !

[oracle@sq ~]$ ps -ef |grep ora_

[oracle@sq ~]$ exit

檢視目前使用者資料庫下面有哪些表

SQL> conn scott/123456

SQL> select table_name from user_tables;

檢視執行個體名

select instance_name from v$instance;

顯示表定義

SQL> desc emp;

建立一個相同的表

SQL> create table emp_bak as select * from emp;

檢視表

SQL> select * from emp;

設定行長

SQL> set lines 1000;

設定頁面記錄條數

SQL>  set pagesize 20 ;

關閉資料庫

shutdown normal 需要等待所有事務/程序全部結束 才能關資料庫

shutdown transactional   需要等待,但空閑事務程序自動關閉 

shutdown immediate  關閉之前同步資料(生産關閉資料庫常用)

shutdown abort  強制關閉資料庫相當于斷電(此動作非常危險輕易勿用)

啟動資料庫

startup 直接打此指令預設選項為open直接打開資料庫

startup nomount 隻啟動執行個體(裝載執行個體和打開參數檔案)

startup mount  挂載資料庫(裝載執行個體和打開控制檔案,激活某些功能,使用者不能存取資料庫可以進行執行個體或資料的恢複處理)

alter database mount 改變資料庫從nomount狀态到mount狀态

alter database open 打開資料庫(此時才可以正常對資料庫進行讀寫)

alter database open read only 将資料庫打開到隻讀狀态

startup force  重新開機資料庫 

資料的送出和回退

commit 送出資料(将資料寫到日志裡并同步到資料檔案)(oracle預設為不送出)

rollback 回退就是取消所有操作,次指令隻對還未commit的操作有效

登出

SQL> disc (用來斷開與目前資料庫的連接配接)

USER is ""

腳本執行

[oracle@sq ~]$ vi a.sql

create table tt(id int,name varchar2(10));

SQL> @/home/oracle/a.sql

修改上次輸入錯誤的指令

SQL> create talbe a

  2  (id int);        (第一行talbe錯誤)

SQL> l (檢視上次指令)

SQL> 1(修改第一行)

SQL> c/talbe/table

SQL> l

  1  create table a

  2* (id int)

SQL> /

===========================================

參數檔案pfile與spfile

參數檔案的内容:控制檔案的路徑 要配置設定給sga的記憶體值

Pfile 文本參數檔案(也叫初始化參數檔案)

     Vi可以直接修改

     Sqlplus中不能通過指令直接修改此參數檔案

Spfile 伺服器參數檔案(二進制)

      Vi不可以直接修改

      Sqlplus中可以直接修改此參數

      Oracle預設使用

Startup對參數檔案的作用

   Oracle啟動按以下順序從$ORACLE_HOME/dbs讀取初始化檔案

     首先讀取spfile.ora

     如果找不到則讀取pfile.ora

     如果仍然找不到則讀取initSID.ora

spfile 儲存位置

/oracle/app/oracle/product/10.2.0/db_1/dbs/spfileorcl.ora

檢視是否使用了spfile

SQL> show parameter spfile

通過pfile 啟動資料庫

SQL> startup pfile=(pfile所在的路徑)

從spfile參數檔案中建立pfile

SQL> create pfile='/oracle/app/oracle/init01.ora' from spfile;

或SQL> create pfile from spfile;

從pfile參數檔案中建立spfile 

SQL> shutdown immediate

SQL> create spfile from pfile='/oracle/app/oracle/init01.ora';

或  create spfile from pfile

驗證pfile

SQL> startup pfile='/oracle/app/oracle/init01.ora';

SQL> show parameter spfile;(為空)

SQL> show parameter processes

processes                            integer     150 (值為150)

SQL> alter system set processes=100;

(不讓修改 pfile不能通過指令修改)

(可vipfile檔案 可以修改*.processes=100)

驗證spfile

SQL> startup

SQL> show parameter spfile;

SQL> alter system set processes=100 scope=spfile;

驗證啟動順序

1.删除spfile

[root@sq /]# rm -rf /oracle/app/oracle/product/10.2.0/db_1/dbs/spfileorcl.ora

2.目錄下有pfile的一樣可以啟動

3.

Oracle的日志檔案存放位置:位于參數檔案background_dump_dest指定的路徑下

SQL> show parameter background_dump_dest

cd  /oracle/app/oracle/admin/orcl/bdump/

[root@sq bdump]# ls

alert_orcl.log  orcl_lgwr_10294.trc  orcl_lgwr_10357.trc  orcl_lgwr_13449.trc

檢視執行個體(主要看SID)

SQL> select * from v$instance;

控制檔案存放位置

SQL> select name from v$controlfile;

======================================================

手工删除庫

SQL> shutdown immediate;

SQL> startup mount;

SQL> alter system enable restricted session;(靜默狀态,DBA能安全地執行某些操作,這些操作要求從目前非DBA使用者中隔離出來操作。)

SQL> drop database;

手工建庫

1。

[oracle@sq ~]$ vi .bash_profile

ORACLE_SID=vfast;

退出oracle使用者 重新登陸

2。建立初始化檔案

[oracle@sq ~]$ vi $ORACLE_HOME/dbs/init$ORACLE_SID.ora

control_files = (/oracle/app/oracle/oradata/control1.ctl,/oracle/app/oracle/oradata/control2.ctl,/oracle/app/oracle/oradata/control3.ctl)

undo_management = AUTO

undo_tablespace = UNDOTBS1

db_name = ORCLDB

db_unique_name = WENDING

db_block_size = 8192

sga_max_size = 320M

sga_target = 320M

3。建立密碼檔案

[oracle@sq ~]$ orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=123456 force=y

4。建立所需目錄

[oracle@sq ~]$ mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/adump

[oracle@sq ~]$ mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/bdump

[oracle@sq ~]$ mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/pfile

[oracle@sq ~]$ mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/cdump

[oracle@sq ~]$ mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/dpdump

[oracle@sq ~]$ mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/udump

5。建立spfile

SQL> startup nomount

SQL> create spfile from pfile;

6。建立資料庫

[oracle@sq ~]$ vi /home/oracle/createDB.sql

内容為:

create database vfast

logfile group 1 ('$ORACLE_BASE/oradata/vfast/redo01.log') size 100m,

        group 2 ('$ORACLE_BASE/oradata/vfast/redo02.log') size 100m,

        group 3 ('$ORACLE_BASE/oradata/vfast/redo03.log') size 100m

maxlogfiles 10

maxlogmembers 5

maxloghistory 5

maxdatafiles 100

maxinstances 1

character set zhs16gbk

national character set al16utf16

datafile '$ORACLE_BASE/oradata/vfast/system01.dbf' size 350m reuse autoextend on next 1m maxsize unlimited extent management local

sysaux datafile '$ORACLE_BASE/oradata/sysaux01.dbf' size 350m reuse autoextend on next 1m maxsize unlimited

default temporary tablespace temp01 tempfile '$ORACLE_BASE/oradata/vfast/temp01.dbf' size 50m reuse autoextend on next 1m maxsize 500m

undo tablespace undotbs1 datafile '$ORACLE_BASE/oradata/vfast/undotbs01.dbf' size 500m reuse autoextend on next 1m maxsize unlimited;

SQL> @/home/oracle/createDB.sql

7.

SQL> select name from v$database;

8.

SQL> @/oracle/app/oracle/product/10.2.0/db_1/rdbms/admin/catalog.sql(建資料字典視圖)

SQL> @/oracle/app/oracle/product/10.2.0/db_1/rdbms/admin/catproc.sql(建存儲過程包)

SCN的概念 

SCN是順序遞增的一個數字,在Oracle中用來辨別資料庫的每一次改動,及其先後順序。SCN的最大值是0xffff.ffffffff。

檢視目前scn号

SQL> select current_scn from v$database;

1、系統檢查點scn

當一個檢查點動作完成之後,Oracle就把系統檢查點的SCN存儲到控制檔案中。

select checkpoint_change# from v$database

2、資料檔案檢查點scn

當一個檢查點動作完成後,Oracle就把每個資料檔案的scn單獨存放在控制檔案中。

select name,checkpoint_change# from v$datafile

3、啟動scn

Oracle把這個檢查點的scn存儲在每個資料檔案的檔案頭中,這個值稱為啟動scn,

因為它用于在資料庫執行個體啟動時,檢查是否需要執行資料庫恢複。

select name,checkpoint_change# from v$datafile_header

4、終止scn

每個資料檔案的終止scn都存儲在控制檔案中。

select name,last_change# from v$datafile

在正常的資料庫操作過程中,所有正處于聯機讀寫模式下的資料檔案的終止scn都為null.

5、在資料庫運作期間的scn值

在資料庫打開并運作之後,控制檔案中的系統檢查點、控制檔案中的資料檔案檢查點scn和每個資料檔案頭中的啟動scn都是相同的。控制檔案中的每個資料檔案的終止scn都為null.

1)系統目前SCN并不是在任何的資料庫操作發生時都會改變,SCN是在事務送出或復原時改變,

2)在控制檔案,資料檔案頭,資料塊,日志檔案頭,日志檔案change vector中都有SCN,但其作用各不相同

create table t1 (id int);

shutdown immediate

startup

後重新啟動再次檢視SCN,會變化

================================================

SQL> select count(*) from dba_object_tables; 統計行數

解決中文亂碼問題   WE8ISO8859P1

SQL> select * from nls_database_parameters where parameter='NLS_CHARACTERSET'; (檢視目前字元集)

SQL> shutdown immediate 

SQL> startup mount 

SQL> alter system enable restricted session; (限制會話)

SQL> show parameter job_queue_processes; 

SQL> alter system set job_queue_processes=0;(工作程序為0)

SQL> alter database open;

SQL> alter database character set ZHS16GBK; 

(報錯 新的字元集必須是老的字元集 的更新版本)

SQL> alter database character set internal_use ZHS16GBK;

(使用Oracle内部指令internal_use,跳過超集檢查)

SQL> startup mount

SQL> alter system set job_queue_processes=10;(改會原來值)

SQL>  alter database open;(OK)

 nls_lang是在用戶端設定設定用戶端字元集,也就是在環境變量(Linux:~/.bash_profile)中。

nls_language在服務端設定,SERVER端的lang,屬于parameter,可以由alter system set nls_language='...' scope=spfile 來修改。

nls_characterset也是設定伺服器的字元集。

==========================================================

網絡連接配接資料庫

監聽配置

建立好資料庫後需要建立監聽與網絡服務,才能使用戶端或APP應用于oracle進行網絡連接配接

1.圖形建立 NETMGR工具

2.手工動态注冊

[oracle@sq ~]$ vi /oracle/app/oracle/product/10.2.0/db_1/network/admin/listener.ora

添加下面内容:

LISTENER =

 (DESCRIPTION =

        (ADDRESS = (PROTOCOL = TCP) (HOST = oracle.sq.com) (PORT = 1521))

 )

[root@sq /]# vi /etc/hosts

127.0.0.1       localhost.localdomain   localhost

192.168.8.2             sq

192.168.8.2             oracle.sq.com

測試

[oracle@sq ~]$ lsnrctl start

Listening Endpoints Summary...

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sq)(PORT=1521)))

The listener supports no services

The command completed successfully

(可以看到成功啟動了監聽程式,但目前沒有支援其他服務)

[oracle@sq ~]$ sqlplus /nolog

SQL> conn / as sysdba

SQL> startup force

[oracle@sq ~]$ lsnrctl status

Service "orcl" has 1 instance(s).

  Instance "orcl", status READY, has 1 handler(s) for this service...

(可以看到 連接配接服務已經被動态注冊上了)

3.手工靜态注冊

[oracle@sq ~]$ lsnrctl stop

SID_LIST_LISTENER =

  (SID_LIST =

     (SID_DESC =

        (GLOBAL_NAME = orcl)

        (ORACLE_HOME = /oracle/app/oracle/product/10.2.0/db_1)

        (SID_NAME = orcl)

      )

   )

[oracle@sq ~]$ lsnrctl start(成功)

4.自動動态注冊

SQL> alter system register;

通過pmon程序 自動識别

測試監聽

telnet 192.168.8.2 1521

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

****如果netmgr 報java錯誤

切換到root使用者 #xhost + (執行)

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

[oracle@sq86 admin]$ vi sqlnet.ora (配置參數檔案)

TCP.INVITED_NODES= (192.168.8.6)  (允許8.6連接配接)

TCP.EXCLUDED_NODES= (192.168.8.5)  (拒絕8.5連接配接)

==============================================================

用戶端連接配接

伺服器端

cd /oracle/app/oracle/product/10.2.0/db_1/network/admin

[oracle@sq admin]$ vi tnsnames.ora 

ORCL =

  (DESCRIPTION =

    (ADDRESS_LIST =

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

    )

    (CONNECT_DATA =

      (SERVICE_NAME = orcl)

  )

用戶端

安裝 client軟體  developer軟體

配置和移植工具 -->net manager

添加

監聽程式  和 服務命名

OEM 配置 

1.建立資料庫

[oracle@oracle1 emdrep]$ emctl stop dbconsole

[oracle@sq ~]$ emca -repos recreate

STARTED EMCA at Apr 5, 2011 2:27:22 AM

EM Configuration Assistant, Version 10.2.0.1.0 Production

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

Enter the following information:

Database SID: orcl

Listener port number: 1521

Password for SYS user:  

Password for SYSMAN user:    

Do you wish to continue? [yes(Y)/no(N)]: y

SQL> alter user DBSNMP identified by abc;

[oracle@sq admin]$ emca -config dbcontrol db

Password for DBSNMP user: 

企業管理器控制台的狀态

[oracle@sq admin]$ emctl status dbconsole

/oracle/app/oracle/product/10.2.0/db_1/network/admin/samples

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

注釋:

如果重建em時間過長

分開執行,先删除

[oracle@oracle1 emdrep]$ emca -deconfig dbcontrol db -repos drop

再次建立em

[oracle@oracle1 emdrep]$ emca -repos create

===================================================================

1

mkdir test

cd test

touch {1..100000}

touch {100001..200000}

touch {200001..300000}

touch {300001..400000}

touch {400001..500000}

touch {500001..600000}

建立出 60w個檔案

2.rm -rf * (出錯 參數清單中不支援這麼大)

3.ls|xargs rm -rf (ls檢視的每一條記錄  單獨放到rm中執行)

     本文轉自陳繼松 51CTO部落格,原文連結:http://blog.51cto.com/chenjisong/1737378,如需轉載請自行聯系原作者