Dieser Artikel enthält eine Zusammenfassung des Verfahrens zum Einführen einer Oracle-Umgebung als persönliche Entwicklungsumgebung (Studienumgebung). Der Grund, warum ich mich entschied, einen Artikel zu schreiben, war, dass ich den neuesten Artikel nirgendwo finden konnte und große Probleme hatte. Ich weiß nicht, ob Nachfrage besteht, aber für meine Kollegen in einer ähnlichen Situation und für mich in der Zukunft. Ich denke, es gibt viele Leute, die sagen: "Ich möchte es in der Cloud tun!" Und "Ich möchte es als Webdesigner tun!". Aber es kann Szenen geben, die für das Geschäft notwendig sind (wie ich). Die Struktur des Artikels ist wie folgt. Wenn Sie nicht an 1 interessiert sind, überspringen Sie es bitte.
Der Grund für Linux ist, dass wir dieses Mal die Datenbank aus der C-Sprache mit Pro * C verwenden werden. Ich habe mich diesmal für Oracle Linux entschieden, weil es (persönlich) einfacher ist, Linux zu erstellen, als eine C-Sprachkompilierungsumgebung unter Windows zu installieren. Im Folgenden erfahren Sie, warum wir uns für Oracle Linux entschieden haben.
In Bezug auf diesen Artikel werden wir auch die guten Artikel unserer Vorgänger verwenden, um eine Umgebung zu erstellen. Bitte haben Sie Verständnis dafür, dass ~~ Grundlagen übersprungen werden ~~ es gibt viele Links. Die im Link nicht genannten Teile werden in diesem Artikel hinzugefügt.
Die endgültige Zielumgebung ist wie folgt.
Windows OS (Jede einzelne Version)
┗ VirtualBox (6.0.6)
┗ Oracle Linux (7.5.0.0.0)
┗ C-Sprachausführungsumgebung(gcc Kompilierungsumgebung)
┗ Oracle Database (12c Release 2)
In diesen Tagen wurde viel über Oracle gesprochen, einschließlich Oracle Java, aber es ist immer noch kostenlos für den persönlichen Gebrauch von Oracle DB verfügbar. Ich bin mit der Geschichte nicht sehr vertraut, daher gebe ich Ihnen einige Referenzen.
In dem obigen Artikel wird Oracle DB nicht erwähnt, aber es scheint, als würde es auch für den persönlichen Gebrauch eine Abonnementgebühr geben, z. B. für den Verkauf von vor Ort verpackten Produkten und die Konzentration auf die Cloud.
Erstellen Sie im Wesentlichen unter "Referenz: Installieren von Oracle Linux 7.5 mit VirtualBox (nur Memo)".
http: // proxy.co.jp
"im Socks-Host ein.
――Die Portnummern variieren von Unternehmen zu Unternehmen, es werden jedoch häufig 80, 8080, 1080, 3128 usw. verwendet.Erstellen Sie von hier aus die in 2 integrierte Oracle Linux-Umgebung. Erstellen Sie im Wesentlichen unter "Referenz: Installieren von Oracle 12c R2 unter Oracle Linux 7.5".
$ yum install -y oracle-rdbms-server-12cR1-preinstall
$ export LANG=C
$ oracle-rdbms-server-12cR1-preinstall-verify
--Erstellen Sie ein Verzeichnis für die Installation von Oracle DB (sogenanntes Oracle-Ausgangsverzeichnis).$ mkdir -p /u01/app/oraInventory
$ mkdir -p /u01/app/oracle
$ mkdir /home/oracle/tmp
$ chown -R root:root /u01/app/oracle
- $ chown -R root:root /u01/app/oraInventory
- $ chmod -R 775 /u01/app/oracle
- $ chmod -R 775 /u01/app/oraInventory
$ ls -l / u01 / app /
aus, um jede Berechtigung zu überprüfendrwxrwxrwx.5 Wurzel Wurzel 89 24. April 18:21 oraInventory
drwxrwxrwx.10 root root 4096 24. April 18:29 oracle
-Access Oracle
$ unzip linuxx64_12201_database.zip
im Download-Ordner aus$. / RunInstaller
unter dem Datenbankordner aus (dieselbe Ausführungsmethode wie beim Ausführen einer normalen exe-Datei).proxy = http: //proxy.xxx.xxx: pp
am Ende der Datei /etc/yum.conf hinzu, um den Proxy-Durchbruch von yum zu erzielen.$ dd if=/dev/zero of=/var/swpfile bs=1M count=2048
$ mkswap /var/swpfile
$ swapon /var/swpfile
$ free -m
$ su -
-- $ cd / tmp / CVU_XXXXXXXX
← In der Warnmeldung beschrieben$ ./runfixup.sh
Erstellen Sie von hier aus eine Datenbank unter Oracle 12c R2, die in 3 installiert ist. Erstellen Sie es im Wesentlichen unter Bezugnahme auf die Datenbankerstellung und höher von "Referenz: Installieren von Oracle 12c R2 unter Oracle Linux 7.5".
.bash_profile
hinzu, um die Umgebungsvariablen zu ändern (normalerweise direkt unter dem Login-Benutzerordner vorhanden).export TMPDIR=$HOME/tmp
export TEMP=$HOME/tmp
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/jdk/bin:${PATH}:PATH=$ORACLE_HOME/sqldeveloper/sqldeveloper/bin:
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export NLS_LANG=JAPANESE_JAPAN.UTF8
export LANG=ja_JP.UTF-8
export ORACLE_SID=testdb
Reflektieren Sie die Einstellung von Umgebungsvariablen
$ source .bash_profile
-- $ sudo reboot
Für alle Fälle neu starten
Führen Sie $ dbca
aus, um den Datenbankerstellungsbildschirm mit der GUI zu starten
--Erstellen Sie eine Datenbank gemäß "Datenbank erstellen" in "Referenz: Installieren von Oracle 12c R2 unter Oracle Linux 7.5".
--Starten Sie sqlplus und starten Sie die Datenbank
$ sqlplus / as sysdba
ausführenSQL> show user
sollte SYS seinFühren Sie im Folgenden alle Schritte aus, während Sie mit SYS bei sqlplus angemeldet sind
-Erstellen Sie den Benutzer
SQL> create user username identified by password;
・ Erstellen eines Tabellenbereichs
SQL> create tablespace TEST_TBS
datafile '/u01/app/oracle/oradata/testdb/test01.dbf'
size 2G
autoextend off;
-Erstellen eines temporären Bereichstabellenbereichs
SQL> create temporary tablespace TEST_TMP
tempfile '/u01/app/oracle/oradata/testdb/testtmp01.dbf'
size 2G
autoextend off;
- Benutzerrechte festlegen (dem erstellten Tabellenbereich Benutzerrechte zuweisen)
SQL> alter user username
default tablespace TEST_TBS
temporary tablespace TEST_TMP;
-Einstellen von Benutzerberechtigungen (Hinzufügen von Verbindungsberechtigungen und CRUD-Berechtigungen)
SQL> grant connect, resource to username
· Unbegrenzte Zuweisung von Tabellenbereich
SQL> alter user username quota unlimited on TEST_TBS ;
-Überprüfen Sie, ob der erstellte Benutzer darauf zugreifen kann
OK, wenn das folgende SQL ausgeführt werden kann
SQL> connect username/password
SQL> show user
USERNAME
$ cat /u01/app/oracle/product/12.2.0/dbhome_1/network/admin/listener.ora
/u01/app/oracle/product/12.2.0/dbhome_1/network/admin
listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(ORACLE_HOME = /u01/app/oracle/product/12.2.0/dbhome_1)
(SID_NAME = testdb)
(SERVICE_NAME = testdb)
)
)
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle12test)(PORT = 1521))
)
ADR_BASE_LISTENER = /u01/app/oracle
Starten Sie einen Listener
$ lsnrctl start
LISTENER_TESTDB =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle12test)(PORT = 1521))
TESTDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle12test)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = testdb)
)
)
Listener.ora ist eine Netzwerkeinstellungsdatei auf der Serverseite (Terminal, auf dem Oracle DB installiert ist). Legen Sie fest, welche Datenbank die vom Server empfangene Kommunikation senden soll
Transnames.ora ist eine Netzwerkeinstellungsdatei, die auf der Clientseite abgelegt wird. Legen Sie fest, welcher Port von welchem Server mit welchem Protokoll verbunden werden soll
Referenz: Oracle eine kleine Referenz
Ich habe den Quellcode unter Bezugnahme auf "Referenz: Ich habe ein wenig Angst, weil er über den Boden hinausgeht" erstellt.
Melden Sie sich zunächst bei sqlplus als Benutzer an, der in 5 erstellt wurde.
$ sqlplus / as sysdba
SQL> connect username/password
SQL> show user
USERNAME
Erstellen Sie eine Tabelle, während Sie bei sqlplus angemeldet sind.
SQL> CREATE TABLE username.MEMBER
(CODE varchar2 (10) NOT NULL,
NAME varchar2 (10) NOT NULL,
UPDATE_YMD varchar2 (8) NULL)
SQL> ALTER TABLE username.MEMBER ADD PRIMARY KEY
(CODE,
NAME);
SQL> commit;
Fügen Sie Beispieldaten ein, während Sie bei sqlplus angemeldet sind.
insert into username.MEMBER(
CODE,
NAME,
UPDATE_YMD
)
values
(
'0000000000',
'aaaaaaaaaa',
'20190101'
);
insert into username.MEMBER(
CODE,
NAME,
UPDATE_YMD
)
values
(
'1111111111',
'bbbbbbbbbb',
'20190101'
);
commit;
Melden Sie sich von sqlplus ab.
Der folgende Quellcode wird beschrieben.
test_p.pc
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
/*SQL-Zugriffskonstante (zum Testen fest codiert)*/
#define ORAUSER "username"
#define ORAPASSWD "password"
#define ORASYSID_T "testdb"
/*Makrodefinition für maximale Anzahl beim Abrufen*/
#define MAX 100
/*Deklarationsteil der SQL-Zugriffsvariablen (sogenannte Hostvariable)*/
/* "h_"Die Startvariable wird zur Auswahl verwendet*/
EXEC SQL BEGIN DECLARE SECTION;
varchar username[20];
varchar password[20];
varchar systemid[20];
char h_code[MAX][10];
char h_name[MAX][10];
EXEC SQL END DECLARE SECTION;
/*Deklaration der Header-Datei für den ProC-Precompiler*/
EXEC SQL INCLUDE sqlca.h;
/******************************/
/*Hauptfunktion von hier*/
/*Fluss in der Hauptfunktion*/
/* 1.Variablendefinition (globale Definition für Hostvariablen)*/
/* 2.Wertinitialisierung*/
/* 3.DB Connect*/
/* 4.Ausgabe der select-Anweisung*/
/* 5.Cursor geöffnet*/
/* 6.Ausführung abrufen*/
/* 7.Cursor schließen*/
/* 8.DB-Trennung (Festschreiben)*/
/******************************/
int main(int argc, char *argv[])
{
/*Variable für die Cursorschleife zum Zeitpunkt des Abrufs*/
int i;
/*Initialisierung der Hostvariablen*/
memset(&username, 0x00, sizeof(username));
memset(&password, 0x00, sizeof(password));
memset(&systemid, 0x00, sizeof(systemid));
memset(&h_code, 0x00, sizeof(h_code));
memset(&h_name, 0x00, sizeof(h_name));
/*Verbindung zu Oracle (Konstanten in SQL-Zugriffsvariablen festlegen)*/
strcpy(username.arr, ORAUSER);
username.len = strlen(username.arr);
strcpy(password.arr, ORAPASSWD);
password.len = strlen(password.arr);
strcpy(systemid.arr, ORASYSID_T);
systemid.len = strlen(systemid.arr);
/*Ausnahmeerklärung → Springe zu errorpt*/
EXEC SQL WHENEVER SQLERROR GOTO errorpt;
printf("user: %s, password: %s Verbindung starten\n",
username.arr,password.arr);
/*Verbindung*/
EXEC SQL CONNECT :username
IDENTIFIED BY :password
AT :systemid;
printf("%s Die Verbindung war erfolgreich\n",systemid.arr);
printf("system: %s Suche starten\n", systemid.arr);
/*Cursor-Deklaration (SQL-Ausgabe bei Auswahl ist hier)*/
EXEC SQL AT :systemid DECLARE cursor CURSOR FOR
SELECT CODE, NAME
FROM MEMBER
WHERE UPDATE_YMD > 20190101;
printf("Suche abgeschlossen\n");
printf("Öffnen Sie den Cursor\n");
/*Cursor geöffnet*/
EXEC SQL OPEN cursor;
printf("Der Cursor hat sich geöffnet\n\n");
/*Datenabruf (sogenannter Abruf)*/
EXEC SQL FETCH cursor INTO
:h_code,:h_name;
/*Wenn es keinen Wert gibt, beenden Sie*/
for(i=0;i<MAX;i++){
if(0 == strlen(h_code[i])){
printf("\n");
break;
}else{
printf("%s,%s\n",
h_code[i],h_name[i]);
}
}
printf("Abruf abgeschlossen\n");
/*Cursor schließen*/
EXEC SQL CLOSE cursor;
printf("Der Cursor ist geschlossen\n");
/*Obwohl Commit angezeigt wird, wird auch die Verbindung getrennt*/
/*Wenn es nicht ausgewählt ist, wird es zurückgesetzt, wenn Sie dies nicht schreiben*/
/*Nicht erforderlich, da Auswahl trennt, wenn der Cursor geschlossen wird*/
/* EXEC SQL COMMIT WORK RELEASE; */
return 0;
/*Verarbeitung zum Zeitpunkt des Fehlers*/
errorpt:
printf("\n\n%-79s \n",sqlca.sqlerrm.sqlerrmc);
EXEC SQL WHENEVER SQLERROR CONTINUE;
}
$ proc iname=test_p oname=test_p.c sqlcheck=full
test_p.c
generiert$ gcc -c test_p.c -I $ORACLE_HOME/precomp/public
test_p.o
generiert$ gcc -o test_p test_p.o -L$ORACLE_HOME/lib -lclntsh
$. / Test_p
ausAusführungsergebnis
$ ./test_p
user: username, password:Passwort Verbindung starten
testdb Verbindung war erfolgreich
system:Starten Sie die Testdb-Suche
Suche abgeschlossen
Öffnen Sie den Cursor
Der Cursor hat sich geöffnet
0000000000,aaaaaaaaaa
1111111111,bbbbbbbbbb
Abruf abgeschlossen
Der Cursor ist geschlossen
Zum Zeitpunkt des Kompilierens des PCs tritt der folgende Fehler auf, dass nicht mehrere Bibliotheken aufgerufen werden können
In Zeile 0 und Spalte 0 ist ein Fehler aufgetreten. Dateitest_p.pc
PCC-F-02102,Beim Ausführen der C-Präprozessorverarbeitung ist ein schwerwiegender Fehler aufgetreten.
In Zeile 33 und Spalte 11 ist ein Fehler aufgetreten. Datei/usr/include/stdio.h
33 # include <stddef.h>
33 ..........1
33 PCC-S-02015,Einfügedatei kann nicht geöffnet werden.
In Zeile 15 und Spalte 10 ist ein Fehler aufgetreten. Datei/usr/include/_G_config.h
15 #include <stddef.h>
15 .........1
15 PCC-S-02015,Einfügedatei kann nicht geöffnet werden.
In Zeile 51 und Spalte 11 ist ein Fehler aufgetreten. Datei/usr/include/wchar.h
51 # include <stddef.h>
51 ..........1
51 PCC-S-02015,Einfügedatei kann nicht geöffnet werden.
In Zeile 50 und Spalte 10 ist ein Fehler aufgetreten. Datei/usr/include/libio.h
50 #include <stdarg.h>
50 .........1
50 PCC-S-02015,Einfügedatei kann nicht geöffnet werden.
In Zeile 307, Spalte 3 ist ein Fehler aufgetreten. Datei/usr/include/libio.h
307 size_t __pad5;
307 ..1
307 PCC-S-02201,Symbol"size_t"Ich fand. Wenn einer der folgenden Punkte eintritt:
Abhängig von der Umgebung befindet sich der Speicherort jeder Header-Datei möglicherweise nicht unter "/ usr / include /" gemäß der Fehlermeldung. Daher muss ein Link zur Konfigurationsdatei "pcscfg.cfg" hinzugefügt werden.
--Suchen Sie die Konfigurationsdatei $ find / -name pcscfg.cfg
- /u01/app/oracle/product/12.2.0/dbhome_1/precomp/admin/pcscfg.cfg
/ usr / lib / gcc / x86_64-redhat-linux / 4.8.2 / include / stddef.h
).pcscfg.cfg
...
sys_include=($ORACLE_HOME/precomp/public,/usr/include,/usr/lib/gcc/x86_64-redhat-linux/4.1.2/include,/usr/lib/gcc/x86_64-redhat-linux/4.4.7/include,/usr/lib/gcc/x86_64-redhat-linux/4.4.4/include,/usr/lib64/gcc/x86_64-suse-linux/4.8/include,/usr/lib/gcc/x86_64-redhat-linux/4.8.2/include/)
...
Referenz: Fehler, dass stddef.h in der Pro * C-Vorkompilierung nicht gefunden werden kann
Recommended Posts