oracle笔记

常用:

1.sysdate,rownum,user,rowid
2.dict, V$fixed_table, dict_columns

=====================================================================
一。重点
创建表空间:
CREATE SMALLFILE TABLESPACE "XF" DATAFILE 'E:\oracle\product\10.2.0\oradata\orcl\xf.dbf' SIZE 1000M
AUTOEXTEND ON NEXT 200M MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO

CREATE SMALLFILE TABLESPACE "CXXF" DATAFILE 'E:\oracle\product\10.2.0\oradata\orcl\cxxf.dbf' SIZE 2000M
AUTOEXTEND ON NEXT 200M MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO

创建用户:
CREATE USER "XF" PROFILE "DEFAULT" IDENTIFIED BY "XF" DEFAULT TABLESPACE "XF" TEMPORARY TABLESPACE "TEMP" ACCOUNT UNLOCK;
GRANT "CONNECT" TO "XF";
GRANT "RESOURCE" TO "XF";

CREATE USER "CXXF" PROFILE "DEFAULT" IDENTIFIED BY "CXXF" DEFAULT TABLESPACE "CXXF" TEMPORARY TABLESPACE "TEMP" ACCOUNT UNLOCK;
GRANT "CONNECT" TO "CXXF";
GRANT "RESOURCE" TO "CXXF";

导入业务数据:
导入业务数据时注意检查触发器.
导入地图数据:
可以用ORACLE的备份文件导入, 也可以用 DeskPro 直接导入SDB数据

导出命令:exp system/password@orcl file=filename.dmp owner=(xf,cxxf)

导入命令 imp system/password@orcl file=filename.dmp fromuser=(xf,cxxf) touser=(xf,cxxf)
删除用户命令:drop user “name” cascade;

二。Oracle 修改表格字段

关键字: oracle 修改表格字段
给指定的表格添加一个字段

alter table 你的表 add (字段名 字段类型);

实际应用

alter table t_user add (t_create_date date);

//给一个表格的字段天加一默认的值

alter table t_user mofidy 你的字段 default 你的默认值

举例

alter table t_user mofidy t_create_date default sysdate;sysdate(为ORACLE默认的系统时间)



删除表的字段
alter table 你的表 drop 你的表字段
举例
alter table t_user drop t_create_date;
一次性删除表多个字段:
alter table table_name drop (column_name1,column_name2,...)

添加主键 constraint 翻译 约束

alter table 你的表 add constraint 约束名字 约束关键字 (你的列);

alter table t_user add constraint t_pk primary key(id);

添加外键约束 references 参考

alter table 主表 add constraint 外键约束名 约束关键字(关联列) references 参考的表(参考表的列);

alter table t_test add contraint t_fk foreign key (id) references t_user(id);

//删除外键

alter table t_test drop constraint 外键名

alter tabl t_test drop constaint t_fk;


alter table table_name add (col1 type,col2 type);

ALTER TABLE TABLE_AAA ADD (STOCKMAN NUMBER(18))//添加一列

COMMENT ON COLUMN TABLE_AAA.STOCKMAN IS '管理人员' //给列添加注释

ALTER TABLE TABLE_AAA ADD CONSTRAINT FK_TABLE_AAA_R_TABLE_BBB_S FOREIGN KEY (STOCKMAN) REFERENCES TABLE_BBB (ID)//给列添加外键

修改表字段名称:
alter table tablename rename column columnName_old to columnName_new;


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

-----------。常用操作
1.查看触发器
SELECT * FROM All_Objects WHERE OBJECT_TYPE='TRIGGER'
2.TNS配置实例,oracle的G:\oracle\product\10.2.0\db_1 \NETWORK\ADMIN\tnsnames.ora文件
ORCL_101 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.101)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
2.insert into a(smx,smy,waterresname) select b.smx,b.smy,b.name from b; //b表的数据插入a表中
3.查看oracle对象源码:user_source
4.oracle表批量授权 从一個用戶到另外一個用戶
将A用户下所有的表授权给B用户;
sqlplus A/A
select 'grant select,insert,update,delete on A.' || table_name || ' to B;' from user_tables;
然后选择上面出现的所有的语句,进入sysdba权限进行操作:
sqlplus "/as sysdba"
然后执行上面的所有的语句就可以了;
5.oracle 表结构操作:
(1)修改表名字:alter table commandllist rename to commandlist

6.调用oracle中的 Java source

SQL> create or replace and compile java source named HelloWorld
2 as
3 public class HelloWorld {
4 public static void db_run (){
5 System.out.println( "Hello World ");
6 }
7 }
8 /

Java created.

SQL> create or replace procedure run_helloworld
2 as language java
3 name 'HelloWorld.db_run() ';
4 /

Procedure created.
SQL> set serveroutput on size 5000
SQL> call dbms_java.set_output(5000) ;

Call completed.

SQL>
SQL> exec run_helloworld ;
Hello World

PL/SQL procedure successfully completed.


7.倒序取中间记录

select * from (select v.*, rownum as rid from
(select * from vehiclelist where vehicleid='wj10-x7016' order by vid desc) v where rownum<10) where rid > 4
或者:
select *
from (select a.*, rownum row_num
from (select a.* from vehiclelist a where vehicleid='wj10-x7016' order by vid desc) a)
where row_num between 5 and 9


8.记录一下自己创建外部表的过程,因为中间出了一些小错误。

-- 1. 创建文件目录
SQL>create directory upload_dir as '/storagepool/upload';
Directorycreated.
-- 2. 创建外部表
SQL>create table analog_tmp_entrypage_ext_1(
2 PROFILE_ID NUMBER(22),
3 REPORT_TIME NUMBER(22),
4 SESSION_ID NUMBER(22),
5 URL VARCHAR2(2048)
6 )
7 organization external
8 (type oracle_loader
9 default directory upload_dir
10 access parameters
11 (records delimited by newline
12 fields terminated by X'05'
13 missing field values are null
14 (PROFILE_ID, REPORT_TIME, SESSION_ID, URL)
15 )
16 location('weblog.analog_tmp_entrypage_0.dat')
17 );
Tablecreated.
-- 3. 查询报错。因为外部表和sqlldr原理类似,加载外部数据时需要创建log文件,无法加载的数据,会创建bad文件。
-- 这里出错的原因是:oracle对路径'/storagepool/upload'没有访问权限,无法在该路径下创建log文件和bad文件。
SQL>select * from analog_tmp_entrypage_ext_1 where rownum < 2;
select* from analog_tmp_entrypage_ext_1 where rownum < 2
*
ERRORat line 1:
ORA-29913:error in executing ODCIEXTTABLEOPEN callout
ORA-29400:data cartridge error
KUP-04063:unable to open log file ANALOG_TMP_ENTRYPAGE_EXT_1_12190.log
OSerror Permission denied
ORA-06512:at "SYS.ORACLE_LOADER", line 19
-- 4. 创建log文件和bad文件的路径,指向tmp分区。
SQL>create directory upload_log_dir as '/tmp/upload_log';
Directorycreated.
-- 5. 重建外部表,将log和bad指向新路径
SQL>drop table analog_tmp_entrypage_ext_1 purge;
Tabledropped.
SQL>create table analog_tmp_entrypage_ext_1(
2 PROFILE_ID NUMBER(22),
3 REPORT_TIME NUMBER(22),
4 SESSION_ID NUMBER(22),
5 URL VARCHAR2(2048)
6 )
7 organization external
8 (type oracle_loader
9 default directory upload_dir
10 access parameters
11 (records delimited by newline
12 badfile upload_log_dir:'analog_tmp_entrypage_ext_1%A_%P.bad'
13 logfile upload_log_dir:'analog_tmp_entrypage_ext_1%A_%P.log'
14 fields terminated by X'05'
15 missing field values are null
16 (PROFILE_ID, REPORT_TIME, SESSION_ID, URL)
17 )
18 location('weblog.analog_tmp_entrypage_0.dat')
19 );
Tablecreated.
-- 6. 重新查询,仍然报错。
SQL>select * from analog_tmp_entrypage_ext_1 where rownum < 2;
select* from analog_tmp_entrypage_ext_1 where rownum < 2
*
ERRORat line 1:
ORA-29913:error in executing ODCIEXTTABLEFETCH callout
# 7. 检查日志文件,原来是因为url默认长度为255,而该列长度为2048,存储了很多长度超过255的记录。
oracle@dw_nearline1:/tmp/upload_log>moreanalog_tmp_entrypage_ext_1_13056.log
LOG file opened at 07/16/09 13:45:45
FieldDefinitions for table ANALOG_TMP_ENTRYPAGE_EXT_1
Record format DELIMITED BY NEWLINE
Data in file has same endianness as the platform
Rows with all null fields are accepted
Fields in Data Source:
PROFILE_ID CHAR (255)
Terminated by "05"
Trim whitespace same as SQL Loader
REPORT_TIME CHAR (255)
Terminated by "05"
Trim whitespace same as SQL Loader
SESSION_ID CHAR (255)
Terminated by "05"
Trim whitespace same as SQL Loader
URL CHAR (255)
Terminated by "05"
Trim whitespace same as SQL Loader
KUP-04021:field formatting error for field URL
KUP-04026:field too long for datatype
KUP-04101:record 13 rejected in file /storagepool/upload/weblog.analog_tmp_entrypage_0.dat
KUP-04001:error opening file /storagepool/upload/ANALOG_TMP_ENTRYPAGE_EXT_1_13056.bad
KUP-04017:OS message: Permission denied
-- 8. 再次重建外部表,将列url长度设置为2048。
SQL>drop table analog_tmp_entrypage_ext_1 purge;
Tabledropped.
SQL>create table analog_tmp_entrypage_ext_1(
2 PROFILE_ID NUMBER(22),
3 REPORT_TIME NUMBER(22),
4 SESSION_ID NUMBER(22),
5 URL VARCHAR2(2048)
6 )
7 organization external
8 (type oracle_loader
9 default directory upload_dir
10 access parameters
11 (records delimited by newline
12 badfile upload_log_dir:'analog_tmp_entrypage_ext_1%A_%P.bad'
13 logfile upload_log_dir:'analog_tmp_entrypage_ext_1%A_%P.log'
14 fields terminated by X'05'
15 missing field values are null
16 (PROFILE_ID, REPORT_TIME, SESSION_ID, URLchar(2048))
17 )
18 location('weblog.analog_tmp_entrypage_0.dat')
19 );
Tablecreated.
SQL>select * from analog_tmp_entrypage_ext_1 where rownum < 2;
PROFILE_IDREPORT_TIME SESSION_ID URL
--------------------- -------------- -------------------------
1 20070701 247355 /www.alibaba.com/trade/offer/detail
-- 9. 如果有多个文件,在location参数中加上即可
SQL>drop table analog_tmp_entrypage_ext_1 purge;
Tabledropped.
etl@ALIDW>create table analog_tmp_entrypage_ext_1(
2 PROFILE_ID NUMBER(22),
3 REPORT_TIME NUMBER(22),
4 SESSION_ID NUMBER(22),
5 URL VARCHAR2(2048)
6 )
7 organization external(
8 type oracle_loader
9 default directory upload_dir
10 access parameters(
11 records delimited by newline
12 badfile upload_log_dir:'analog_tmp_entrypage_ext_1%A_%P.bad'
13 logfile upload_log_dir:'analog_tmp_entrypage_ext_1%A_%P.log'
14 fields terminated by X'05'
15 missing field values are null
16 (PROFILE_ID, REPORT_TIME, SESSION_ID, URL char(2048))
17 )
18 location(
19 'weblog.analog_tmp_entrypage_0.dat',
20 'weblog.analog_tmp_entrypage_1.dat',
21 'weblog.analog_tmp_entrypage_2.dat',
22 'weblog.analog_tmp_entrypage_3.dat'
23 )
24 );
Tablecreated.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值