登陆sqlplus:
进入cmd,两种方式
1.正常登陆
sqlplus / as sysdba
以dba登陆后在切换用户
conn 用户名/密码
或
sqlplus 用户名/密码[@DB名]
oracle客户端用此连接方式,DB名是配置在客户端ora文件里。
注:此处的DB名是sid (REALDB),sid是远程客户端连接服务器所使用的名字,是数据库instance的别名(rdb1的别名)。
REALDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 168.192.11.2)(PORT = 1523))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = rdb1)
)
)
2.dba身份登陆
sqlplus /[@DB名] as sysdba;(或sqlplus system/password@DB名)
如果作为dba身份登陆则采用的是操作系统认证,所以此处省略了用户名密码,用户名密码也可任意写:sqlplus aaa/bbb as sysdba;
进入sqlplus后切换用户:
conn[ect] 用户名[@DB名]或conn /[@DB名] as sysdba
察看当前用户:
show user;
或
select user from dual;
oracle内system为默认用户。用户可直接登录到system用户以创建其他用户,system的密码是oracle安装时输入的。
oracle新建用户:
创建用户名和密码都是user1的用户:CREATE USER user1 IDENTIFIED BY user1;
赋予user1DBA的权限:GRANT DBA TO user1;
------------------------------
下载sql developer执行sql命令
------------------------------
以user1登陆导出DBuser1 ***此命令是在cmd的命令行中执行 不是在sqlplus中执行***
导入导出数据库:imp/exp user1/user1@dbname file=E:\expdb.dmp full=y
dbname是数据库的tnsnames.ora文件的sid或服务名而不是IP
-------------------------------
oracle安装后会与tomcat的8080端口冲突:
修改oracle端口:call dbms_xdb.cfg_update(updateXML(dbms_xdb.cfg_get(), '/xdbconfig/sysconfig/protocolconfig/httpconfig/http-port/text()' , 8081));COMMIT;
修改tomcat端口:修改tomcat的端口可以在apache\apache-tomcat-7.0.52\conf的server.xml 文件中修改其对应的端口参数port
<Connector port="8089" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" useBodyEncodingForURI="true"
URIEncoding="UTF-8"/>
-------------------------------
oracle的驱动在安装目录里:C:\oraclexe\app\oracle\product\10.2.0\server\jdbc\lib\ojdbc14.jar
如果是客户端的话是在这里:C:\oraclexe\app\oracle\product\11.2.0\client\jdbc\lib\ojdbc14.jar
-------------------------------
数据库的结构:
服务器
→实例(PC)
→数据库1(instance)→SERVICE_NAME,别名sid
→用户1(schema)
→表
→用户2(schema)
→表
→数据库2(instance)
→用户1(schema)
→表
→用户2(schema)
→表
*关于oracle的XE(轻量版,体验版)版本,安装XE时,会默认创建一个名(services_name)为XE的数据库,XE以外的版本可以通过Net Manager创建多个数据库。
查看数据库版本:select * from v$version;
**********************
一个用户有一个缺省的schema,其schema名就等于用户名,当然一个用户还可以使用其他的schema。如果我们访问一个表时,没有指明该表属于哪一个schema中的,系统就会自动给我们在表上加上缺省的sheman名。比如我们在访问数据库时,访问scott用户下的emp表,通过select * from emp; 其实,这sql语句的完整写法为select * from scott.emp。在数据库中一个对象的完整名称为schema.object,而不属user.object。类似如果我们在创建对象时不指定该对象的schema,在该对象的schema为用户的缺省schema。
举个例子
SQL> Gruant dba to scott
SQL> create table test(name char(10));
Table created.
SQL> create table system.test(name char(10));
Table created.
SQL> insert into test values('scott');
1 row created.
SQL> insert into system.test values('system');
1 row created.
SQL> commit;
Commit complete.
SQL> conn system/manager
Connected.
SQL> select * from test;
NAME
----------
system
SQL> ALTER SESSION SET CURRENT_SCHEMA = scott; --改变用户缺省schema名
Session altered.
SQL> select * from test;
NAME
----------
scott
SQL> select owner ,table_name from dba_tables where table_name=upper('test');
OWNER TABLE_NAME
----------
SCOTT TEST
SYSTEM TEST
--上面这个查询就是我说将schema作为user的别名的依据。实际上在使用上,shcema与user完全一样,没有什么区别,在出现schema名的地方也可以出现user名。
-------------------------------
SID,services_name,tnsname.ora:
tnsname.ora文件用于用oracle客户端连接远程DB服务器,如果远程服务器是本机则不需修改该文件,此时文件中的HOST地址默认是localhost。
如果只用java程序连接远程DB服务器则不用该文件,只在java端配好连接字符串即可。
tnsname.ora
ORCL =
(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = [host|ip])(PORT = 1521))
(CONNECT_DATA = (SERVER = DEDICATED)
(SERVICE_NAME = orcl) ) )
就是这个地方会涉及到版本问题,如果是8i以前的,下面的写法是错误的。
(SERVICE_NAME = orcl)而8i之后也是支持(SID = orcl)这个格式的
程序侧的连接字符串jdbc.url:jdbc:oracle:thin:@[host|ip]:1521/[SERVICE_NAME]
注意以下两种写法的区别:
jdbc.driver=oracle.jdbc.OracleDriver
jdbc.url=jdbc:oracle:thin:@10.1.1.10:1521:TESTDB
jdbc.username=user01
jdbc.password=user01
":"是SID名
jdbc.driver=oracle.jdbc.OracleDriver
jdbc.url=jdbc:oracle:thin:@10.1.2.20:1552/productdb
jdbc.username=user02
jdbc.password=user02
"/"是service name,也可用于SID,但是service name必须用"/
-------------------------------
监听器(LISTENER)
监听器是Oracle基于服务器端的一种网络服务,主要用于监听客户端向数据库服务器端提出的连接请求。既然是基于服务器端的服务,那么它也只存在于数据库服务器端,进行监听器的设置也是在数据库服务器端完成的。
--------------------------------------
察看database名
SELECT NAME FROM V$DATABASE;
----------------------
察看oracle 版本号
用cmd登陆sqlplus 执行查询语句:select * from V$VERSION;