oracle 11g tnsnames.ora

# tnsnames.ora Network Configuration File: /software/oracle/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

ORASOFT =
(content:encoded =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.2)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orasoft)
    )
)

oracle 11g即时客户端配置

1. 从OTN下载几个压缩包

下载地址为: http://www.oracle.com/technology/software/tech/oci/instantclient/index.html

然后根据你的平台,选择不同的下载,我是安装在rhel5下,所以选择了linux x86 并下载了下面2个包:

  • instantclient-basic-linux32-11.1.0.7.zip 基本包,提供了OCI,OCCI和JDBC-OCI应用程序的支持。
  • instantclient-sdk-linux32-11.1.0.7.zip 附加的头文件和makefile文件,部分需要编译的模板需要,比如编译php的oci8,和python 的cx_Oracle. (我们这里仅使用其提供的oci头文件)
  • instantclient-sqlplus-linux32-11.1.0.7.zip 可选安装,sqlplus..有时候测试,管理什么的很方便。               

    1.建立oracle用户和组:

    #groupadd oinstall

    #useradd -g oinstall oracle

    #passwd oracle

    2.建立一个Oracle 基本目录

    #mkdir –p /usr/local/oracle

    #chown –R oracle:oinstall /usr/local/oracle

    #chmod –R 775 /usr/local/oracle

    将上述tar.gz或zip包解压,拷贝到 /usr/local/oracle目录中。
    3.设置 ORACLE_HOME和LD_LIBRARY_PATH环境变量,配置TNS_ADMIN变量(放置 tnsname.ora的目录).如果使用sqlplus的话,也设置下PATH环境变量。修改oracle用户目录下的 .bash_profile加入下面语句.
    export ORACLE_HOME=/usr/local/oracle
    #export ORACLE_SID=hbdb
    export SQLPATH=/usr/local/oracle
    #寻找tnsnames.ora路径
    export TNS_ADMIN=/usr/local/oracle   
    export NLS_LANG=”american_america.ZHS16GBK”
    export LD_LIBRARY_PATH=$ORACLE_HOME:$LD_LIBRARY_PATH
    export PATH=$PATH:$ORACLE_HOME
    4.tnsnames.ora配置:
    MYDB =
    (content:encoded =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.5)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SID = HBDB)
          (SERVER = DEDICATED)
        )
    )
    5.sqlplus连接数据库:
    sqlplus user/passwd@10.0.0.5/hbdb或sqlplus user/passwd@MYDB
    如果出现:sqlplus: error while loading shared libraries: /usr/local/oracle/libnnz11.so: cannot restore segment prot after reloc: Permission denied

    最简单的解决方法莫过于将SElinux设置位PERMISSIVE状态:

    [root@localhost ~]#
    getenforce
    Enforcing
    [root@localhost ~]#
    setenforce 0
    [root@localhost ~]#
    getenforce
    Permissive

    [oracle@localhost ~]# sqlplus xfdb/xfdb@MYDB

    SQL*Plus: Release 11.1.0.7.0 – Production on Wed Jun 17 16:37:06 2009

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

    Connected to:
    Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 – 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options

    SQL> select sysdate from dual;



    SYSDATE

    ————

    17-JUN-09

    SQL>
    6.测试eams项目数据库访问组件dboci(对oci的c++封装)
    先建立一个libclntsh.so.11.1的链接:
    [oracle@localhost oracle]# ln -s libclntsh.so.11.1 libclntsh.so

    #include "dboci.h"
    #include <iostream>

    int main(void)
    {
        CDbOci oci;
        int iret = oci.Open("xfdb", "xfdb", "HBDB");
        if (iret < 1)
            return 0;   //
        char*** result = NULL;
        int num = oci.Query("select sysdate from dual", &result, 1);
        if (num > 0)
        {   
            for (int i=0; i < num; i++)
            {
                std::cout <<result[i][0] <<std::endl;
            }
            oci.FreeExecSqlBuf(&result, num, 1);
        }
        oci.Close();
        return 1;
    }
    scons脚本:
    env = Environment()
    env.Append(CCFLAGS=’-g’)
    src_files = Split(‘DBconnect.cpp ../dboci/source/dboci.cpp’)
    include = Split(‘/usr/local/oracle/sdk/include ../dboci/include’)
    lib_path = Split(‘/usr/local/oracle’)
    lib_files = Split(‘clntsh nnz11′)
    env.Program(target=’dbconnect’,source = src_files, LIBS=lib_files, LIBPATH=lib_path,CPPPATH=include)
    运行结果:
    [root@localhost dbconnecttest]# ./dbconnect

    17-JUN-09
    至此eams项目数据库存取的开发与部署测试通过!

  • 顺带说明下oracle 11g即时客户端在windows下的配置

    1.   假设把压缩文件解压到d盘根目录;

    2.      编辑环境,将d:\instantclient_11_1添加到PATH中(注意位于其他Oracle目录之前),增加系统环境变量TNS_ADMIN设置为d:\instantclient_11_1;ORACLE_HOME设置为d:\instantclient_11_1;NLS_LANG为”american_america.ZHS16GBK”

    例如,在Windows 2000上,依次单击“开始”->“设置”->“控制面板”->“系统”->“高级”->“环境变量”,编辑系统变量列表中的PATH,系统环境变量TNS_ADMIN设置为d:\instantclient_11_1;系统环境变量ORACLE_HOME设置为d:\instantclient_11_1;系统环境变量NLS_LANG设置为american_america.ZHS16GBK

    3.      编辑d:\instantclient_11_1\ tnsnames.ora文件:

    MYDB =
    (content:encoded =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.5)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SID = HBDB)
          (SERVER = DEDICATED)
        )
    )

    其中:MYDB:数据库的事例名

    10.0.0.5数据库服务器地址

    HBDB:数据库的SID;

日期比较

/*判断开始日期 结束日期*/    
sms_rate_start=document.form1.sms_rate_start.value;
sms_rate_end=document.form1.sms_rate_end.value;
    var beginD=sms_rate_start.split(" ");
var endD=sms_rate_end.split(" ");
var arr1=beginD[0].split("-");
var arr2=endD[0].split("-");
var arr3=beginD[1].split(":");
var arr4=endD[1].split(":");

var a1;
var a2;
try
{
    a1=new Date(arr1[0],arr1[1],arr1[2],arr3[0],arr3[1],arr3[2]);
    a2=new Date(arr2[0],arr2[1],arr2[2],arr4[0],arr4[1],arr4[2]);
      if(a1>a2)
      {
       //args.IsValid=false;//error window.alert("");
       alert("开始日期不能大于结束日期");
       return false;
      }                                       
     
}
catch(e)
{
    window.alert("请从控件中选取日期!");
    return false;
}

ASP数据库操作大全

<%
‘#######以下是一个类文件,下面的注解是调用类的方法################################################
‘# 注意:如果系统不支持建立Scripting.FileSystemObject对象,那么数据库压缩功能将无法使用
‘# Access 数据库类
‘# CreateDbFile 建立一个Access 数据库文件
‘# CompactDatabase 压缩一个Access 数据库文件
‘# 建立对象方法:
‘# Set a = New DatabaseTools
‘# by (萧寒雪) s.f.
‘#########################################################################################

Class DatabaseTools

Public function CreateDBfile(byVal dbFileName,byVal DbVer,byVal SavePath)
‘建立数据库文件
‘If DbVer is 0 Then Create Access97 dbFile
‘If DbVer is 1 Then Create Access2000 dbFile
On error resume Next
If Right(SavePath,1)<>"\" Or Right(SavePath,1)<>"/" Then SavePath = Trim(SavePath) & "\"
If Left(dbFileName,1)="\" Or Left(dbFileName,1)="/" Then dbFileName = Trim(Mid(dbFileName,2,Len(dbFileName)))
If DbExists(SavePath & dbFileName) Then
Response.Write ("对不起,该数据库已经存在!")
CreateDBfile = False
Else
Dim Ca
Set Ca = Server.CreateObject("ADOX.Catalog")
If Err.number<>0 Then
Response.Write ("无法建立,请检查错误信息
" & Err.number & "
" & Err.content:encoded)
Err.Clear
Exit function
End If
If DbVer=0 Then
call Ca.Create("Provider=Microsoft.Jet.OLEDB.3.51;Data Source=" & SavePath & dbFileName)
Else
call Ca.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & SavePath & dbFileName)
End If
Set Ca = Nothing
CreateDBfile = True
End If
End function

Public function CompactDatabase(byVal dbFileName,byVal DbVer,byVal SavePath)
‘压缩数据库文件
‘0 为access 97
‘1 为access 2000
On Error resume next
If Right(SavePath,1)<>"\" Or Right(SavePath,1)<>"/" Then SavePath = Trim(SavePath) & "\"
If Left(dbFileName,1)="\" Or Left(dbFileName,1)="/" Then dbFileName = Trim(Mid(dbFileName,2,Len(dbFileName)))
If DbExists(SavePath & dbFileName) Then
Response.Write ("对不起,该数据库已经存在!")
CompactDatabase = False
Else
Dim Cd
Set Cd =Server.CreateObject("JRO.JetEngine")
If Err.number<>0 Then
Response.Write ("无法压缩,请检查错误信息
" & Err.number & "
" & Err.content:encoded)
Err.Clear
Exit function
End If
If DbVer=0 Then
call Cd.CompactDatabase("Provider=Microsoft.Jet.OLEDB.3.51;Data Source=" & SavePath & dbFileName,"Provider=Microsoft.Jet.OLEDB.3.51;Data
Source=" & SavePath & dbFileName & ".bak.mdb;Jet OLEDB;Encrypt Database=True")
Else
call Cd.CompactDatabase("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
SavePath & dbFileName,"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
SavePath & dbFileName & ".bak.mdb;Jet OLEDB;Encrypt Database=True")
End If
‘删除旧的数据库文件
call DeleteFile(SavePath & dbFileName)
‘将压缩后的数据库文件还原
call RenameFile(SavePath & dbFileName & ".bak.mdb",SavePath & dbFileName)
Set Cd = False
CompactDatabase = True
End If
end function

Public function DbExists(byVal dbPath)
‘查找数据库文件是否存在
On Error resume Next
Dim c
Set c = Server.CreateObject("ADODB.Connection")
c.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbPath
If Err.number<>0 Then
Err.Clear
DbExists = false
else
DbExists = True
End If
set c = nothing
End function

Public function AppPath()
‘取当前真实路径
AppPath = Server.MapPath("./")
End function

Public function AppName()
‘取当前程序名称
AppName = Mid(Request.ServerVariables("SCRIPT_NAME"),(InStrRev(Request.ServerVariables("SCRIPT_NAME") ,"/",-1,1))+1,Len(Request.ServerVariables("SCRIPT_NAME")))
End Function

Public function DeleteFile(filespec)
‘删除一个文件
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
If Err.number<>0 Then
Response.Write("删除文件发生错误!请查看错误信息
" & Err.number & "
" & Err.content:encoded)
Err.Clear
DeleteFile = False
End If
call fso.DeleteFile(filespec)
Set fso = Nothing
DeleteFile = True
End function

Public function RenameFile(filespec1,filespec2)
‘修改一个文件
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
If Err.number<>0 Then
Response.Write("修改文件名时发生错误!请查看错误信息
" & Err.number & "
" & Err.content:encoded)
Err.Clear
RenameFile = False
End If
call fso.CopyFile(filespec1,filespec2,True)
call fso.DeleteFile(filespec1)
Set fso = Nothing
RenameFile = True
End function

End Class
%>

现在已可以压缩有密码的数据库,代码如下,但是压缩之后的数据库密码就没有了!如何解决?

<%
Const JET_3X = 4

Function CompactDB(dbPath, boolIs97)
Dim fso, Engine, strDBPath
strDBPath = left(dbPath,instrrev(DBPath,"\"))
Set fso = CreateObject("Scripting.FileSystemObject")

If fso.FileExists(dbPath) Then
Set Engine = CreateObject("JRO.JetEngine")

If boolIs97 = "True" Then
Engine.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbpath, _
"Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=’XXXXXXXX';Data Source=" & strDBPath & "temp.mdb;" _
& "Jet OLEDB:Engine Type=" & JET_3X
Else
Engine.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=’XXXXXXXX';Data Source=" & dbpath, _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strDBPath & "temp.mdb"
End If

fso.CopyFile strDBPath & "temp.mdb",dbpath
fso.DeleteFile(strDBPath & "temp.mdb")
Set fso = nothing
Set Engine = nothing

CompactDB = "你的数据库, " & dbpath & ", 已经压缩成功!" & vbCrLf

Else
CompactDB = "数据库名称或路径不正确. 请重试!" & vbCrLf
End If

End Function
%>

ASP与Access数据库连接:
<%@ language=VBs cript%>
<%
dim conn,mdbfile
mdbfile=server.mappath("数据库名称.mdb")
set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};uid=admin;pwd=数据库密码;dbq="&mdbfile
%>

ASP与SQL数据库连接:
<%@ language=VBs cript%>
<%
dim conn
set conn=server.createobject("ADODB.connection")
con.open "PROVIDER=SQLOLEDB;DATA SOURCE=SQL服务器名称或IP地址;UID=sa;PWD=数据库密码;DATABASE=数据库名称
%>

建立记录集对象:
set rs=server.createobject("adodb.recordset")
rs.open SQL语句,conn,3,2

SQL常用命令使用方法:
(1) 数据记录筛选:
sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]"
sql="select * from 数据表 where 字段名 like ‘%字段值%’ order by 字段名 [desc]"
sql="select top 10 * from 数据表 where 字段名 order by 字段名 [desc]"
sql="select * from 数据表 where 字段名 in (‘值1′,’值2′,’值3′)"
sql="select * from 数据表 where 字段名 between 值1 and 值2"
(2) 更新数据记录:
sql="update 数据表 set 字段名=字段值 where 条件表达式"
sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式"
(3) 删除数据记录:
sql="delete from 数据表 where 条件表达式"
sql="delete from 数据表" (将数据表所有记录删除)
(4) 添加数据记录:
sql="insert into 数据表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)"
sql="insert into 目标数据表 select * from 源数据表" (把源数据表的记录添加到目标数据表)
(5) 数据记录统计函数:
AVG(字段名) 得出一个表格栏平均值
COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计
MAX(字段名) 取得一个表格栏最大的值
MIN(字段名) 取得一个表格栏最小的值
SUM(字段名) 把数据栏的值相加
引用以上函数的方法:
sql="select sum(字段名) as 别名 from 数据表 where 条件表达式"
set rs=conn.excute(sql)
用 rs("别名") 获取统的计值,其它函数运用同上。
(5) 数据表的建立和删除:
CREATE TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… )
例:CREATE TABLE tab01(name varchar(50),datetime default now())
DROP TABLE 数据表名称 (永久性删除一个数据表)

记录集对象的方法:
rs.movenext 将记录指针从当前的位置向下移一行
rs.moveprevious 将记录指针从当前的位置向上移一行
rs.movefirst 将记录指针移到数据表第一行
rs.movelast 将记录指针移到数据表最后一行
rs.absoluteposition=N 将记录指针移到数据表第N行
rs.absolutepage=N 将记录指针移到第N页的第一行
rs.pagesize=N 设置每页为N条记录
rs.pagecount 根据 pagesize 的设置返回总页数
rs.recordcount 返回记录总数
rs.bof 返回记录指针是否超出数据表首端,true表示是,false为否
rs.eof 返回记录指针是否超出数据表末端,true表示是,false为否
rs.delete 删除当前记录,但记录指针不会向下移动
rs.addnew 添加记录到数据表末端
rs.update 更新数据表记录

Oracle常用语句—-建立用户和对用户的管理

# 合法的Oracle标识符号

      1、不能是保留关键字

      2、必须使用1到30个字符。数据库的名称最多是8个字符。

3、必须以数据库字符集中的字母字符开头

4、只能够包含数据库字符集中的字母字符,以及以下字符:#、$、_,另外数据库链接可以包含

              @符号和’.'(句号)

5、不能包含引号

# 建立用户

create user angeos identified by angeos;

建立了用户:angeos,密码为:angeos



# 对用户授权

grant connect,resource to angeos;

对用户angeos授予了连接数据库和访问资源的权限



# 对用户授权

grant create session,dba to angeos;

CREATE SESSION是一个系统特权,它可以为用户提供连接数据库的能力。

DBA是一个具有超过120个系统特权的角色,所以它可以让用户在数据库中完成几乎任何工作。

# 改变用户的密码

alter user angeos identified by oracle;

将用户angeos的密码改变为:oracle

# 锁定帐号以及解锁

alter user oe account unlock;

然后用用户oe登录数据库服务器,密码为oe

注意:用户解锁后,要重启服务。

# 修改表空间的设置

默认情况下,它会使用表空间SYSTEM和TEMP(用于存放临时数据)。

不推荐采用这种方法。所以我们需要改变表空间。

通过系统用户连接数据库服务器

conn
sys/sysadmin@hostname_services as sysdba;

然后查看表空间

select tablespace_name,contents from dba_tablespaces

order by tablespace_name;

使用USER表空间代替SYSTEM表空间

alter user angeos default tablespace users

temporary tablespace temp;

尝试建立一张表

create table table1

(

     fieldA varchar2(10)

)

# 删除用户angeos

drop user angeos;

由于用户angeos有一张表table1,所以删除用户时,我们需要指定关键字CASCADE

drop user angeos cascade;

# 解释术语模式Schema

数据库的模式定义为数据库对象的集合,而模式的名称就是拥有或者控制这个数据库对象集合的用户名称。

所有数据库对象,例如表、视图、索引、触发器、Java存储过程、PL/SQL程序包,函数等,都是由Oracle

数据库中的一个用户所拥有。甚至Oracle的数据词典,系统编目也是名为SYS的模式的一部分。

用户的传统解释就是能够唯一标识一组信任凭证的名称和密码组合。

# 解释系统特权

在Oracle数据库中有两类特权:

(1)对象级别特权是由用户赋予的访问或者操作数据库对象的特权。

(2)系统特权不是控制对指定数据库对象的访问,而是用来许可对各种特性的访问,或者许可Oracle数据库中的

         特定任务。

     查询特权

     connect system/sysadmin

     desc dba_sys_privs;

     查询

            select distinct privilege from dba_sys_privs order by privilege

     赋予系统特权的语句

     GRANT system_priviege to username [with admin option];

     撤销系统特权的语句

     REVOKE system_priviege from username;

     注意:在任何用户能够连接到Oracle数据库之前,都需要向它们赋予CREATE SESSION特权,为他们提供连接许可。

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

# 建立数据表

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

# 语法规则

CREATE TABLE [SCHEMA.] <tablename>(

     <coloumn_name> <datatype> [default <expression>] [<constraint>]

     [,<coloumn_name> <datatype> [default <expression>] [<constraint>]]

     [,…]

);

# 建表的例子

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

CREATE TABLE CD_COLLECTION (

     ALBUM_TITLE     VARCHAR2(100),

     ARTIST      VARCHAR2(100),

     COUNTRY      VARCHAR2(25),

     RELEASE_DATE     DATE,

     LABEL      VARCHAR2(25),

     PRIMARY KEY (ALBUM_TITLE, ARTIST)

);

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

CREATE TABLE seagal.SONGS (

     SONG_TITLE      VARCHAR2(100),

     COMPOSER     VARCHAR2(100),

     LENGTH      NUMBER,

     TRACK      NUMBER,

     ARTIST      VARCHAR2(100),

     ALBUM_TITLE     VARCHAR2(100),

     FOREIGN KEY (ARTIST, ALBUM_TITLE) REFERENCES seagal.CD_COLLECTION(ARTIST,         ALBUM_TITLE),

     PRIMARY KEY (SONG_TITLE, ARTIST, ALBUM_TITLE)

);



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

select * from seagal.cd_collection;

select * from seagal.songs;

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

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

INSERT INTO seagal.CD_COLLECTION

VALUES(‘Black Sheets of Rain’, ‘Bob Mould’, ‘USA’,to_date(’01-01-92′,’DD-MM-YY’), ‘Virgin’);

INSERT INTO seagal.CD_COLLECTION

VALUES(‘Candy Apple Grey’, ‘Husker Du’, ‘USA’,to_date(’01/01/86′,’DD/MM/YY’), ‘Warner Brothers’);

INSERT INTO seagal.SONGS

VALUES(‘Black Sheets of Rain’,’Mould’, NULL,1, ‘Bob Mould’, ‘Black Sheets of Rain’);

INSERT INTO seagal.SONGS

VALUES(‘Crystal’,’Mould’, 3.28, 1, ‘Husker Du’, ‘Candy Apple Grey’);

INSERT INTO seagal.SONGS

VALUES(‘Don”t want to know if you are lonely ‘,’Hart’, 3.28, 2, ‘Husker Du’, ‘Candy Apple Grey’);

INSERT INTO seagal.SONGS

VALUES(‘I don”t know for sure’,’Mould’, 3.28, 3, ‘Husker Du’, ‘Candy Apple Grey’);

INSERT INTO SONGS VALUES(‘Black Sheets of Rain’,’Mould’, NULL,1, ‘Bob Mould’, ‘Black Sheets of Rain’);

COMMIT;

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

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

DROP TABLE FRUITS;

CREATE TABLE FRUITS (

FRUIT VARCHAR2(12),

COLOR VARCHAR2(12),

QUANTITY NUMBER,

PRICE NUMBER,

PICKED DATE

);

INSERT INTO FRUITS VALUES(‘Apple’, ‘Green’, 12, 0.5, ’12-Sep-2002′);

INSERT INTO FRUITS VALUES(‘Apple’, ‘Red’, 12, 0.5, ’15-Sep-2002′);

INSERT INTO FRUITS VALUES(‘Mango’, ‘Yellow’, 10, 1.5,

’22-Sep-2002′);

INSERT INTO FRUITS VALUES(‘Mangosteen’, ‘Purple’, 5, 2,

’25-Sep-2002′);

INSERT INTO FRUITS VALUES(‘Durian’, ‘NULL’, 2, 15, NULL);

INSERT INTO FRUITS VALUES(‘Orange’, ‘Orange’, 10, 1.5, ’28-Aug-2002′);

COMMIT;

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

COMMIT;

# CREATE TABLE AS SELECT的语句

通过查询一个表,并且将查询结果集物化到一个常规表中来建立表。

复制表的结构,但是约束、索引和触发器等对象不会被放入新的表中。

例子:

create table emp_copy as

select * from scott.emp;

# 数据词典

每一个数据库都有一个数据词典,任何管理Oracle数据库,或者使用Oracle构建应用的用户都需       要使用数据词典。

数据词典是Oracle数据库的编目。

当建立用户、表、约束和其它数据库对象的时候,Oracle都会自动维护一个在数据库中存储的项        目编目。

例如:USER_TABLES视图可以展示当前用户所拥有的所有表的信息。

     使用DESCRIBE命令查看USER_TABLES视图的结构信息。

具有DBA权限的用户可以查看DBA_TABLES

select owner ,table_name,tablespace_name from dba_tables

where owner in(‘SCOTT’,’HR’)

order by owner,tablesapce_name,table_name

CentOS5.3安装Oracle11g(图文)(七)

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://fantlam.blogbus.com/logs/45776277.html

接着上一篇的内容

遗留一个乱码的问题。初步原定定位在选择字符集的时候,我当时选的是UTF8。

我把数据库删除了,重新建立,到那一步选择了系统默认,结果还是出现乱码

我再来一次 直接选择了ZHS16GBK,结果还是一样。

其实一直搞错了,刚开始我选择了utf-8,由于系统默认应该是GBK,所以显示的问号。

现在只需要一个方法

编辑并运行.bash_profile

export NLS_LANG=AMERICAN_AMERICA.UTF8
(如果是GBK     export NLS_LANG=american_america.ZHS16GBK)

注销后生效

这样再重新进入sqlplus

已经不会是乱码。

—————————————————————————————

最后来总结一下在centos5.3安装oracle 11g的步骤,精简一下。

1、安装好CentOS5.3。(虚拟机硬盘16G,swap要大于1.5G,内存1G以上)

2、把所有包找齐

binutils-2.17.50.0.6-2.el5
compat-libstdc++-33-3.2.3-61
elfutils-libelf-0.125-3.el5
elfutils-libelf-devel-0.125
gcc-4.1.1-52
gcc-c++-4.1.1-52
glibc-2.5-12
glibc-common-2.5-12
glibc-devel-2.5-12
glibc-headers-2.5-12
libaio-0.3.106
libaio-devel-0.3.106
libgcc-4.1.1-52
libstdc++-4.1.1
libstdc++-devel-4.1.1-52.e15
make-3.81-1.1
sysstat-7.0.0

unixODBC-2.2.11 (32 bit) or later
unixODBC-devel-2.2.11 (32 bit) or later

我们不要一个一个检测有没安装,那样太麻烦,直接全部丢进去,执行

[root@localhost home]# rpm -ivh *.rpm

3、设置用户

接下来是配置环境了

设置用户

[root@localhost /]# groupadd oinstall   (创建用户组oinstall)

[root@localhost /]# groupadd dba(创建用户组dba)

[root@localhost /]# mkdir –p /fantlam/oracle

[root@localhost /]# useradd –g oinstall –G dba –d /fantlam/oracle oracle( 添加oracle用户到oinstalldba副组 /fantlam/oracle目录中 )

[root@localhost /]# passwd oracle(设置密码)

[root@localhost /]# chown -R oracle:oinstall fantlam(改目录组)

4、设置域名

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

You have mail in /var/spool/mail/root

[root@localhost /]# cat /etc/hosts

# Do not remove the following line, or various programs

# that require network functionality will fail.

127.0.0.1               localhost.localdomain localhost

192.168.1.103           localhost.localdomain localhost

#::1             localhost6.localdomain6 localhost6

[root@localhost /]#

5、配置三个文件

[root@localhost /]#vi /etc/sysctl.conf

kernel.shmall = 2097152

kernel.shmmax = 2147483648

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

net.ipv4.ip_local_port_range = 1024 65000

net.core.rmem_default = 4194304

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 262144

[root@localhost /]#vi /etc/security/limits.conf

oracle              soft    nproc   2047

oracle              hard    nproc   16384

oracle              soft    nofile 1024

oracle              hard    nofile 65536

[root@localhost /]# vi /etc/profile

if [ $USER = "oracle" ]; then

        if [ $SHELL = "/bin/ksh" ]; then

ulimit -p 16384

              ulimit -n 65536

        else

              ulimit -u 16384 -n 65536

        fi

fi

6、设置环境变量

[root@localhost /]# su – oracle

[oracle@localhost ~]$ vi .bash_profile(设置环境变量)

export PATH

ORACLE_BASE=/fantlam

ORACLE_HOME=$ORACLE_BASE/oracle

ORACLE_SID=fantlam

PATH=$ORACLE_HOME/bin:$PATH

export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH

[root@localhost ~]#exit (退出登录让设置生效)

[root@localhost ~]# su – oracle

[oracle@localhost ~]$ env | grep ORA

ORACLE_SID=fantlam

ORACLE_BASE=/fantlam

ORACLE_HOME=/fantlam/oracle

[oracle@localhost ~]$

7、解压oracle

进入home目录 解压刚刚传进去的oracle 11g

[root@localhost home]# unzip linux_11gR1_database_1013.zip

[root@localhost home]# mv database/ /fantlam (移动到fantlam目录)

[root@localhost home]# cd /fantlam

[root@localhost fantlam]# chown -R oracle:oinstall database/ R表示递归

8、安装oracle

[root@localhost ~]# xhost local:oracle
non-network local connections being added to access control list

[root@localhost ~]# su – oracle

[oracle@localhost ~]$ cd /fantlam
[oracle@localhost fantlam]$ ls
database oracle
[oracle@localhost fantlam]$ cd database
[oracle@localhost database]$ ls
doc install README runInstaller stage welcome.html
[oracle@localhost database]$ ./runInstaller
正在启动 Oracle Universal Installer…

检查临时空间: 必须大于 80 MB。   实际为 7157 MB    通过
检查交换空间: 必须大于 150 MB。   实际为 1498 MB    通过
检查监视器: 监视器配置至少必须显示 256 种颜色。    实际为 16777216    通过
准备从以下地址启动 Oracle Universal Installer /tmp/OraInstall2009-08-03_01-05-30AM. 请稍候…

9、安装完成,连接数据库

vi /etc/sysconfig/selinux
修改 SELINUX=permissive


vi .bash_profile
export NLS_LANG=AMERICAN_AMERICA.UTF8

[oracle@localhost ~]$ sqlplus /nolog

SQL*Plus: Release 11.1.0.6.0 – Production on Sat Sep 5 00:11:10 2009

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

SQL> conn scott/tiger
Connected.
SQL> select * from tab;

TNAME
——————————————————————————–
TABTYPE                CLUSTERID
——————— ———-
BONUS
TABLE

DEPT
TABLE

EMP
TABLE

TNAME
——————————————————————————–
TABTYPE                CLUSTERID
——————— ———-
NOTE
TABLE

PERSON
TABLE

SALGRADE
TABLE

6 rows selected.

SQL>

CentOS5.3安装Oracle11g(图文)(六)

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://fantlam.blogbus.com/logs/43416458.html

数据库安装完成后开始创建数据库操作

首先配置netca 这是oracle 11g的新特性

完成之后查看进程 ps -ef | grep /fantlam 可以看到监听程序已经运行起来了

接下配置dbca ( 注意以下这一步 名字要和前面环境变量的名字相同)

文档有提醒 创建数据库时要设置好字符集 不然要改就非常耗资源 我这选择第二个

开始创建了 这个过程比较久

装完了 进行口令管理 一般在这里把scott用户解锁 然后设置密码为tiger

接下来我们可以不用图形界面了 可以关掉它 继续远程操作

login as: root

root@192.168.1.103’s password:

Last login: Mon Aug 3 03:43:45 2009 from 192.168.1.100

[root@localhost ~]# su – oracle

[oracle@localhost ~]$ sqlplus /nolog

sqlplus: error while loading shared libraries: /fantlam/oracle/lib/libnnz11.so:cannot restore segment prot after reloc: Permission denied

遇到了个问题 网上说是oracle 11g对redhat 5的bug

解决方案:vi /etc/sysconfig/selinux 修改 SELINUX=permissive

也可以直接setenforce 0 不过重启后就无效了

CentOS5.3安装Oracle11g就到这里告一个段落,留下一个问题没解决,不过大体的安装过程还算是成功的!

乱码解决方案请见

[oracle@localhost ~]$ setenforce 0

-bash: setenforce: command not found

[oracle@localhost ~]$ su – root

口令:

[root@localhost ~]# setenforce

usage: setenforce [ Enforcing | Permissive | 1 | 0 ]

[root@localhost ~]# setenforce 0

[root@localhost ~]# su – oracle

[oracle@localhost ~]$ sqlplus /nolog

SQL*Plus: Release 11.1.0.6.0 – Production on Mon Aug 3 04:15:53 2009

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

SQL> conn /as sysdba

Connected to an idle instance.

SQL> create table fantlam(id integer,name varchar(10));

create table fantlam(id integer,name varchar(10))

*

ERROR at line 1:

ORA-01034: ORACLE not available

Process ID: 0

Session ID: 0 Serial number: 0

SQL> startup(启动oracle)

ORACLE instance started.

Total System Global Area 431038464 bytes

Fixed Size                  1300408 bytes

Variable Size             255854664 bytes

Database Buffers          167772160 bytes

Redo Buffers                6111232 bytes

????????

????????

SQL> lsnrctl start

SP2-0734: ??????? "lsnrctl st…" – ????????

SQL> create table fantlam(id integer,name varchar(10));

create table fantlam(id integer,name varchar(10))

             *

? 1 ?????:

ORA-00955: ??????????

SQL> commit ;

?????

SQL> select * from fantlam;

????

SQL>

我这里出现了乱码 不知道是我哪里错了 知道的朋友请告诉我

CentOS5.3安装Oracle11g(图文)(五)

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://fantlam.blogbus.com/logs/43415872.html

接下来这一步很重要,oracle可以检测你的环境看你满足要求了没有

大家可以看到我还有三个警告

找了一下错误地方 发现一个是swap不足 它需要1.5G 我的才1.4G 不足 怎么办?

还好有解决方案:在linux下增加临时swap空间

step 1:

  #dd if=/dev/zero of=/home/swap bs=1024 count=500000

  注释:of=/home/swap,放置swap的空间; count的大小就是增加的swap空间的大小,1024就是块大小,这里是1K,所以总共空间就是bs*count=500M

step 2:

  # mkswap /home/swap

  注释:把刚才空间格式化成swap各式

step 3:

  #swapon /home/swap

  注释:使刚才创建的swap空间

如果想关闭刚开辟的swap空间,只需命令:#swapoff

OK,问题解决

第二个问题是 少了rpm包

Oracle ODBC Drivers

If you intend to use ODBC, then you should install the most recent ODBC Driver

Manager for Linux. You can download and install the Driver Manager from the

following link:

On Linux x86

On Asianux 3, Oracle Enterprise Linux 5, and Red Hat Enterprise Linux 5:

unixODBC-2.2.11 (32 bit) or later

unixODBC-devel-2.2.11 (32 bit) or later

原来我还少了这两个包 用FileZilla传过去安装 问题解决

还有一个是

net.core.rmem_default需要的值是 4194304 而我只有262144 奇怪 文档里是这么写的

kernel.shmall = 2097152

kernel.shmmax = 2147483648

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

net.ipv4.ip_local_port_range = 1024 65000

#net.core.rmem_default = 262144

net.core.rmem_default = 4194304

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 262144

把它改过来 问题解决

没有警告了 检验通过 可以真正安装了!!!

下一步 暂不安装数据库先 选择仅安装软件 不然会很久 数据库待会再建

不用修改 继续下一步

OK 可以安装了

安装过程需要一些时间

提示要运行脚本

直接把两个脚本执行 按默认的走

到此为止 oracle软件就算安装完成了 接下去是创建数据库

/etc/sysctl.conf 文件里面

CentOS5.3安装Oracle11g(图文)(四)

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://fantlam.blogbus.com/logs/43414724.html

进入home目录 解压刚刚传进去的oracle 11g

[root@localhost home]# unzip linux_11gR1_database_1013.zip

[root@localhost home]# ls -l

总计 1803272

drwxr-xr-x 5 root root       4096 2008-10-07 database

-rw-r–r– 1 root root      11244 08-02 23:36 libaio-devel-0.3.106-3.2.i386.rpm

-rw-r–r– 1 root root 1844527800 08-02 23:47 linux_11gR1_database_1013.zip

-rw-r–r– 1 root root     173049 08-02 23:36 sysstat-7.0.2-3.el5.i386.rpm

[root@localhost home]# mv database/ /fantlam (移动到fantlam目录)

[root@localhost home]# cd /fantlam

[root@localhost fantlam]# chown -R oracle:oinstall database/ R表示递归

现在已经可以安装了,由于安装需要借助图形界面,所以我们进入centos里面操作

[root@localhost ~]# su – oracle
[oracle@localhost ~]$ ls
[oracle@localhost ~]$ cd /fantlam
[oracle@localhost fantlam]$ ls
database oracle
[oracle@localhost fantlam]$ cd database
[oracle@localhost database]$ ls
doc install README runInstaller stage welcome.html
[oracle@localhost database]$ ./runInstaller
正在启动 Oracle Universal Installer…

检查临时空间: 必须大于 80 MB。   实际为 7283 MB    通过
检查交换空间: 必须大于 150 MB。   实际为 1498 MB    通过
检查监视器: 监视器配置至少必须显示 256 种颜色
    >>> 无法使用命令 /usr/bin/xdpyinfo 自动检查显示器颜色。请检查是否设置了 DISPLAY 变量。    未通过 <<<<

未通过某些要求检查。必须先满足这些要求,

然后才能继续安装,那时将重新检查这些要求。

是否继续? (y/n) [n] y

[oracle@localhost database]$ xhost local:oracle
Xlib: connection to ":0.0" refused by server
Xlib: No protocol specified

xhost: unable to open display ":0.0"

由于不是root所以报错
[oracle@localhost database]$ su – root
口令:
[root@localhost ~]# xhost local:oracle
non-network local connections being added to access control list

现在可以了
[oracle@localhost ~]$ cd /fantlam
[oracle@localhost fantlam]$ ls
database oracle
[oracle@localhost fantlam]$ cd database
[oracle@localhost database]$ ls
doc install README runInstaller stage welcome.html
[oracle@localhost database]$ ./runInstaller
正在启动 Oracle Universal Installer…

检查临时空间: 必须大于 80 MB。   实际为 7157 MB    通过
检查交换空间: 必须大于 150 MB。   实际为 1498 MB    通过
检查监视器: 监视器配置至少必须显示 256 种颜色。    实际为 16777216    通过
准备从以下地址启动 Oracle Universal Installer /tmp/OraInstall2009-08-03_01-05-30AM. 请稍候…

oracle已经读取了环境变量了 选择高级安装

这个错误可以不理,是目录权限问题,改了一下就好了,直接确定

把完整路径设置为/fantlam/oralnventory

安装企业版

继续下一步

正在重新检查安装程序要求….
准备从以下地址启动 Oracle Universal Installer /tmp/OraInstall2009-08-03_12-59-58AM. 请稍候…[oracle@localhost database]$ Xlib: connection to ":0.0" refused by server
Xlib: No protocol specified

Exception in thread "main" java.lang.InternalError: Can’t connect to X11 window server using ‘:0.0′ as the value of the DISPLAY variable.
        at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
        at sun.awt.X11GraphicsEnvironment.access$000(X11GraphicsEnvironment.java:53)
        at sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:142)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:131)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:164)
        at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:68)
        at java.awt.Window.init(Window.java:270)
        at java.awt.Window.<init>(Window.java:318)
        at java.awt.Frame.<init>(Frame.java:419)
        at oracle.ewt.popup.PopupFrame.<init>(Unknown Source)
        at oracle.ewt.lwAWT.BufferedFrame.<init>(Unknown Source)
        at oracle.sysman.oio.oioc.OiocOneClickInstaller.<init>(OiocOneClickInstaller.java:328)
        at oracle.sysman.oio.oioc.OiocOneClickInstaller.<clinit>(OiocOneClickInstaller.java:168)

报错了,上网查了一下,找到了解决方法

在root下执行xhost local:oracle

CentOS5.3安装Oracle11g(图文)(三)

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://fantlam.blogbus.com/logs/43413431.html

接下来是配置环境了

设置用户

[root@localhost /]# groupadd oinstall   (创建用户组oinstall)

[root@localhost /]# groupadd dba(创建用户组dba)

[root@localhost /]# cd /

[root@localhost /]# mkdir –p /fantlam/oracle

(建立目录 mkdir命令:-p 确保目录名称存在,不存在的就建一个)

[root@localhost /]# useradd –g oinstall –G dba –d /fantlam/oracle oracle( 添加oracle用户到oinstall组dba副组 到/fantlam/oracle目录中 )

[root@localhost /]# passwd oracle(设置密码)

[root@localhost /]# chown -R oracle:oinstall fantlam(改目录组)

[root@localhost /]# ls -al(可以看到红色部分已经改了)

总计 172

drwxr-xr-x 24 root   root      4096 08-02 23:39 .

drwxr-xr-x 24 root   root      4096 08-02 23:39 ..

-rw-r–r–   1 root   root         0 08-02 22:44 .autofsck

drwxr-xr-x   2 root   root      4096 08-02 22:24 bin

drwxr-xr-x   3 root   root      4096 08-02 22:19 boot

drwxr-xr-x 11 root   root      4020 08-02 22:49 dev

drwxr-xr-x 98 root   root     12288 08-02 23:42 etc

drwxr-xr-x   3 oracle oinstall 4096 08-02 23:39 fantlam

drwxr-xr-x   2 root   root      4096 08-02 23:36 home

drwxr-xr-x 13 root   root      4096 08-02 22:24 lib

drwx——   2 root   root     16384 08-02 22:06 lost+found

drwxr-xr-x   2 root   root      4096 03-10 06:42 media

drwxr-xr-x   2 root   root         0 08-02 22:46 misc

drwxr-xr-x   2 root   root      4096 03-10 06:42 mnt

drwxr-xr-x   2 root   root         0 08-02 22:46 net

drwxr-xr-x   2 root   root      4096 03-10 06:42 opt

dr-xr-xr-x 137 root   root         0 08-02 22:43 proc

drwxr-x— 16 root   root      4096 08-02 23:00 root

drwxr-xr-x   2 root   root     12288 08-02 22:22 sbin

drwxr-xr-x   4 root   root         0 08-02 22:43 selinux

drwxr-xr-x   2 root   root      4096 03-10 06:42 srv

drwxr-xr-x 11 root   root         0 08-02 22:43 sys

drwxrwxrwt 10 root   root      4096 08-02 23:00 tmp

drwxr-xr-x 14 root   root      4096 08-02 22:17 usr

drwxr-xr-x 22 root   root      4096 08-02 22:26 var

[root@localhost /]# id nobody (确保用户存在)

uid=99(nobody) gid=99(nobody) groups=99(nobody) context=root:system_r:unconfined_t:SystemLow-SystemHigh

关于域名的配置,为了保证安装过程不会出现意外 需要做一些配置

一下几个命令是文档给出的

[root@localhost /]# cat /etc/nsswitch.conf | grep hosts

#hosts:     db files nisplus nis dns

hosts:      files dns

[root@localhost /]# hostname

localhost.localdomain

[root@localhost /]# domainname

(none)

[root@localhost /]# cat /etc/hosts

# Do not remove the following line, or various programs

# that require network functionality will fail.

127.0.0.1               localhost.localdomain localhost

::1             localhost6.localdomain6 localhost6

主要是这里 我修改一下文件 加上一行

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

You have mail in /var/spool/mail/root

[root@localhost /]# cat /etc/hosts

# Do not remove the following line, or various programs

# that require network functionality will fail.

127.0.0.1               localhost.localdomain localhost

192.168.1.103           localhost.localdomain localhost

#::1             localhost6.localdomain6 localhost6

[root@localhost /]#

接下来配置三个重要文件 直接把它加到文件的最后

[root@localhost /]#vi /etc/sysctl.conf

kernel.shmall = 2097152

kernel.shmmax = 2147483648

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

net.ipv4.ip_local_port_range = 1024 65000

net.core.rmem_default = 262144

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 262144

[root@localhost /]#vi /etc/security/limits.conf

oracle              soft    nproc   2047

oracle              hard    nproc   16384

oracle              soft    nofile 1024

oracle              hard    nofile 65536

[root@localhost /]# vi /etc/profile

if [ $USER = "oracle" ]; then

        if [ $SHELL = "/bin/ksh" ]; then

ulimit -p 16384

              ulimit -n 65536

        else

              ulimit -u 16384 -n 65536

        fi

fi

切换到oracle用户,注意要用 su – root 命令(注意,‘-’的左右都有空格!)这样才确保把环境带过去

如果只是su root是不会把环境带过去的

[root@localhost /]# su – oracle

[oracle@localhost ~]$ ls -al

总计 48

drwx—— 3 oracle oinstall 4096 08-03 00:16 .

drwxr-xr-x 3 oracle oinstall 4096 08-03 00:16 ..

-rw-r–r– 1 oracle oinstall   33 08-03 00:16 .bash_logout

-rw-r–r– 1 oracle oinstall 176 08-03 00:16 .bash_profile

-rw-r–r– 1 oracle oinstall 124 08-03 00:16 .bashrc

drwxr-xr-x 4 oracle oinstall 4096 08-03 00:16 .mozilla

[oracle@localhost ~]$ vi .bash_profile(设置环境变量)

export PATH

ORACLE_BASE=/fantlam

ORACLE_HOME=$ORACLE_BASE/oracle

ORACLE_SID=fantlam

PATH=$ORACLE_HOME/bin:$PATH

export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH

关于.bash_profile和.bashrc的区别

/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.
并从/etc/profile.d目录的配置文件中搜集shell的设置.
/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该
文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.
~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该
该文件被读取.
~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件.

另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系.

~/.bash_profile 是交互式、login 方式进入 bash 运行的
~/.bashrc 是交互式 non-login 方式进入 bash 运行的
通常二者设置大致相同,所以通常前者会调用后者。

[root@localhost ~]#exit (退出登录让设置生效)

[root@localhost ~]# su – oracle

[oracle@localhost ~]$ env | grep ORA

ORACLE_SID=fantlam

ORACLE_BASE=/fantlam

ORACLE_HOME=/fantlam/oracle

[oracle@localhost ~]$